APP下载

单机版记忆游戏的设计与实现
——Java语言任务驱动教学法应用案例*

2021-03-25田春婷

科技与创新 2021年5期
关键词:方块网格按钮

田春婷

(兰州石化职业技术学院信息处理与控制工程学院,甘肃 兰州730060)

1 引言

大数据时代,java语言[1]作为一门老牌通用编程语言,有着成熟的社区生态,依然是互联网各个专业领域最热门的编程语言之一。在行业领域内的人才占有率和使用率,以绝对优势稳居世界第一。人工智能[2]、云计算[3]、大数据、物联网、移动开发等数字化新技术较常用的编程语言也是java语言。

Java语言作为一门纯面向对象编程语言,面向对象编程思想和算法是它的灵魂。教学难点是如何提高学生的算法分析能力和编程能力。将小游戏的设计与实现融入到java语言课程的任务驱动教学法应用案例中,在提高学生对编程的兴趣方面尤为重要。

2 java语言任务驱动教学法

在java语言的整个教学过程中,主要采取任务驱动教学法[4]等多种教学方法,以更好树立学生面向对象程序设计思想,提高学生的算法分析能力和使用面向对象思想解决实际问题的能力。

全面推行“任务驱动”教学法,通过精选案例、分解任务、讲练有机融合,将java语言相关知识点融入案例。学生通过学习趣味游戏等案例[5],掌握java语言技术,并对面向对象编程有一个直观和更加感性的认识,激发学生积极参与整个教学过程,更好建立起面向对象的编程思想。

在教学过程中,采用“感知与联想→引入与模拟→实战演习→总结提高”模式,实现任务分层次教学,以满足不同水平学生的学习要求。

3 java语言实现单机版记忆游戏案例总体设计要求

通过对单机版记忆游戏案例[6]进行任务分解,分层次逐步实现该游戏功能的设计要求,将java语言相关知识点有机融合到游戏实现的各个环节中,从而使学生在学习编程的同时享受设计游戏的乐趣,将学习和娱乐有效结合,激发学生的程序设计兴趣。

本文讨论的记忆游戏教学案例为单机版,总体设计要求及功能如下:①该游戏设计要求有一组网格按钮,代表玩家可以翻转的卡片。所有按钮的初始颜色都是空白或灰色的,玩家不知道卡片背面所隐藏的颜色。每次翻两个,一个一个,如果匹配,就能得分。②在窗体顶部和底部分别设计有标签,用来指定轮到哪位玩家以及玩家得分和他们应该做什么。③游戏期间,一位玩家会先选择一个按钮,然后再选择另一个。当玩家选择按钮的时候,按钮会显示它隐藏的背面颜色。如果玩家选择的两个按钮颜色相同,游戏会告诉玩家,然后当他再次点击任何一个按钮(继续)时,选择颜色相同的两个按钮时,卡片匹配成功,按钮颜色会变成黑色。玩家再次尝试选择两个其他按钮;如果玩家选择的两个按钮颜色不同,卡片匹配不成功,则轮流到另一位玩家点击按钮玩游戏。④玩家不能选择同一个按钮两次,也不能选择一个黑色按钮。当所有的按钮都是黑色的时候,游戏会告诉玩家谁赢了(或者是平局),当按下确定按钮,游戏就会重新开始。⑤在任何时候,游戏都通过使用两个标签告诉玩家发生了什么——一个标签位于窗口顶部的玩家0,另一个标签位于窗口底部的玩家1。活跃玩家消息有一个绿色的背景,另一位玩家消息有一个红色的背景。

4 记忆游戏教学案例分层次设计要求及java实现

为了满足不同能力水平学生的学习要求,在java语言教学过程中,为更好地实现游戏功能,采用由易到难的分层次教学设计模式,给出由简单到难的不同要求阶段案例。

根据单机版记忆游戏设计要求及功能要求,可以将记忆游戏案例教学目标分为以下两个阶段。

4.1 单击用命令按钮实现一组标签颜色的随机切换

4.1.1 设计及java语言实现要求

创建一个最终类ColorLabel,向类中添加一个setDrawColor( )方法,这个方法带有一个Color类型的参数,ColorLabel类中还要求有一个Color类型的成员变量drawColor,这个成员变量用来给标签着色,改变drawColor的值则会改变标签的颜色,setDrawColor( )方法的参数用来给变量drawColor传值。

java语言代码实现如下:

创建一个名为Main的类,添加主方法main( )。

向Main类中添加三个非静态成员变量:①名为guiFrame的JFrame对象引用;②名为arrayLabels的64位一维数组,数组元素类型为ColorLabel的对象引用;③名为rand的Random的对象引用,Random类型来自java.util包,Y成员变量rand用来产生随机数。

Java语言代码实现如下:

