java课程设计贪吃蛇游戏设计

合集下载

JAVA设计贪吃蛇游戏

JAVA设计贪吃蛇游戏

JAVA设计贪吃蛇游戏1.课程设计目的《JA VA程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。

实践教学环节是必不可少的一个重要环节。

本课程的程序设计专题实际是计算机相关专业学生学习完《JAVA程序设计》课程后,进行的一次全面的综合训练,JA VA程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。

2.设计方案论证2.1设计思路功能要求:1)有一条蛇,在屏幕上爬,用上下左右键控制吃豆子,吃得多了,到了一定积分,就能过关。

越吃越长,不能碰墙,不能咬自己的尾巴!2)需要设计的类有场地、蛇、豆类等。

2.2开发环境2.2.1硬件环境机房计算机一台2.2.2软件环境操作系统:Windows XP开发软件:ECLIPSE2.3概要设计2.3.1自定义类说明类名:snakegame作用:用来处理当蛇撞到墙或自己的身体时程序的运行继承的父类:jframe类实现的接口: keylistener2.4详细设计2.4.1程序概述本程序是一个利用Java应用软件制作的贪食蛇小游戏。

在游戏过程中,用户通过点击小键盘区的方向键来控制蛇的运行方向;当蛇没有吃到食物且碰到墙壁或自己的身体时游戏结束。

2.4.2程序流程图本次游戏设计的处理流程如图1所示。

进入游戏画面键盘操作:左移右移向下向上没有吃到食物且蛇碰到边界单击“确定”游戏结束图1 游戏处理流程图2.4.3 总设计模块的划分根据游戏需求中游戏所要实现的功能,整个游戏分为二个模块进行具体的设计,如图2所示。

3.设计结果与分析本程序在运行后,能够正常的相应按键事件。

游戏重新开始。

运行结果如下图4所示:贪吃蛇游戏游戏主界面模块游戏控制模块图2 游戏总设计模块图4 程序运行图当蛇没有吃到食物且碰到边界或碰撞到自己的身体时,游戏结束,此时得分为0。

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.实验设备:计算机、网络等。

javat贪吃蛇课程设计

javat贪吃蛇课程设计

javat贪吃蛇课程设计一、课程目标知识目标:1. 学生能理解Java基础语法,掌握面向对象编程的基本概念。

2. 学生能掌握贪吃蛇游戏的逻辑结构和开发流程。

3. 学生能运用所学知识,实现一个具有基本功能的贪吃蛇游戏。

技能目标:1. 学生能运用Java编程语言,进行程序设计和代码编写。

2. 学生能运用面向对象思想,进行游戏角色和场景的设计与实现。

3. 学生能通过编写代码,实现游戏中的碰撞检测、分数统计等基本功能。

情感态度价值观目标:1. 学生培养对编程的兴趣,激发学习主动性和创新精神。

2. 学生通过团队协作,培养沟通能力和合作精神。

3. 学生在游戏开发过程中,体会编程解决问题的乐趣,提高自信心。

课程性质分析:本课程为信息技术课程,以Java编程语言为基础,结合面向对象编程思想,设计贪吃蛇游戏。

课程注重理论与实践相结合,强调学生的动手实践能力。

学生特点分析:学生为七年级学生,具有一定的信息技术基础,对编程有一定的好奇心和兴趣。

学生在这个阶段,对新知识接受能力强,但注意力容易分散,需要通过有趣的实践项目来吸引其注意力。

教学要求:1. 教师应注重引导,让学生在实践中掌握Java编程基础和面向对象编程思想。

2. 教师应关注学生的个体差异,提供个性化的指导,提高学生的编程能力。

3. 教师应注重培养学生的团队协作能力,引导学生在合作中学习,共同完成贪吃蛇游戏开发。

二、教学内容1. Java基础知识回顾:变量、数据类型、运算符、控制流程(条件语句、循环语句)。

2. 面向对象编程基础:类与对象、构造方法、属性、方法、封装、继承、多态。

3. 游戏设计原理:游戏循环、场景绘制、角色控制、碰撞检测、分数统计。

4. Java图形用户界面(GUI):Swing图形用户界面编程,窗口、面板、按钮、键盘事件处理。

5. 贪吃蛇游戏开发:a. 游戏框架搭建:创建游戏窗口,设计游戏循环。

b. 角色对象设计:定义蛇和食物类,实现移动、增长和绘制。

毕业设计论文-基于Java的游戏设计贪吃蛇

毕业设计论文-基于Java的游戏设计贪吃蛇

毕业设计(论文)中文摘要1 绪论贪吃蛇是世界知名的益智类小游戏,选择这个题目一方面是为了将我们自己的所学知识加以运用;另一方面,我希望通过自己的所学知识把它剖析开来,通过自己的动手实践,真正的了解它的本质和精髓。

希望通过这次实践,能从中提高自己的编程能力。

并从中学会从零开始分析设计程序,达到学以致用,活学活用的目的。

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

本游戏的开发语言为Java,开发工具选用Eclipse。

Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。

这里采用Java作为开发语言主要是基于Java的面向对象和可移植性。

Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。

就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

Java语言的特点1.1.1 简单性Java与C++语言非常相近,但Java比C++简单,它抛弃了C++中的一些不是绝对必要的功能,如头文件、预处理文件、指针、结构、运算符重载、多重继承以及自动强迫同型。

Java实现了自动的垃圾收集,简化了内存管理的工作。

1.1.2 平台无关性Java引进虚拟机原理,并运行于虚拟机,实现不同平台之间的Java接口。

Java 的数据类型与机器无关。

1.1.3 安全性Java的编程类似C++,但舍弃了C++的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针入侵系统。

它提供了安全管理器,防止程序的非法访问。

1.1.4 面向对象Java吸收了C++面向对象的概念,将数据封装于类中,实现了程序的简洁性和便于维护性,使程序代码可以只需一次编译就可反复利用。

1.1.5 分布式Java建立在TCP/IP网络平台上,提供了用HTTP和FTP协议传送和接收信息的库函数,使用其相关技术可以十分方便的构建分布式应用系统。

javaeclipse贪吃蛇课程设计

javaeclipse贪吃蛇课程设计

javaeclipse贪吃蛇课程设计一、课程目标知识目标:1. 学生能理解Java语言面向对象编程的基本概念,如类、对象、方法等;2. 学生能掌握Eclipse集成开发环境的基本操作,如创建项目、编写代码、调试程序等;3. 学生能了解贪吃蛇游戏的基本逻辑和实现方法。

技能目标:1. 学生能运用Java语言编写简单的面向对象程序,实现贪吃蛇游戏的基本功能;2. 学生能运用Eclipse集成开发环境进行代码编写、调试和运行;3. 学生能运用所学知识解决实际问题,提高编程实践能力。

情感态度价值观目标:1. 学生通过课程学习,培养对编程的兴趣和热情,树立编程学习的自信心;2. 学生在团队协作中,提高沟通与协作能力,培养集体荣誉感;3. 学生在游戏设计过程中,锻炼逻辑思维能力,培养解决问题的耐心和毅力。

分析课程性质、学生特点和教学要求:1. 课程性质:本课程为Java语言编程实践课,结合贪吃蛇游戏设计,提高学生的编程兴趣和实际操作能力;2. 学生特点:学生为具有一定Java基础知识的初中生,对编程有一定兴趣,喜欢动手实践;3. 教学要求:注重理论与实践相结合,以学生为主体,充分调动学生的积极性,培养学生的编程思维和团队协作能力。

将目标分解为具体的学习成果:1. 学生能独立完成贪吃蛇游戏的编写和调试;2. 学生能通过小组合作,共同优化贪吃蛇游戏的代码和功能;3. 学生在课程结束后,能对Java面向对象编程有更深入的理解,提高编程实践能力。

