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

前言

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 发布后,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 jdk

3.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 void

actionPerformed(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 void

windowClosing(WindowEvent e) {

System.exit(0);

}

public void windowClosed(WindowEvent e) {

// TODO: Add your code here

}

public void

windowIconified(WindowEvent e) {

// TODO: Add your code here

}

public void

windowDeiconified(WindowEvent e) { // TODO: Add your code here

}

public void

windowActivated(WindowEvent e) {

// TODO: Add your code here

}

public void

windowDeactivated(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;

}

}

贪吃蛇java实验报告doc

贪吃蛇java实验报告 篇一:JAVA贪吃蛇课程设计报告 《Java应用开发》课程设计报告 题目:指导老师:姓名:专业:班级:日期: JAVA小游戏 - 贪吃蛇 目录 一、系统总体设计 ................................. 1 (一)设计目标及完成功能 ........................ 1 (二)系统结构设计 .............................. 1 二、详细设计 ..................................... 2(一) 界面设计 ................................... 2 (二) 系统设计 ................................... 4 (三) 关键技术及算法 ............................. 6 四、测试 ......................................... 7五、安装使用说明 ................................. 7总结(体会) ..................................... 8参考文献 .. (8) 一、系统总体设计 (一)设计目标及完成功能 本软件是针对贪吃蛇小游戏的JAVA程序,利用上、下、左、右方向键来改变蛇的运动方向,长按某个方向键后,蛇

的运动速度会加快,在随机的地方产生食物,吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常进行游戏,在到达固定的分数后,游戏速度会加快。 1.窗口功能说明:设计了三个窗口,分别是游戏主窗口,成绩窗口,游戏帮助和关于作者窗口。 2.菜单栏分别为:游戏菜单和帮助菜单 其中,游戏菜单包括开始游戏和退出游戏两项;帮助菜单包括游戏帮助和关于作者两项。 (二)系统结构设计 图1-1 系统结构图 二、详细设计 (一) 界面设计 贪吃蛇游戏的基本运行界面(1)生成初始界面: 图2-1 初始界面 (2)游戏菜单栏 : 图2-2 游戏菜单 (2)积分排行菜单栏 : 图2-3 积分排行菜单 (3)进行游戏界面: 点击“游戏”,进入游戏菜单,选择“开始游戏”,或者

贪吃蛇java编程说明

贪吃蛇作业说明 1.游戏说明 一个贪吃蛇游戏软件,主要实现游戏的开始、暂停、退出功能,分为: 游戏主界面模块、游戏控制模块以二个模块。 性能:方便、实用,在性能方面效率高,不易出错等。 游戏主界面模块:主要包括游戏图形区域界面、游戏开始按钮、暂停游戏按钮、关闭按钮。 游戏控制模块:主要完成控制游戏的开始、暂停、退出等功能游戏控制模块是游戏的中心环节。 2. 系统开发环境 (1) 软件环境 Eclipse 3.程序流程图

游戏流程图 4.程序中自定义类说明 SnakeWin类 该类包含main方法,为应用程序的主类。该类用来创建游戏的用户界面,整个程序从该类的main方法开始执行。 SnakeFrame类 用来设计游戏的用户界面。

PaintComponent函数 设置游戏运行状态,设置蛇头颜色,背景颜色,随机块颜色,移动以及分数更新,实现上下左右移动的方法接口。 Move函数 设置初始化蛇的形状和运行方向,设置随机块的位置,判断游戏是否出界,以及出界后的处理,设置方向的更新。 Eat函数 判断是否吃到食物 Speed 类 用来控制游戏的速度 5.程序中主要方法说明 Main 方法功能:创建了SnakeFrame窗口类的一个实例,应用程序从main方法开始执行。 备注:应用程序的入口方法。 SnakeFrame 方法功能:加载整个用户界面,注册子菜单的ActionEvent事件。 备注:构造函数。 actionPerformed 方法功能:ActionEvent事件处理方法。该方法处理各按钮的动作事件。把pause的值赋给speedtime,处理速度事件。 备注:接口方法。 Speed 方法功能:用来控制游戏的速度。 备注:构造函数。 getX 方法功能:得到x坐标。 备注:自定义方法。 getY

