java小游戏设计.docx

合集下载

java猜字小游戏课程设计

java猜字小游戏课程设计

java猜字小游戏课程设计一、教学目标本课程旨在通过Java猜字小游戏的设计与实现,让学生掌握Java编程的基本语法、流程控制语句、数据结构等基础知识,培养学生运用Java语言解决实际问题的能力。

同时,通过小组合作、讨论交流的方式,培养学生的团队协作意识和沟通能力。

1.掌握Java基本语法和编程规范。

2.理解流程控制语句(if、for、while等)的使用。

3.熟悉字符串操作、数组和列表等数据结构。

4.了解常用的Java类库和API。

5.能够运用Java语言编写简单的猜字游戏。

6.掌握调试和运行Java程序的基本方法。

7.具备查找和使用Java相关资料的能力。

情感态度价值观目标:1.培养学生的编程兴趣,提高自主学习能力。

2.增强学生团队协作、沟通交流的能力。

3.培养学生勇于面对挑战、解决问题的精神。

二、教学内容本课程的教学内容主要包括Java基本语法、流程控制语句、数据结构、字符串操作等知识。

教学过程中,将结合具体的猜字游戏案例,让学生动手实践,巩固所学知识。

1.Java基本语法和编程规范。

2.流程控制语句(if、for、while等)的使用。

3.字符串操作、数组和列表等数据结构。

4.常用的Java类库和API。

5.猜字游戏的设计与实现。

三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法,旨在激发学生的学习兴趣,提高学生的主动性和团队协作能力。

1.讲授法:用于讲解Java基本语法、流程控制语句等理论知识。

2.案例分析法:通过分析具体的猜字游戏案例,让学生理解并掌握Java编程技巧。

3.实验法:让学生动手编写和调试Java程序,培养实际操作能力。

四、教学资源本课程所需教学资源包括教材、多媒体资料、实验设备等。

1.教材:选用权威、实用的Java编程教材,为学生提供理论知识的学习资料。

2.多媒体资料:制作精美的PPT、教学视频等,辅助学生理解和掌握知识。

3.实验设备:为学生提供充足的计算机设备,进行编程实践。

java猜拳小游戏课程设计

java猜拳小游戏课程设计

java猜拳小游戏课程设计一、课程目标知识目标:1. 让学生掌握Java基础语法,包括变量声明、数据类型、运算符和条件语句。

2. 使学生了解猜拳游戏的逻辑规则,并将其转化为程序代码。

3. 帮助学生理解面向对象编程的基本概念,如类、对象和方法的定义。

技能目标:1. 培养学生运用Java编写简单程序的能力,尤其是控制流程和逻辑判断。

2. 提高学生运用面向对象编程方法解决问题的能力,如设计类和对象,以及调用方法。

3. 培养学生调试和优化程序的能力,以实现更高效的猜拳游戏。

情感态度价值观目标:1. 激发学生对编程的兴趣,培养其主动探索和解决问题的热情。

2. 培养学生团队合作精神,通过小组讨论和分享,共同优化猜拳游戏。

3. 引导学生认识到编程在现实生活中的应用价值,激发其将所学知识应用于实际问题的意识。

针对课程性质、学生特点和教学要求,本课程目标将分解为以下具体学习成果:1. 学生能够独立编写并运行一个简单的Java猜拳游戏程序。

2. 学生能够在程序中正确使用变量、数据类型、运算符、条件语句和面向对象编程方法。

3. 学生能够通过小组合作,优化猜拳游戏程序,提高游戏体验。

4. 学生能够表达对编程的兴趣,积极参与课堂讨论,分享编程心得和经验。

二、教学内容1. Java基本语法回顾:变量声明、数据类型、运算符、条件语句。

- 教材章节:第2章 Java语言基础2. 面向对象编程基本概念:类、对象、方法。

- 教材章节:第4章 面向对象编程基础3. 猜拳游戏逻辑规则介绍:游戏规则、胜负判断。

- 教材章节:第6章 Java编程实例4. 编写猜拳游戏程序:设计类和对象,实现游戏逻辑。

- 教材章节:第6章 Java编程实例5. 程序调试与优化:调试技巧、性能优化。

- 教材章节:第7章 程序调试与优化6. 团队合作与分享:小组讨论、成果展示。