二、教学内容1. Java面向对象编程基本概念回顾:类、对象、方法、属性等;2. Eclipse集成开发环境使用:项目创建、代码编写、调试与运行;3. 贪吃蛇游戏逻辑分析:游戏规则、移动原理、食物生成、得分与结束条件;4. 游戏界面设计:窗口创建、绘图面板、键盘事件监听;5. Java编程实现贪吃蛇游戏:蛇的移动、食物的随机生成、得分与游戏结束判断;6. 游戏优化与拓展:碰撞检测、蛇身长度变化、速度提升、音效添加。

JAVA贪吃蛇课程设计报告

JAVA贪吃蛇课程设计报告

《Java应用开发》课程设计报告题目:JAVA小游戏- 贪吃蛇指导老师:姓名:专业:班级:日期:目录一、系统总体设计 (1)(一)设计目标及完成功能 (1)(二)系统结构设计 (1)二、详细设计 (2)(一)界面设计 (2)(二)系统设计 (5)(三)关键技术及算法 (6)四、测试 (7)五、安装使用说明 (7)总结(体会) (8)参考文献 (9)一、系统总体设计(一)设计目标及完成功能本软件是针对贪吃蛇小游戏的JAVA程序,利用上、下、左、右方向键来改变蛇的运动方向,长按某个方向键后,蛇的运动速度会加快,在随机的地方产生食物,吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常进行游戏,在到达固定的分数后,游戏速度会加快。

1.窗口功能说明:设计了三个窗口,分别是游戏主窗口,成绩窗口,游戏帮助和关于作者窗口。

2.菜单栏分别为:游戏菜单和帮助菜单其中,游戏菜单包括开始游戏和退出游戏两项;帮助菜单包括游戏帮助和关于作者两项。

(二)系统结构设计图1-1 系统结构图二、详细设计(一) 界面设计贪吃蛇游戏的基本运行界面(1)生成初始界面:图2-1 初始界面(2)游戏菜单栏:图2-2 游戏菜单(2)积分排行菜单栏:图2-3 积分排行菜单(3)进行游戏界面:点击“游戏”,进入游戏菜单,选择“开始游戏”,或者使用快捷键“Ctrl+O”来开始游戏。

红色为贪吃蛇的身体部分,黑色方块为食物。

得分后,分数和得到食物数在左上角处实时显示。

图2-4 进行游戏(5)游戏结束界面:当蛇撞到墙壁或者自身的时候游戏结束。

图2-5 游戏结束界面(二) 系统设计(三) 关键技术及算法程序关键在于表示蛇的图形及蛇的移动。

用一个小矩形快表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用俩节表示。

移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。

java贪吃蛇课程设计报告总结

java贪吃蛇课程设计报告总结

课程设计报告:Java贪吃蛇游戏1. 背景贪吃蛇是一款经典的街机游戏,通过控制蛇的移动,吃掉食物,使蛇变得越来越长,直到触碰到边界或自己的身体为止。

该游戏在20世纪80年代流行起来,并成为了一种代表性的休闲娱乐方式。

贪吃蛇游戏可以提高玩家的反应能力、体力协调和空间感知能力。

本次课程设计旨在通过使用Java编程语言,设计实现一个简化版的贪吃蛇游戏,以加深学生对面向对象程序设计的理解和应用,并培养学生的逻辑思维能力和团队协作精神。

2. 分析2.1 游戏规则分析在贪吃蛇游戏中,玩家通过控制蛇的移动方向,使蛇吃到食物从而变长,直到游戏结束。

具体规则如下:•初始状态下,蛇由一个长度为3的身体组成,呈水平放置。

•蛇的移动方式为每个时间单位(通常为固定时间间隔)前进一格,移动方向由玩家通过键盘输入控制。

•蛇在吃到食物后,身体变长一节,并在地图上随机生成新的食物。

•蛇头碰到地图边界或自身身体的任意部分,游戏结束。

2.2 功能模块分析基于对游戏规则的分析,可以将贪吃蛇游戏的功能模块划分如下:•游戏初始化模块:初始化地图、蛇的初始位置和长度、生成初始食物等。

