色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

源代碼--java寫小游戲,吞食蛇

瀏覽:25日期:2024-06-23 17:26:32
內容: java新手,簡單的吞食蛇游戲,一邊寫一邊查書,寫了半天才弄出來沒法把jar文件附在文章后面,想試試的人自己編譯一下吧有意見盡管提,高手多多指導,不過罵人就算了///////////////////////////////////////////////////// 文件1///////////////////////////////////////////////////import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.*;public class GreedSnake implements KeyListener{ JFrame mainFrame; Canvas paintCanvas; JLabel labelScore; SnakeModel snakeModel = null; public static final int canvasWidth = 200; public static final int canvasHeight = 300; public static final int nodeWidth = 10; public static final int nodeHeight = 10; public GreedSnake() { mainFrame = new JFrame('GreedSnake'); Container cp = mainFrame.getContentPane(); labelScore = new JLabel('Score:'); cp.add(labelScore, BorderLayout.NORTH); paintCanvas = new Canvas(); paintCanvas.setSize(canvasWidth+1,canvasHeight+1); paintCanvas.addKeyListener(this); cp.add(paintCanvas, BorderLayout.CENTER); JPanel panelButtom = new JPanel(); panelButtom.setLayout(new BorderLayout()); JLabel labelHelp; labelHelp = new JLabel('PageUp, PageDown for speed;', JLabel.CENTER); panelButtom.add(labelHelp, BorderLayout.NORTH); labelHelp = new JLabel('ENTER or R or S for start;', JLabel.CENTER); panelButtom.add(labelHelp, BorderLayout.CENTER); labelHelp = new JLabel('SPACE or P for pause',JLabel.CENTER); panelButtom.add(labelHelp, BorderLayout.SOUTH); cp.add(panelButtom,BorderLayout.SOUTH); mainFrame.addKeyListener(this); mainFrame.pack(); mainFrame.setResizable(false); mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); mainFrame.setVisible(true); begin(); } public void keyPressed(KeyEvent e){ int keyCode = e.getKeyCode(); if (snakeModel.running) switch(keyCode){ case KeyEvent.VK_UP: snakeModel.changeDirection(SnakeModel.UP); break; case KeyEvent.VK_DOWN: snakeModel.changeDirection(SnakeModel.DOWN); break; case KeyEvent.VK_LEFT: snakeModel.changeDirection(SnakeModel.LEFT); break; case KeyEvent.VK_RIGHT: snakeModel.changeDirection(SnakeModel.RIGHT); break; case KeyEvent.VK_ADD: case KeyEvent.VK_PAGE_UP: snakeModel.speedUp(); break; case KeyEvent.VK_SUBTRACT: case KeyEvent.VK_PAGE_DOWN: snakeModel.speedDown(); break; case KeyEvent.VK_SPACE: case KeyEvent.VK_P: snakeModel.changePauseState(); break; default: } if (keyCode == KeyEvent.VK_R || keyCode == KeyEvent.VK_S || keyCode == KeyEvent.VK_ENTER){ snakeModel.running = false; begin(); } } public void keyReleased(KeyEvent e){ } public void keyTyped(KeyEvent e){ } void repaint(){ Graphics g = paintCanvas.getGraphics(); //draw background g.setColor(Color.WHITE); g.fillRect(0,0,canvasWidth,canvasHeight); // draw the snake g.setColor(Color.BLACK); LinkedList na = snakeModel.nodeArray; Iterator it = na.iterator(); while(it.hasNext()){ Node n = (Node)it.next(); drawNode(g,n); } // draw the food g.setColor(Color.RED); Node n = snakeModel.food; drawNode(g,n); updateScore(); } private void drawNode(Graphics g, Node n){ g.fillRect(n.x*nodeWidth, n.y*nodeHeight, nodeWidth-1, nodeHeight-1); } public void updateScore(){ String s = 'Score: ' + snakeModel.score; labelScore.setText(s); } void begin(){ if (snakeModel == null || !snakeModel.running){ snakeModel = new SnakeModel(this, canvasWidth/nodeWidth, canvasHeight/nodeHeight); (new Thread(snakeModel)).start(); } } public static void main(String[] args){ GreedSnake gs = new GreedSnake(); }}///////////////////////////////////////////////////// 文件2///////////////////////////////////////////////////import java.util.*;import javax.swing.*;class SnakeModel implements Runnable{ GreedSnake gs; boolean[][] matrix; LinkedList nodeArray = new LinkedList(); Node food; int maxX; int maxY; int direction = 2; boolean running = false; int timeInterval = 200; double speedChangeRate = 0.75; boolean paused = false; int score = 0; int countMove = 0; // UP and DOWN should be even // RIGHT and LEFT should be odd public static final int UP = 2; public static final int DOWN = 4; public static final int LEFT = 1; public static final int RIGHT = 3; public SnakeModel(GreedSnake gs, int maxX, int maxY){ this.gs = gs; this.maxX = maxX; this.maxY = maxY; // initial matirx matrix = new boolean[maxX][]; for(int i=0; i 20 ? 10 : maxX/2; for(int i = 0; i < initArrayLength; ++i){ int x = maxX/2+i; int y = maxY/2; nodeArray.addLast(new Node(x, y)); matrix[x][y] = true; } food = createFood(); matrix[food.x][food.y] = true; } public void changeDirection(int newDirection){ if (direction % 2 != newDirection % 2){ direction = newDirection; } } public boolean moveOn(){ Node n = (Node)nodeArray.getFirst(); int x = n.x; int y = n.y; switch(direction){ case UP: y--; break; case DOWN: y++; break; case LEFT: x--; break; case RIGHT: x++; break; } if ((0
標簽: Java
相關文章:
主站蜘蛛池模板: 欧美视频亚洲视频 | 成人欧美精品大91在线 | 精品一区二区在线欧美日韩 | 欧美性xxxx18| 国产在线一区二区 | 国产日韩精品欧美一区 | www中文字幕 | 日韩中文字幕免费 | 欧美在线乱妇一级毛片 | 国产亚洲欧美另类久久久 | 黄色网址免费在线 | 国产精品国产三级国产a | 国产成人无精品久久久久国语 | 老妇综合久久香蕉蜜桃 | 久久青草国产手机看片福利盒子 | 国产成人a福利在线观看 | 一区二区在线看 | 久久久亚洲欧美综合 | 欧美一级带 | 久草a视频 | 日本丶国产丶欧美色综合 | 国产成人www免费人成看片 | www.久久| 免费成人 | 精品国产一区二区三区成人 | freesex日本高清nice | 国内精品久久久久久久亚洲 | 美女一级毛片毛片在线播放 | 久草综合视频 | 性盈盈影院在线观看 | 国产成人精品本亚洲 | 老司机精品影院一区二区三区 | 欧美性极品hd高清视频 | 国产成人小视频 | 欧美一级永久免费毛片在线 | 国产精品秦先生手机在线 | 在线看片欧美 | 91香蕉国产亚洲一区二区三区 | 免费观看一级成人毛片 | a级毛片免费观看在线播放 a级毛片免费看 | 国产亚洲精品yxsp |