JavaAWT实现贪吃蛇游戏.docx

上传人:b****5 文档编号:7451041 上传时间:2023-05-11 格式:DOCX 页数:12 大小:23.22KB
下载 相关 举报
JavaAWT实现贪吃蛇游戏.docx_第1页
第1页 / 共12页
JavaAWT实现贪吃蛇游戏.docx_第2页
第2页 / 共12页
JavaAWT实现贪吃蛇游戏.docx_第3页
第3页 / 共12页
JavaAWT实现贪吃蛇游戏.docx_第4页
第4页 / 共12页
JavaAWT实现贪吃蛇游戏.docx_第5页
第5页 / 共12页
JavaAWT实现贪吃蛇游戏.docx_第6页
第6页 / 共12页
JavaAWT实现贪吃蛇游戏.docx_第7页
第7页 / 共12页
JavaAWT实现贪吃蛇游戏.docx_第8页
第8页 / 共12页
JavaAWT实现贪吃蛇游戏.docx_第9页
第9页 / 共12页
JavaAWT实现贪吃蛇游戏.docx_第10页
第10页 / 共12页
JavaAWT实现贪吃蛇游戏.docx_第11页
第11页 / 共12页
JavaAWT实现贪吃蛇游戏.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

JavaAWT实现贪吃蛇游戏.docx

《JavaAWT实现贪吃蛇游戏.docx》由会员分享,可在线阅读,更多相关《JavaAWT实现贪吃蛇游戏.docx(12页珍藏版)》请在冰点文库上搜索。

JavaAWT实现贪吃蛇游戏.docx

JavaAWT实现贪吃蛇游戏

importproject.MainPanel;

/**

*入口函数

*

*@authorAdministrator

*

*/

publicclassMain{

publicstaticvoidmain(String[]args){

newMainPanel();

}

}

packageproject;

importjava.util.LinkedList;

/**

*存放程序运行时数据

*

*@authorAdministrator

*

*/

publicclassConfig{

/**

*节点尺寸

*/

publicstaticfinalintLEN=25;

publicstaticfinalintROW=20;

publicstaticfinalintCOLUMN=20;

/*

*边距

*/

publicstaticfinalintLEFT_LIMIT=10;

publicstaticfinalintUPER_LIMIT=30;

publicstaticfinalintDOWN_LIMIT=LEN*ROW+UPER_LIMIT;

publicstaticfinalintRIGHT_LIMIT=LEN*COLUMN+LEFT_LIMIT;

/**

*方向常量

*/

publicstaticfinalintUPER=0,DOWN=1,LEFT=2,RIGHT=3;

/**

*画面布局数据存储数组

*/

privatestaticint[][]panel=newint[ROW][COLUMN];

/**

*移动方向初始化向右

*/

privatestaticintdirect=RIGHT;

/**

*移动时间间隔

*/

privatestaticlongtime=500;

/**

*贪吃蛇数据存储容器

*/

privatestaticLinkedListtrack=newLinkedList();

/**

*增加移动时间间隔,上限为1000毫秒

*/

publicstaticvoidtimeUp(){

if(time<1000)

time+=100;

}

/**

*减少时间间隔,下线为100毫秒

*/

publicstaticvoidtimeDown(){

if(time>100)

time-=100;

}

/**

*获取当前时间间隔

*

*@returntime

*/

publicstaticlonggetTime(){

returntime;

}

/**

*获取当前界面数据

*

*@return

*/

publicstaticint[][]getPanel(){

returnpanel;

}

/**

*设置移动方向

*

*@paramdirect

*/

publicstaticvoidsetDirect(intdirect){

Config.direct=direct;

}

/**

*获得移动方向

*

*@return

*/

publicstaticintgetDirect(){

returndirect;

}

/**

*添加蛇头位置,如果与蛇身重复,抛出运行时异常用于结束游戏

*

*@paramx

*@paramy

*/

publicstaticvoidadd(intx,inty){

panel[x][y]=1;

for(int[]arr:

track){

if(arr[0]==x&&arr[1]==y)

thrownewRuntimeException();

}

track.addFirst(newint[]{x,y});

}

/**

*移除蛇尾

*/

publicstaticvoidremove(){

int[]site=(int[])track.removeLast();

panel[site[0]][site[1]]=0;

}

}

packageproject;

importjava.awt.Graphics;

importjavax.swing.JFrame;

@SuppressWarnings("serial")

/**

*界面布局类

*@authorAdministrator

*

*/

