snake_frame.java

来自「一个简单的的贪吃蛇代码,算法简单」· Java 代码 · 共 143 行

JAVA
143
字号
import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JFrame;


/**
 * 贪吃蛇的界面类
 * @author HqkHxgHjj
 *
 */
public class Snake_Frame extends JFrame{
	/**
	 * 界面的宽度
	 */
	final static int SNAKE_FRAME_WIDTH = 400;
	/**
	 * 界面的高度
	 */
	final static int SNAKE_FRAME_HEIGHT = 600;
	/**
	 * 蛇身的宽度
	 */
	final static int SNAKE_WIDTH = 8;
	/**
	 * 重绘的速度
	 */
	final static int SPEED = 200;
//画整条蛇时需要声明的变量开始
	/**
	 * 保存蛇所有节点坐标二维数组
	 */
	int[][] snake = new int[200][2];
	/**
	 * 蛇身长度变量
	 */
	int snake_num = 7;
//画整条蛇时需要声明的变量结束
//	/**
//	 * 贪吃蛇的X坐标
//	 */
//	int snake_x = 200;
//	/**
//	 * 贪吃蛇的Y坐标
//	 */
//	int snake_y = 80;
	
	Snake_Frame(){
		//初始化蛇坐标
		init();
	}
	/**
	 * 初始化蛇的坐标
	 */
	public void init(){
		//初始化蛇头坐标
		snake[0][0] = 200;
		snake[0][1] = 80;
		//初始化蛇身坐标
		for(int i = 1 ; i < snake_num ; i++){
			snake[i][0] = snake[i - 1][0] + SNAKE_WIDTH;
			snake[i][1] = snake[i - 1][1];
		}
	}
	
	/**
	 * 刷新背景的函数
	 * @param g 用来刷背景的画笔
	 */
	public void flushScreen(Graphics g){
		//改画笔颜色为背景色
		g.setColor(Color.GREEN);
		//刷背景
		g.fillRect(0, 0, 
				Snake_Frame.SNAKE_FRAME_WIDTH, 
				Snake_Frame.SNAKE_FRAME_HEIGHT);
		
		//改画笔颜色为前景色
		g.setColor(Color.BLACK);
	}
	/**
	 * 画蛇的函数
	 * @param g 画蛇的画笔
	 */
	public void drawSnake(Graphics g){
		for(int i = 0 ; i < snake_num ; i++){
			g.drawRect(snake[i][0],snake[i][1],SNAKE_WIDTH,SNAKE_WIDTH);
		}
	}
	/**
	 * 移动蛇的函数
	 */
	public void move(){
		//根据前面的节点坐标改蛇身坐标
		for(int i = (snake_num - 1) ; i > 0 ; i--){
			snake[i][0] = snake[i - 1][0];
			snake[i][1] = snake[i - 1][1];
		}
	   	//先改蛇头坐标
		snake[0][0] -= SNAKE_WIDTH;
	}
	/**
	 * 休息的代码
	 */
	public void speed(){
		try {
			Thread.sleep(SPEED);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 界面类画完自己之后调用的方法
	 * @param g 画笔对象
	 */
	public void paint(Graphics g) {
		//刷新背景开始
		flushScreen(g);
		//刷新背景结束
			
		//画蛇
		drawSnake(g);
		
		//移动蛇
		move();
		
		//休息一下
		speed();
		
		//重画
		this.repaint();
	}

	public static void main(String[] args) {
		Snake_Frame f = new Snake_Frame();
		f.setSize(Snake_Frame.SNAKE_FRAME_WIDTH, 
				Snake_Frame.SNAKE_FRAME_HEIGHT);
		f.setVisible(true); 
	}

}

⌨️ 快捷键说明

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