Java程序设计报告《贪吃蛇》

《Java程序设计》 课程设计报告 题目:贪吃蛇游戏的设计与实现 指导老师: 沈泽刚 专业: 计算机科学与技术 班级: 10-3 姓名: 梁潇

一、课程设计目的 贪吃蛇游戏一款非常经典的手机游戏,因为它比较简单有趣,无论老少都比较适合。目的就是更好地了解与掌握java语言,并熟练的运用java语言来实现项目。培养自主学习的能力。 本软件在设计方面本着方便、实用及娱乐性高的宗旨,在外界进行设计的过程中,始终坚持清晰明了,在性能方面能够实现效率高,不易出错等优点。 二、课程设计要求 贪吃蛇游戏设计与实现,主要分为以下二个模块:游戏主界面模块、游戏控制模块。 三、课程设计报告内容 (一) 系统设计 1、程序概述 本程序就是一个利用Java应用软件制作的贪吃蛇小游戏。 在游戏过程中,用户通过点击小键盘区的方向键来控制蛇的运行方向;当蛇没有吃到食物且碰到墙壁或自己的身体时游戏结束。 本程序的另一个功能就是在程序运行窗口的左上角显示,用户在游戏过程中所得的分数,不过缺点就就是在退处程序后,下次打开程序时无法保存。 2、游戏的主界面设计 游戏的主界面就是进入游戏后,能够给玩家第一感官的部分,

主要包括游戏图形区域界面、游戏的速度选择更新界面、游戏分数的显示更新界面、游戏开始按钮、暂停游戏按钮、退出游戏按钮以及游戏排行榜按钮。 3、游戏控制模块设计 这个模块就是游戏的中心环节,主要完成控制游戏的开始、暂停、退出等功能。为了能够给玩家一个很好的游戏环境,这部分应该做到易懂、易操作。 (二)主界面设计 游戏界面主框架主要包括游戏图形区域界面、游戏的开始按钮、暂停按钮、游戏的退出按钮、困难程度、积分排行、关于作者。 (三)代码设计 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;

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

前言 Java最初被命名为Oak,目标设左在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤而包机等家用电器的控制和通讯问题。由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak 在计算机网络上的广阔应用前景。于是改造了Oak,以"Java"的拿称正式发布。 Java编程语言的风格十分接近C、C++语言。Java是一个纯的面向对象的程序设计语言,它继承了C++语言而向对象技术的核心。Java舍弃了C++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading).多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在Java SE版本中,Java又引入了泛型编程(Generic Programming)、类型安全的枚举、不怎长参数和自动装/拆箱等语言特性。 Java不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字卩码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了"一次编译、到处执行"的跨平台特性。不过,每次的编译执行需要消耗一左的时间,这同时也在一立程度上降低了Java程序的运行效率。但在J2SE 发布后,Java的执行速度有了大幅提升。 与传统程序不同,Sun公司在推岀Java之际就将其作为一种开放的技术。全球数以万计的Java开发公司被要求所设计的Java软件必须相互兼容。“Java语言靠群体的力量而非公司的力量"是Sun公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同。 ) Sun公司对Java编程语言的解释是:Java编程语言是个简单、而向对象、分布 式、解释性.健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。

毕业设计(论文)-基于java的贪吃蛇游戏开发

论文编号:德州科技职业学院 毕业论文题目 姓名:____________________ 学号:____________________ 所在院系:____________________ 所学专业:____________________ 指导教师:____________________ 完成时间:____________________ Java贪吃蛇游戏设计 目录

