JAVA实训贪吃蛇源代码
来源:互联网 发布:java write 编辑:程序博客网 时间:2024/05/18 22:12
这是计算机专业的学生实训时常用到的JAVA 贪吃蛇实训项目
package myPackage;import java.awt.*;import java.awt.event.*;import javax.swing.*;class Snake {int length=3;int[] x=new int[200];int[] y=new int[200];}@SuppressWarnings("serial")public class MySnake extends JFrame implements Runnable{ int direction=1;//运动方向标志,1左2右3上4下 int sleeptime=1000;//等待时间 Image imgSnake;//蛇身租车人能够图片 像素20*20 int foodX,foodY;//食物的X,Y坐标 Image imgFood;//食物图片 20*20 Snake s=new Snake(); int score=0;//得分 boolean gameOver=false;//游戏结束标志MySnake(){ super("XXXX");// 标题 for(int i=0;i<s.length;i++) { s.x[i]=200; s.y[i]=200; } imgSnake=getToolkit().getImage("1.jpg");//图片诶20*20 imgFood=getToolkit().getImage("2.jpg"); setBackground(Color.pink); randomFood(); setBounds(100,100,400,420); setLayout(null); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e) { switch(e.getKeyCode()) { case KeyEvent.VK_LEFT: if(direction!=2)//当蛇右转的时候 不能马上往左 { direction=1; repaint(); } break; case KeyEvent.VK_RIGHT: if(direction!=1) { direction=2; repaint(); } break; case KeyEvent.VK_UP: if(direction!=4) { direction=3; repaint(); } break; case KeyEvent.VK_DOWN: if(direction!=3) { direction=4; repaint(); } } } }); }void randomFood()//随机产生食物位置{ foodX=(int)(Math.random()*18)*20+20; foodY=(int)(Math.random()*18)*20+20;}public void paint(Graphics g){ g.clearRect(0, 0, 400, 400);//清楚屏幕 g.drawImage(imgFood, foodX, foodY, this); for(int i=0;i<s.length;i++) g.drawImage(imgSnake, s.x[i],s.y[i],this);//画蛇 g.setColor(Color.pink); g.drawString("你的得分为:" +score, 0,400);}public void run()//使用多线程{ while(true) { switch(direction) { case 1: s.x[0]-=20;//当向左时,蛇头x坐标每次减少20 break; case 2: s.x[0]+=20; break; case 3: s.y[0]-=20; break; case 4: s.y[0]+=20; } repaint(); if((s.x[0]<=0)||(s.x[0]>=380)||(s.y[0]<=0)||(s.y[0]>=380))//判断是否碰壁 { gameOver=true; } if(gameOver)break; for(int i=1;i<s.length;i++)//判断是否碰到自身 { if((s.x[0]==s.x[i]&&(s.y[0]==s.y[i]))) { gameOver=true; break; } } if(gameOver)break; if((s.x[0]==foodX&&(s.y[0]==foodY)))//吃到食物 { s.length++; score+=50; randomFood();//产生新的食物 } for(int i=s.length-1;i>=1;i--)//使蛇蜿蜒曲折 { s.x[i]=s.x[i-1]; s.y[i]=s.y[i-1]; } try { Thread.sleep(200); } catch(InterruptedException e) { e.printStackTrace(); }}}public static void main(String[] args){ Thread t; MySnake mySnakeTest=new MySnake(); t=new Thread(mySnakeTest); t.start();}}
阅读全文
1 0
- JAVA实训贪吃蛇源代码
- java贪吃蛇源代码
- java贪吃蛇源代码
- 贪吃蛇java源代码
- 贪吃蛇java源代码
- java实现贪吃蛇源代码
- 简易贪吃蛇(JAVA版)源代码
- java贪吃蛇源代码 带部分注释
- java贪吃蛇小游戏源代码swing
- 贪吃蛇源代码
- 贪吃蛇源代码
- opengl贪吃蛇源代码
- python贪吃蛇源代码
- C++贪吃蛇源代码
- 贪吃蛇源代码分析
- MFC贪吃蛇+源代码
- 贪吃蛇源代码
- C++贪吃蛇源代码
- 对JavaEE中mvc模式以及三层架构的理解
- LearningNotes
- 测线程cpu时间
- 超级简单的Android Studio jni 实现(无需命令行)
- Android绘画相关
- JAVA实训贪吃蛇源代码
- Informatica批量导出对象成xml文件
- 为什么Eclipse打jar包,Export为什么没有 Runnable jar file,即为什么不能打可执行jar包?
- js 遍历对象
- java---栈---顺序存储
- Notification--------通知的基本用法
- android EditText 的不可编辑可点击
- js用构造函数的方法创建数组
- JavaScript专题之数组去重