•用户输入模块:读取用户的键盘输入,控制蛇的移动方向。

•游戏逻辑模块:根据用户输入和游戏规则,更新蛇的位置、判断是否吃到食物或撞到障碍物等。

•地图绘制模块:将地图、蛇、食物等元素绘制到屏幕上。

•游戏循环模块:根据固定时间间隔循环执行游戏逻辑、用户输入和地图绘制等操作。

•游戏结束模块:在游戏结束时输出游戏得分等信息。

2.3 设计思路基于上述功能模块的分析,我设计了如下的实现思路:1.使用Java面向对象编程的思想,抽象出地图、蛇、食物等对象,并为其封装相应的属性和方法。

2.在游戏初始化模块中,创建地图对象、蛇对象,初始化位置和长度,并生成初始食物。

3.在用户输入模块中,利用Java的键盘事件监听机制,获取用户的方向输入,并通过调用蛇对象的移动方法实现控制蛇的移动方向。

贪吃蛇游戏java课程设计

贪吃蛇游戏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章及课外拓展内容。

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

前言Java最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。

由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。

就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景。

于是改造了Oak,以“Java”的名称正式发布。

Java 编程语言的风格十分接近C、C++语言。

Java是一个纯的面向对象的程序设计语言,它继承了 C++ 语言面向对象技术的核心。

Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。

在 Java SE 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。

Java 不同于一般的编译执行计算机语言和解释执行计算机语言。

它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。

从而实现了“一次编译、到处执行”的跨平台特性。

不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。

但在J2SE 1.4.2 发布后,Java 的执行速度有了大幅提升。

与传统程序不同,Sun 公司在推出 Java 之际就将其作为一种开放的技术。

全球数以万计的 Java 开发公司被要求所设计的 Java 软件必须相互兼容。

“Java 语言靠群体的力量而非公司的力量”是 Sun 公司的口号之一,并获得了广大软件开发商的认同。

这与微软公司所倡导的注重精英和封闭式的模式完全不同。

Sun 公司对 Java 编程语言的解释是:Java 编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。

正文1.1课程设计目的《JAVA程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。

实践教学环节是必不可少的一个重要环节。

本课程的程序设计专题实际是计算机相关专业学生学习完《JAVA程序设计》课程后,进行的一次全面的综合训练,JAVA程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。

2.1工程概况2.1.1案例提出及工程用时经过两天在图书馆以及网络上查阅的资料,然后提出这次课程设计的目标《贪吃蛇游戏》的设计。

然后接下来就是查阅更多的资料,制定接下来的详细计划,最终计划用两周的时间完成此次课程设计提出的案例。

2.1.2开发环境硬件环境:CPU:Intel Pentium(R)4主频:2.40GHz内存:256MB软件环境:操作系统:Windows XP编程环境: JDK 1.6开发工具:Eclipse jdk3.1设计方案论证3.1.1设计思路贪吃蛇游戏设计与实现,主要分为以下二个模块:游戏主界面模块和游戏控制模块。

在此只实现游戏的游戏主界面模块、游戏控制模块。

并且只是实现移动速度、暂停、重新开始等功能。

游戏主界面模块:游戏的主界面是进入游戏后,能够给玩家第一感官的部分,主要包括游戏图形区域界面、游戏的速度选择更新界面、新生方块的预览、暂停游戏按钮、重新开始游戏按钮。

从很大程度上决定了玩家对游戏的兴趣问题,因此,游戏的主界面应该力求美观,爽心悦目。

游戏控制模块:这个模块是游戏的中心环节,主要完成控制游戏的开始、暂停、重新开始等功能。

为了能够给玩家一个很好的游戏环境,这部分应该做到易懂、易操作。

本设计所开发的是基于Java的一个贪吃蛇游戏软件,主要实现游戏的速度控制、游戏的暂停、游戏的退出等功能,分为: 游戏主界面模块、游戏控制模块以二个模块。

3.1.2程序概述本程序是一个利用Java应用软件制作的贪食蛇小游戏。

