JavaAWT实现贪吃蛇游戏Word下载.docx

上传人:b****3 文档编号:18333826 上传时间:2022-12-15 格式:DOCX 页数:12 大小:23.22KB
下载 相关 举报
JavaAWT实现贪吃蛇游戏Word下载.docx_第1页
第1页 / 共12页
JavaAWT实现贪吃蛇游戏Word下载.docx_第2页
第2页 / 共12页
JavaAWT实现贪吃蛇游戏Word下载.docx_第3页
第3页 / 共12页
JavaAWT实现贪吃蛇游戏Word下载.docx_第4页
第4页 / 共12页
JavaAWT实现贪吃蛇游戏Word下载.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

JavaAWT实现贪吃蛇游戏Word下载.docx

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

JavaAWT实现贪吃蛇游戏Word下载.docx

*边距

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;

*贪吃蛇数据存储容器

privatestaticLinkedList<

int[]>

track=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;

*获得移动方向

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;

importjava.awt.Graphics;

importjavax.swing.JFrame;

@SuppressWarnings("

serial"

*界面布局类

*

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<

Config.ROW;

i++){

for(intj=0;

j<

Config.COLUMN;

j++){

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

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

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

Config.LEN);

}

}

importjava.awt.event.KeyEvent;

importjava.awt.event.KeyListener;

importstaticjava.awt.event.KeyEvent.*;

*键盘监听器类

publicclassPoliceimplementsKeyListener{

@Override

publicvoidkeyPressed(KeyEvente){

//TODOAuto-generatedmethodstub

{

chara=e.getKeyChar();

if(a=='

a'

Config.setDirect(Config.LEFT);

elseif(a=='

s'

Config.setDirect(Config.DOWN);

d'

Config.setDirect(Config.RIGHT);

w'

Config.setDirect(Config.UPER);

q'

Config.timeUp();

e'

Config.timeDown();

inti=e.getKeyCode();

if(i==VK_LEFT)

elseif(i==VK_DOWN)

elseif(i==VK_RIGHT)

elseif(i==VK_UP)

publicvoidkeyReleased(KeyEvente){

publicvoidkeyTyped(KeyEvente){

*贪吃蛇构造类

publicclassWormimplementsRunnable{

int[][]panel;

*随机食物位置

int[]food=newint[2];

*蛇头位置信息

int[]head;

*当前移动方向

intdirect;

publicWorm(JFrameframe){

this.frame=frame;

panel=Config.getPanel();

direct=Config.getDirect();

head=newint[2];

wormInit();

newThread(this).start();

privatevoidwormInit(){

for(inti=1;

=3;

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

Config.remove();

break;

caseConfig.DOWN:

if(direct==Config.UPER){

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

caseConfig.LEFT:

if(direct==Config.RIGHT){

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

caseConfig.RIGHT:

if(direct==Config.LEFT){

try{

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

}catch(Exceptione){

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-2022 冰豆网网站版权所有

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