📄 snake_frame.java
字号:
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
class Snake_Frame extends JFrame{
/**
* 贪吃蛇界面宽度的常量
*/
final static int SNAKE_WIDTH = 600;
/**
* 贪吃蛇界面高度的常量
*/
final static int SNAKE_HEIGHT = 800;
/**
* 贪吃蛇蛇身宽度
*/
final static int SNAKE_BODY_WIDTH = 8;
/**
* 保存蛇的每个蛇身节点坐标的数组
* 二维数组第一维代表蛇的节点个数
* 二维数组第二维代表蛇的X,Y坐标
*/
int[][] snake = new int[200][2];
/**
* 代表蛇身具有的节点个数
*/
int snake_num = 7;
/**
* 构造函数(初始化对象的数据的)
*/
Snake_Frame(){
//初始化蛇身
init_snake();
}
/**
* 初始化蛇身坐标的方法
*/
void init_snake(){
//初始化头节点
snake[0][0] = 200;//头节点X坐标初始化为200
snake[0][1] = 80;//头节点Y坐标初始化为80
//根据头节点坐标计算其它的坐标
for(int i = 1 ; i < snake_num ; i++){
snake[i][0] = snake[i-1][0] + SNAKE_BODY_WIDTH;
snake[i][1] = snake[i-1][1];
}
}
public void paint(Graphics g) {
//把画笔改成白色
g.setColor(Color.WHITE);
//把背景刷成白色
g.fillRect(0,0,SNAKE_WIDTH,SNAKE_HEIGHT);
//把画笔改成原来的前景
g.setColor(Color.BLACK);
//移动蛇
move();
//画蛇身
drawSnake(g);
//重画
this.repaint();
//休息一下
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
/**
* 修改蛇身节点坐标的方法
*/
void move(){
//后面的节点改为前面的节点的坐标
for(int i = (snake_num - 1) ; i > 0 ; i = i - 1){
snake[i][0] = snake[i - 1][0];
snake[i][1] = snake[i - 1][1];
}
//最后修改头节点坐标
snake[0][0] = snake[0][0] - SNAKE_BODY_WIDTH;
}
/**
* 画蛇身的方法
* @param g 画笔
*/
void drawSnake(Graphics g){
for(int i = 0 ; i < snake_num ; i++){
g.drawRect(snake[i][0], snake[i][1],
SNAKE_BODY_WIDTH, SNAKE_BODY_WIDTH);
}
}
public static void main(String[] args){
//创建一个窗体对象(窗体类,SUN公司已经定义好)
Snake_Frame f = new Snake_Frame();
//调用创建的窗体对象的设置窗体大小的方法
f.setSize(SNAKE_WIDTH,SNAKE_HEIGHT);
//调用创建的窗体对象的设置窗体显示还是隐藏的方法
f.setVisible(true);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -