admin 管理员组文章数量: 1184232
2024年3月1日发(作者:smart五大原则案例)
package Game;
import ;
import ;
import cs;
import nt;
import tener;
import ;
import ;
import ;
import .*;
public class she extends JFrame{
MyPaint mp=null;
public static void main(String[] args) {
she she=new she();
}
public she(){
mp=new MyPaint();
Thread t1=new Thread(mp);//启动mp线程
();
(mp);//加载面板
Listener(mp);//加载按键监听
e(300,320);//窗口大小
ationRelativeTo(null); //居中
le("贪吃蛇V1.0");
aultCloseOperation(_ON_CLOSE);//点击关闭时,关闭程序
ible(true);//可见
}
}
class MyPaint extends JPanel implements KeyListener,Runnable{
yidong yd=new yidong();
public void paint (Graphics g){
(g);
or();
ct(0, 0, 300, 260);
or();
al(, , 20, 20);
or();
al(yd.x[0], yd.y[0], 20, 20);//蛇头显示
or();
for(int i=1;i<-1;i++){//蛇身体显示
al(yd.x[i], yd.y[i], 20, 20);
}
ring("当前分数: "+, 190, 275);
ring("速度等级: "+, 10, 275);
or();
if(==0){ //当游戏结束时显示
t(new Font("黑体",1,20));
ring("Game over", 90, 100);
t(new Font("幼体",1,15));
ring("按Z键 继续游戏!", 80, 120);
}
}
public void keyPressed(KeyEvent e) {
if(==1){//当游戏进行时 可控制
if(Code()==_UP){
if(!=2){=8;}
}else if(Code()==_DOWN){
if(!=8){=2;}
}else if(Code()==_LEFT){
if(!=6){=4;}
}else if(Code()==_RIGHT){
if(!=4){=6;}
}
}else{//当游戏结束时 按Z 恢复游戏
if(Code()==_Z){
=4;
yd.x[0]=100;yd.y[0]=100;yd.x[1]=80;yd.y[1]=100;yd.x[2]=60;yd.y[2]=100;
=200;=1;=6;=6;=20;
}
}
}
public void keyReleased(KeyEvent arg0) {}
public void keyTyped(KeyEvent arg0) {}
public void run() { //刷新面板线程
Thread t2=new Thread(yd);
();
while(true){
try {(10);}
catch (InterruptedException e) {tackTrace();}
t();
}
}
}
class yidong implements Runnable{ //蛇移动线程
int maxsum=128,sum=4,x[]=new int[maxsum],y[]=new int[maxsum],kaishi=1;
//sum:代表蛇的总共长度是sum-1
int fx=1,nfx,sp=20,i=0,yanchi=200,fenshu;//方向 fx :4=← 6=→
8=↑ 2=↓ 其余:无移动
int swx=0,swy=0,shiwu=0;
String lv="1";
Random sj=new Random();
@Override
public void run() {
x[0]=100;y[0]=100;//初始化蛇坐标
while(true){
try {(yanchi);}
catch (InterruptedException e) {tackTrace();}
if(shiwu==0){//随机产生食物
swx=(t(10)+1)*20;
swy=(t(10)+1)*20;
shiwu=1; }
if(kaishi==1){fenshu=sum*100-400;}//分数计算
for(int i=sum-1;i>0;i--){//身体坐标刷新
x[i]=x[i-1];
y[i]=y[i-1];
}
if(fx==6&&nfx!=4){//方向判断
x[0]+=sp;//移动
nfx=6;
}else if(fx==4&&nfx!=6){x[0]-=sp;nfx=4;}
else if(fx==2&&nfx!=8){y[0]+=sp;nfx=2;}
else if(fx==8&&nfx!=2){y[0]-=sp;nfx=8;}
else{if(nfx==6){x[0]+=sp;}
if(nfx==4){x[0]-=sp;}
if(nfx==2){y[0]+=sp;}
if(nfx==8){y[0]-=sp;}}
if(x[0]>270){x[0]-=sp;}
if(x[0]<0){x[0]+=sp;}
if(y[0]>255){y[0]-=sp;}
if(y[0]<0){y[0]+=sp;}
if(x[0]>swx-5&&x[0] sum++;//增加长度 shiwu=0; if(sum==10){yanchi=180;lv="2";}//加速 if(sum==20){yanchi=160;lv="3";} if(sum==30){yanchi=150;lv="4";} if(sum==40){yanchi=140;lv="5";} if(sum==50){yanchi=130;lv="max";} } for(int i=sum-1;i>0;i--){//判断蛇是否吃到自己 if(x[0]>x[i]-5&&x[0] sp=0; yanchi=500; kaishi=0; } } } } }
版权声明:本文标题:贪吃蛇游戏源代码 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1709283153a541940.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论