- 教材章节:附录 团队合作与沟通教学内容安排与进度:1. 课时1:Java基本语法回顾,面向对象编程基本概念介绍。

java课程设计小游戏拿火柴

java课程设计小游戏拿火柴

java课程设计小游戏拿火柴一、教学目标本节课的教学目标是使学生掌握Java语言的基本语法和编程技巧,通过编写小游戏“拿火柴”来提高学生的编程实践能力。

具体目标如下:1.掌握Java语言的基本语法和结构。

2.理解面向对象编程的基本概念。

3.学习使用Java编写简单的图形界面程序。

4.能够使用Java编写基本的控制结构和函数。

5.学会使用Java编写简单的图形界面程序。

6.能够运用面向对象编程思想来解决问题。

情感态度价值观目标:1.培养学生的编程兴趣,提高学生主动学习编程的积极性。

2.培养学生团队协作、沟通交流的能力。

3.培养学生解决问题、创新思维的能力。

二、教学内容本节课的教学内容主要包括以下几个部分:1.Java语言基本语法和结构:数据类型、变量、常量、运算符、控制结构等。

2.面向对象编程:类、对象、属性、方法、继承、多态等。

3.Java图形界面编程:Swing组件、事件处理、布局管理器等。

4.小游戏“拿火柴”的设计和实现:游戏规则、界面设计、逻辑实现等。

三、教学方法为了提高学生的学习兴趣和主动性,本节课将采用以下几种教学方法:1.讲授法:讲解Java语言的基本语法和结构,以及面向对象编程的基本概念。

2.案例分析法:分析实际编程案例,让学生理解Java编程的应用场景。

3.实验法:让学生动手编写小游戏“拿火柴”,提高学生的编程实践能力。

4.小组讨论法:分组进行讨论,培养学生的团队协作和沟通交流能力。

四、教学资源本节课的教学资源包括以下几个方面:1.教材:《Java编程入门》或《Java核心技术》等。

2.参考书:《Java编程思想》、《Java并发编程实战》等。

3.多媒体资料:教学PPT、视频教程、在线编程实践平台等。

4.实验设备:计算机、网络环境、编程软件(如Eclipse、IntelliJ IDEA等)。

五、教学评估本节课的教学评估将采用多元化评价方式,以全面、客观、公正地评价学生的学习成果。

超级玛丽JAVA小游戏详细设计文档

超级玛丽JAVA小游戏详细设计文档
分离。 业务逻辑层。主要是游戏的人物和敌人的动作,碰撞的判断,这个与表现层
无关,需要表示层调用定义好的接口与逻辑层的通信 数据持久层。保存游戏中的数据,载入游戏中需要的资源,与程序逻辑层无
关,用 XML 文档存储数据
2.7 程序的三层结构图
表现层(绘制屏幕)
逻辑层(程序的逻辑)
数 据 持 久 层 ( 数 据 存4储 )
不同的操作; 查询记录:查询五个最高游戏分数,排名由上往下递减。 游戏设置(包括音乐设置和按键设置):玩家可以设置游戏进行时的音乐开
或关以及修改相应的控制键。
2.6 程序的总体架构
本程序采用 3 层程序架构,业务表现层,业务逻辑层和数据持久层。 业务表现层。主要是游戏界面的绘制,通过指定的接口绘制,与游戏的逻辑
private void walk()
//人物走的动作
private boolean checkTileCollisionVertical() //检查与地图的纵
向碰撞
private boolean checkTileCollisionHorizon() //检查与地图的横
向碰撞
private void fire() //发射子弹
地图,以提高游戏的运行速度 5) 居于多线程,实现进度条
2.2 游戏功能划分
游戏的基本功能应该包括菜单处理,程序逻辑处理,持久性处理和挂起恢复处理。 关于菜单的处理,包括可以选择的进入游戏、保存、帮助和音效开关等。 程序的逻辑处理就是涵盖了程序中除菜单外几乎所有的功能。 持久性处理就是资源的载入和游戏的进度保存。
private boolean checkSpriteCollisionVertical() //检查纵向与

JAVA贪吃蛇游戏设计文档

JAVA贪吃蛇游戏设计文档

