?? 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;
/**
* 表示東的方向
*/
final static int EAST = 0;
/**
* 表示西的方向
*/
final static int WEST = 1;
/**
* 表示南的方向
*/
final static int SOUTH = 2;
/**
* 表示北的方向
*/
final static int NORTH = 3;
/**
* 保存蛇的每個蛇身節點坐標的數組
* 二維數組第一維代表蛇的節點個數
* 二維數組第二維代表蛇的X,Y坐標
*/
int[][] snake = new int[200][2];
/**
* 代表蛇身具有的節點個數
*/
int snake_num = 7;
/**
* 保存蛇移動方向的變量
*/
int direction = WEST;
/**
* 構造函數(初始化對象的數據的)
*/
Snake_Frame(){
//初始化蛇身
init_snake();
//注冊窗口事件的處理對象
this.addWindowListener(new WindowEventExecute());
}
/**
* 初始化蛇身坐標的方法
*/
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];
}
//最后修改頭節點坐標
if(direction == EAST){
snake[0][0] = snake[0][0] + SNAKE_BODY_WIDTH;
}
if(direction == WEST){
snake[0][0] = snake[0][0] - SNAKE_BODY_WIDTH;
}
if(direction == SOUTH){
snake[0][1] = snake[0][1] + SNAKE_BODY_WIDTH;
}
if(direction == NORTH){
snake[0][1] = snake[0][1] - 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 + -