JAVA贪吃蛇游戏设计 (1) 目录 (1) 前言 (3) 1.JAVA语言的概述及开发工具 (5) 1.1Java语言特点 (5) 1.1.1 平台无关性 (5) 1.1.2安全性 (5) 1.1.3面向对象 (5) 1.1.4分布式 (5) 1.1.5健壮性 (5) 1.2 J2ME介绍 (6) 1.3 关于ECLIPS E (7) 1.4 WTK介绍 (8) 2.需求分析 (8) 2.1游戏的介绍 (8) 2.2游戏开发的可行性 (9) 2.3设计目的 (9) 2.4游戏需求 (9) 2.4.1游戏界面需求 (9) 2.4.2游戏形状需求 (10) 2.4.3键盘事件处理 (10) 2.4.4显示需求 (10) 2.4.5接口控制 (10) 2.4.6环境介绍 (10) 3.功能设计 (11) 3.1 游戏的流程图 (11)

3.详细设计 (12) 3.1游戏主界面的开发 (12) 3.2 绘制蛇身 (12) 3.3创建初始“蛇”及“蛇”的移动 (13) 3.4 吃掉食物,蛇身增长 (13) 3.4随机产生食物 (14) 3.5键盘事件处理 (15) 3.6 判断游戏结束 (16) 4游戏测试与发布 (18) 4.1游戏运行的效果图 (18) 4.2 测试结果 (19) 5.自我评价和总结 (19) 5.1遇到的问题及解决办法 (19) 5.2 总结 (20) 6.参考资料 (20) 7.附加源代码 (20) 前言 随着3G的到来,让人们的目光聚集到一个新兴的互联网终端

Java贪吃蛇报告完整版

J a v a贪吃蛇报告集团标准化办公室:[VV986T-J682P28-JP266L8-68PNN]

《Java高级编程》课程报告 第xx小组:贪吃蛇游戏项目 小组成员及分工 一、实验环境 操作系统:Windows 7 编程环境:Eclipse、JDK 二、实验内容与完成情况 (主要介绍项目总体功能分析与说明。) 贪吃蛇小游戏的JAVA程序是利用上↑、下↓、左←、右→方向键来改变蛇的运动方向,按空键暂停游戏,按enter键重新开始。长按某个方向键后,蛇的运动速度会加快,在随机的地方产生食物,吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常进行游戏。以不同的速度和不同方向吃到食物所获得的分数也不相同。 窗口功能说明:设计了三个窗口,分别是游戏主窗口,主菜单窗口,模式选择窗口。菜单栏分别为:游戏菜单(重新开始)和帮助菜单以及返回(返回主菜单)。其中,按返回菜单按钮后会显示主菜单,其包括游戏开始、设置、退出游戏三项按钮选择;如果按