《JA V A贪吃蛇游戏设计》目录《JA V A贪吃蛇游戏设计》 (1)目录 (1)摘要 (2)一.系统开发环境 (2)1.1 开发工具 (2)1.2 应用环境 (3)二.java介绍 (3)2.1java语言的特点 (3)2.2JA V A的主要特性 (4)2.3选题的意义 (5)2.4研究现状 (5)2.5研究目的 (6)三.系统需求分析 (6)3.1 需求分析 (6)3.2 可行性分析 (6)四.设计方案论证 (7)4.1设计思路 (7)4.2设计方法 (7)五.系统概要设计 (11)5.1 设计目标 (11)5.2 系统功能模块 (11)六.系统详细设计 (12)6.1 程序设计 (12)6.2 各功能界面截图 (15)七.系统测试 (20)7.1 测试的意义 (20)7.2 测试过程 (21)7.3 测试结果 (21)7.4设计体会 (21)7.5设计总结 (21)八.参考文献 (22)九.附录 (22)摘要近年来,Java作为一种新的编程语言,以其简单性、可移植性和平台无关性等优点,得到了广泛地应用,特别是Java与万维网的完美结合,使其成为网络编程和嵌入式编程领域的首选编程语言。

JBuilder是Borland公司用于快速开发Java应用的一款优秀的集成开发环境,它以其友好的开发界面、强大的组件支持等优点,得到广大程序员的接受和认可。

“贪吃蛇”游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢迎。

本文基于Java技术和JBuilder开发环境,开发了一个操作简单、界面美观、功能较齐全的“贪吃蛇”游戏。

整个游戏程序分为二个功能模块,六个类模块,实现了游戏的开始、暂停、结束。

通过本游戏的开发,达到学习Java技术和熟悉软件开发流程的目的。

本文在介绍Java相关技术和国内外发展现状的基础上,对“贪吃蛇”游戏的整个生命周期的各个开发阶段进行了详细地介绍。

首先,分析了开发本游戏软件的可行性,重点分析本设计所采用的技术的可行性。

java小游戏策划书3篇

java小游戏策划书3篇

