用java开发贪吃蛇游戏
来源:互联网 发布:什么叫大数据时代赚钱 编辑:程序博客网 时间:2024/06/03 19:04
跟着网易云课堂上轻课java公开课上学习的开发贪吃蛇游戏,比较简单。
开发环境为JDK和eclipse
实现的功能是蛇吃食物增加长度,游戏开始结束,键盘控制游戏开始暂停蛇的走向。
先附上效果图。
下面看代码:
父类
public class Snake {public static void main(String[] args) {//画出白色窗口JFrame frame=new JFrame();frame.setBounds(10, 10, 900, 720);frame.setResizable(false);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//画布加到窗户里面SnakePanel panel=new SnakePanel();frame.add(panel);//设置让其展现出来frame.setVisible(true);}}
package snake;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.util.Random;import javax.swing.ImageIcon;import javax.swing.JPanel;import javax.swing.Timer;public class SnakePanel extends JPanel implements KeyListener,ActionListener{ImageIcon up=new ImageIcon("up.png");ImageIcon down=new ImageIcon("down.png");ImageIcon right=new ImageIcon("right.png");ImageIcon left=new ImageIcon("left.png");ImageIcon title=new ImageIcon("title.jpg");ImageIcon food=new ImageIcon("food.png");ImageIcon body=new ImageIcon("body.png");int[] snakex=new int[750];int[] snakey=new int[750];//食物的坐标Random rand=new Random();int foodx=rand.nextInt(34)*25+25;int foody=rand.nextInt(24)*25+75;int len=3;int score=0;String fangxiang="R";boolean isStarted=false;//构造函数boolean isFailed=false;Timer timer=new Timer(100,this);public SnakePanel(){//设置可以获得焦点this.setFocusable(true);this.addKeyListener(this);//调用setupsetup();//启动timertimer.start();}//画笔 Graphics public void paint(Graphics g){this.setBackground(Color.WHITE);title.paintIcon(this, g, 25, 11);g.fillRect(25, 75, 850, 600);//画出蛇头if(fangxiang.equals("R")){right.paintIcon(this, g, snakex[0], snakey[0]);}else if(fangxiang.equals("L")){left.paintIcon(this, g, snakex[0], snakey[0]);}else if(fangxiang.equals("U")){up.paintIcon(this, g, snakex[0], snakey[0]);}else if(fangxiang.equals("D")){down.paintIcon(this, g, snakex[0], snakey[0]);}//画出蛇的身体for(int i=1;i<len;i++){body.paintIcon(this, g, snakex[i], snakey[i]);}if(!isStarted){g.setColor(Color.WHITE);//设置字体g.setFont(new Font("arial",Font.BOLD,30));//画字符串g.drawString("Press Space to Start/Pause", 300, 300);}if(isFailed){g.setColor(Color.WHITE);//设置字体g.setFont(new Font("arial",Font.BOLD,30));//画字符串g.drawString("Game over,Press Space to Start/Pause", 300, 300);}food.paintIcon(this, g, foodx, foody);g.setColor(Color.WHITE);g.setFont(new Font("arial",Font.PLAIN,10));g.drawString("Score:"+score,800, 30);g.drawString("Length"+len, 800, 50);}public void setup(){isStarted=false;isFailed=false;len=3;snakex[0]=100;snakey[0]=100;snakex[1]=75;snakey[1]=100;snakex[2]=50;snakey[2]=100;}@Overridepublic void keyPressed(KeyEvent e) {int keyCode=e.getKeyCode();if(keyCode==KeyEvent.VK_SPACE){if(isFailed){setup();}else{isStarted=!isStarted;}}else if(keyCode==KeyEvent.VK_UP&&fangxiang!="D"){fangxiang="U";}else if(keyCode==KeyEvent.VK_DOWN&&fangxiang!="U"){fangxiang="D";}else if(keyCode==KeyEvent.VK_RIGHT&&fangxiang!="L"){fangxiang="R";}else if(keyCode==KeyEvent.VK_LEFT&&fangxiang!="R"){fangxiang="L";}}@Overridepublic void keyReleased(KeyEvent e) {}@Overridepublic void keyTyped(KeyEvent e) {}@Overridepublic void actionPerformed(ActionEvent e) {//再定一个闹钟timer.start();//2.移动数据//移动身体if(isStarted&&!isFailed){for(int i=len;i>0;i--){snakex[i]=snakex[i-1];snakey[i]=snakey[i-1];} //移动头if(fangxiang.equals("R")){snakex[0]=snakex[0]+25;if(snakex[0]>850) snakex[0]=25;}else if(fangxiang.equals("L")){snakex[0]=snakex[0]-25;if(snakex[0]<25)snakex[0]=850;}else if(fangxiang.equals("U")){snakey[0]=snakey[0]-25;if(snakey[0]<75) snakey[0]=650;}else if(fangxiang.equals("D")){snakey[0]=snakey[0]+25;if(snakey[0]>650) snakey[0]=75;}//吃食物if(snakex[0]==foodx&&snakey[0]==foody){len++;score++;foodx=rand.nextInt(34)*25+25;foody=rand.nextInt(24)*25+75;}for(int i=1;i<len;i++){if(snakex[0]==snakex[i]&&snakey[0]==snakey[i]){isFailed=true;}}}//3.repaint()repaint();}}
阅读全文
0 0
- 用java开发贪吃蛇游戏
- 用Java开发贪吃蛇游戏
- Java之贪吃蛇游戏的开发
- Java贪吃蛇游戏
- Java贪吃蛇游戏
- java贪吃蛇游戏
- 用简单思路开发游戏----贪吃蛇
- 用java写的贪吃蛇游戏
- 用java写的贪吃蛇游戏
- 如何开发贪吃蛇游戏
- Java开发的游戏之二 贪吃蛇 完整源代码
- JAVA实现贪吃蛇游戏
- 贪吃蛇游戏(java);设计;
- java贪吃蛇游戏一
- java贪吃蛇游戏二
- 贪吃蛇游戏(java)
- Java编程---贪吃蛇游戏
- java实现贪吃蛇游戏
- call和apply的用法(详细介绍)
- tensorflow cross_entropy 四种交叉熵计算函数
- 欢迎使用CSDN-markdown编辑器
- 垃圾收集器与内存分配策略
- w命令详解
- 用java开发贪吃蛇游戏
- heap、stack的内存分配的区别
- 2017 乌鲁木齐赛区网络赛 Banana(【Floyed求传递闭包】)
- 管理处理器的亲和性(affinity)
- 如何编写javadoc文档注释
- 指针作为函数参数
- EJB详解
- OpenGL_1:创建项目前的准备
- 左移运算符