【游戏墙源码】【java涂鸦源码】【jspxcms 源码解说】java 贪吃蛇源码_Java贪吃蛇源码

时间:2024-11-15 01:18:04 编辑:迅代理源码 来源:ssh框架搭建实例源码

1.java贪吃蛇游戏程序 问题 急!贪吃a贪!蛇源!吃蛇!源码!贪吃a贪游戏墙源码!蛇源java涂鸦源码!吃蛇!源码!贪吃a贪!蛇源!吃蛇
2.求JAVA贪吃蛇代码 要能运行有注解的源码!

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

java贪吃蛇游戏程序 问题 急!贪吃a贪jspxcms 源码解说!蛇源!吃蛇!!信息抽取源码!!!!ligerui java 源码!!

       太简单了,我都写在自己手机上了。

       都不看书的,全部自己思考。

       他这代码也太烂了。

       // 蛇是用一个二维的int数组表示

       //snake[i][0] 表示横轴 snake[i][1]表示纵轴

       public int[][] snake = new int[][2];

       public int SnakeNum; //蛇长度

       public final int SnakeSize; //大概是蛇的最长值

       public int foodX; //食物横轴

       public int foodY; //食物纵轴

       public Random random = new Random(); //随机丢食物

       private void init()

       {

       SnakeNum = 5; //初始蛇长

       exp = 0;

       for (int i = 0; i < SnakeNum; i++)

       {

       snake[i][0] = SnakeSize * 3;

       snake[i][1] = SnakeSize * 3;

       }

       DIR = DIR_DOWN;

       foodX = SnakeSize * 5; 初始食物

       foodY = SnakeSize * 5;

       }

       private void move(int dir)

       {

       //把头以外的部分向前一格 去掉了尾那一格

       for (int i = SnakeNum; i > 0; i--)

       {

       snake[i][0] = snake[i - 1][0];

       snake[i][1] = snake[i - 1][1];

       }

       //根据 dir 方向做蛇头

       switch (dir)

       {

       case DIR_UP:

       snake[0][1] = snake[0][1] - SnakeSize;

       break;

       case DIR_DOWN:

       snake[0][1] = snake[0][1] + SnakeSize;

       break;

       case DIR_LEFT:

       snake[0][0] = snake[0][0] - SnakeSize;

       break;

       case DIR_RIGHT:

       snake[0][0] = snake[0][0] + SnakeSize;

       break;

       }

       }

       private void eatFood()

       {

       //如果蛇头与食物相等 所以吃掉

       if (snake[0][0] == foodX && snake[0][1] == foodY)

       {

       SnakeNum++; //蛇长加一格

       exp++; //加分 还是什么

       one++; //加分 还是什么

       levelup(); //加速度吧

       filename = 1; //文件名

       isPlaySound = true; //声音吧

       PlaySound(filename); //拨声音

       makeFood(); // 抛食物

       }

       }

       private void makeFood()

       {

       while (true)

       {

       //食物是随机的。但是不能在蛇身上和屏幕外

       //并且坐标要为 蛇每一格长度的整数倍

       foodX = Math.abs(random.nextInt() % (SCREEN_WIDTH - SnakeSize + 1)) / SnakeSize * SnakeSize;

       foodY = Math.abs(random.nextInt() % (SCREEN_HEIGHT - B_BLACK - SnakeSize + 1)) / SnakeSize * SnakeSize;

       boolean b = true;

       //不能在蛇身上

       for (int i = 0; i < SnakeNum; i++)

       {

       if (foodX == snake[i][0] && snake[i][1] == foodY)

       {

       b = false;

       break;

       }

       }

       if (b)

       {

       break;

       }

       }

       }

       //判断游戏结束

       private boolean isGameOver()

       {

       // 如果蛇头走出了屏幕 结束

       if (snake[0][0] < 0 || snake[0][0] > (SCREEN_WIDTH - SnakeSize) ||

       snake[0][1] < 0 || snake[0][1] > (SCREEN_HEIGHT - B_BLACK - SnakeSize))

       {

       return true;

       }

       for (int i = 4; i < SnakeNum; i++)

       {

       if (snake[0][0] == snake[i][0] && snake[0][1] == snake[i][1])

       {

       return true;

       }

       }

       return false;

       } //后面的写不下了 QQ

求JAVA贪吃蛇代码 要能运行有注解的!

       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;

       }

       }