在好例子网,分享、交流、成长!
您当前所在位置:首页Java 开发实例Java游戏开发 → Java实现贪吃蛇小游戏(附完整源码)

Java实现贪吃蛇小游戏(附完整源码)

Java游戏开发

下载此实例
  • 开发语言:Java
  • 实例大小:0.17M
  • 下载次数:5
  • 浏览次数:69
  • 发布时间:2020-08-31
  • 实例类别:Java游戏开发
  • 发 布 人:huangjianwen
  • 所需积分:2
 相关标签: java 贪吃蛇 小游戏 源码 游戏

实例介绍

【实例简介】

基本上实现了贪吃蛇的基本功能。还增加了添加得分记录、通过键盘某按键来控制游戏的停止、重新开始、再来一局等。

【实例截图】

from clipboard

【核心代码】

public class SnakeFrame extends Frame{ //方格的宽度和长度 public static final int BLOCK_WIDTH = 15 ; public static final int BLOCK_HEIGHT = 15 ; //界面的方格的行数和列数 public static final int ROW = 40; public static final int COL = 40; public static void main(String[] args) { new SnakeFrame().launch(); } public void launch(){ this.setTitle("Snake"); this.setSize(ROW*BLOCK_HEIGHT, COL*BLOCK_WIDTH); this.setLocation(300, 400); this.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); this.setResizable(false); this.setVisible(true); } }


 
public void keyPressed(KeyEvent e) { int key = e.getKeyCode(); switch(key){ case KeyEvent.VK_LEFT : if(head.dir!=Direction.R){ head.dir = Direction.L; } break; case KeyEvent.VK_UP : if(head.dir!=Direction.D){ head.dir = Direction.U; } break; case KeyEvent.VK_RIGHT : if(head.dir!=Direction.L){ head.dir = Direction.R; } break; case KeyEvent.VK_DOWN : if(head.dir!=Direction.U){ head.dir = Direction.D; } break; } } public void move() { addNodeInHead(); deleteNodeInTail(); } private void deleteNodeInTail() { Node node = tail.pre; tail = null; node.next = null; tail = node; } private void addNodeInHead() { Node node = null; switch(head.dir){ case L: node = new Node(head.row,head.col-1,head.dir); break; case U: node = new Node(head.row-1,head.col,head.dir); break; case R: node = new Node(head.row,head.col 1,head.dir); break; case D: node = new Node(head.row 1,head.col,head.dir); break; } node.next = head; head.pre = node; head = node; } //最后,在draw中调用move方法即可 public void draw(Graphics g){ if(head==null){ return ; } move(); for(Node node = head;node!=null;node = node.next){ node.draw(g); } }



public class Egg { //所在的位置 private int row; private int col; //大小 private static final int BLOCK_WIDTH = SnakeFrame.BLOCK_WIDTH; private static final int BLOCK_HEIGHT = SnakeFrame.BLOCK_HEIGHT; private static final Random r = new Random(); private Color color = Color.RED; public Egg(int row, int col) { this.row = row; this.col = col; } public Egg() { this((r.nextInt(SnakeFrame.ROW-2)) 2,(r.nextInt(SnakeFrame.COL-2)) 2); } /*
         * 改变当前对象的位置,即完成蛋的重现
         * */ public void reAppear(){ this.row = (r.nextInt(SnakeFrame.ROW-2)) 2; this.col = (r.nextInt(SnakeFrame.COL-2)) 2; } public void draw(Graphics g){ Color c= g.getColor(); g.setColor(color); g.fillOval(col*BLOCK_WIDTH, row*BLOCK_HEIGHT, BLOCK_WIDTH, BLOCK_HEIGHT); g.setColor(c); //改变下一次的颜色 if(color==Color.RED){ color = Color.BLUE; } else{ color = Color.RED; } } //用于碰撞检测 public Rectangle getRect(){ return new Rectangle(col*BLOCK_WIDTH, row*BLOCK_HEIGHT, BLOCK_WIDTH, BLOCK_HEIGHT); } }


实例下载地址

Java实现贪吃蛇小游戏(附完整源码)

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
;
报警