“设置”按钮会进入“模式选择”窗口。而模式选择窗口菜单包括了初级、中级、高级、返回按钮。 1、功能1(主菜单窗口) (1)主菜单窗口主要是提供“游戏开始”、“设置”和“退出”按钮。“游戏开始”按钮按下后会进入“游戏主窗口”开始游戏;“设置”按钮是调用 “模式选择”窗口对游戏贪吃蛇的速度进行设置;“退出”按钮按下则会 直接退出游戏。 (2)功能1实现的流程图 实现的效果图如下: (3)功能1(主菜单窗口)代码: package Swing; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; public class setMenu extends JFrame { private int speed1 = 200; public static int speed = 200; // static int speed = 20; private JPanel contentPane; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { setMenu frame = new setMenu(speed); frame.SsetMenu(frame); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); }

java贪吃蛇毕业论文

java贪吃蛇毕业论文 本文将介绍贪吃蛇游戏的设计与实现,该游戏的主要功能包括游戏开始、游戏暂停、游戏结束、得分统计等。基于Java 语言,采用面向对象的程序设计方法,构建了具有良好交互性的贪吃蛇游戏系统。 一、引言 贪吃蛇是一个经典的小游戏,它在全世界范围内都受到玩家们的喜欢。贪吃蛇这个小游戏有着简单的规则和良好的互动性,因此成为了许多程序员学习编程的入门教材。 本文旨在通过对贪吃蛇游戏的设计和实现,加深对Java编程语言的理解,提升面向对象程序设计的能力。本文将介绍贪吃蛇游戏的整体框架设计、游戏流程设计、源代码分析等内容,希望对同学们学习Java编程有所帮助。 二、贪吃蛇游戏的设计与实现 2.1整体框架设计 首先,我们来看一下贪吃蛇游戏的整体框架设计。贪吃蛇游戏的界面分为左右两部分,左边显示游戏画面,右边显示得分情况。游戏开始后,蛇会出现在游戏画面的中央位置,游戏画面上还会随机出现食物。如果蛇吃到了食物,那么得分就会增加,同时蛇也会变长。如果蛇撞到了游戏画面的边界或者自己的身体,则游戏失败,游戏画面会出现“Game over”的提示。

贪吃蛇游戏的设计可以分为两个模块:游戏画面显示模块和游戏逻辑实现模块。其中,游戏画面显示模块是用来将游戏运行时的状态显示在界面上,游戏逻辑实现模块则是通过对用户的操作产生游戏效果。 2.2游戏流程设计 当用户点击游戏开始按钮后,游戏画面会显示出蛇的头部,然后蛇会按照一定的规则向前移动。此时,用户可以通过按键控制蛇的移动方向,蛇吃到食物时,得分会增加,同时蛇的长度增加。如果蛇撞到了游戏画面的边界或自己的身体,则游戏失败,游戏画面会出现“Game over”的提示。如果用户点击游戏暂停按钮,则游戏就会暂停,并且再次点击按钮游戏就会恢复进行。 2.3源代码分析 以下是源代码的分析,采用了面向对象的编程方式,将游戏画面、蛇、食物等各个元素都抽象成了对象。下面我们就来看一下其中的一部分代码。 (1)GamePanel.java ```java public class GamePanel extends JPanel { private Snake snake;//蛇 private Food food;//食物 private int score;//分数 private int speed;//移动速度 private Timer timer;//计时器

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

课程设计报告:Java贪吃蛇游戏 1. 背景 贪吃蛇是一款经典的街机游戏,通过控制蛇的移动,吃掉食物,使蛇变得越来越长,直到触碰到边界或自己的身体为止。该游戏在20世纪80年代流行起来,并成为了一种代表性的休闲娱乐方式。贪吃蛇游戏可以提高玩家的反应能力、体力协调和空间感知能力。 本次课程设计旨在通过使用Java编程语言,设计实现一个简化版的贪吃蛇游戏, 以加深学生对面向对象程序设计的理解和应用,并培养学生的逻辑思维能力和团队协作精神。 2. 分析 2.1 游戏规则分析 在贪吃蛇游戏中,玩家通过控制蛇的移动方向,使蛇吃到食物从而变长,直到游戏结束。具体规则如下: •初始状态下,蛇由一个长度为3的身体组成,呈水平放置。 •蛇的移动方式为每个时间单位(通常为固定时间间隔)前进一格,移动方向由玩家通过键盘输入控制。 •蛇在吃到食物后,身体变长一节,并在地图上随机生成新的食物。 •蛇头碰到地图边界或自身身体的任意部分,游戏结束。 2.2 功能模块分析 基于对游戏规则的分析,可以将贪吃蛇游戏的功能模块划分如下: •游戏初始化模块:初始化地图、蛇的初始位置和长度、生成初始食物等。•用户输入模块:读取用户的键盘输入,控制蛇的移动方向。 •游戏逻辑模块:根据用户输入和游戏规则,更新蛇的位置、判断是否吃到食物或撞到障碍物等。 •地图绘制模块:将地图、蛇、食物等元素绘制到屏幕上。 •游戏循环模块:根据固定时间间隔循环执行游戏逻辑、用户输入和地图绘制等操作。

•游戏结束模块:在游戏结束时输出游戏得分等信息。 2.3 设计思路 基于上述功能模块的分析,我设计了如下的实现思路: 1.使用Java面向对象编程的思想,抽象出地图、蛇、食物等对象,并为其封 装相应的属性和方法。 2.在游戏初始化模块中,创建地图对象、蛇对象,初始化位置和长度,并生成 初始食物。 3.在用户输入模块中,利用Java的键盘事件监听机制,获取用户的方向输入, 并通过调用蛇对象的移动方法实现控制蛇的移动方向。 4.在游戏逻辑模块中,根据用户输入和游戏规则,更新蛇的位置、判断是否吃 到食物或触碰到边界或自身身体等情况。 5.在地图绘制模块中,通过Java图形界面库(如Swing或JavaFX)提供的 API,将地图、蛇、食物等对象绘制到游戏窗口上。 6.在游戏循环模块中,使用定时器或多线程机制,每隔固定时间间隔重复执行 游戏逻辑、用户输入和地图绘制等操作。 7.在游戏结束模块中,根据游戏的结束情况输出游戏得分等信息。 3. 结果 在课程设计的过程中,我按照上述设计思路,使用Java编程语言完成了一个简化 版的贪吃蛇游戏。 游戏功能实现 我成功实现了以下游戏功能: •游戏初始化:创建地图、蛇、食物对象,初始化其属性并随机生成初始位置。•用户输入:通过键盘事件监听机制,读取用户的方向输入,并调用蛇对象的移动方法,以控制蛇的移动方向。 •游戏逻辑:根据用户输入和游戏规则,更新蛇的位置,判断是否吃到食物、撞到障碍物或触碰到边界,并相应调整游戏状态。 •地图绘制:使用JavaFX图形界面库,将地图、蛇、食物等对象绘制到游戏窗口上。 •游戏循环:利用JavaFX提供的时间轴(AnimationTimer)机制,每隔固定时间间隔执行游戏逻辑、用户输入和地图绘制等操作。

java贪吃蛇毕业设计

java贪吃蛇毕业设计 Java贪吃蛇毕业设计 毕业设计是大学生们在校园生活的最后一道考验,也是他们展示自己所学知识 和能力的机会。对于计算机科学专业的学生而言,选择一个合适的主题进行毕 业设计是至关重要的。本文将探讨一个有趣且具有挑战性的毕业设计主题: Java贪吃蛇。 1. 贪吃蛇的背景介绍 贪吃蛇是一款经典的游戏,最早出现在20世纪70年代。游戏的玩法简单,玩 家控制一条蛇在有限的空间内移动,吃掉食物以增加身体长度,同时要避免碰 到自己的身体或是墙壁。随着时间的推移,蛇的移动速度会逐渐加快,增加游 戏的难度。 2. 设计思路 在设计Java贪吃蛇毕业项目时,需要考虑以下几个方面: 2.1 游戏界面设计 游戏界面是玩家与游戏进行交互的窗口,需要设计一个美观且易于操作的界面。可以使用Java的图形库,如Swing或JavaFX来实现。 2.2 蛇的移动和控制 蛇的移动是游戏的核心,需要设计合适的算法来控制蛇的移动方向和速度。可 以使用键盘监听器来捕捉玩家的按键操作,并根据按键来改变蛇的方向。 2.3 食物生成和吃掉 食物的生成和吃掉是游戏的重要元素。需要设计一个随机生成食物的算法,并 判断蛇是否吃到了食物。当蛇吃到食物时,需要增加蛇的长度并生成新的食物。

2.4 碰撞检测 碰撞检测是游戏的关键部分,需要判断蛇是否碰到了自己的身体或是墙壁。如果蛇碰到了自己的身体或是墙壁,游戏结束。 3. 实现过程 在实现Java贪吃蛇毕业项目时,可以按照以下步骤进行: 3.1 确定游戏界面和基本功能 首先,设计游戏界面,包括蛇、食物和墙壁的显示。然后,实现蛇的移动和控制功能,包括键盘监听器和蛇的移动算法。 3.2 实现食物生成和吃掉功能 接下来,设计食物的生成算法,并判断蛇是否吃到了食物。当蛇吃到食物时,增加蛇的长度,并生成新的食物。 3.3 实现碰撞检测 最后,设计碰撞检测算法,判断蛇是否碰到了自己的身体或是墙壁。如果蛇碰到了自己的身体或是墙壁,游戏结束。 4. 拓展功能 除了基本功能之外,还可以考虑添加一些拓展功能来提升游戏的趣味性和挑战性。例如,可以设计多关卡模式,每个关卡的难度逐渐增加;或者设计特殊道具,使蛇在一段时间内变得更快或更慢。 5. 结语 Java贪吃蛇是一个有趣且具有挑战性的毕业设计主题。通过设计和实现一个完整的贪吃蛇游戏,可以锻炼学生的编程能力和逻辑思维能力。同时,还可以提升学生的团队协作能力,因为一个完整的游戏项目通常需要多个人共同合作完

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

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

前言 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 编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。

贪吃蛇java毕业设计

贪吃蛇java毕业设计 贪吃蛇是一款经典的游戏,它在20世纪70年代诞生于贪吃蛇机器上,随后在各种游戏平台上得到了广泛的传播和演变。如今,贪吃蛇已经成为了一个不可或缺的元素,出现在了各种手机应用和网页游戏中。因此,我选择了贪吃蛇作为我的Java毕业设计题目。 在开始设计之前,我首先进行了一番调研,了解了贪吃蛇游戏的基本规则和特点。贪吃蛇游戏的核心玩法是控制一条蛇在一个有界的区域内移动,吃掉食物以增长身体长度,同时要避免碰到自己的身体或者墙壁。游戏的难度会随着蛇的身体长度的增加而增加,给玩家带来更大的挑战。 在设计过程中,我首先考虑了游戏的界面。我采用了Java的图形界面库Swing 来构建游戏界面,使用了适当的颜色和图形元素,使得游戏界面看起来简洁而又美观。我还添加了一些动画效果,如蛇的身体在移动时的流畅过渡和食物被吃掉时的消失效果,以增加游戏的可玩性和趣味性。 接下来,我着重考虑了游戏的逻辑部分。首先,我设计了一个蛇类,包含了蛇的身体长度、移动方向和位置等属性,以及蛇的移动、吃食物和碰撞检测等方法。然后,我设计了一个食物类,包含了食物的位置和生成方法。在游戏的主循环中,我通过不断调用蛇的移动方法和碰撞检测方法,来实现游戏的动态效果。同时,我还加入了一些额外的功能,如计分系统和游戏结束的判断,以增加游戏的可玩性和挑战性。 在整个设计过程中,我遇到了不少挑战和问题。例如,如何确保蛇的移动是流畅而且不会出现闪烁的问题;如何设计一个合适的算法来生成食物,并确保食物不会出现在蛇的身体上;以及如何处理用户输入和游戏状态的切换等等。为

了解决这些问题,我进行了大量的调试和优化工作,不断地修改和完善我的代码,最终实现了一个功能完善且稳定的贪吃蛇游戏。 通过这个毕业设计,我不仅学到了如何运用Java编程语言来实现一个小游戏,还学到了如何设计和优化一个软件系统。我深刻体会到了软件开发的复杂性和挑战性,也明白了团队合作和不断学习的重要性。通过这个项目,我不仅提高了自己的编程能力,也培养了解决问题的能力和创新思维。 总结起来,贪吃蛇Java毕业设计是一项有趣且具有挑战性的任务。通过这个项目,我不仅加深了对Java编程语言的理解和掌握,还提高了自己的软件设计和开发能力。我相信,这个毕业设计将成为我职业生涯中的一个重要里程碑,为我未来的发展打下坚实的基础。

java课程设计-贪吃蛇代码

java课程设计-贪吃蛇代码importjava.awt.Color; importponent; importjava.awt.Graphic; importjava.awt.event.ActionEvent; importjava.awt.event.ActionLitener; importjava.awt.event.KeyEvent; importjava.awt.event.KeyLitener; importjava.util.ArrayLit; importjava某.wing.BorderFactory; importjava某.wing.JFrame; importjava某.wing.JLabel; importjava某.wing.JMenu; importjava某.wing.JMenuBar; importjava某.wing.JMenuItem; importjava某.wing.JPanel; publicclaSnakeGame{ publictaticvoidmain(String[]arg){ SnakeFrameframe=newSnakeFrame();

frame.etTitle("贪吃蛇"); frame.etDefaultCloeOperation(JFrame.E某IT_ON_CLOSE); frame.etViible(true); } } //----------记录状态的线程 claStatuRunnableimplementRunnable{ publicStatuRunnable(Snakenake,JLabeltatuLabel,JLabelcoreLabe l){thi.tatuLabel=tatuLabel; thi.coreLabel=coreLabel; thi.nake=nake; } publicvoidrun(){ Stringta=""; Stringpe=""; while(true){ witch(nake.tatu){ caeSnake.RUNNING: ta="Running";

毕业论文-基于java的贪吃蛇游戏设计[管理资料]

毕业设计论文 作者学号 系部 专业 题目基于Java的贪吃蛇游戏设计 指导教师 评阅教师 完成时间:

毕业设计(论文)中文摘要

毕业设计(论文)外文摘要

目录 1 绪论 (1) J AVA语言的特点 (1) 开发工具E CLIPSE介绍 (2) (2) 应用环境 (3) 2 系统需求分析 (3) 需求分析 (3) 可行性分析 (3) 3 系统概要设计 (4) 游戏流程图 (4) 设计目标 (5) 系统功能模块 (5) 系统数据结构设计 (7) 4 系统详细设计 (10) 程序设计 (10) 贪吃蛇游戏各功能界面截图 (13) 5 系统测试 (16) 测试的意义 (16) 测试过程 (16) 测试结果 (17) 结论 (18) 致谢 (19) 参考文献 (19)

1 绪论 贪吃蛇是世界知名的益智类小游戏,选择这个题目一方面是为了将我们自己的所学知识加以运用;另一方面,我希望通过自己的所学知识把它剖析开来,通过自己的动手实践,真正的了解它的本质和精髓。希望通过这次实践,能从中提高自己的编程能力。并从中学会从零开始分析设计程序,达到学以致用,活学活用的目的。另外,通过本游戏的开发,达到学习Java技术和熟悉软件开发流程的目的。 本游戏的开发语言为Java,开发工具选用Eclipse。 Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。这里采用Java作为开发语言主要是基于Java的面向对象和可移植性。 Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。 Java语言的特点 简单性 Java与C++语言非常相近,但Java比C++简单,它抛弃了C++中的一些不是绝对必要的功能,如头文件、预处理文件、指针、结构、运算符重载、多重继承以及自动强迫同型。Java 实现了自动的垃圾收集,简化了内存管理的工作。 平台无关性 Java引进虚拟机原理,并运行于虚拟机,实现不同平台之间的Java接口。Java的数据类型与机器无关。 安全性 Java的编程类似C++,但舍弃了C++的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针入侵系统。它提供了安全管理器,防止程序的非法访问。 面向对象 Java吸收了C++面向对象的概念,将数据封装于类中,实现了程序的简洁性和便于维护性,使程序代码可以只需一次编译就可反复利用。

相关主题
相关文档
最新文档