一.课程设计团队博客链接
1.2UML类图
2.个人负责模块或任务说明
黄色划线部分为我负责的功能
3.代码提交记录
https://gitee.com/hong-zhihong/snakebag.git
4.负责模块详细说明
蛇的移动模块(使用了Timer类,通过设计刷新的时间,实现KeyListener和ActionListener接口实现对键盘按键和变量监听的方法,实现蛇的移动)
画出界面模块
难点是判断位置的坐标,使用画图Graphics类,实现了Jpanel的paintComponent方法,用里面的paintIcon,setColor,fillRect等方法实现
音乐播放模块
5.课设感想
一开始不知道怎么实现蛇的移动,使用键盘监听可以控制蛇的方向,但是怎么让蛇动起来不知道,最后结合Timer刷新来实现,简单的说,游戏界面的实现就是监听键盘和变量,控制刷新的时间来实现的。在设置不同难度时,我一开始想直接判定蛇是否撞墙,但是这样的代码量太大了,让我望而生畏,于是我定义一个wall数组,在画墙的同时,把墙的坐标输入wall数组中,这样,只要判断蛇头是否与墙重合即可,同时,也不能忘了让食物无法绘制在墙和蛇身上。在音乐播放界面中,我一开始用的不是wav格式,导致无法播放,然后在写地址时也不是像图片那么简单,只要将图片放入类的包中即可,而是要指向绝对路径,这搞得我一头雾水,最后实现了背景音乐和吃东西发出的声音后,在自己找bug时发现,当吃了7个东西之后背景音乐就停止了,我打开任务管理器查看CPU的占用,发现应该是我实现音乐的播放方式有问题,导致线程过多,当吃了7个东西时,CPU的占用突然就上升了百分之二十。但是继续吃东西还是可以发出声音的,这让我十分疑惑。
6.展望
1.在音乐播放功能上,连吃七个东西后导致背景音乐的暂停,以后要多学习多线程的使用和学习问题如何解决。一开始要用javaFX技术实现,但是在安装上就花费了大量时间,导致不战而退。
2.课设后我要进一步学习javaFX,用该技术来实现贪吃蛇,学习数据库编程,存储登录信息。同时增加贪吃蛇的多线程功能,可以实现双人贪吃蛇。