做一个简单的java小游戏--贪吃蛇
做一个简单的java小游戏–贪吃蛇
贪吃蛇游戏博客链接:(方法一样,语言不一样) c++贪吃蛇: python贪吃蛇: java贪吃蛇:
package javasnake; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.JFrame; import javax.swing.WindowConstants; public class SnakeFrame extends JFrame{ public static SnakeBoard snakeboard; public SnakeFrame(String title){ setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); setTitle(title); setVisible(true); setLocationRelativeTo(null); snakeboard = new SnakeBoard(); add(snakeboard); pack(); addKeyListener(new keylistener()); } public static void main(String[] args) throws InterruptedException { SnakeFrame snakeframe = new SnakeFrame("java贪吃蛇"); game(); } public class keylistener implements KeyListener{ public void keyTyped(KeyEvent e) { } public void keyPressed(KeyEvent e) { switch(e.getKeyCode()) { case KeyEvent.VK_DOWN: if(snakeboard.way!=4)snakeboard.way = 2; break; case KeyEvent.VK_UP: if(snakeboard.way!=2)snakeboard.way = 4; break; case KeyEvent.VK_LEFT: if(snakeboard.way!=1)snakeboard.way = 3; break; case KeyEvent.VK_RIGHT: if(snakeboard.way!=3)snakeboard.way = 1; break; } } public void keyReleased(KeyEvent e) { } } public static void game() throws InterruptedException{ while(true) { Thread.sleep(100); if(snakeboard.way == 1)snakeboard.snake_x+=1; if(snakeboard.way == 2)snakeboard.snake_y+=1; if(snakeboard.way == 3)snakeboard.snake_x-=1; if(snakeboard.way == 4)snakeboard.snake_y-=1; if(snakeboard.board[snakeboard.snake_x][snakeboard.snake_y]>0 || snakeboard.snake_x<1 || snakeboard.snake_y >60)System.exit(0); snakeboard.board[snakeboard.snake_x][snakeboard.snake_y] = snakeboard.snake_lon; if ((snakeboard.snake_x == snakeboard.food_x) && (snakeboard.snake_y == snakeboard.food_y)) { snakeboard.snake_lon += 1; while (snakeboard.board[snakeboard.food_x][snakeboard.food_y] != 0) { snakeboard.food_x = (int)Math.round(Math.random()*59)+1; snakeboard.food_y = (int)Math.round(Math.random()*39)+1; } } snakeboard.board[snakeboard.food_x][snakeboard.food_y] = -1; snakeboard.draw(); } } }
SnakeBoard.java
package javasnake; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import javax.swing.JComponent; public class SnakeBoard extends JComponent{ public int snake_lon = 3; public int[][] board = new int[62][42]; public int food_x; public int food_y; public int snake_x = 10; public int snake_y = 10; public int size = 10; public int way = 1; public SnakeBoard() { food_x = (int)Math.round(Math.random()*59)+1; food_y = (int)Math.round(Math.random()*39)+1; board[food_x][food_y]=-1; } public void paint(Graphics g) { super.paint(g); for(int i = 1;i<=60;i++) { for(int j = 1;j<=40;j++) { if(board[i][j]==0) continue; if(board[i][j]>0) { board[i][j]-=1; g.setColor(Color.green); g.fillRect((i-1)*size, (j-1)*size, size, size); } else { g.setColor(Color.red); g.fillRect((i-1)*size, (j-1)*size, size, size); } } } } public void draw() { repaint(); } public Dimension getPreferredSize() { return new Dimension(600,400); } }
上一篇:
IDEA上Java项目控制台中文乱码