在游戏过程中,用户通过点击小键盘区的方向键来控制蛇的运行方向;游戏运行过程中,如果想暂停,只需要按F3键即可。

重新开始游戏的按键为F2。

当蛇没有吃到食物且碰到墙壁或自己的身体时游戏结束。

本程序的另一个功能是在程序运行窗口的左上角显示,用户在游戏过程中的移动和长度。

3.1.3程序流程图本次游戏设计的处理流程如图1所示。

图1.程序流程图3.1.4 总设计模块的划分根据游戏需求中游戏所要实现的功能,整个游戏分为二个模块进行具体的设计,如图2所示。

图2.设计总模块游戏控制模块的主要框架如图3所示。

图3.控制模块框架游戏暂停控制:点击“F3”按钮,游戏暂停;再单击,游戏继续。

游戏重新开始控制:点击“F2”键后,点击确定,即游戏重新开始。

游戏退出控制:点击“F4”键好,点击确定,退出游戏界面。

3.1.5类、方法、属性说明(1)成员变量表1 主要成员变量(属性)(2)方法表2 主要方法4.1设计结果与分析本程序在运行后,能够正常的相应按键事件。

由于程序的主要部分已经集成为一个对象SnakeModel,所以利用键盘就可以实现操作。

蛇前行的过程中,可以任意向其左或右方向改变方向。

点击F3键后游戏就暂停了。

点击F2键游戏重新开始。

点击F4游戏退出。

运行结果如下图4所示:图4 程序运行图当蛇没有吃到食物且碰到边界或碰撞到自己的身体时,游戏结束。

如果想重新开始即点击“确定”后按F2键,运行结果如下图5所示:图5 重新开始图4.1.1程序异常处理在蛇的运行线程过程中,当蛇撞到墙或自己的身体时,将抛出一个Exception类的异常对象,然后使用try-catch去捕捉这个异常,异常的处理如下:try{Thread.sleep(timeInterval); }catch(Exception e){break;}心得体会通过这次课程设计,我对这学期所学的JAVA语言程序设计有一个更深刻的了解,将所学的知识应用于实践,由于所学知识有限,为了使游戏能够实现自己预先的构想,我通过上网和去图书馆找程序,比较好的流程图及功能模块,不断阅读修改代码使程序达到预期所要实现的目标,完成课程设计后,可以感觉到自己对Java 程序的又有了新的认识。

总之,通过本次的课程设计,使我平时学到的理论知识得到了很好地升华,理论与实际得到一次很好的结合,为我今后参加工作打下了坚实的基础,使我受益匪浅。