java小游戏策划书3篇篇一《Java 小游戏策划书》一、游戏概述1. 游戏名称:[游戏名称]2. 游戏类型:[游戏类型,如休闲、竞技、冒险等]3. 游戏平台:[支持的平台,如 Java 控制台、Web 浏览器等]4. 游戏目标:[简要描述游戏的主要目标]二、游戏规则1. 玩家操作:[说明玩家如何与游戏进行交互,例如键盘控制、鼠标等]2. 游戏目标:[详细描述游戏的胜利条件和失败条件]3. 游戏流程:[简述游戏的整体流程,包括开始界面、游戏界面、结束界面等]三、游戏特色1. 独特的游戏玩法:[介绍游戏的独特之处,如创新的游戏机制、特殊的关卡设计等]2. 精美的游戏画面:[描述游戏的视觉风格和画面效果,如色彩搭配、图形设计等]3. 丰富的游戏内容:[列举游戏中的各种元素,如关卡、道具、敌人等]4. 挑战性的关卡设计:[说明游戏中不同关卡的难度梯度和挑战性]四、游戏系统需求1. 硬件需求:[列出游戏运行所需的最低硬件要求,如操作系统、处理器、内存等]2. 软件需求:[说明游戏所需的支持软件,如 Java 运行环境等]五、开发计划1. 里程碑计划:[制定游戏开发的关键里程碑和交付日期]2. 开发团队:[列出参与游戏开发的人员及其职责]3. 开发进度:[分配每个阶段的开发任务和时间估计]六、游戏测试1. 测试目标:[明确游戏测试的目的和范围]2. 测试方法:[描述测试的方法和工具,如手动测试、自动化测试等]3. 测试用例:[列举游戏的测试用例,包括功能测试、性能测试等]七、游戏发布与推广1. 发布计划:[制定游戏的发布日期和发布渠道]2. 推广策略:[描述游戏的推广方式,如社交媒体宣传、线下活动等]3. 后续支持:[说明游戏发布后的后续支持计划,如更新维护等]八、收益与成本1. 收益预测:[估计游戏的收益来源和预计收益金额]2. 成本估算:[列出游戏开发和运营的成本,如人力成本、技术设备等]3. 盈利模式:[介绍游戏的盈利模式,如付费、广告收入等]篇二《Java 小游戏策划书》一、游戏概述1. 游戏名称:[游戏名称]2. 游戏类型:[游戏类型,如休闲、竞技、冒险等]3. 游戏平台:[支持的平台,如 Java 控制台、Web 浏览器等]4. 游戏目标:[简要描述游戏的目标]二、游戏规则1. 玩家操作:[描述玩家可以进行的操作,如移动、攻击、跳跃等]2. 游戏关卡:[介绍游戏的关卡设计,包括不同的场景和挑战]3. 胜利条件:[说明玩家获胜的条件]4. 失败条件:[列出玩家失败的条件]三、游戏特色1. [特色 1]描述特色 1 的具体内容2. [特色 2]描述特色 2 的具体内容3. ……四、游戏系统1. 玩家界面显示玩家的状态和操作信息2. 游戏场景管理游戏的背景和元素3. 敌人系统设计敌人的行为和4. 道具系统引入各种道具,增强游戏的趣味性和策略性5. 计分系统记录玩家的得分和成就五、游戏开发计划1. 里程碑 1:[完成日期],完成游戏的基础框架2. 里程碑 2:[完成日期],添加游戏特色和系统3. 里程碑 3:[完成日期],进行测试和优化4. 里程碑 4:[完成日期],发布游戏六、团队分工1. [成员 1]:负责[具体工作 1]2. [成员 2]:负责[具体工作 2]3. ……七、预算1. 人力成本:[具体金额]2. 技术成本:[具体金额]3. 其他成本:[具体金额]4. 总预算:[具体金额]八、风险评估与应对1. 技术风险:[分析可能遇到的技术问题及应对措施]2. 时间风险:[评估项目进度可能延误的风险及应对方案]3. 资源风险:[考虑资源短缺的可能性及解决办法]篇三《Java 小游戏策划书》一、游戏概述1. 游戏名称:[游戏名称]2. 游戏类型:[游戏类型,如休闲、竞技、冒险等]3. 游戏平台:[支持的平台,如 Java 小程序、手机、PC 等]4. 游戏目标:[简要描述游戏的目标]二、游戏背景1. 故事背景:[讲述游戏的背景故事,吸引玩家进入游戏世界]2. 游戏世界:[描绘游戏的世界设定,包括地图、场景、角色等]三、游戏玩法1. 操作方式:[说明玩家如何操作游戏,如键盘、鼠标、触摸等]2. 游戏规则:[详细介绍游戏的规则和流程,包括胜利条件、失败条件等]3. 游戏特色:[突出游戏的独特玩法和特点,增加游戏的趣味性和吸引力]四、游戏系统1. 角色系统:[介绍游戏中的角色,包括角色属性、技能、升级等]2. 道具系统:[说明游戏中的道具,包括道具效果、获取方式等]3. 关卡系统:[设计游戏的关卡,包括关卡难度、通关奖励等]4. 排行榜系统:[设立游戏的排行榜,激励玩家竞争排名]五、游戏界面1. 主界面:[展示游戏的主界面,包括游戏 logo、菜单、开始按钮等]2. 游戏界面:[呈现游戏的实际操作界面,包括游戏场景、角色、道具等]3. 提示界面:[提供游戏的操作提示和帮助信息]六、开发计划1. 开发进度:[制定游戏的开发进度,包括各个阶段的完成时间]2. 人员分配:[明确开发团队中各个成员的职责和任务]3. 技术选择:[选择适合游戏开发的技术和工具]七、游戏测试1. 测试目的:[说明游戏测试的目的,确保游戏的质量和稳定性]2. 测试方法:[介绍游戏测试的方法,如手动测试、自动化测试等]3. 测试内容:[详细描述游戏测试的内容,包括功能测试、性能测试、兼容性测试等]八、游戏发布1. 发布渠道:[选择游戏的发布渠道,如应用商店、官方网站等]2. 发布时间:[确定游戏的发布时间,吸引玩家关注]九、游戏后期维护1. 内容更新:[计划游戏的内容更新,保持游戏的新鲜感和吸引力]2. 技术支持:[提供游戏的技术支持,解决玩家遇到的问题]3. 数据分析:[分析游戏的数据,了解玩家的行为和需求,优化游戏体验]。

java课程设计五子棋游戏完整版

java课程设计五子棋游戏完整版

