- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
双手贪吃蛇Java程序设计课程设计报告
课题名称:双手贪吃蛇
摘要: “贪吃蛇”游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢迎,而“双手贪吃蛇”是基于经典的创新。此程序基于Java技术,利用eclipse软件设计,开发了一个操作简单、界面简洁、功能较齐全的“双手贪吃蛇”游戏。整个游戏程序由游戏界面设置(即绘图)、两条贪吃蛇运动和食物放置设置、提示框设置三大模块来设计,实现了游戏的开始和结束。通过本游戏的开发,达到学习Java技术和熟悉软件开发流程的目的。
关键词: 贪吃蛇;双手贪吃蛇;Java小游戏
1 课题背景及意义
“双手贪吃蛇”是经典游戏的一个小小创新,它的设计比较复杂,涉及面广、牵涉方面多,对于初学者来说是有一定难度的挑战。在这个游戏设计中,涉及到图形界面的实现与更新、键盘监听、数组的使用与记录、多线程的应用,还应用到类的继承机制。在设计开发过程中,需要处理好各个类之间的继承关系,协调好各个模块之间的逻辑依赖关系。
本次课程设计的目的在于学习Java程序设计基本技术,熟悉“双手贪吃蛇”的需求,熟悉项目开发的完整过程。学会怎样进行一个项目的需求分析、概要设计、详细设计等开发过程,培养起初步的项目分析能力和程序设计能力。
2 需求分析
游戏主界面:游戏主界面框架包括游戏图形面板、游戏帮助信息区域。
两条贪吃蛇运动:游戏开始时两条蛇有个初始速度,键盘的W、S、A、D控制黑蛇的运动方向,键盘的上下左右控制红蛇的运动方向。
食物放置:游戏开始时,食物在游戏面板中随机出现,蛇吃到食物后,食物再次随机出现。
(4)蛇身增加:任意一条蛇吃到食物后,增加一个单位的蛇身。
分数增加:分数初始值为0,任意一条蛇吃到一个食物,分数加10。
游戏结束:任意一条蛇碰到游戏面板边界后,游戏结束。
输入框、提示框显示:游戏结束后,弹出输入框输入玩家名称,确定后弹出游戏排行榜,再次确定后弹出玩家分数。
3 系统设计与实现
游戏主界面
建立一个类Yard继承JFrame,建立三个ImageIcon(icon/icon1/icon2)分别放置黑蛇、红蛇和食物的图标,建立string2放置帮助信息文字。把这些都装到容器c1中,用paint方法画出游戏面板。
主程序设计
(1)两条蛇的运动:建立SnakeConrol类,使用键盘监听(addKeyListener(new KeyAdapter())来实现用键盘控制蛇的运动方向,并且当蛇上下运动时只能有左右两个方向选择,同理当蛇左右运动时只能有上下两个方向选择。创建一个path类实现Runnable接口,在run()方法里建立两个二元数组记录两个蛇头走过的路径,并且不断更新。
(2)食物开始时的随机放置:创立Food类,定义boolean can 判断食物是否可以放置,利用run()方法和while循环来实现食物的随机放置。
(3)判断蛇是否吃到食物:用if语句来判断蛇是否有吃到食物,若吃到则can=true,分数sorce加10,继续while循环,食物再次随机放置,游戏继续。
(4)蛇身增加:建立Snakebody类实现Runnable接口,在run()方法里用if语句判断,若sorce大于等于10,把蛇身增加到蛇头走过的前一个坐标上,并且不断更新。
(5)游戏结束:在SnakeControl类里,利用run()方法来实现当任意一条蛇的坐标超出游戏面板范围(即蛇碰壁)游戏结束。
输入框、提示框
游戏结束后,弹出输入玩家名称的输入框(String name = JOptionPane.showInputDialog)
确定后弹出排行榜的提示框(JOptionPane.showMessageDialog)
再次确定后,弹出显示玩家分数的提示框(JOptionPane.showMessageDialog)
4 软件测试
(1)对食物随机出现进行了多次调试,始终无法在游戏面板中出现食物,最终发现是代码出现缺少小括号的错误导致无法实现。
修改后的正确代码:
while ((X 20 || X 465) || (Y 52 || Y 415)) {
X = (int) (Math.random() * 1000);
Y = (int) (Math.random() * 1000);
}
一开始蛇坐标无法与食物坐标完全吻合,无法实现蛇吃到食物。原因:蛇是以10像素为一个单位的运动,而坐标是随机放置,所以蛇怎么移动都无法与食物重叠,就无法实现蛇吃食物。
修改后的正确代码:
while (can == false) {
while ((X 20 || X 465) || (Y 52 || Y 415)) {
X = (int) (Math.r
文档评论(0)