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

上传人:b****4 文档编号:3931314 上传时间:2022-11-26 格式:DOCX 页数:14 大小:52.85KB
下载 相关 举报
Java程序设计报告《贪吃蛇》.docx_第1页
第1页 / 共14页
Java程序设计报告《贪吃蛇》.docx_第2页
第2页 / 共14页
Java程序设计报告《贪吃蛇》.docx_第3页
第3页 / 共14页
Java程序设计报告《贪吃蛇》.docx_第4页
第4页 / 共14页
Java程序设计报告《贪吃蛇》.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

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

《Java程序设计报告《贪吃蛇》.docx》由会员分享,可在线阅读,更多相关《Java程序设计报告《贪吃蛇》.docx(14页珍藏版)》请在冰豆网上搜索。

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

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

《Java程序设计》

课程设计报告

 

题目:

贪吃蛇游戏的设计与实现

指导老师:

沈泽刚

专业:

计算机科学与技术

班级:

10-3

姓名:

梁潇

一、课程设计目的

贪吃蛇游戏一款非常经典的手机游戏,因为它比较简单有趣,无论老少都比较适合。

目的就是更好地了解与掌握java语言,并熟练的运用java语言来实现项目。

培养自主学习的能力。

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

二、课程设计要求

贪吃蛇游戏设计与实现,主要分为以下二个模块:

游戏主界面模块、游戏控制模块。

三、课程设计报告内容

(一)系统设计

1、程序概述

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

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

本程序的另一个功能就是在程序运行窗口的左上角显示,用户在游戏过程中所得的分数,不过缺点就就是在退处程序后,下次打开程序时无法保存。

2、游戏的主界面设计

游戏的主界面就是进入游戏后,能够给玩家第一感官的部分,主要包括游戏图形区域界面、游戏的速度选择更新界面、游戏分数的显示更新界面、游戏开始按钮、暂停游戏按钮、退出游戏按钮以及游戏排行榜按钮。

3、游戏控制模块设计

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

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

(2)主界面设计

游戏界面主框架主要包括游戏图形区域界面、游戏的开始按钮、暂停按钮、游戏的退出按钮、困难程度、积分排行、关于作者。

(3)代码设计

importjava、awt、Color;

importjava、awt、Container;

importjava、awt、Graphics;

importjava、awt、Toolkit;

importjava、awt、event、ActionEvent;

importjava、awt、event、ActionListener;

importjava、awt、event、InputEvent;

importjava、awt、event、KeyEvent;

importjava、awt、event、KeyListener;

importjavax、swing、*;

publicclassTanChiSheextendsJFrameimplementsActionListener,KeyListener,Runnable

{

privateJMenuBarmenuBar;

privateJMenuyouXiMenu,nanDuMenu,fenShuMenu,guanYuMenu;

privateJMenuItemkaiShiYouXi,exitItem,zuoZheItem,fenShuItem;

privateJCheckBoxMenuItemcJianDan,cPuTong,cKunNan;

privateintlength=6;

privateToolkittoolkit;

privateinti,x,y,z,objectX,objectY,object=0,growth=0,time;

privateintdifficult=2;

privateintm[]=newint[50];

privateintn[]=newint[50];

privateThreadshe=null;

privateintlife=0;

privateintfoods=0;

privateintfenshu=0;

publicvoidrun()//运行

{

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(Exceptionee)

{

System、out、println(z+"");

}

}

}

publicTanChiShe()

{

//***************创建新对象**************

setVisible(true);

menuBar=newJMenuBar();

Containercon=getContentPane();

toolkit=getToolkit();

//**************游戏菜单对象*****************

youXiMenu=newJMenu("游戏");

kaiShiYouXi=newJMenuItem("开始游戏");

exitItem=newJMenuItem("退出游戏");

//***************困难程度对象****************

nanDuMenu=newJMenu("困难程度");

cJianDan=newJCheckBoxMenuItem("简单");

cPuTong=newJCheckBoxMenuItem("普通");

cKunNan=newJCheckBoxMenuItem("困难");

//*****************分数菜单对象****************

fenShuMenu=newJMenu("积分排行");

fenShuItem=newJMenuItem("最高记录");

//****************关于对象*********************

guanYuMenu=newJMenu("关于");

zuoZheItem=newJMenuItem("关于作者");

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

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);

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

KeyStrokekeyOpen=KeyStroke、getKeyStroke('O',InputEvent、CTRL_DOWN_MASK);

kaiShiYouXi、setAccelerator(keyOpen);

KeyStrokekeyExit=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);

}

publicstaticvoidmain(Stringargs[])

{

newTanChiShe();

}

//******************菜单监听******************************

publicvoidactionPerformed(ActionEvente)

{

if(e、getSource()==kaiShiYouXi)

{

length=6;

life=0;

foods=0;

if(she==null)

{

she=newThread(this);

she、start();

}

elseif(she!

=null)

{

she=null;

she=newThread(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+"");

}

}

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

publicvoidcheck()

{

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

}

}

voidisDead()

{

if(z==4)

{

x=x+10;

}

elseif(z==3)

{

x=x-10;

}

elseif(z==2)

{

y=y+10;

}

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

}

}

}

publicvoidupgrowth()

{

if(length<50)

{

length++;

}

growth--;

time=time-10;

reform();

life+=100;

if(fenshu

{

fenshu=life;

}

foods++;

}

publicvoidreform()

{

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;

}

}

publicvoidkeyPressed(KeyEvente)

{

if(she!

=null)

{

if(e、getKeyCode()==KeyEvent、VK_UP)

{

if(z!

=2)

{

z=1;

check();

}

}

elseif(e、getKeyCode()==KeyEvent、VK_DOWN)

{

if(z!

=1)

{

z=2;

check();

}

}

elseif(e、getKeyCode()==KeyEvent、VK_LEFT)

{

if(z!

=4)

{

z=3;

check();

}

}

elseif(e、getKeyCode()==KeyEvent、VK_RIGHT)

{

if(z!

=3)

{

z=4;

check();

}

}

}

}

publicvoidkeyReleased(KeyEvente)

{

//TODO自动生成方法存根

}

publicvoidkeyTyped(KeyEvente)

{

//TODO自动生成方法存根

}

publicvoidpaint(Graphicsg)

{

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

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);

}

}

 

(4)测试

 

(5)使用说明

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

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

 

4、总结(心得体会)

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

整个设计过程就是不断学习,不断发现问题、分析问题、解决问题的过程。

使我受益良多。

设计期间有很多感触,想法,对以后的学习、工作有很大的益处。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1