publicclassMainPanelextendsJFrame{

JFrameframe;

Policepolice;

publicMainPanel(){

//TODOAuto-generatedconstructorstub

frame=this;

frame.setBounds(300,300,Config.RIGHT_LIMIT,Config.DOWN_LIMIT);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setVisible(true);

frame.setTitle("贪吃蛇");

init();

}

privatevoidinit(){

newWorm(this);

police=newPolice();

frame.addKeyListener(police);

}

publicvoidpaint(Graphicsg){

super.paint(g);

paintWorm(g);

}

privatevoidpaintWorm(Graphicsg){

int[][]panel=Config.getPanel();

for(inti=0;i

for(intj=0;j

if(panel[i][j]==1){

g.fillRect((Config.LEFT_LIMIT+Config.LEN*j),

(Config.UPER_LIMIT+Config.LEN*i),Config.LEN,

Config.LEN);

}

}

}

}

}

packageproject;

importjava.awt.event.KeyEvent;

importjava.awt.event.KeyListener;

importstaticjava.awt.event.KeyEvent.*;

/**

*键盘监听器类

*

*@authorAdministrator

*

*/

publicclassPoliceimplementsKeyListener{

@Override

publicvoidkeyPressed(KeyEvente){

//TODOAuto-generatedmethodstub

{

chara=e.getKeyChar();

if(a=='a')

Config.setDirect(Config.LEFT);

elseif(a=='s')

Config.setDirect(Config.DOWN);

elseif(a=='d')

Config.setDirect(Config.RIGHT);

elseif(a=='w')

Config.setDirect(Config.UPER);

elseif(a=='q')

Config.timeUp();

elseif(a=='e')

Config.timeDown();

}

{

inti=e.getKeyCode();

if(i==VK_LEFT)

Config.setDirect(Config.LEFT);

elseif(i==VK_DOWN)

Config.setDirect(Config.DOWN);

elseif(i==VK_RIGHT)

Config.setDirect(Config.RIGHT);

elseif(i==VK_UP)

Config.setDirect(Config.UPER);

}

}

publicvoidkeyReleased(KeyEvente){

//TODOAuto-generatedmethodstub

}

@Override

publicvoidkeyTyped(KeyEvente){

//TODOAuto-generatedmethodstub

}

}

packageproject;

importjavax.swing.JFrame;

/**

*贪吃蛇构造类

*

*@authorAdministrator

*

*/

publicclassWormimplementsRunnable{

int[][]panel;

/**

*随机食物位置

*/

int[]food=newint[2];

/**

*蛇头位置信息

*/

int[]head;

/**

*当前移动方向

*/

intdirect;

JFrameframe;

publicWorm(JFrameframe){

this.frame=frame;

panel=Config.getPanel();

direct=Config.getDirect();

head=newint[2];

wormInit();

newThread(this).start();

}

privatevoidwormInit(){

for(inti=1;i<=3;i++){

Config.add(7,i);

}

head[0]=7;

head[1]=3;

}

publicvoidrun(){

try{

foodRandom();

while(true){

try{

Thread.sleep(Config.getTime());

}catch(InterruptedExceptione){

e.printStackTrace();

}

switch(Config.getDirect()){

caseConfig.UPER:

{

if(direct==Config.DOWN){

Config.setDirect(direct);

break;

}

Config.add(head[0]--,head[1]);

if(head[0]==food[0]&&head[1]==food[1]){

//蛇头移动到食物位置后,调用产生食物方法,并不调用移除蛇尾方法

foodRandom();

break;

}

Config.remove();

break;

}

caseConfig.DOWN:

{

if(direct==Config.UPER){

Config.setDirect(direct);

break;

}

Config.add(head[0]++,head[1]);

if(head[0]==food[0]&&head[1]==food[1]){

foodRandom();

break;

}

Config.remove();

break;

}

caseConfig.LEFT:

{

if(direct==Config.RIGHT){

Config.setDirect(direct);

break;

}

Config.add(head[0],head[1]--);

if(head[0]==food[0]&&head[1]==food[1]){

foodRandom();

break;

}

Config.remove();

break;

}

caseConfig.RIGHT:

{

if(direct==Config.LEFT){

Config.setDirect(direct);

break;

}

try{

Config.add(head[0],head[1]++);

}catch(Exceptione){

}

if(head[0]==food[0]&&head[1]==food[1]){

foodRandom();

break;

}

Config.remove();

break;

}

}

direct=Config.getDirect();

frame.paint(frame.getGraphics());

}

}catch(Exceptione){

frame.setTitle("GameOver");

}

}

/**

*在随机位置产生食物

*/

privatevoidfoodRandom(){

while(true){

intx=(int)(Math.random()*Config.ROW);

inty=(int)(Math.random()*Config.COLUMN);

if(panel[x][y]==0){

panel[x][y]=1;

food[0]=x;

food[1]=y;

return;

}

}

}

}

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

当前位置:首页 > 成人教育 > 自考

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2