Java贪吃蛇源码Word文件下载.docx
《Java贪吃蛇源码Word文件下载.docx》由会员分享,可在线阅读,更多相关《Java贪吃蛇源码Word文件下载.docx(6页珍藏版)》请在冰豆网上搜索。
//蛇的节数
intfood[];
//食物数组
booleanresult=true;
//判定结果是输还是赢
Threadthread;
//定义线程
staticintweix,weiy;
//食物位置
booleant=true;
//判定游戏是否结束
intfangxiang=0;
//蛇移动方向
intx=0,y=0;
//蛇头位置
MyPanel()
setLayout(null);
snake=newButton[20];
food=newint[20];
thread=newThread(this);
for(intj=0;
j<
20;
j++)
food[j]=(int)(Math.random()*99);
//定义20个随机食物
weix=(int)(food[0]*0.1)*60;
//十位*60为横坐标
weiy=(int)(food[0]%10)*40;
//个位*40为纵坐标
for(inti=0;
i<
i++)
snake[i]=newButton();
add(snake[0]);
snake[0].setBackground(Color.black);
snake[0].addKeyListener(this);
//为蛇头添加键盘监视器
snake[0].setBounds(0,0,10,10);
setBackground(Color.cyan);
publicvoidrun()//接收线程
while(t)
if(fangxiang==0)//向右
try
x+=10;
snake[0].setLocation(x,y);
//设置蛇头位置
if(x==weix&
&
y==weiy)//吃到食物
shu++;
weix=(int)(food[shu]*0.1)*60;
weiy=(int)(food[shu]%10)*40;
repaint();
//重绘下一个食物
add(snake[shu]);
//增加蛇节数和位置
snake[shu].setBounds(snake[shu-1].getBounds());
thread.sleep(100);
//睡眠100ms
catch(Exceptione){}
elseif(fangxiang==1)//向左
x-=10;
y==weiy)
elseif(fangxiang==2)//向上
y-=10;
elseif(fangxiang==3)//向下
y+=10;
intnum1=shu;
while(num1>
1)//判断是否咬自己的尾巴
if(snake[num1].getBounds().x==snake[0].getBounds().x&
snake[num1].getBounds().y==snake[0].getBounds().y)
t=false;
result=false;
num1--;
if(x<
0||x>
=this.getWidth()||y<
0||y>
=this.getHeight())//判断是否撞墙
intnum=shu;
while(num>
0)//设置蛇节位置
snake[num].setBounds(snake[num-1].getBounds());
num--;
if(shu==15)//如果蛇节数等于15则胜利
result=true;
publicvoidkeyPressed(KeyEvente)//按下键盘方向键
if(e.getKeyCode()==KeyEvent.VK_RIGHT)//右键
if(fangxiang!
=1)//如果先前方向不为左
fangxiang=0;
elseif(e.getKeyCode()==KeyEvent.VK_LEFT)
{if(fangxiang!
=0)
fangxiang=1;
elseif(e.getKeyCode()==KeyEvent.VK_UP)
=3)
fangxiang=2;
elseif(e.getKeyCode()==KeyEvent.VK_DOWN)
=2)
fangxiang=3;
publicvoidkeyTyped(KeyEvente)
publicvoidkeyReleased(KeyEvente)
publicvoidpaint(Graphicsg)//在面板上绘图
intx1=this.getWidth()-1;
inty1=this.getHeight()-1;
g.setColor(Color.red);
g.fillOval(weix,weiy,10,10);
//食物
g.drawRect(0,0,x1,y1);
//墙
if(t==false&
result==false)
g.drawString("
GAMEOVER!
"
250,200);
//输出游戏失败
elseif(t==false&
result==true)
YOUWIN!
//输出游戏成功
classMyWindowextendsFrameimplementsActionListener//自定义窗口类
MyPanelmy;
Buttonbtn;
Panelpanel;
MyWindow()
super("
GreedSnake"
);
my=newMyPanel();
btn=newButton("
begin"
panel=newPanel();
btn.addActionListener(this);
panel.add(newLabel("
begin后请按Tab键选定蛇"
));
panel.add(btn);
按上下左右键控制蛇行动"
add(panel,BorderLayout.NORTH);
add(my,BorderLayout.CENTER);
setBounds(100,100,610,500);
setVisible(true);
validate();
addWindowListener(newWindowAdapter()
publicvoidwindowClosing(WindowEvente)
System.exit(0);
});
publicvoidactionPerformed(ActionEvente)//按下begin按钮
if(e.getSource()==btn)
my.thread.start();
//开始线程
my.validate();
catch(Exceptionee){}
}
//文件名保存为:
GreedSnake.java
WelcomeTo
Download!
!
欢迎您的下载,资料仅供参考!