admin管理员组

文章数量:1535375

2024年1月13日发(作者:)

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

《Java程序设计》

课程设计报告

题 目: 贪吃蛇游戏的设计与实现

指导老师: 沈泽刚

专 业: 计算机科学与技术

班 级: 10-3

姓 名: 梁潇

一、 课程设计目的

贪吃蛇游戏一款非常经典的手机游戏,因为它比较简单有趣,无论老少都比较适合。目的是更好地了解和掌握java语言,并熟练的运用java语言来实现项目。培养自主学习的能力。

本软件在设计方面本着方便、实用及娱乐性高的宗旨,在外界进行设计的过程中,始终坚持清晰明了,在性能方面能够实现效率高,不易出错等优点。

二、 课程设计要求

贪吃蛇游戏设计与实现,主要分为以下二个模块:游戏主界面模块、游戏控制模块。

三、 课程设计报告内容

(一) 系统设计

1、程序概述

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

按钮、暂停按钮、游戏的退出按钮、困难程度、积分排行、关于作者。

(二) 代码设计

import ;

import ner;

import cs;

import t;

import Event;

import Listener;

import vent;

import nt;

import tener;

import .*;

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

{

(time);

}

catch(Exception ee)

{

n(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("关于作者");

//***************设置关于菜单*******************

(zuoZheItem);

//****************设置困难程度菜单**************

(cJianDan);

(cPuTong);

(cKunNan);

//******************设置分数菜单***************

(fenShuItem);

//*****************设置游戏菜单****************

(kaiShiYouXi);

(exitItem);

//******************设置主菜单********************

(youXiMenu);

(nanDuMenu);

(fenShuMenu);

(guanYuMenu);

//*********************监听注册*****************

ionListener(this);

ionListener(this);

ionListener(this);

addKeyListener(this);

ionListener(this);

//*********************加快捷键********************

KeyStroke keyOpen =

Stroke('O',_DOWN_MASK);

elerator(keyOpen);

KeyStroke keyExit =

Stroke('X',_DOWN_MASK);

elerator(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(rce()==kaiShiYouXi)

{

length = 6;

life = 0;

foods = 0;

if(she==null)

{

she=new Thread(this);

();

}

else if(she!=null)

{

she=null;

she= new Thread(this);

();

}

}

if(rce()==exitItem)

{

(0);

}

if(rce()==zuoZheItem)

{

ssageDialog(this, "梁潇"+"nn");

}

if(rce()==fenShuItem)

{

ssageDialog(this,"最高记录为"+fenshu+"");

}

}

//**************检查一下*******************************

public void check()

{

isDead();

if(she!=null)

{

if(growth==0)

{

reform();

}

else

{

upgrowth();

}

if(x==objectX&&y==objectY)

{

object=0;

growth=1;

();

}

//****************产生食物坐标**********************

if(object==0)

{

object=1;

objectX=(int)(()*39)*10;

objectY=(int)(()*29)*10+50;

}

t();

}

}

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

{

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

{

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(Code()==_UP)

{

if(z!=2)

{

z=1;

check();

}

}

else if(Code()==_DOWN)

{

if(z!=1)

{

z=2;

check();

}

}

else if(Code()==_LEFT)

{

if(z!=4)

{

z=3;

check();

}

}

else if(Code()==_RIGHT)

{

if(z!=3)

{

z=4;

check();

}

}

}

}

public void keyReleased(KeyEvent e)

{

// TODO 自动生成方法存根

}

public void keyTyped(KeyEvent e)

{

// TODO 自动生成方法存根

}

public void paint(Graphics g)

{

//*******************画图**********************

or(_GRAY);

ct(0,50,400,400);

or();

for(i=0;i<=length-1;i++)

{

ct(m[i],n[i],10,10);

}

or();

ct(objectX,objectY,10,10);

or();

ring("当前 分数"+,6,60);

ring("当前已吃食物数"+,6,72);

}

}

(三) 测试

(四) 使用说明

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

同时,游戏可以使用快捷键, Ctrl+O为开始游戏,Cirl+X为退出游戏。

四、总结(心得体会)

在设计过程中遇到一些问题,在游戏过程中,左上角显示所得的分数,不过缺点就是在退处程序后,下次打开程序时无法保存。

整个设计过程是不断学习,不断发现问题、分析问题、解决问题的过程。使我受益良多。设计期间有很多感触,想法,对以后的学习、工作有很大的益处。

本文标签: 游戏设计过程实现菜单