Main类中添加返回类型为void且无参的非静态成员方法createGUⅠ( )。

createGUⅠ( )方法体内容设计要求如下:①给guiFrame赋值为一个新创建的JFrame对象;②当程序运行结束时,设置窗体默认关闭;③设置窗体标题为“Label demo”;④创建64个ColorLabel对象,并且将其存储在arrayLabels数组中,给每一位数组元素赋值为rand对象产生的随机数值,这个随机数代表一种颜色;⑤向面板添加64个ColorLabel对象,运用布局管理器,向窗体顶端和底部分别添加一个8×8的网格和命令按钮。

Java语言代码实现如下:①在主类Main中创建一个适当的方法notification( ),用来告诉命令按钮,当它被单击时,通知主类,该方法将被告知执行了命令按钮的单击操作(需要在主类中执行操作界面)。②在主类中实现notification( )方法。这样,当按钮被单击时,每一个标签颜色会被随机改变。

Java语言代码实现如下:测试程序代码。实现当单击命令按钮时,8×8网格的标签颜色会被随机改变。

4.1.2 程序设计要求

程序设计要求如下:①创建期望的主类;②窗体、数组和随机对象引用是成员变量,并在适当的位置创建;③需要创建creategui方法并且起到适当作用;④8×8网格标签为数组元素;⑤标签有随机颜色;⑥主类处理按钮通知事件(即操作处理程序是在主类中,而不是内部类或其他类);⑦单击命令按钮则改变每一个标签颜色;⑧程序演示正确。

4.2 在4.1基础上,实现记忆游戏功能

4.2.1 程序设计部分的要求

程序设计部分的要求如下:①确保在代码中使用的常量(static final int)有要使用的不同颜色的数量、每种颜色的按钮数量、网格的宽度和高度(在按钮中)、每个按钮的大小(以像素为单位);②确保在网格中的每个按钮都是自己创建的JButton子类,按钮大小与代码中给定常量的值相匹配。当要求更改按钮的尺寸时,程序仍可以正常运行;③确保当按钮被单击的操作能被监听到;④每个按钮应该知道自己的状态,即应该绘制什么颜色、是否绘制完成、是否点击过(即应该显示其颜色)、是否没有点击过(即显示灰色)或者已经被匹配(应该是黑色)等,即将这些信息保存在按钮中,而不是保存在其他数据结构中。

4.2.2 程序实现部分的要求

程序实现部分的要求如下:①显示具有指定行数和列数(常量)的正方形网格(指定的大小,常量)。②每个正方形最初应显示为灰色,直到它已被点击,但应显示其被单击之后真正的颜色。③使用正确数量的不同颜色,可用的颜色数量是在一个常量中指定的。每个正方形从可用的颜色中给定一个随机(隐藏)的颜色。④每种颜色都应该创建若干给定个数的正方形(这个数字应该在代码中定义为一个常量)。每一个方块会分配若干个随机的颜色(颜色的数量乘以每个颜色的方格)必须相等(行乘以列)的网格(即总方格数量)所以网格大小设置为适当的常量。⑤当前玩家只能够点击两个正方形,显示他们的颜色。只有灰色方块可以点击,玩家不能点击一个完成的方块(黑色),或点击同一个方块两次。⑥如果选择两个相同的正方形,那么当前玩家获得两分(每个正方形一分),正方形变黑(不能再点击),当前玩家继续点击方块。⑦如果两个不同颜色的方块被选中,方块再次变成灰色,当前玩家回合结束,另一个玩家开始新的回合(得分状态标签应该更新)。⑧如果所有的方块都是黑色的,表示游戏结束,则应弹出一个消息框说明哪个玩家获胜。⑨当单击确定按钮关闭消息框时,操作盘应被重置,所有方块会被重新设置为新的随机颜色,被显示的最初颜色都是灰色。在按下确定按钮之前,操作盘不应该被重置。应该改变现有按钮的存储颜色,而不是创建新的按钮。⑩程序要求被演示的是一个完整的游戏,可以被重置开始新一局游戏(要求相同的大小但不同的按钮颜色)等。

5 总结

在Java语言教学过程中,把单机版记忆游戏的实现作为任务驱动教学案例,将学生玩游戏的兴趣向开发游戏方面引导,在编写小游戏的过程中,学生能够更容易理解面向对象思想,游戏代码也使学生能够更容易理解和接受Java语言复杂的知识要点和算法;在寓教于乐的教学过程中,能够更好提高学生思考问题和解决实际问题的能力,进而大大提高学生的算法分析能力与面向对象程序设计的编程能力,达到较好的教学效果。

猜你喜欢

方块网格按钮
有多少个方块
网格架起连心桥 海外侨胞感温馨
谜题方块
追逐
死循环
有序数方块
内心不能碰的按钮
好大的方块糖