面向对象课程设计--基于java的贪吃蛇游戏的设计与开发
java课程设计贪吃蛇项目
java课程设计贪吃蛇项目一、教学目标本节课的教学目标是让学生掌握Java编程语言的基本语法和面向对象编程思想,通过编写Java代码实现一个简单的贪吃蛇游戏。
具体目标如下:1.知识目标:–了解Java语言的基本语法和结构;–掌握面向对象编程的基本概念和方法;–熟悉Java中的常用数据结构和算法。
2.技能目标:–能够使用Java语言编写简单的程序;–能够运用面向对象编程思想解决实际问题;–具备基本的代码调试和排错能力。
3.情感态度价值观目标:–培养学生的编程兴趣和自信心;–培养学生团队合作和解决问题的能力;–培养学生勇于尝试和不断创新的精神。
二、教学内容本节课的教学内容主要包括以下几个部分:1.Java语言基本语法:介绍Java程序的基本结构,包括类、方法、变量等概念,以及如何编写和运行Java程序。
2.面向对象编程:讲解类的定义和创建,对象的创建和使用,以及封装、继承和多态等面向对象编程的基本概念。
3.贪吃蛇游戏设计:分析贪吃蛇游戏的需求,设计游戏类和游戏界面,实现游戏的基本功能,包括蛇的移动、食物的生成和消亡、游戏结束条件等。
4.算法实现:讲解如何在Java中实现常用的数据结构和算法,如数组、链表、排序等,并应用于贪吃蛇游戏中。
三、教学方法本节课采用以下教学方法:1.讲授法:讲解Java语言的基本语法和面向对象编程思想,让学生掌握编程的基本概念和方法。
2.案例分析法:通过分析贪吃蛇游戏的需求,引导学生思考如何设计和实现游戏功能,培养学生的编程思维和问题解决能力。
3.实验法:让学生动手编写Java代码,实现贪吃蛇游戏,培养学生的实际编程能力和代码调试能力。
4.小组讨论法:鼓励学生之间相互讨论和交流,共同解决问题,培养学生的团队合作和沟通能力。
四、教学资源本节课所需的教学资源包括:1.教材:《Java编程思想》或《Java核心技术》等;2.参考书:《Java编程指南》或《Java编程实践》等;3.多媒体资料:PPT、教学视频等;4.实验设备:计算机、网络等。
贪吃蛇游戏java课程设计
贪吃蛇游戏java课程设计一、课程目标知识目标:1. 让学生掌握Java基本语法和面向对象编程思想;2. 让学生了解贪吃蛇游戏的基本规则和逻辑;3. 让学生掌握使用Java编写贪吃蛇游戏的方法和技巧。
技能目标:1. 培养学生独立分析问题、解决问题的能力;2. 培养学生运用所学知识进行实际项目开发的能力;3. 培养学生团队协作、沟通表达的能力。
情感态度价值观目标:1. 培养学生对编程的兴趣和热情,激发学生主动学习的动力;2. 培养学生面对困难和挑战时,保持积极的心态和坚持不懈的精神;3. 培养学生遵守编程规范,养成良好的编程习惯。
课程性质:本课程为实践性较强的课程,旨在通过贪吃蛇游戏的设计与实现,让学生将所学的Java编程知识运用到实际项目中,提高学生的编程能力和实际操作能力。
学生特点:学生已具备一定的Java编程基础,对游戏开发有一定兴趣,但可能缺乏实际项目经验。
教学要求:注重理论与实践相结合,引导学生主动探究,培养其独立解决问题的能力。
在教学过程中,关注学生的个体差异,提供个性化指导,确保每位学生都能在课程中取得进步。
将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. Java基本语法复习:变量、数据类型、运算符、控制结构等;2. 面向对象编程:类与对象、继承、封装、多态等;3. Java图形用户界面(GUI):Swing组件、事件处理、布局管理器等;4. 游戏设计基础:游戏循环、碰撞检测、游戏逻辑等;5. 贪吃蛇游戏设计与实现:游戏规则、界面设计、蛇的移动与增长、食物的生成与消失、得分与结束条件等。
教学大纲安排如下:第一周:Java基本语法复习,面向对象编程基础;第二周:Java图形用户界面(GUI)设计与事件处理;第三周:游戏设计原理与贪吃蛇游戏分析;第四周:贪吃蛇游戏设计与实现,包括界面设计、游戏逻辑开发等;第五周:课程总结与展示,学生互评、教师点评。
教学内容关联教材章节:1. Java基本语法复习:教材第1-3章;2. 面向对象编程:教材第4-6章;3. Java图形用户界面(GUI):教材第7章;4. 游戏设计基础:教材第8章;5. 贪吃蛇游戏设计与实现:教材第9章及课外拓展内容。
java贪吃蛇课程设计
java贪吃蛇课程设计一、课程目标知识目标:1. 让学生掌握Java基础语法,包括变量、数据类型、运算符、控制结构等。
2. 让学生理解面向对象编程的基本概念,如类、对象、封装、继承、多态。
3. 让学生学会使用Java编写图形用户界面(GUI)程序,运用事件处理机制。
技能目标:1. 培养学生运用Java编程解决问题的能力,特别是解决逻辑性和结构性问题。
2. 培养学生分析问题、设计算法、编写程序、调试程序的能力。
3. 提高学生的团队协作能力,通过分组合作完成课程设计。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发学生学习Java的热情。
2. 培养学生勇于尝试、不怕失败的精神,面对编程难题保持积极的态度。
3. 培养学生的创新意识,鼓励他们在编程实践中尝试新思路、新方法。
分析课程性质、学生特点和教学要求,本课程目标具体、可衡量,旨在让学生通过学习Java编程,完成贪吃蛇游戏的设计与实现。
将目标分解为以下具体学习成果:1. 知识方面:学生能熟练运用Java语法和面向对象编程知识,掌握贪吃蛇游戏的基本逻辑。
2. 技能方面:学生具备编写、调试贪吃蛇游戏的能力,能通过团队协作解决问题。
3. 情感态度价值观方面:学生对编程产生浓厚兴趣,愿意主动探索、创新,培养良好的编程习惯。
二、教学内容根据课程目标,教学内容主要包括以下部分:1. Java基础语法:- 变量、数据类型、常量- 运算符、表达式、语句- 控制结构(顺序、分支、循环)2. 面向对象编程:- 类与对象- 封装、继承、多态- 抽象类与接口3. Java图形用户界面(GUI)编程:- AWT与Swing概述- 常用组件的使用- 事件处理机制4. 贪吃蛇游戏设计与实现:- 游戏逻辑分析- 界面设计与实现- 控制算法编写- 游戏优化与调试教学大纲安排如下:1. 第一周:Java基础语法学习,复习相关概念。
2. 第二周:面向对象编程知识学习,案例分析。
3. 第三周:Java GUI编程入门,编写简单的图形界面程序。
(完整word版)java课程设计之贪吃蛇
目录一系统描述 (1)1.1 本设计的目的和意义 (1)1.2 设计的主要内容 (1)1.3 设计要达到的目标 (2)1.4设计需要实现的功能和目标 (2)1.5 游戏设计环境 (2)二分析与设计 (3)2.1游戏处理流程 (3)2.2需求分析 (4)2.3 功能模块设计 (4)2.4 详细设计 (8)三系统测试 (19)四心得体会 (21)五参考文献 (22)六附录 (24)基于Java的游戏“贪吃蛇”的设计和实现内容提要:“贪吃蛇”游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢迎。
本文基于Java技术和JBuilder开发环境,开发了一个操作简单、界面美观、功能较齐全的“贪吃蛇”游戏。
整个游戏程序分为二个功能模块,六个类模块,实现了游戏的开始、暂停、结束。
通过本游戏的开发,达到学习Java技术和熟悉软件开发流程的目的。
一系统描述1.1 本设计的目的和意义贪吃蛇游戏一款非常经典的手机游戏,因为它比较简单有趣,无论老少都比较适合。
贪吃蛇的设计对每一个Java语言设计者进行语言提高和进阶都是一个很好的锻炼机会。
贪吃蛇游戏的设计比较复杂,它涉及面广、牵涉方面多,如果不好好考虑和设计,将难以成功开发出这个游戏。
在这个游戏的设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用类的继承机制以及一些设计模式。
因此,如何设计和开发好这个贪吃蛇游戏,对于提高Java开发水平和系统的设计能力有极大的帮助。
在设计开发过程中,需要处理好各个类之间的继承关系,还要处理各个类相应的封装,并且还要协调好各个模块之间的逻辑依赖关系和数据通信关系。
正是因为如此,本次毕业设计的目的在于学习Java程序设计基本技术,学习用JBuilder开发Java程序的相关技术,熟悉游戏“贪吃蛇”的需求,熟悉项目开发的完整过程。
学会怎样进行一个项目的需求分析、概要设计、详细设计等软件开发过程,熟练地掌握Java程序设计的基本技术和方法,熟练地掌握JBuilder环境的使用方法,培养起初步的项目分析能力和程序设计能力。
贪吃蛇Java课程设计
目录1.设计任务与要求 (1)1.1设计任务 (1)1.2具体要求 (1)2.软件主要模块流程图 (2)3.总体方案与说明 (3)3.1总体方案 (3)3.2系统模块 (3)游戏界面设计 (3)贪吃蛇蛇身及运动设置 (5)游戏控制设置 (7)4.程序设计 (8)4.1GamePanel类 (8)类 (8)5.分析问题与解决方案 (9)5.1 问题处理 (9)6小结与体会 (10)参考文献(资料) (11)程序代码: (12)基于Java的游戏“贪吃蛇”的设计和实现内容提要:“贪吃蛇”游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢迎。
本文基于Java技术开发环境,开发了一个操作简单、界面美观、功能较齐全的“贪吃蛇”游戏。
整个游戏程序分六个类模块,实现了游戏的开始、暂停、结束。
通过本游戏的开发,达到学习Java技术和熟悉软件开发流程的目的。
1.设计任务与要求1.1设计任务设计一个贪吃蛇的游戏功能要求:能够显示贪吃蛇的运动,能通过键盘控制贪吃蛇的运行,能够处理蛇在运行中各种情况,以及其它的辅助功能。
设计任务要完成设计、编码、测试等过程,给出设计思路、主要代码。
源代码以及可运行的贪吃蛇游戏。
1.2具体要求具体内容如下:1) 设计任务与要求2) 总体方案与说明3) 面向对象的设计(主要类的设计)4) 源程序清单与注释5) 软件主要模块流程图6) 问题分析与解决方案(包括调式记录、调式报告,即在调式过程中遇到的主要问题、解决方法及改进设想);7) 小结与体会2.软件主要模块流程图软件的主要模块流程如下图5-1所示图5—1 游戏处理流程3.总体方案与说明3.1总体方案我们设计的贪吃蛇主要利用键盘控制蛇的前进移动方向,是否吃到食物,是否撞墙以及是否暂停、开始游戏等。
当吃到食物的时候,蛇就自动长大一格,在游戏中可进行暂停和开始操作。
中途若是撞到墙或是撞到自己,同样也结束。
3.2系统模块根据总体方案,我把贪吃蛇游戏分为:游戏界面设置(即绘图)、贪吃蛇蛇身及运动与碰撞问题(食物、蛇身、石头)设置三大模块来设计。
java贪吃蛇游戏设计课程设计
java贪吃蛇游戏设计课程设计一、课程目标知识目标:1. 让学生掌握Java编程语言的基本语法和面向对象编程思想。
2. 使学生了解贪吃蛇游戏的基本规则和设计原理。
3. 帮助学生理解游戏开发中坐标系的应用、事件处理和循环结构的使用。
技能目标:1. 培养学生运用Java语言编写简单游戏的能力。
2. 提高学生分析问题、解决问题的能力,学会运用编程思维解决实际问题。
3. 培养学生团队协作和沟通表达的能力,能在团队中发挥各自优势,共同完成项目。
情感态度价值观目标:1. 激发学生对编程的兴趣,提高学习积极性,培养自主学习能力。
2. 培养学生勇于尝试、不断探索的精神,增强面对困难的信心。
3. 引导学生关注计算机技术在日常生活中的应用,认识到科技改变生活的力量。
分析课程性质、学生特点和教学要求,本课程将目标分解为以下具体学习成果:1. 知识方面:学生能熟练使用Java语言编写贪吃蛇游戏,掌握相关概念和原理。
2. 技能方面:学生能独立分析游戏需求,设计合适的算法和数据结构,完成游戏功能。
3. 情感态度价值观方面:学生通过团队协作,体验编程带来的成就感,培养积极向上的学习态度。
二、教学内容根据课程目标,教学内容主要包括以下几部分:1. Java基本语法与面向对象编程:- 变量、数据类型、运算符- 控制结构:条件语句、循环语句- 面向对象编程:类、对象、方法、继承、封装、多态2. 游戏设计原理与实现:- 贪吃蛇游戏规则及设计思路- 坐标系的应用- 事件处理机制- 游戏循环结构设计3. 游戏编程实践:- 编程环境配置- 贪吃蛇游戏项目搭建- 游戏功能模块开发:食物、贪吃蛇、碰撞检测等- 游戏优化与调试教学内容安排与进度:1. Java基本语法与面向对象编程(第1-2周)2. 游戏设计原理与实现(第3-4周)3. 游戏编程实践(第5-8周)教材章节关联:1. 《Java编程思想》第1-4章:Java基本语法与面向对象编程2. 《Java游戏编程》第3章:游戏设计原理与实现3. 《Java游戏编程实战》第5-7章:游戏编程实践三、教学方法为了提高教学效果,激发学生的学习兴趣和主动性,本课程采用以下多样化的教学方法:1. 讲授法:教师通过生动的语言、形象的比喻,讲解Java编程基本语法和面向对象编程思想,使抽象的概念具体化,便于学生理解和掌握。
基于Java的游戏设计——贪吃蛇
毕业设计论文基于Java的游戏设计——贪吃蛇毕业设计(论文)中文摘要毕业设计(论文)外文摘要目录1 绪论 (1)1.1J AVA语言的特点 (1)1.2开发工具E CLIPSE介绍 (2)1.3开发工具JDK介绍 (3)1.4应用环境 (3)2 系统需求分析 (3)2.1需求分析 (4)2.2可行性分析 (4)3 系统概要设计 (5)3.1游戏流程图 (5)3.2设计目标 (6)3.3系统功能模块 (6)3.4系统数据结构设计 (8)4 系统详细设计 (12)4.1程序设计 (12)4.2贪吃蛇游戏各功能界面截图 (16)5 系统测试 (19)5.1测试的意义 (19)5.2测试过程 (19)5.3测试结果 (20)结论 (21)致谢 (22)参考文献 (23)1 绪论贪吃蛇是世界知名的益智类小游戏,选择这个题目一方面是为了将我们自己的所学知识加以运用;另一方面,我希望通过自己的所学知识把它剖析开来,通过自己的动手实践,真正的了解它的本质和精髓。
希望通过这次实践,能从中提高自己的编程能力。
并从中学会从零开始分析设计程序,达到学以致用,活学活用的目的。
另外,通过本游戏的开发,达到学习Java技术和熟悉软件开发流程的目的。
本游戏的开发语言为Java,开发工具选用Eclipse。
Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。
这里采用Java作为开发语言主要是基于Java的面向对象和可移植性。
Eclipse 是一个开放源代码的、基于Java 的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
1.1 Java语言的特点1.1.1 简单性Java与C++语言非常相近,但Java比C++简单,它抛弃了C++中的一些不是绝对必要的功能,如头文件、预处理文件、指针、结构、运算符重载、多重继承以及自动强迫同型。
JAVA设计贪吃蛇游戏
JAVA设计贪吃蛇游戏下面是一个简单的贪吃蛇游戏的JAVA设计示例,该示例包括游戏画面的显示、控制蛇的移动、食物的生成与吃掉、以及游戏的结束等基本功能。
首先,我们需要创建一个Snake类来表示蛇的身体。
Snake类包括一个ArrayList作为蛇的身体部分,以及一个方向变量来表示蛇的移动方向。
Snake类还有一个方法来控制蛇的移动,根据方向变量移动蛇的身体。
```javaimport java.util.ArrayList;public class Snakeprivate ArrayList<Cell> body;private Direction direction;public Snakbody = new ArrayList<>(;body.add(new Cell(10, 10)); // 初始化蛇的初始位置direction = Direction.RIGHT; // 蛇的初始方向为向右}public void movCell head = body.get(0); // 蛇头Cell newHead;//根据方向变量移动蛇头的位置switch (direction)case UP:newHead = new Cell(head.getX(, head.getY( - 1); break;case DOWN:newHead = new Cell(head.getX(, head.getY( + 1); break;case LEFT:newHead = new Cell(head.getX( - 1, head.getY(); break;case RIGHT:newHead = new Cell(head.getX( + 1, head.getY(); break;default:newHead = head; // 默认不移动}//添加新的蛇头body.add(0, newHead);//删除尾部,即移动效果body.remove(body.size( - 1);}// getter和setter方法```接下来,我们创建一个Cell类来表示每一个游戏格子的位置。
Java程序设计报告《贪吃蛇》
Java程序设计报告《贪吃蛇》《Java程序设计》课程设计报告题目:贪吃蛇游戏的设计与实现指导老师:沈泽刚专业:计算机科学与技术班级:10-3姓名:梁潇一、课程设计目的贪吃蛇游戏一款非常经典的手机游戏,因为它比较简单有趣,无论老少都比较适合。
目的是更好地了解和掌握java语言,并熟练的运用java语言来实现项目。
培养自主学习的能力。
本软件在设计方面本着方便、实用及娱乐性高的宗旨,在外界进行设计的过程中,始终坚持清晰明了,在性能方面能够实现效率高,不易出错等优点。
二、课程设计要求贪吃蛇游戏设计与实现,主要分为以下二个模块:游戏主界面模块、游戏控制模块。
三、课程设计报告内容(一) 系统设计1、程序概述本程序是一个利用Java应用软件制作的贪吃蛇小游戏。
按钮、暂停按钮、游戏的退出按钮、困难程度、积分排行、关于作者。
(二)代码设计import java.awt.Color;import java.awt.Container;import java.awt.Graphics;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.InputEvent;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import javax.swing.*;public class TanChiShe extends JFrame implements ActionListener, KeyListener,Runnable{private JMenuBar menuBar;private JMenu youXiMenu,nanDuMenu,fenShuMenu,guanYuMenu; private JMenuItem kaiShiYouXi,exitItem,zuoZheItem,fenShuItem;private JCheckBoxMenuItem cJianDan,cPuTong,cKunNan; private int length = 6;private Toolkit toolkit;private int i,x,y,z,objectX,objectY,object=0,growth=0,time;private int difficult=2;private int m[]=new int[50];private int n[]=new int[50];private Thread she = null;private int life=0;private int foods = 0;private int fenshu=0;public void run() //运行{time=500;for(i=0;i<=length-1;i++){m[i]=90-i*10;n[i]=60;}x=m[0];y=n[0];z=4;while(she!=null){check();try{she.sleep(time);}catch(Exception ee){System.out.println(z+"");}}}public TanChiShe(){//***************创建新对象**************setVisible(true);menuBar = new JMenuBar();Container con=getContentPane();toolkit=getToolkit();//**************游戏菜单对象***************** youXiMenu = new JMenu("游戏");kaiShiYouXi = new JMenuItem("开始游戏");exitItem = new JMenuItem("退出游戏");//***************困难程度对象**************** nanDuMenu = new JMenu("困难程度");cJianDan = new JCheckBoxMenuItem("简单");cPuTong = new JCheckBoxMenuItem("普通");cKunNan = new JCheckBoxMenuItem("困难");//*****************分数菜单对象****************fenShuMenu = new JMenu("积分排行");fenShuItem = new JMenuItem("最高记录");//****************关于对象*********************guanYuMenu = new JMenu("关于");zuoZheItem = new JMenuItem("关于作者");//***************设置关于菜单*******************guanYuMenu.add(zuoZheItem);//****************设置困难程度菜单**************nanDuMenu.add(cJianDan);nanDuMenu.add(cPuTong);nanDuMenu.add(cKunNan);//******************设置分数菜单***************fenShuMenu.add(fenShuItem);//*****************设置游戏菜单****************youXiMenu.add(kaiShiYouXi);youXiMenu.add(exitItem);//******************设置主菜单********************menuBar.add(youXiMenu);menuBar.add(nanDuMenu);menuBar.add(fenShuMenu);menuBar.add(guanYuMenu);//*********************监听注册*****************zuoZheItem.addActionListener(this);kaiShiYouXi.addActionListener(this);exitItem.addActionListener(this);addKeyListener(this);fenShuItem.addActionListener(this);//*********************加快捷键********************KeyStroke keyOpen = KeyStroke.getKeyStroke('O',InputEvent.CTRL_DOWN_MASK);kaiShiYouXi.setAccelerator(keyOpen);KeyStroke keyExit = KeyStroke.getKeyStroke('X',InputEvent.CTRL_DOWN_MASK);exitItem.setAccelerator(keyExit);//*****************设置框架**********************setJMenuBar(menuBar);setTitle("贪吃蛇");setResizable(false);setBounds(300,200,400,400);validate();setDefaultCloseOperation(EXIT_ON_CLOSE);}public static void main(String args[]){new TanChiShe();}//******************菜单监听****************************** public void actionPerformed(ActionEvent e){if(e.getSource()==kaiShiYouXi){length = 6;life = 0;foods = 0;if(she==null){she=new Thread(this);she.start();}else if(she!=null){she=null;she= new Thread(this);she.start();}}if(e.getSource()==exitItem){System.exit(0);}if(e.getSource()==zuoZheItem)JOptionPane.showMessageDialog(this, "梁潇"+"\n\n");}if(e.getSource()==fenShuItem){JOptionPane.showMessageDialog(this,"最高记录为"+fenshu+"");}}//**************检查一下******************************* public void check(){isDead();if(she!=null){if(growth==0){reform();}else{upgrowth();}if(x==objectX&&y==objectY){object=0;growth=1;toolkit.beep();}//****************产生食物坐标**********************if(object==0){object=1;objectX=(int)Math.floor(Math.random()*39)*10;objectY=(int)Math.floor(Math.random()*29)*10+50;}this.repaint();}}void isDead()if(z==4){x=x+10;}else if(z==3){x=x-10;}else if(z==2){y=y+10;}else if(z==1){y=y-10;}if(x<0||x>390||y<50||y>390) {she=null;}for(i=1;i<length;i++){if(m[i]==x&&n[i]==y){she=null;}}}public void upgrowth(){if(length<50){length++;}growth--;time=time-10;reform();life+=100;if(fenshu<life){fenshu = life;}foods++;}public void reform(){for(i=length-1;i>0;i--){m[i]=m[i-1];n[i]=n[i-1];}if(z==4){m[0]=m[0]+10;}if(z==3){m[0]=m[0]-10;}if(z==2){n[0]=n[0]+10;}if(z==1){n[0]=n[0]-10;}}public void keyPressed(KeyEvent e){if(she!=null){if(e.getKeyCode()==KeyEvent.VK_UP){if(z!=2){z=1;check();}}else if(e.getKeyCode()==KeyEvent.VK_DOWN) {if(z!=1){z=2;check();}}else if(e.getKeyCode()==KeyEvent.VK_LEFT){if(z!=4){z=3;check();}}else if(e.getKeyCode()==KeyEvent.VK_RIGHT) {if(z!=3){z=4;check();}}}}public void keyReleased(KeyEvent e){// TODO 自动生成方法存根}public void keyTyped(KeyEvent e){// TODO 自动生成方法存根}public void paint(Graphics g){//*******************画图********************** g.setColor(Color.DARK_GRAY);g.fillRect(0,50,400,400);g.setColor(Color.pink);for(i=0;i<=length-1;i++){g.fillRect(m[i],n[i],10,10);}g.setColor(Color.green);g.fillRect(objectX,objectY,10,10);g.setColor(Color.white);g.drawString("当前分数"+this.life,6,60);g.drawString("当前已吃食物数"+this.foods,6,72); }}(三)测试(四)使用说明在游戏过程中,用户通过点击小键盘区的方向键来控制蛇的运行方向;当蛇没有吃到食物且碰到墙壁或自己的身体时游戏结束。
JAVA+J2ME贪吃蛇小游戏的设计与实现
第三章手机游戏开发过程3.1 贪吃蛇游戏的规则简介以及开发环境3.1.1贪吃蛇游戏的规则简介在贪吃蛇游戏中,玩家操作由小方块连接而成的蛇,去吃随机散落在画面内的小方块,每吃一块就增加一小方块长度,要是撞壁以及撞自己的尾,就属于失败,如无失败则直到通关为止。
屏幕的长度的行向为11单位,纵向为18单位。
在这个范围内,玩家通过操作方向键来控制蛇的运动方向。
该游戏的最大特色是屏幕自适应,无论各种手机,PDA 的屏幕大小如何,该游戏总是能获得最佳的显示效果。
3.1.2开发环境(1)开发的硬件环境:CPU C1.7HZ/Maxor 40G/DDR 256M/CD-ROW 40X (2)开发软件:JDK1.3和J2MEWTK3.2 详细设计本游戏的操作流程(如图3-1):用户在启动MIDlet后,即进入游戏主画面,屏幕开始显示为欢迎画面。
用户按下[开始]按钮后,就可以开始玩游戏。
当用户想暂停时,再次按一下[开始]按钮,游戏就暂停了,在暂停的情况下再按[开始]按钮,游戏继续运行。
任何时候按[退出]按钮,游戏MIDlet都会终止。
图 3-1操作流程3.2.1代码设计(1)游戏地图代码设计游戏地图是蛇的活动范围和食物随机散落的范围,游戏的容器为行向为11单位,纵向为18单位,如下代码:private final int iX = 10; //地图的开始坐标private final int iY = 10; //private final int SWIDTH = 16; //图标的宽度private final int iCells = 11; //地图的列数private final int iRows = 18; //地图的行数private final int iBoxW = SWIDTH*iCells; //地图的宽采用二维绘图工具:二维绘图工具drawLine采用4个参数——直线起点的x、y 坐标值和直线终点x、y的坐标值,例如:graphics.drawLine(50,0,100,0);这行代码会从位置(50,0)到(100,0)绘制一条直线。
java贪吃蛇游戏课程设计
java贪吃蛇游戏课程设计一、课程目标知识目标:1. 学生能够理解Java基本语法结构,掌握面向对象编程的基本概念;2. 学生能够掌握Java中数组的使用,理解坐标在二维数组中的应用;3. 学生能够了解游戏循环、键盘事件处理等基本游戏编程概念。
技能目标:1. 学生能够运用所学知识,设计并实现一个简单的贪吃蛇游戏;2. 学生能够通过编写代码,实现蛇的移动、食物的生成和碰撞检测等功能;3. 学生能够掌握基本的编程调试技巧,解决游戏开发过程中遇到的问题。
情感态度价值观目标:1. 学生通过游戏编程,培养对编程的兴趣,提高逻辑思维能力和解决问题的能力;2. 学生在团队协作中,学会沟通与分享,增强团队意识和合作精神;3. 学生能够体验编程带来的成就感,树立自信心,激发进一步学习的动力。
课程性质:本课程为实践性较强的课程,结合Java编程知识,让学生动手实践,培养编程技能。
学生特点:学生已具备一定的Java编程基础,对游戏编程感兴趣,但可能缺乏实际编程经验。
教学要求:教师应引导学生掌握Java编程基础知识,注重实践操作,鼓励学生独立思考和团队协作,培养编程兴趣和解决问题的能力。
通过本课程的学习,使学生能够将所学知识应用于实际项目中,提高综合运用能力。
二、教学内容1. Java基本语法回顾:变量、数据类型、运算符、控制结构(条件语句、循环语句);2. 面向对象编程基础:类与对象、构造方法、成员变量、成员方法;3. 二维数组的使用:声明、初始化、访问;4. 游戏编程基础:游戏循环、键盘事件处理、碰撞检测;5. 贪吃蛇游戏设计:- 游戏窗口创建与设置;- 蛇的表示与移动;- 食物的随机生成;- 碰撞检测与游戏逻辑;6. 编程调试与优化:代码调试技巧、性能优化。
教学内容安排与进度:第一课时:回顾Java基本语法,介绍面向对象编程基础;第二课时:二维数组的使用,游戏编程基础;第三课时:贪吃蛇游戏设计(1)- 游戏窗口创建与设置;第四课时:贪吃蛇游戏设计(2)- 蛇的表示与移动;第五课时:贪吃蛇游戏设计(3)- 食物的随机生成与碰撞检测;第六课时:编程调试与优化,完成贪吃蛇游戏。
java课程设计(贪吃蛇)
java课程设计(贪吃蛇)一、教学目标本节课的教学目标是让学生掌握Java编程语言的基本语法和编程思想,学会使用Java编写简单的程序。
具体包括以下三个方面的目标:1.知识目标:使学生了解Java编程语言的基本语法和结构,包括数据类型、变量、运算符、控制语句等;理解面向对象编程的基本概念,包括类、对象、封装、继承等。
2.技能目标:培养学生使用Java编程语言解决实际问题的能力,学会编写简单的Java程序;培养学生团队合作的能力,学会分工合作完成项目。
3.情感态度价值观目标:培养学生对编程的兴趣和热情,提高学生自主学习的积极性;培养学生勇于尝试、克服困难的精神,增强学生的自信心。
二、教学内容本节课的教学内容主要包括以下几个部分:1.Java编程语言的基本语法和结构,包括数据类型、变量、运算符、控制语句等;2.面向对象编程的基本概念,包括类、对象、封装、继承等;3.Java编程语言的应用,学会编写简单的Java程序;4.团队合作完成项目,培养学生的团队合作能力。
三、教学方法为了达到本节课的教学目标,我们将采用以下几种教学方法:1.讲授法:教师讲解Java编程语言的基本语法和结构,面向对象编程的基本概念;2.案例分析法:分析实际案例,让学生学会使用Java编程语言解决实际问题;3.实验法:学生动手实践,编写简单的Java程序;4.小组讨论法:学生分组讨论,培养团队合作能力。
四、教学资源为了支持本节课的教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:Java编程基础,用于引导学生学习基本语法和结构;2.多媒体资料:PPT、教学视频等,用于辅助讲解和演示;3.实验设备:计算机、网络等,用于学生动手实践;4.编程工具:Eclipse、IntelliJ IDEA等,用于学生编写和调试程序。
五、教学评估为了全面、客观、公正地评估学生的学习成果,我们将采用以下评估方式:1.平时表现:通过观察学生在课堂上的参与程度、提问回答、小组讨论等表现,评估学生的学习态度和积极性;2.作业:布置适量的作业,评估学生对知识的掌握程度和编程能力;3.考试:进行期中和期末考试,评估学生对Java编程语言的基本语法和结构的掌握程度,以及解决实际问题的能力;4.项目完成情况:评估学生在团队合作完成项目的过程中的表现,包括分工合作、沟通协作、解决问题等能力。
java课程设计贪吃蛇
华北科技学院课程设计说明书面向对象程序设计(Java)班级: B091(14) 姓名: xxxx设计题目: 贪吃蛇设计时间: 2012-01-09 至2012-01-13指导教师: xxxx评语:_________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ 评阅成绩:___________评阅教师:_____________课程设计说明书1、课程设计的目的首先Java是一种易学易懂的通用程序设计语言,由于它具有功能性强,运用简洁,灵活兼有高级语言与低级语言的优点,以及“目标程序效率高”可移植性和能在各种系统上普遍实现等特点使它成为当今世界上的主流程序设计语言之一,同时被选作目前全世界广泛应用,同时也是大学期间好多专业的必修课程。
作为当代的大学生要很好的利用它,学好一门设计语言,实现学以至用。
再者《JAVA程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。
实践教学环节是必不可少的一个重要环节。
本课程的程序设计专题实际是我们学习完java课程后,进行的一次全面的综合训练,JAVA程序设计的设计目的是加深对理论教学内容的理解和掌握,使我较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为我综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。
2、功能模块简介和系统结构图整体功能一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,当一只按着某一键的时候就会一值加速。
蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记100分,接着又随机出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。
java贪吃蛇小游戏程序课程设计
《高级语言程序设计(2)》课程设计任务书题目贪吃蛇小游戏程序学生姓名杨文学号201001010214 专业班级信息1002设计内容与要求【问题描述】这个程序是用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块。
移动时必须从蛇头开始,也就是蛇尾不能改作蛇头。
当游戏者按了方向键后,蛇头朝着指定的方向移动,一步移动一节身体。
图形的实现是从蛇头的新位置开始画出蛇。
用户可以用上下左右键控制蛇头的方向。
非常简单!【软件功能】1. 贪吃蛇游戏是大家很常见的小游戏,在生活工作之余大家可以玩它,已达到放松各种压力的目的。
2. 游戏可以进行升级,也就是增加吃食物的难度,以便使大家更有挑战性,不觉得太无趣。
3. 游戏界面大小可以任意指定,数据从文件读入。
4. 利用swing实现良好的GUI界面。
【基本要求】1. 贪食蛇的前移算法主要是蛇身结点前移,后面的覆盖前面的蛇身结点。
依靠的调用编写的成员方法实现。
2. 在贪吃蛇中蛇头来控制蛇的移动方向,依靠的调用编写的成员方法实现。
3. 要求用户界面采用图形用户界面,影响方向键的控制。
4. 重复的调用paint()函数来实现对界面的重绘和食物的重置。
5. 源程序中要有充分的注释,报告中要有详细的流程图。
6. 运行的结果以及图形用户界面要进行屏幕拷贝,插入报告中。
幕拷贝,插入报告中。
【提交成果】1. “《高级语言程序设计(2)》课程设计任务书”和“《高级语言程序设计(2)》课程设计报告”打印件各一份;2. 先将上面两项内容的word文档,通过电子邮件交到指导教师,待许可后,打印装袋。
起止时间2012 年12 月24 日至2012 年12月30 日指导教师签名李元觉2012年12 月22 日系(教研室)主任签名郝华宁2012 年12月22 日学生签名年月日《高级语言程序设计(2)》课程设计报告专业: 信息与计算科学班级: 信息1002 学号: 201001010214姓名:杨文完成日期: 2012.12.29 指导教师:李元觉1、程序设计说明书【设计题目】贪吃蛇小游戏程序【问题描述】这个程序是用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块。
java课程设计贪吃蛇游戏文档
java课程设计贪吃蛇游戏⽂档XXXXXX学院XXXXXX系《JAVA程序设计》课程设计报告题⽬贪吃蛇游戏姓名 XXXXXXXX学号专业班级指导教师⽇期⽬录1、课程设计任务及要求 (1)1.1 题⽬ (1)1.2 ⽬的 (1)1.3 基本任务 (1)1.4 要求 (1)1.5 进度安排 (2)1.6 地点 (2)2.需求分析 (2)2.1 项⽬概述 (2)2.2 功能需求 (2)2.3其它需求 (3)3、系统设计 (3)3.1 总体设计 (3)3.2 类的设计 (4)3.3界⾯设计 (7)3.4 处理流程 (12)4、设计体会与⼩结 (13)5.参考资料 (13)6. 源程序代码 (13)7.成绩 (13)1、课程设计任务及要求1.1 题⽬贪吃蛇游戏1.2 ⽬的a)复习、巩固Java语⾔的基础知识,进⼀步加深对Java语⾔的理解和掌握b)掌握java程序设计的思想、流程,企业要求代码规范性及在项⽬中的应⽤c)加强理论知识和实际应⽤的结合应⽤,锻炼学⽣的分析解决实际问题的能⼒。
提⾼学⽣适应实际,实践编程的能⼒d)培养学⽣在项⽬开发中团队合作精神,表达沟通、创新意识能⼒e)提⾼学⽣的科技论⽂写作能⼒1.3 基本任务a)能在游戏⾯板中出现蛇和⾷物b)能通过键盘的上下左右键来控制蛇的移动c)蛇能够吃掉游戏⾯板中的⾷物,同时再随机出现另外⼀个⾷物d)蛇在碰到游戏⾯板的边缘时,游戏结束e)蛇在碰到⾃⾝时,游戏结束1.4 要求a)对系统进⾏功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理b)系统设计要实⽤,编程简练、规范,可⽤,功能全⾯c)说明书、流程图要清楚,有解决问题办法总结d)要求上机调试通过e)设计上交内容:设计报告,源程序⽂件,可执⾏⽂件1.5 进度安排2011年12⽉17⽇⾄ 2011年12⽉21⽇共5天1.6 地点综合楼701,主楼6楼计算机软件实验分室2.需求分析2.1 项⽬概述本项⽬是开发贪吃蛇游戏,它是⼀个⽼少皆宜雅俗共赏的益智类游戏,通过按键控制蛇的移动来吃⾷物,适于⽤户在空暇时刻放松⾝⼼休闲娱乐。
java课程设计贪吃蛇
java课程设计贪吃蛇一、教学目标本章节的教学目标旨在让学生掌握Java编程语言的基本语法和面向对象编程思想,通过编写“贪吃蛇”游戏,培养学生的编程能力和逻辑思维能力。
具体目标如下:1.知识目标:a.了解Java语言的基本语法和数据结构;b.掌握面向对象编程的基本概念,如类、对象、封装、继承和多态;c.学习Java的图形用户界面编程技术。
2.技能目标:a.能够使用Java编写简单的程序;b.能够运用面向对象编程思想设计和实现“贪吃蛇”游戏;c.能够调试和优化程序,提高游戏的运行效率。
3.情感态度价值观目标:a.培养学生对编程的兴趣和热情,增强其自信心;b.培养学生团队合作精神,学会分享和交流;c.培养学生解决问题的能力,勇于面对挑战。
二、教学内容本章节的教学内容主要包括Java语言的基本语法、面向对象编程和图形用户界面编程。
具体安排如下:1.Java语言的基本语法:a.数据类型、变量和常量;b.运算符和表达式;c.控制语句,如if、for、while等。
2.面向对象编程:a.类的定义和创建;b.对象的创建和使用;c.封装、继承和多态的原理及应用。
3.图形用户界面编程:a.Swing组件的使用;b.事件处理机制;c.绘制图形和动画。
三、教学方法为了提高教学效果,本章节将采用多种教学方法,如讲授法、案例分析法和实验法等。
具体方法如下:1.讲授法:通过讲解Java语言的基本语法、面向对象编程和图形用户界面编程的原理和概念,使学生掌握相关知识。
2.案例分析法:分析典型的“贪吃蛇”游戏案例,引导学生运用所学知识解决实际问题。
3.实验法:让学生动手编写“贪吃蛇”游戏,培养其编程能力和实践能力。
四、教学资源为了支持本章节的教学,我们将准备以下教学资源:1.教材:《Java编程语言》或《Java核心技术》;2.参考书:《Java编程思想》、《Java图形用户界面编程》;3.多媒体资料:教学PPT、视频教程;4.实验设备:计算机、网络环境。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
面向对象课程设计1.需求分析1.1游戏开发的可行性游戏开发至今已经有30多年,在这个短暂的时期里,随着硬件水平的提高,游戏开发新技术层出不穷,经典游戏比比皆是。
游戏这个名称一直就存在于每个人的日常生活中,如猜拳游戏、猜谜游戏、大地游戏、球类游戏等,林林总总,不胜枚举,甚至于有些流行歌曲把人生也比喻为游戏,好比“一场游戏一场梦”。
因此,游戏对于现代人的成长历程,绝对是一个不可或缺的重要角色。
1.2设计目的综合运用在校期间所学理论知识和技能,设计开发贪吃蛇游戏,使自己熟悉应用系统的开发过程,培养独立思考能力,检验学习效果和动手能力,提高工程实践能力。
1.3游戏需求给出1条小蛇和随机出1个食物当小蛇吃到食物时就加分。
1.3.1游戏界面需求良好的用户界面,有分数显示。
有存取档功能,并且可以暂停,还有“英雄榜”记录分数排名情况,并且可调节小蛇运动速度。
1.3.2游戏形状(方块)需求良好的方块形状设计,绘制小蛇和食物,小蛇由几个方块组成,食物由1个方块组成。
1.3.3键盘处理事件小蛇可通过键盘方向键(上、下、左、右键)进行向上、向下、向左、向右移动。
1.3.4显示需求当小蛇吃掉几个食物后会变长,并且吃完食物时食物会消失,并立即随机生成1个新的食物。
1.3.5 接口控制本软件需求通过键盘进行操作,在Windows的操作系统下,利用键盘的上、下、左、右键对小蛇进行移动操作,要使用键盘的接口事件。
2.功能设计及源程序的主要部分2.1 游戏流程图2.2 功能的实现,类的实现及类层次2.2.1游戏界面public SnakeFrame() {setSize(width, height); //设置窗体大小setTitle("贪吃蛇"); //标题SnakePanel panel = new SnakePanel();//游戏面板add(panel); //将面板添加到窗体中setLocation(260, 160); //设置窗体位置setVisible(true);setResizable(false); //禁用窗体最大化}2.2.2功能按钮public SnakePanel() {//构造函数//添加功能按钮setLayout(null);add(startGame);add(stopGame);add(saveGame);add(listGame);add(newGame);add(exitGame);//设置位置startGame.setBounds(402, 50, 80, 40);stopGame.setBounds(402, 100, 80, 40);saveGame.setBounds(402, 150, 80, 40);listGame.setBounds(402,200, 80, 40);newGame.setBounds(402, 250, 80, 40);exitGame.setBounds(402, 300, 80, 40);//添加监视器ButtonListener btnListener=new ButtonListener();startGame.addActionListener(btnListener);stopGame.addActionListener(btnListener);saveGame.addActionListener(btnListener);listGame.addActionListener(btnListener);newGame.addActionListener(btnListener);exitGame.addActionListener(btnListener);//取消所有Button 的焦点startGame.setFocusable(false);stopGame.setFocusable(false);saveGame.setFocusable(false);listGame.setFocusable(false);newGame.setFocusable(false);//速度String speed[]={"1","2","3","4","5","预设"};combspeed=new JComboBox(speed);combspeed.setBorder(BorderFactory.createTitledBorder("速度"));add(combspeed);//添加组合框combspeed.setBounds(402,340,80,46);comboBoxListener comblistener=new comboBoxListener();combspeed.addActionListener(comblistener);//添加监视器combspeed.setFocusable(false); //取消焦点initGame(); //初始化游戏addKeyListener(new Listener());//添加键盘按键监视器setFocusable(true); //将焦点设置在当前面板上以便通过键盘控制游戏thiswin=this;}2.2.3键盘监视器class Listener implements KeyListener {public void keyPressed(KeyEvent e) {int key = e.getKeyCode();//获得键码if (key == KeyEvent.VK_LEFT && direction != 2)direction = 0; //左else if (key == KeyEvent.VK_UP && direction != 3)direction = 1; //上else if (key == KeyEvent.VK_RIGHT && direction != 0) direction = 2; //右else if (key == KeyEvent.VK_DOWN && direction != 1) direction = 3; //下}public void keyReleased(KeyEvent e) {}@Overridepublic void keyTyped(KeyEvent e) {}}public void keyPressed(KeyEvent e) {int key = e.getKeyCode();//获得键码if (key == KeyEvent.VK_LEFT && direction != 2)direction = 0; //左else if (key == KeyEvent.VK_UP && direction != 3)direction = 1; //上else if (key == KeyEvent.VK_RIGHT && direction != 0) direction = 2; //右else if (key == KeyEvent.VK_DOWN && direction != 1) direction = 3; //下}2.2.4蛇和食物的变化2.2.4.1蛇和食物的产生:public void drawSnake(Graphics g){Graphics2D g2d = (Graphics2D) g;for(int i=0;i<arrayList.length;i++){for(int j=0;j<arrayList[i].length;j++){if(arrayList[i][j] == 1){ //蛇身g.setColor(frontcolor); //蛇身颜色}else if(arrayList[i][j] == 2){//蛇头g.setColor(Color.RED); //蛇头颜色}else if(arrayList[i][j] == 3){ //食物g.setColor(foodcolor); //食物颜色}if (arrayList[i][j] != 0) {int curx = border_left + i * 10;int cury = border_top + j * 10;g2d.draw(new Rectangle2D.Double(curx, cury, 8, 8));}}}}2.2.4.2小蛇移动和吃掉食物:public boolean Move() {//移动if (direction == 0)x -= 1; //左else if (direction == 1)y -= 1; //上else if (direction == 2)x += 1; //右else if (direction == 3)y += 1; //下//向前移动一步if(GameOver()){//游戏结束clock.stop();gameover=true;flag=false; //不再产生新的豆豆if(x < 0 || x >=arrayList.length || y < 0 || y >= arrayList[0].length){}else{arrayList[x][y]=2; //此时蛇头位置}int headx=snakeBody.get(0).x; //头部坐标int heady=snakeBody.get(0).y;arrayList[headx][heady]=1; //蛇头变蛇身int tailx=snakeBody.get(snakeBody.size()-1).x;//尾部坐标int taily=snakeBody.get(snakeBody.size()-1).y;arrayList[tailx][taily]=0; //修改尾部return false; //游戏结束}arrayList[x][y]=2; //此时蛇头位置int headx=snakeBody.get(0).x; //头部坐标int heady=snakeBody.get(0).y;arrayList[headx][heady]=1; //蛇头变蛇身snakeBody.add(0,new Point(x,y));//添加新的头部int tailx=snakeBody.get(snakeBody.size()-1).x;//尾部坐标int taily=snakeBody.get(snakeBody.size()-1).y;if(x == foodx && y == foody){ //吃掉了豆豆flag=true; //可以产生新的豆豆score+=time; //总分数time=30; //新豆豆的分值}else{arrayList[tailx][taily]=0; //修改尾部snakeBody.remove(snakeBody.size()-1);//删除旧的尾部}return true;}2.2.5记录游戏的功能2.2.5.1判断是否可进入记录:public boolean enableShow(){if(score == 0){return false;}if(!new File("Data").exists()){//Data 目录不存在return true;}if(!new File("Data","list.snake").exists()){//list.snake 文件不存在return true;}File file=new File("Data","list.snake");BufferedReader iostream=new BufferedReader(new FileReader(file));String strline=iostream.readLine();if(strline == null){//空文件return true;}int row=0;while(strline!=null){String str[]=strline.split("#");//信息以#分隔成name 和score 两部分if(str.length!=2){ //格式错误时删除文件iostream.close();//关闭流否则无法删除文件file.delete(); //删除文件return true;}int gain=Integer.parseInt(str[1]);if(score >= gain){return true;}strline=iostream.readLine();//读取下一行row++;}if(row <= 9){return true;}iostream.close();//关闭流} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return false;}2.2.5.2保存数据到文件:public void saveDataToFile(String filename){if(gameover){ //游戏已结束无法保存return;}File file=new File("Data",filename);BufferedWriter out=new BufferedWriter(new FileWriter(file));//当前矩阵out.write("Matrix\n");for(int i=0;i<arrayList.length;i++){//矩阵数据for(int j=0;j<arrayList[i].length;j++){out.write(arrayList[i][j]+"#");}out.write("\n");//换行}//snakeBodyout.write("snakeBody\n");for(int i=0;i<snakeBody.size();i++){//链表数据String str=String.valueOf(snakeBody.get(i).x);str+=","+String.valueOf(snakeBody.get(i).y);out.write(str+"\n");}//头部坐标out.write("head\n");out.write(x+","+y+"\n");//当前食物坐标out.write("food\n");out.write(foodx+","+foody+"\n");//是否可产生新的食物out.write("flag\n");out.write(String.valueOf(flag)+"\n");//移动方向out.write("direction\n");out.write(String.valueOf(direction)+"\n");//当前总分out.write("score\n");out.write(String.valueOf(score)+"\n");//当前食物剩余分值out.write("time\n");out.write(String.valueOf(time)+"\n");//关闭流out.close();} catch (IOException e) {e.printStackTrace();}catch(Exception ee){}}2.2.5.3从文件中读取数据:public void readDataFromFile(String filename){for(int i=0;i<arrayList.length;i++){for(int j=0;j<arrayList[i].length;j++){arrayList[i][j]=0;//全部初始化为空}}snakeBody.clear();File file=new File("Data",filename);try {BufferedReader in=new BufferedReader(new FileReader(file));String str=in.readLine();if(!str.equals("Matrix")){JOptionPane.showMessageDialog(this, "文件格式错误:无法读取");return;}//读取矩阵元素str=in.readLine();int i=0;while(str!=null){String data[]=str.split("#");for(int j=0;j<data.length;j++){arrayList[i][j]=Integer.parseInt(data[j]);}i++;//下一行str=in.readLine();if(str.equals("snakeBody")){break;//跳出while循环}}//读取snakeBody数据str=in.readLine();while(str!=null){String data[]=str.split(",");int x=Integer.parseInt(data[0]);int y=Integer.parseInt(data[1]);snakeBody.add(new Point(x,y)); //每次都添加到尾部str=in.readLine();if(str.equals("head")){break;}}//读取头部坐标str=in.readLine();if(str!=null){String data[]=str.split(",");x=Integer.parseInt(data[0]);y=Integer.parseInt(data[1]);}str=in.readLine();if (str!=null && str.equals("food")) { //读取当前食物坐标str = in.readLine();if (str != null) {String data[] = str.split(",");foodx = Integer.parseInt(data[0]);foody = Integer.parseInt(data[1]);}}//读取flagstr=in.readLine();if(str!=null && str.equals("flag")){str=in.readLine();if(str!=null){flag=Boolean.parseBoolean(str);}}//读取移动方向str=in.readLine();if(str!=null && str.equals("direction")){ str=in.readLine();if(str!=null){direction=Integer.parseInt(str);}}//读取总分str=in.readLine();if(str!=null && str.equals("score")){ str=in.readLine();if(str!=null){score=Integer.parseInt(str);}}//读取当前食物剩余分值str=in.readLine();if(str!=null && str.equals("time")){str=in.readLine();if(str!=null){time=Integer.parseInt(str);}}//关闭流in.close();clock.stop();repaint(); //重绘窗体} catch (FileNotFoundException e) {JOptionPane.showMessageDialog(this, "文件未找到");}catch(Exception ee){}}2.2.6英雄排行榜的设计2.2.6.1排行榜的构造:public ListFrame(){//构造函数setTitle("排行版");setLayout(new BorderLayout());title=new JButton("英雄排行榜");add(BorderLayout.NORTH,title);title.setFocusable(false);for(int i=0;i<10;i++){tabledata[i][0]=String.valueOf(i+1);for(int j=1;j<3;j++){tabledata[i][j]="";}}2.2.6.2排行榜的排行记录与顺序:public static void main(String[] args) {new ListFrame();}//显示记录public static void showList(){new ListFrame().table.setEnabled(false);}//插入一条新的记录public static void insertNewData(int score){ListFrame listwin=new ListFrame();Object[][] obj=listwin.tabledata;boolean over=false;for(int i=0;i<10;i++){String str=(String)obj[i][2];if(str.equals("")){obj[i][2]=score;//插入新的记录obj[i][1]="input your name";over=true;listwin.currentrow=i;break;}int data=Integer.parseInt(str);if(score >= data){for(int j=9;j>i;j--){//依次后移下面的数据obj[j][2]=obj[j-1][2];obj[j][1]=obj[j-1][1];}obj[i][2]=score;obj[i][1]="input your name";over=true;listwin.currentrow=i;break;}}if(!over){//没有超过以前的记录listwin.table.setEnabled(false);//不可编辑return;}listwin.table.isCellEditable(listwin.currentrow, 1);listwin.table.editCellAt(listwin.currentrow, 1);//选中当前单元格JTextFieldeditor=(JTextField)listwin.table.getCellEditor().getTableCellEditorComponent(listwin .table, listwin.table.getValueAt(listwin.currentrow, 1), true, listwin.currentrow, 1);editor.selectAll();}2.2.6.3排行榜记录文件的读取:public void checkFile(String filename){//检查Data 目录是否存在if(new File("Data").exists()){}else{new File("Data").mkdir();//创建Data 目录}//检查指定文件是否存在listfile=new File("Data",filename);if(listfile.exists()){//文件已经存在}else{ //文件不存在创建新的文件try{listfile.createNewFile();}catch(Exception e){JOptionPane.showMessageDialog(this, "创建排名文件时发生错误!");}}}//从文件中读取排名信息public void readFromFile(String filename){checkFile(filename);try{//读取排名信息文件iostream=new BufferedReader(new FileReader(listfile));String strline=iostream.readLine();int row=0;while(strline!=null){String str[]=strline.split("#");//信息以#分隔成name 和score 两部分if(str.length!=2){JOptionPane.showMessageDialog(this, "读入排名文件时发生错误");return;}tabledata[row][1]=str[0];//姓名tabledata[row][2]=str[1];//分数row++;if(row >= 10)break;strline=iostream.readLine();//读取下一行}iostream.close();//关闭流}catch(Exception ee){System.out.println(ee);}}//将数据写入文件public void writeDataToFile(){try{BufferedWriter write=new BufferedWriter(new FileWriter(listfile));for(int i=0;i<10;i++){String str=tabledata[i][1]+"#"+tabledata[i][2]+"\n";if(str.equals("#\n"))break;write.write(str);}write.close();}catch (Exception e) {}}3.开发平台产品版本:NetBeans IDE 6.1 (Build 200805300101)Java:1.6.0_07; Java HotSpot(TM) Client VM 10.0-b23系统:Windows Vista 版本 6.0 运行于x86 上; GBK; zh_CN (nb)4.测试与发布4.1运行测试过程4.1.1开始新游戏4.1.2游戏运行4.1.3 游戏结束4.1.4变化游戏难度4.1.5游戏排行榜4.1.6游戏存取档4.2测试结果游戏运行状况良好,未发现bug。