沈阳大学沈阳大学沈阳大学沈阳大学沈阳大学沈阳大学沈阳大学沈阳大学算下一步棋,isMatrix位true参数为插入点棋格坐标,否则参数为插入点像素坐标。

当游戏结束的时候使用Graphics g调用方法,在游戏过程中如果是黑方或是白方获胜在棋盘中就会显示是哪方获胜。

3.设计结果与分析(1)当进入到游戏当中可以选择是哪个颜色的棋先出,选择好之后便可以单机开始进行下棋,如果在游戏过程中出现什么问题可以单机再来一局重新开始游。

五子棋游戏的主界面如图2所示:图2.程序主界面(2)如果实黑棋先开始那么开始后的界面中先出的棋显示的是黑棋,如果是白棋先出则显示的是白棋,以黑棋为例如图3所示:沈阳大学图3.黑棋先出的界面图(3)对于五子棋游戏,无论人机对战,还是双人对战,都需要判断棋盘上是否存在五子连珠情况,这既是游戏名字的由来,也是游戏结束的标志。

判断五子连珠的原理是从横,竖,左斜线,右斜线4条线上判断是否存在5个相连的同类棋子,黑棋的五个棋子在横、竖或斜方向上连接成一线即为该方赢如图4所示:沈阳大学图4.游戏结束界面(4)白棋的五个棋子在横、竖或斜方向上连接成一线即为该方赢如图4所示:沈阳大学图5.白棋胜利界面图4.设计体会通过这次课程设计,我进一步加深对基础理论的理解,扩大专业知识面,对收集资料、查阅文献、方案制定等实践方面得到了很好的锻练,促进对所学知识应用能力的提高。

同时我渐渐的复习了Java使用方法和编程语法,之后的编程过程也相对得心应手,基本完成了预期计划的要求。

在此感谢我的指导老师—原玥老师,她在课题的研究上不遗余力的给予指导。

她严谨的治学态度深深的影响了我,使我受益匪浅!这个课设题对我来说有一定的挑战性,因为我自己也不知道自己到底学到了一个什么样的境界。

但可以肯定,这个课设题的要求绝对在我的能力范围以上。

之所以选择这个题目是想逼着自己去查更多的资料,学到更多的东西。

结果也确实是这样的,我在这次课设中学到了不少东西,也理解了许多原来不理解的东西。

(完整word版)基于Java的猜拳小游戏设计

(完整word版)基于Java的猜拳小游戏设计

目录绪论............................................... 错误!未定义书签。

一、背景与意义..................................... 错误!未定义书签。

二、设计原理与方案................................. 错误!未定义书签。

一)方案....................................... 错误!未定义书签。

二)设计思路................................... 错误!未定义书签。

三)系统分析................................... 错误!未定义书签。

四)程序概要设计............................... 错误!未定义书签。

五)工作流程图................................ 错误!未定义书签。

六)程序框图.................................. 错误!未定义书签。

七)程序中所用类说明.......................... 错误!未定义书签。

八)程序运行效果及存在的问题................... 错误!未定义书签。

三、项目实现....................................... 错误!未定义书签。

一)程序用到的类库简介......................... 错误!未定义书签。

二)游戏主程序设计............................. 错误!未定义书签。

三)主界面PigPanel类......................... 错误!未定义书签。

四)具体实现.................................. 错误!未定义书签。

四、运行结果....................................... 错误!未定义书签。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持.华北科技学院计算机学院综合性实验实验报告课程名称JAVA程序设计实验学期2014至2015学年第1学期学生所在院部计算机学院年级专业班级学生姓名学号任课教师实验成绩计算机学院制《 Java 程序设计》课程综合性实验报告开课实验室:基础四2016年 11 月 28日实验题目基于 java 的拼图游戏一、实验目的程序使用Eclipse 集成开发环境完成,熟悉并掌握在Eclipse 开发环境下编写Java 程序。

二、设备与环境硬件:多媒体计算机软件: Windows 系列操作系统、JDK 开发包、 Eclipse 开发环境三、实验内容及要求1.实验要求使用 Java swing 编程实现拼图游戏。

游戏功能是将一幅图片分割成5*5 的规则小图片,游戏开始时将25 个小图片随机摆放,玩家能够参考原图拼接出正确的图片。

游戏规则:在 25 个小图片中有一个为空白图片,玩家可以单击和空白小图片相邻的任一个小图片(上、下、左、右均可),即可将单击的小图片与空白小图片交换位置。

