Sci论文 - 至繁归于至简,Sci论文网。 设为首页|加入收藏
当前位置:首页 > 教育论文 > 正文

《java 程序设计》游戏案例教学法的探讨论文

发布时间:2019-11-18 11:39:12 文章来源:SCI论文网 我要评论














SCI论文(www.lunwensci.com):

摘要:《java程序设计》传统案例教学法是讲完所有知识点后讲一个综合案例。本文给出的案例教学法是,将综合案例贯穿到教学内容中,且综合案例选用的是业务简单、有趣的扫雷游戏。文中具体介绍了讲解java内容的同时设计编写扫雷游戏的实施过程。此方法已进行过一轮的教学实践,效果较好。

关键词:游戏;扫雷游戏;java程序设计;教学方法;案例

Discussion About the Game Case Teaching Method of Java Programming LIN Shu-fei,Wang Hai-rong

(Department of Computer,the North University for Ethnics,Yinchuan,Ningxia,China)

Abstract:The traditional teaching method of Java Programming was that a synthetic case was given after all Java contents were given.In the paper,a teaching method was introduced that the simple and fun minesweeper game was a synthetic case and it ran through Java teaching.The concrete steps of the method was given in the paper.The teaching method was used for one year and the students score told us the method was good.

Key words:game;minesweeper game;Java Programming;teaching method;case

       《java程序设计》是一门实践性很强的课程,必须结合案例进行讲解才容易接受。传统的方法是讲完基本内容之后讲一个综合案例。在过去一年的《java程序设计》教学中,我们将综合案例贯穿于基本内容的教学中,效果很好。为了不让案例复杂的业务影响学生对教学内容的理解,我们选游戏做案例。游戏不但业务简单,而且易让学生产生兴趣。本文使用扫雷游戏做案例,边讲解java知识边带着学生用所学到的知识设计扫雷游戏,最后内容讲完了游戏也做好了。

一 方法实施

       讲授java内容为主,设计扫雷游戏为辅。将扫雷游戏的编写分割到java的各个章节中,讲到什么就编写什么,比如,讲到线程就编写扫雷游戏的计时部分。

\

 
(一)类的设计及面向对象程序设计思想

         先讲解类和对象的概念[1-3]。然后通过对扫雷游戏的分析,讲解面向对象的设计思想,即分析扫雷游戏涉及到哪些对象。第一个对象是按钮,不同的按钮背景不同,没被点开的按钮是有立体感的;被点开的按钮上面可能有数字也可能什么也没有;有雷的按钮被点,游戏就失败。按钮的行为有鼠标左击、鼠标右击和鼠标双击,其中左击是在扫雷,右击是在给按钮加“红旗”或“?”标志,双击(只针对数字按钮)可以获得游戏提示。按钮类类名定为ThunderButton,其类体的定义在后面章节中编写。第二个对象是窗口,就是放那些按钮的容器,类名定为ThunderWindow,其类体的定义在后面章节中编写。最后,由于按钮不止一个,而且相邻按钮之间联系紧密,所以应该有一个对象能让我们能找到与当前按钮相邻的按钮,那就是ThunderLocation,它的定义如下:

      public class ThunderLocation{private int x,y;

      private int dir[][]={{1,0},{1,1},{0,1},{-1,1},{-1,0},{-1,-1},{0,-1},{1,-1}};

      public Thunder Location extend(int i,int sizex,int sizey)

      {if(x+dir[i][0]>=0&&x+dir[i][0]<sizex&&y+dir[i][1]>=0&&y+dir[i][1]<sizey)

      {return new ThunderLocation(x+dir[i][0],y+dir[i][1]);}return null;}}

      通过ThunderLocation的定义,加深学生对类的构成的理解,顺便将数组、二维数组也讲了。到此,我们抽象出了三个类。