参考文献[1]赵文靖编著.Java程序设计基础与上机指导.北京:清华大学出版社,2006[2]赵毅主编.跨平台程序设计语言——Java.西安:西安电子科技大学出版社,[3]王路群.Java高级程序设计.北京:中国水利水电出版社,2006[4]雍俊海编著.Java程序设计习题集.北京:清华大学出版社,2006[5]朱福喜编著.Java语言习题与解析.北京:清华大学出版社,2006[6]吴其庆编著.Java程序设计实例教程.北京:冶金工业出版社,2006程序代码:import java.awt.*;import javax.swing.*;import java.util.*;import java.awt.event.*;public class She extends JFrame implements ActionListener, WindowListener {JLabel bt1;JLabel bt2;MyPaint mp;JMenuItem kaishi;JMenuItem zanting;JMenuItem tuichu;JRadioButton chu;JRadioButton zhong;JRadioButton gao;JRadioButton chao;JMenuItem guanyu;Font f;public She() {f = new Font("宋体", Font.PLAIN,12);mp = new MyPaint(); mp.setShe(this);JMenuBar caidan = new JMenuBar(); JMenu shezhi = new JMenu("设置"); shezhi.setFont(f);JMenu nandu = new JMenu("难度"); nandu.setFont(f);JMenu bangzhu = new JMenu("帮助"); bangzhu.setFont(f);caidan.add(shezhi);caidan.add(nandu);caidan.add(bangzhu);kaishi = new JMenuItem("开始游戏F2");kaishi.setFont(f);kaishi.addActionListener(this);zanting = new JMenuItem("暂停/继续F3");zanting.setFont(f);zanting.addActionListener(this); tuichu = new JMenuItem("退出 F4"); tuichu.setFont(f);tuichu.addActionListener(this);chu = new JRadioButton("初级,最快速度195", true);chu.setFont(f);chu.addActionListener(this);zhong = new JRadioButton("中级,最快速度225");zhong.setFont(f);zhong.addActionListener(this);gao = new JRadioButton("高级,最快速度255");gao.setFont(f);gao.addActionListener(this);chao = new JRadioButton("超级,最快速度275");chao.setFont(f);chao.addActionListener(this);ButtonGroup bg = new ButtonGroup(); bg.add(chu);bg.add(zhong);bg.add(gao);bg.add(chao);nandu.add(chu);nandu.add(zhong);nandu.add(gao);nandu.add(chao);guanyu = new JMenuItem("关于");guanyu.setFont(f);guanyu.addActionListener(this);shezhi.add(kaishi);shezhi.add(zanting);shezhi.add(tuichu);bangzhu.add(guanyu);bt1 = new JLabel(" 长度:0");bt1.setFont(f); bt2 = new JLabel("移动:5");bt2.setFont(f);JPanel p = new JPanel();p.setLayout(new GridLayout(1, 2)); p.add(bt1);p.add(bt2);this.addWindowListener(this);//添加窗体监听器this.setJMenuBar(caidan);this.add(p, BorderLayout.NORTH); this.add(mp);this.add(new JLabel(" "), BorderLayout.WEST);this.setSize(335, 385);this.setResizable(false);this.setLocation(300, 150);this.setTitle("MyPaint");this.setVisible(true);}public void setDS(int a, int b) { bt1.setText(" 长度:" + a);bt2.setText("移动:" + b);}public void setChu() {chu.setSelected(true);mp.setSD(300, 110);this.setDS(0, 305 - 300);chu.setEnabled(true);zhong.setEnabled(true);gao.setEnabled(true);chao.setEnabled(true);}public void setNanDu() {chu.setEnabled(false);zhong.setEnabled(false);gao.setEnabled(false);chao.setEnabled(false);}public voidactionPerformed(ActionEvent e) {if (e.getSource() == zanting) {mp.setZanTing();}else if (e.getSource() == kaishi) { mp.setKaiShi();}else if (e.getSource() == tuichu) { mp.setTuiChu();}else if (e.getSource() == guanyu) { JLabel gy = new JLabel("小游戏贪吃蛇 V1.0");gy.setFont(f);JOptionPane.showMessageDialog(this, gy);}else if (e.getSource() == chu) { mp.setSD(300, 110);this.setDS(0, 305 - 300);}else if (e.getSource() == zhong) { mp.setSD(250, 80);this.setDS(0, 305 - 250);}else if (e.getSource() == gao) { mp.setSD(200, 50);this.setDS(0, 305 - 200);}else if (e.getSource() == chao) { mp.setSD(150, 30);this.setDS(0, 305 - 150);}}public static void main(String[] args) {new She();}/*** Method windowOpened*** @param e**/public void windowOpened(WindowEvent e) {// TODO: Add your code here}public voidwindowClosing(WindowEvent e) {System.exit(0);}public void windowClosed(WindowEvent e) {// TODO: Add your code here}public voidwindowIconified(WindowEvent e) {// TODO: Add your code here}public voidwindowDeiconified(WindowEvent e) { // TODO: Add your code here}public voidwindowActivated(WindowEvent e) {// TODO: Add your code here}public voidwindowDeactivated(WindowEvent e) { // TODO: Add your code here}}class MyPaint extends JPanel implements Runnable, KeyListener, FocusListener {She s;Font f = new Font("宋体", Font.PLAIN, 12);int x = 150;int y = 0;Random r = new Random();int sjx = r.nextInt(300)/10*10;int sjy = r.nextInt(300)/10*10;int fx = 2;int sw = 0;int sd = 300;int cs = 0;int d = 150;String[] zx = new String[1000]; boolean zanting = false;boolean zanting1 = false;boolean siwang = false;boolean shenti = false;public MyPaint() {Thread t = new Thread(this);t.start();this.addKeyListener(this);this.setFocusable(true);this.addFocusListener(this);}public void setShe(She ss) {s = ss;}public void setZanTing() {if (zanting) {zanting = false;}else {zanting = true;}}public void setKaiShi() {JLabel ks = new JLabel("是否重新开始?");ks.setFont(f);int a =JOptionPane.showConfirmDialog(s, ks);if (a == 0) {x = 150;y = 0;sjx = r.nextInt(300)/10*10;sjy = r.nextInt(300)/10*10;fx = 2;sw = 0;sd = 300;cs = 0;zanting = false;siwang = false;shenti = false; s.setChu();s.setDS(sw, 305 - sd);}}public void setTuiChu() {JLabel tc = new JLabel("确定退出吗?");tc.setFont(f);int a =JOptionPane.showConfirmDialog(s, tc);if (a == 0) {s.dispose();System.exit(0);}}public void setSD(int a, int b) { sd = a;d = b;}public void paint(Graphics g) {zx[cs] = x + "/" + y;super.paint(g);g.setColor(Color.BLACK);g.drawRect(0, 0, 300, 300);g.setColor(Color.BLACK);g.fillRect(sjx, sjy, 10, 10);g.setColor(Color.BLUE);g.fillRect(x, y, 10, 10);g.setColor(Color.RED);for (int i = 1; i <= sw; i++) {int j = cs - i;if (j < 0) {j = cs-i+999+1;}String[] s = zx[j].split("/");if (x == Integer.parseInt(s[0]) && y == Integer.parseInt(s[1])) {//蛇撞到自己身上了siwang = true;shenti = true;}if (sjx == Integer.parseInt(s[0]) && sjy == Integer.parseInt(s[1])) {//食物在蛇身体上g.setColor(Color.BLACK);g.fillRect(sjx, sjy, 10, 10);g.setColor(Color.RED);continue;}g.fillRect(Integer.parseInt(s[0]), Integer.parseInt(s[1]), 10, 10);}}public void run() {while (true) {cs++;if (cs == 1000) {cs = 0;}switch (fx) {case 1:y-=10;//上break;case 2:y+=10;//下break;case 3:x-=10;//左break;case 4:x+=10;//右break;}this.repaint();if (x == sjx && y == sjy) {sjx = r.nextInt(300)/10*10;sjy = r.nextInt(300)/10*10;sw++;if (sw == 1) {s.setNanDu();}if (sd <= d) {sd = d;}else {sd-=5;}s.setDS(sw, 305 - sd);}if (x < 0 || x > 290 || y < 0 || y > 290 || shenti) {JOptionPane.showMessageDialog(s, "游戏结束!");siwang = true;shenti = false;}while (zanting || zanting1) {try {Thread.sleep(100);}catch (Exception e) {}}while (siwang) {try {Thread.sleep(100);}catch (Exception e) {}}try {Thread.sleep(sd);}catch (Exception e) {}}}public void keyPressed(KeyEvent e) { switch (e.getKeyCode()) {case 38:fx = 1;//上break;case 40:fx = 2;//下break;case 37:fx = 3;//左break;case 39:fx = 4;//右break;case KeyEvent.VK_F3:this.setZanTing();break;case KeyEvent.VK_F2:this.setKaiShi();break;case KeyEvent.VK_F4:this.setTuiChu();break;}}public void keyReleased(KeyEvent e) { }public void keyTyped(KeyEvent e) { }public void focusGained(FocusEvent e) {zanting1 = false;}public void focusLost(FocusEvent e) { zanting1 = true;}}如有侵权请联系告知删除,感谢你们的配合!。

相关文档
最新文档