通过有限次的移动,即可将随机分布的小图片恢复成原图的样式。

2.实验内容( 1)java 源代码及其功能及主员函序号类名主要功能功1GreedSnake该类为程序入口,含有main 方法。

( 2)2SnakeControl实现控制运行等总体要求,实现方向键控制蛇的方向,空格键控制游戏暂停或继续,还有分数等。

代码该类实现蛇的结构和具体运动,如判断食物是否和3SnakeModel现如怎样被吃掉及判断后的动作。

① 程4Node该类实现组成蛇身的单位- 食物。

口主5SnakeView该类实现画板功能,用黑色画蛇身,红色画食物。

法://第一部分public class GreedSnake {//建立主类GreeSnakepublic static void main(String[] args) {SnakeModel model =new SnakeModel(20,30);//初始化蛇出现的位置SnakeControl control =new SnakeControl(model);SnakeView view =new SnakeView(model,control);//添加一个观察者,让 view 成为 model 的观察者model.addObserver(view);(new Thread(model)).start();}各类要成数的能:具体及实下:序入方}②实现对蛇身的控制要求://第二部分//游戏的 Model 类,负责所有游戏相关数据及运行class SnakeControl implements KeyListener{//SnakeControl实现接口KeyListener,键盘监听SnakeModel model;public SnakeControl(SnakeModel model){this. model= model;}public void keyPressed(KeyEvent e) {int keyCode = e.getKeyCode();if(model . running){//运行状态下,处理的按键switch(keyCode) {case KeyEvent.VK_UP :model.changeDirection(SnakeModel.UP);break;case KeyEvent.VK_DOWN:model.changeDirection(SnakeModel.DOWN);break;case KeyEvent.VK_LEFT :model.changeDirection(SnakeModel.LEFT );break;case KeyEvent.VK_RIGHT :model.changeDirection(SnakeModel.RIGHT );break;case KeyEvent.VK_ADD :case KeyEvent.model.speedUp();break;case KeyEvent.VK_SUBTRACT :case KeyEvent.model.speedDown();break;case KeyEvent.VK_SPACE :case KeyEvent.VK_P :model.changePauseState();// 暂停进入睡眠状态break;default:}}//任何情况下处理的按键,按键导致重新启动游戏if(keyCode == KeyEvent.VK_R ||keyCode == KeyEvent.VK_S ||keyCode == KeyEvent.VK_ENTER ) {model.reset();}}public void keyReleased(KeyEvent e) {}public void keyTyped(KeyEvent e) {}}③实现蛇的结构和具体运动://第三部分@SuppressWarnings( “ unchecked ” )class SnakeModel extends Observable implements Runnable {//SnakeModel继承Observable类并且实现接口Runnable文档来源为 :从网络收集整理 .word版本可编辑 .欢迎下载支持 .ainfra[][]matrix;//指示位置上有没蛇体或食物LinkedList<Node>nodeArray=new LinkedList<Node>();// 蛇体Node food;int maxX ;int maxY ;int direction= 2;//蛇运行的方向ainfra running=false;//运行状态int timeInterval= 200;//时间间隔,毫秒doublespeedChangeRate= 0.75;// 每次得速度变化率ainfra paused=false;//暂停标志int score= 0;//得分int countMove= 0;//吃到食物前移动的次数//UP and DOWN should be even//RIGHT and LEFT should be oddpublic static final int UP=2;public static final int DOWN= 4;public static final int LEFT = 1;public static final int RIGHT = 3;public SnakeModel(int maxX,int maxY) {this. maxX = maxX;this. maxY = maxY;reset();}public void reset(){direction= SnakeModel.UP;// 蛇运行的方向timeInterval= 500;//时间间隔,毫秒paused=false;//暂停标志score= 0;//得分countMove= 0;//吃到食物前移动的次数// initial ainfr,全部清 0matrix=new ainfra[ maxX ][];for(int I=0;I<maxX ; ++i) {matrix[i] =new ainfra[ maxY ];Arrays.fill( matrix[i],false );}//initial the snake//初始化蛇体,如果横向位置超过20 个,长度为 10 ,否则为横向位置的一半int initArrayLength =maxX > 20 ? 10 :maxX / 2;nodeArray.clear();for( int I = 0; I < initArrayLength; ++i) {int x =maxX / 2 + I;//maxX被初始化为 20int y =maxY / 2;//maxY 被初始化为 30//nodeArray[x,y]: [10,15]-[11,15]-[12, 15]~~[20,15]// 默认的运行方向向上,所以游戏一开始nodeArray 就变为://[10, 14]-[10, 15]-[11, 15]-[12, 15]~~[19, 15]nodeArray.addLast(new Node(x, y));matrix [x][y] =true;}//创建食物food = createFood();matrix [ food . x ][ food . y ] =true ;}public void changeDirection(int newDirection) {//改变的方向不能与原来方向同向或反向if ( direction% 2 != newDirection % 2) {direction= newDirection;}}public ainfra moveOn() {Node n =nodeArray.getFirst();文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持.int x = n.x ;int y = n.y ;//根据方向增减坐标值switch( direction) {case UP:y--;break ;case DOWN:y++;break ;case LEFT :x--;break ;case RIGHT :x++;break ;}//如果新坐标落在有效范围内,则进行处理if ((0 <= x && x <maxX ) && (0 <= y && y <maxY )) {if ( matrix [x][y]) {//如果新坐标的点上有东西(蛇体或者食物)if (x ==food . x && y ==food . y ) {//吃到食物,成功nodeArray.addFirst(food );//从蛇头赠长//分数规则,与移动改变方向的次数和速度两个元素有关int scoreGet = (10000–200 *countMove ) /timeInterval;score += scoreGet > 0 ? scoreGet : 10;countMove= 0;food = createFood();//创建新的食物matrix [ food . x ][ food . y ] =true ;//设置食物所在位置return true ;}else//吃到蛇体自身,失败return false ;}else {//如果新坐标的点上没有东西(蛇体),移动蛇体nodeArray.addFirst(new Node(x, y));matrix [x][y] =true ;n =nodeArray.removeLast();matrix [n. x ][n. y ] =false ;countMove ++;return true ;}}return false;//触到边线,失败}public void run() {//运行方法running=true;while(running) {try{Thread.sleep( timeInterval);}catch(Exception e) {break;}if(!paused) {if(moveOn()) {setChanged();// Model通知 View数据已经更新notifyObservers();}else{JoptionPane.showMessageDialog( null,“你输了”,“ Game Over” ,文档来源为 :从网络收集整理 .word 版本可编辑 .欢迎下载支持 .RMATION_MESSAGE );break;}}}running = false;}private Node createFood() {int x = 0;int y = 0;//随机获取一个有效区域内的与蛇体和食物不重叠的位置do {Random r =new Random();x = r.nextInt(maxX );y = r.nextInt(maxY );}while ( matrix[x][y]);return new Node(x, y);}public void ainfra() {timeInterval*= speedChangeRate;}public void speedDown() {timeInterval/=speedChangeRate;}public void changePauseState() {paused = ! paused ;}public String toString() {String result =“”;for ( int I = 0; I <nodeArray.size(); ++i) {Node n =nodeArray.get(i);result +=“ [“+ n.x +“ ,”+ n.y +“ ]”;}return result;}}④实现组成蛇身的单位- 食物://第四部分class Node {//Node子类int x ;int y ;Node( int x,int y) {this . x = x;this . y = y;}}⑤实现画板功能,黑色为蛇身,红色为食物:// 第五部分class SnakeView implements Observer {//SnakeView实现接口 ObserverSnakeControl control=null ;SnakeModel model=null;Jframe ainframe; //窗口Canvas paintCanvas; //图像背景Jlabel labelScore; //分数public static final int canvasWidth= 300;//窗口宽度public static final int canvasHeight= 300;//窗口高度}文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持.( 3)游戏运行结果如图:① 初始游戏界面及蛇出现的位置,最后三行英文字母为帮助菜单:②第一次吃到食物加10 分,增长 1 个食物的长度:③第二次吃到食物加14 分,蛇身增加 1 个食物的长度,两次加分说明游戏分数不仅和食物有关还和所走路径有关:④ 游戏失败两种情况:咬到蛇尾或者自身:四、实验结果及分析此处写自己通过学习本课程所得到的收获、感想以及对课程教学的看法等内容,要写自己的真实想法,不要写套话。

相关文档
最新文档