【app源码找服务器地址】【读懂apk源码】【山西app源码】java 贪吃蛇 源码_Java贪吃蛇源码

时间:2024-11-21 01:29:30 来源:从源码角度理解算法 分类:焦点

1.求JAVA贪吃蛇代码 要能运行有注解的贪吃a贪!
2.求贪吃蛇java程序代码(要能运行的蛇源,有完整注释的)
3.java贪吃蛇游戏程序 问题 急!!吃蛇!源码app源码找服务器地址!贪吃a贪!蛇源读懂apk源码!吃蛇!源码!贪吃a贪!蛇源!吃蛇!源码

java 贪吃蛇 源码_Java贪吃蛇源码

求JAVA贪吃蛇代码 要能运行有注解的贪吃a贪山西app源码

       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 = ;

       public static final int canvasHeight = ;

       public static final int nodeWidth = ;

       public static final int nodeHeight = ;

       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 = ;

       double speedChangeRate = 0.;

       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<maxX; ++i){

       matrix[i] = new boolean[maxY];

       Arrays.fill(matrix[i],false);

       }

       // initial the snake

       int initArrayLength = maxX > ? : 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 <= x && x < maxX) && (0 <= y && y < maxY)){

       if (matrix[x][y]){

       if(x == food.x && y == food.y){

       nodeArray.addFirst(food);

       int scoreGet = ( - * countMove) / timeInterval;

       score += scoreGet > 0? scoreGet : ;

       countMove = 0;

       food = createFood();

       matrix[food.x][food.y] = true;

       return true;

       }

       else

       return false;

       }

       else{

       nodeArray.addFirst(new Node(x,y));

       matrix[x][y] = true;

       n = (Node)nodeArray.removeLast();

       matrix[n.x][n.y] = false;

       countMove++;

       return true;

       }

       }

       return false;

       }

       public void run(){

       running = true;

       while (running){

       try{

       Thread.sleep(timeInterval);

       }

       catch(Exception e){

       break;

       }

       if(!paused){

       if (moveOn()){

       gs.repaint();

       }

       else{

       JOptionPane.showMessageDialog(

       null,

       "you failed",

       "Game Over",

       JOptionPane.INFORMATION_MESSAGE);

       break;

       }

       }

       }

       running = false;

       }

       private Node createFood(){

       int x = 0;

       int y = 0;

       do{

       Random r = new Random();

       x = r.nextInt(maxX);

       y = r.nextInt(maxY);

       }while(matrix[x][y]);

       return new Node(x,y);

       }

       public void speedUp(){

       timeInterval *= speedChangeRate;

       }

       public void speedDown(){

       timeInterval /= speedChangeRate;

       }

       public void changePauseState(){

       paused = !paused;

       }

       public String toString(){

       String result = "";

       for(int i=0; i<nodeArray.size(); ++i){

       Node n = (Node)nodeArray.get(i);

       result += "[" + n.x + "," + n.y + "]";

       }

       return result;

       }

       }

       class Node{

       int x;

       int y;

       Node(int x, int y){

       this.x = x;

       this.y = y;

       }

       }

求贪吃蛇java程序代码(要能运行的,有完整注释的)

       三个文件,楼主看好:

       运行可以,吃蛇但是udev源码分析并不能鼓吹是一个具有好的风格的代码,。

       //文件一

       package greedysnake_cx;

       public class Node {

        int x=0;

        int y=0;

        int nodewidth;

        int nodeheight;

        Node(int x,int y){

        this.x=x;

        this.y=y;

        }

       }

       //文件二

       package greedysnake_cx;

       /

**

        * 实现一个greedysnake的模型,具有功能:

        * 1)移动,早期wps源码moveOn()----从director参数中获取方向信息,如果方向定义的下一个点的逻辑值是true,检查是不是food,是则将food添加到

        * 列表的头部,snake继续移动,不是则停止移动(撞到蛇尾巴了)

        * 2)加速,speedUp()----将现成的停滞时间间隔interval按照一定的比率 speedRate进行扩大

        * 3)减速,speedDown()----....

        *

        * 该类实现Runnable接口,

        * */

       //定义snake的模型

       import java.util.*;

       import javax.swing.*;

       public class SnakeModel implements Runnable {

        private GreedSnake gs;

        //给每一个矩阵点确立一个boolean值

        boolean[][] matrix;

        private int maxX;

        private int maxY;

        //设置一个节点的列表;

        LinkedList nodeArray = new LinkedList();

        Node food=null;

        int direction=UP;

        int score=0;

        //定义方向

        public final static int LEFT=1;

        public final static int UP=2;

        public final static int RIGHT=3;

        public final static int DOWN=4;

        private int interval=; //停顿时间的间隔

        boolean pause=false; //定义暂停

        private double speedRate=0.5; //定义速度的变更幅度

        //constructor

        public SnakeModel(GreedSnake gs,int maxx,int maxy){

        this.gs=gs;

        this.maxX=maxx;

        this.maxY=maxy;

        //this.matrix=null;

        ////////////////////////////////////////////////////////////////////

        //init matrix[][];

        matrix=new boolean[maxX][]; //