(二)类成员

       主要讲类的组成,即成员变的定义和使用。在扫雷游戏中,右击按钮(ThuderButton)出现“小旗”标志,再次右击此按钮出现“?”标志,第三次右击按钮恢复原样。为每个按钮定义一个名为playStatus、类型为int的属性,表示游戏时按钮的状态。属性playStatus的初值为0,表示按钮上什么也没显示;playStatus的值为1,表示按钮上显示“红旗”;playStatus的值为2,表示按钮上显示“?”。按钮的int型属性realStatus表示按钮实际的状态。realStatus取值-1表示当前按钮有雷;取值0表示当前按钮无雷且与之相邻按钮也都无雷,我们称之空按钮;取值k(k为1到8的正整数)表示当前按钮无雷且有k个与之相邻的按钮有雷,我们称之为数字按钮。按钮还有int型属性x、y表示其在ThunderLocation中的位置。

        按钮ThunderButton类的主要方法有,判断是否有雷的方法isThunder()、判断是否为空按钮的方法idEmpty()、判断是否为数字按钮的方法isNumber()、判断按钮上是否有“红旗”的方法isRedFlag(),等等。

(三)类的继承

        经分析认为,按钮类ThuderButton可以设计为JLabel的子类,该类具体的设计在讲解类成员、集合泛型和图形界面设计这三个内容时完成。窗口多是JFrame的子类,那么ThunderWindow自然是JFrame的子类,该类可以在图形界面设计时完成。类继承的一个难点是构造方法的继承。GameOverDiaglog是扫雷游戏结束对话框,它是JDialog的子类,借它来讲构造方法的继承,它的定义片断如下:

       public class GameOverDialog extends JDialog{public GameOverDialog(ThunderWindow th,String title,String tishi){super(th,title);//继承父类的构造方法,必须是子类构造方法的第1条语句………}………..}

(四)集合和泛型

      ThunderButton类用到了接口List<E>及其实现类ArrayList<E>、接口Queue<E>及其实现类LinkedList<E>,课堂上重点讲解这些,其余的可让学生自学。当单击到数字按钮时,处理很简单,将此按钮的属性playStatus置为-1,表示此按钮已被点开,并将此按钮的图标设置为相应的数字图片。当单击到空按钮时,需要向其四周搜索并展开所有空按钮直至遇到边界或数字按钮,这个是扫雷游戏的核心,方法签名如下:

       private ArrayList<ThunderLocation>search(int x,int y,int sizex,int sizey){}这个方法用队列queue存放需要访问其周边按钮的按钮,用集合list存放确定被展开的按钮,其中queue、list定义为:Queue<ThunderLocation> queue=new LinkedList<ThuderLocation>;L i s t<T h u n d e r L c a t i o n> l i s t=neArrayList<ThunderLocatio>。具体思路是,先将当前按钮入队列,然后循环进行“一个按钮出queue队列;若此按钮是无雷按钮就将其加入到list集合中;若此按钮还是空按钮就要将其周边没入队的无雷按钮入队列queue”,直到queue为空。这些集合、队列有什么方法,方法如何用,需要查看API帮助文档,所以课堂上要抓住机会让学生学习如何查看API帮助文档。

(五)图形界面设计

        图形界面设计这部分内容主要包括组件、布局和事件处理[4]。内部类也在这里讲,因为内部类最常用的地方就是事件处理。边完善ThunderWindow和ThunderButton,边讲解这部分内容。扫雷游戏用到了JLabel、JButton、JTextField、JPasswordField、JList、JRadioButton、JMenu、JMenuItem等 组件,可让学生课下通过API帮助文档学会它们如何用。游戏主窗口ThunderWindow使用FlowLayout和GridLayout两种布局,其余的窗口多数使用的是null布局。ThunderButton类的主要代码就是处理ActionEvent事件。

(六)类的多态性和封装性

        多态有重载和重写。重载是指功能相同但数据不同的处理方式。比如,不管是因为成功还是因为失败导致游戏结束,都会出现游戏结束对话框。但对话框上的提示信息和按钮不同。所以游戏成功结束的对话框这样定义:
public GameOverDailog(ThunderWindow th,int time),游戏失败结束的对话框这样定义:public GameOverDailog(ThunderWIndow th,String tishi),由于失败可能是因为踩雷,也可能是因为时间到了,所以参数tishi表示对话框上显示的失败原因。若是人为中断导致的游戏结束,对话框应这样定义:public GameOverDailog(ThunderWIndow th)。

        重载的另外一个例子就是游戏开始,若是重新开始新的游戏就用方法startGame(),若是重新开始刚才的游戏就用方法startGame(int a[]),参数a[]表示刚才游戏的雷的位置。

       重写是指子类覆盖父类的方法,比如接口实现类重写接口的方法。这时就讲抽象类、接口和接口实现类这些知识点。为了记录、统计玩家的成绩,需要定义接口LogDao和其对应的实现类LogDaoImpl,如下所示:

       public interface LogDao{void save(Log);Log findByName(int dengji,String name);…}public class Log DaoImpl implements LogDao{public void save(Log log){打开数据库连接,调用SQL语句将Log的对象log存入数据表log中。}
……..} 当连接的数据库发生变化时,只需再增加一个LogDao的实现类即可,使用不变。这就是多态的好处。

       类的封装性。在扫雷游戏中,统计出游戏的前五名玩家,或者统计出玩家连续成功、失败的次数,都需要对查找出的记录进行排序,这个排序方法就可以定义为private。

(七)异常处理

       在设置扫雷游戏自定义等级的参数时,若玩家输入的参数不合理,就需要异常处理。比如,雷的个数比按钮个数还多,就要抛出一个自定义异常,并对其捕获处理。再如,雷的个数不是数字,也需要进行异常捕获和处理。


\

 
(八)输入输出流

      在扫雷游戏中,帮助菜单下有“关于扫雷”和“关于提示”两个菜单项,当它们被单击时,都是出现一个对话框,上面显示一段描述扫雷游戏或描述如何获得提示的文字,下面是一个关闭按钮。那么,就可以定义一个类如下:

       public class GuanYuFrame extends JFrame{public GuanYuFrame(String filename){}}

        我们可以把关于扫雷和关于提示的文字分别存入两个记事本文件中,在GuanYuFrame构造方法中通过FileReader或FileInputStream或BufferedFileReader读取记事本中的文字并显示在窗口中。

二 总结

        本文介绍的教学方法是,将扫雷游戏的设计编程工作贯穿到Java程序设计的教学中,边讲解Java内容,边编写扫雷游戏中与所讲内容相关的程序,结课时游戏完成。讲授Java为主,编扫雷游戏为辅。对简单的知识点,可直接将其应用到扫雷游戏的程序中,写程序的同时就把它讲了,课后让同学们自行巩固复习即可。对于复杂难理解的知识点,要先讲知识点,同学们都掌握后,再将其应用到扫雷游戏中。此教学方法我已使用了一个轮回,效果较好。
为了使整个教学过程自然衔接,让学生思路清晰且能跟上教学过程,不给学生“东一锤子西一棒子”的感觉,我们的教学顺序和一般书上给出的顺序不太一致,但并不影响学生对教学内容的掌握。由于在课堂上写扫雷游戏的代码会影响教学进度,所以相似的知识点只讲一个,较简单的知识点可让学生自学。

参考文献

[1]Bruce Eckel.Thinking in Java[M].北京:机械工业出版社,2007.
[2]高林,周海燕.Jsp网上书店系统与案例分析[M].北京:人民邮电出版社,2004.
[3]明日科技.软件视频大讲堂Java从入门到精通[M].北京:清华大学出版社,2012.
[4]Rogers Cadenhead.Java入门经典[M].北京:人民邮电出版社,2012.
[5]陈小兵,范渊,孙立伟.Web渗透技术及实战案例解析[M].北京:电子工业出版社,2012.
[6]刘凯,徐晓君.基于CDIO工程教育模式的项目驱动学习的方法探索——以《Java程序设计》课程改革为例[J].教育现代化,2018,5(47):182-183.
[7]苏华.JAVA程序设计课程教学改革与研究[J].教育现代化,2016,3(07):65-66.

关注SCI论文创作发表,寻求SCI论文修改润色、SCI论文代发表等服务支撑,请锁定SCI论文网! 
文章出自SCI论文网转载请注明出处:https://www.lunwensci.com/jiaoyulunwen/7277.html

发表评论

Sci论文网 - Sci论文发表 - Sci论文修改润色 - Sci论文期刊 - Sci论文代发
Copyright © Sci论文网 版权所有 | SCI论文网手机版 | 鄂ICP备2022005580号-2 | 网站地图xml | 百度地图xml