當前位置:成語大全網 - 漢語詞典 - 貪吃蛇遊戲數據字典怎麽用?

貪吃蛇遊戲數據字典怎麽用?

J2ME蛇源代碼-大約200行,包括詳細的評論包蛇;導入javax . micro edition . midlet . *;

導入javax . micro edition . lcdui . *;公共類SnakeMIDlet擴展MIDlet {

snake canvas displayable = new snake canvas();

公共SnakeMIDlet() {

Display.getDisplay(this)。setCurrent(可顯示);

} public void startapp(){ } public void pause app(){ } public void destroy app(Boolean undefined){ }//文件名:SnakeCanvas.javapackage snake導入Java . util . *;

導入javax . micro edition . lcdui . *;/**

*貪吃蛇遊戲

*/

公共類SnakeCanvas擴展Canvas實現Runnable{

/* *存儲snake節點的坐標,其中第二個下標是0,代表X坐標,第二個下標是1,代表Y坐標*/

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

/* *已經使用的節點數*/

int snakeNum

/* *蛇的運動方向,0代表向上,1代表向下,2代表向左,3代表向右*/

int方向;

/*移動方向*/

/* *向上*/

private final int DIRECTION _ UP = 0;

/* *向下*/

private final int DIRECTION _ DOWN = 1;

/* *左側*/

private final int DIRECTION _ LEFT = 2;

/* *右*/

private final int DIRECTION _ RIGHT = 3;/* *遊戲區寬度*/

int寬度;

/* *遊戲區的高度*/

int高度;/* *蛇體單位寬度*/

私有最終字節snake width = 4;/* *是否掛起,true表示掛起*/

boolean isPaused = false

/* *是否正在運行,true表示正在運行*/

布爾isRun = true/* *時間間隔*/

私有final int SLEEP _ TIME = 300

/* *食物的X坐標*/

int foodX

/* *食物的Y坐標*/

int foodY

/* *食物的閃爍控制*/

布爾b =真;

/* *隨機對象*/

Random Random = new Random();

公共SnakeCanvas() {

//初始化

init();

width = this . getwidth();

height = this . get height();

//啟動線程

新帖(本)。start();

}/**

*初始化開始數據

*/

私有void init(){

//初始化節點數

snake num = 7;

//初始化節點數據

for(int I = 0;我& ltsnakeNumi++){

snake[I][0]= 100-snake width * I;

snake[I][1]= 40;

}

//初始化移動方向

方向=方向_右;

//初始化食物坐標

foodX = 100;

foodY = 100;

}受保護的空白油漆(圖形g) {

//清除屏幕

g . set color(0x ffffff);

g.fillRect(0,0,width,height);

g . set color(0);//繪制蛇的身體

for(int I = 0;我& ltsnakeNumi++){

g.fillRect(snake[i][0],snake[i][1],SNAKEWIDTH,snake width);

}

//畫食物

如果(b){

g.fillRect(foodX,foodY,SNAKEWIDTH,snake width);

}

}私有無效移動(int方向){

//蛇會動

for(int I = snake num-1;我& gt0;我- ){

蛇[i][0] =蛇[I-1][0];

蛇[i][1] =蛇[I-1][1];

}//第壹個單元格移動

開關(方向){

案例方向_向上:

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

打破;

案例方向_向下:

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

打破;

案例方向_左側:

snake[0][0]= snake[0][0]-snake width;

打破;

案例方向_右:

snake[0][0]= snake[0][0]+snake width;

打破;

}

}

/**

*吃食物,自己成長。

*/

私有void eatFood(){

//確定蛇頭是否與食物重疊。

if(snake[0][0]= = foodX & amp;& ampsnake[0][1] == foodY){

snake num++;

generate food();

}

}

/**

*生產食物

*註意:食物的坐標必須位於屏幕內,不能與蛇身重合。

*/

私有void generateFood(){

while(true){

foodX = math . ABS(random . nextint()%(width-snake width+1))

/snake width * snake width;

foodY = math . ABS(random . nextint()%(height-snake width+1))

/snake width * snake width;

布爾b =真;

for(int I = 0;我& ltsnakeNumi++){

if(foodX = = snake[I][0]& amp;& ampsnake[i][1] == foodY){

b =假;

打破;

}

}

如果(b){

打破;

}

}

}

/**

*判斷遊戲是否結束。

*結束條件:

* 1,蛇頭越界了。

* 2.黑魚摸自己。

*/

私有布爾值isGameOver(){

//邊界辨別

if(snake[0][0]& lt;0 | | snake[0][0]& gt;(width - SNAKEWIDTH) ||

snake[0][1]& lt;0 | | snake[0][1]& gt;(高度-蛇寬)){

返回true

}

//碰到自己

for(int I = 4;我& ltsnakeNumi++){

if(snake[0][0] == snake[i][0]

& amp& ampsnake[0][1]= = snake[I][1]){

返回true

}

}

返回false

}/**

*事件處理

*/

public void key pressed(int key code){

int action = this . getgameaction(key code);

//改變方向

開關(動作){

案例向上:

如果(方向!=方向_向下){

direction = DIRECTION _ UP

}

打破;

案例向下:

如果(方向!= DIRECTION_UP){

方向=方向_向下;

}

打破;

案例左側:

如果(方向!=方向_右){

方向=方向_左;

}

打破;

案例權利:

如果(方向!=方向_左){

方向=方向_右;

}

打破;

案例火災:

//暫停並繼續

isPaused =!isPaused

打破;

}

}/**

*線程方法

*使用精確延遲。

*/

公共無效運行(){

嘗試{

while (isRun) {

//開始時間

long start = system . current time millis();

如果(!isPaused){

//吃食物

eat food();

//移動

移動(方向);

//結束遊戲

if(isGameOver()){

打破;

}

//控制閃爍

b =!b;

}

//重繪

repaint();

long end = system . current time millis();

//延遲

if(end-start & lt;SLEEP_TIME){

thread . SLEEP(SLEEP _ TIME-(end-start));

}

}

}catch(異常e){}

}

}