⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 snake.java

📁 该程序源码是我大二暑假时用Java语言写的一个贪食蛇游戏
💻 JAVA
字号:
package SnakeGame;
import java.util.*;
import java.awt.*;
import javax.swing.ImageIcon;
//import java.awt.imageobser

public class Snake extends LinkedList{
  protected int snakeDirection = Global.RIGHT;
  protected int snakeReDirection = Global.LEFT;


  public Snake() {                      //构造函数 生成新的蛇时,给定坐标如下:
    this.add(new Point(3,3));
    this.add(new Point(4,3));
    this.add(new Point(5,3));
    this.add(new Point(6,3));
    this.add(new Point(7,3));
    this.add(new Point(8,3));
    this.add(new Point(9,3));
    this.add(new Point(10,3));
  }
  public void changeDirection(Point temp,int direction){ //改变方向控制部分
    this.snakeDirection = direction;                     //注意:要同时改变与direction对应的
                                                         //snakeReDirection。
    switch( direction)
    {
      case Global.UP:                                    // 向上
        this.snakeReDirection = Global.DOWN;
        this.add(new Point(temp.x,temp.y - 1));
        break;
      case Global.RIGHT:                                 // 向右
        this.snakeReDirection = Global.LEFT;
        this.add(new Point(temp.x+1,temp.y));
        break;
      case Global.DOWN:                                   // 向下
        this.snakeReDirection = Global.UP;
        this.add(new Point(temp.x,temp.y+1));
        break;
      case Global.LEFT:                                   // 向左
        this.snakeReDirection = Global.RIGHT;
        this.add(new Point(temp.x-1,temp.y));
        break;
    }
  }

  public boolean checkBeanIn(Point bean)                 //比较bean与蛇头是否重合。
  {
    Point temp = (Point)this.getLast();
    if(temp.equals(bean))
    {
      return true;
    }
    return false;
  }

  public void removeTail()                          // 去掉尾部
  {
    this.remove(0);
  }

  public void drawSnake(Graphics g,int singleWidthX,int singleHeightY,int cooPos) //画贪食蛇
  {
    g.setColor(Global.COLOR_SNAKE);
    Iterator iterator = this.iterator();
    while (iterator.hasNext()){
      Point tempPoint = (Point)iterator.next();
      this.drawSnakePiece(g,tempPoint.x,tempPoint.y,singleWidthX,singleHeightY,cooPos);
    }

    Point temp=(Point)this.getLast();
    //System.out.println(temp.x+":::"+temp.y);
    this.drawSnakeHead(g,temp.x,temp.y,singleWidthX,singleHeightY);
  }

  public void drawSnakeHead(Graphics g,int temp1,int temp2,int singleWidthX,int singleHeightY)
  {
    //System.out.println("test-c");
                                                                                  // 画贪食蛇的头部,画两个黑圈。。眼睛


    if(this.snakeDirection==Global.UP)
    {
      //System.out.println("test-b");
      g.setColor(Global.COLOR_HEAD_MOUSE);

      g.drawRoundRect(singleWidthX*temp1+1+(singleWidthX)/4,
                      singleHeightY*temp2+1+(singleHeightY)/8,
                      singleWidthX/7,singleWidthX/7,singleWidthX/14,
                      singleWidthX/14);

      g.drawRoundRect(singleWidthX*(temp1+1)-1-(singleWidthX)/4,
                      singleHeightY*temp2+1+(singleHeightY)/8,
                      singleWidthX/7,singleWidthX/7,singleWidthX/14,
                      singleWidthX/14);
      /*
      g.drawLine(singleWidthX*temp1+1+(singleWidthX)/4+2,
                 singleHeightY*temp2+1+(singleHeightY)/8+2,
                 singleWidthX*(temp1+1)-1-(singleWidthX)/4-2,
                 singleHeightY*temp2+1+(singleHeightY)/8+2);*/
    }else if(this.snakeDirection==Global.RIGHT)
    {
      g.setColor(Global.COLOR_HEAD_MOUSE);

      g.drawRoundRect(singleWidthX * (temp1 + 1) - 1 - (singleHeightY) / 8-1,
                      singleHeightY * (temp2) + 1 + (singleWidthX) / 4-1,
                      singleWidthX / 7, singleWidthX / 7, singleWidthX / 14,
                      singleWidthX / 14);

      g.drawRoundRect(singleWidthX*(temp1+1)-1-(singleHeightY)/8-1,
                      singleHeightY*(temp2+1)-1-(singleWidthX)/4-1,
                      singleWidthX/7,singleWidthX/7,singleWidthX/14,
                      singleWidthX/14);
    }
    else if(this.snakeDirection==Global.DOWN)
    {
      g.setColor(Global.COLOR_HEAD_MOUSE);

      g.drawRoundRect(singleWidthX*temp1+1+(singleWidthX)/4-1,
                      singleHeightY*(temp2+1)-1-(singleHeightY)/8-1,
                      singleWidthX/7,singleWidthX/7,singleWidthX/14,
                      singleWidthX/14);

      g.drawRoundRect(singleWidthX*(temp1+1)-1-(singleWidthX)/4-1,
                      singleHeightY*(temp2+1)-1-(singleHeightY)/8-1,
                      singleWidthX/7,singleWidthX/7,singleWidthX/14,
                      singleWidthX/14);
    }
    else if(this.snakeDirection==Global.LEFT)
    {
      g.setColor(Global.COLOR_HEAD_MOUSE);

      g.drawRoundRect(singleWidthX*temp1+1+(singleHeightY)/8,
                      singleHeightY*(temp2)+1+(singleWidthX)/4,
                      singleWidthX/7,singleWidthX/7,singleWidthX/14,
                      singleWidthX/14);

      g.drawRoundRect(singleWidthX*temp1+1+(singleHeightY)/8,
                      singleHeightY*(temp2+1)-1-(singleWidthX)/4,
                      singleWidthX/7,singleWidthX/7,singleWidthX/14,
                      singleWidthX/14);
    }

  }

  public void drawSnakePiece(Graphics g,int temp1,int temp2,int singleWidthX,int singleHeightY,int cooPos)
  {
    g.fillRoundRect(singleWidthX* temp1 + 1,
      singleHeightY * temp2 + 1,
      singleWidthX - 2,
      singleHeightY - 2,
      cooPos,
      cooPos);
  }

  public void clearEndSnakePiece( Graphics g, int temp1, int temp2,
   int singleWidthX, int singleHeightY, int cooPos )
  {
  g.setColor( Global.COLOR_BACK );
  g.fillRoundRect( singleWidthX * temp1 + 1,
      singleHeightY * temp2 + 1,
      singleWidthX - 2,
      singleHeightY - 2,
      cooPos,
      cooPos );
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -