2016-12-07 60 views
0

我試圖添加設置到在處理中製作的蛇遊戲。我想擁有簡單,普通和堅硬的東西,或者改變網格的速度和大小。如果有人告訴我如何id非常感謝它!如何將設置添加到蛇遊戲(處理)?

ArrayList<Integer> x = new ArrayList<Integer>(), y = new ArrayList<Integer>(); 
int w = 30, h = 30, bs = 20, dir = 2, applex = 12, appley = 10; 
int[] dx = {0,0,1,-1}, dy = {1,-1,0,0}; 
boolean gameover = false; 

void setup() { 
size(600,600); 
x.add(5); 
y.add(5); 
} 

void draw() { 
background(255); 
for(int i = 0 ; i < w; i++) line(i*bs, 0, i*bs, height); //Vertical line for grid 
for(int i = 0 ; i < h; i++) line(0, i*bs, width, i*bs); //Horizontal line for grid 
for(int i = 0 ; i < x.size(); i++) { 
fill (0,255,0); 
rect(x.get(i)*bs, y.get(i)*bs, bs, bs); 
} 
if(!gameover) { 
fill(255,0,0); 
rect(applex*bs, appley*bs, bs, bs); 
if(frameCount%5==0) { 
x.add(0,x.get(0) + dx[dir]); 
y.add(0,y.get(0) + dy[dir]); 
if(x.get(0) < 0 || y.get(0) < 0 || x.get(0) >= w || y.get(0) >= h) gameover = true; 
for(int i = 1; i < x.size(); i++) if(x.get(0) == x.get(i) && y.get(0) == y.get(i)) gameover = true; 
if(x.get(0)==applex && y.get(0)==appley) { 
applex = (int)random(0,w); 
appley = (int)random(0,h); 
}else { 
x.remove(x.size()-1); 
y.remove(y.size()-1); 
} 
} 
} else { 
fill(0); 
textSize(30); 
text("GAME OVER. Press Space to Play Again", 20, height/2); 
if(keyPressed && key == ' ') { 
x.clear(); //Clear array list 
y.clear(); //Clear array list 
x.add(5); 
y.add(5); 
gameover = false; 
} 
} 

if (keyPressed == true) { 
int newdir = key=='s' ? 0 : (key=='w' ? 1 : (key=='d' ? 2 : (key=='a' ? 3 : -1))); 
if(newdir != -1 && (x.size() <= 1 || !(x.get(1) ==x.get(0) + dx[newdir] && y.get (1) == y.get(0) + dy[newdir]))) dir = newdir; 

} 
} 

回答

1

您需要向下打破你的問題分成更小的步驟:

步驟一:你能存儲在一個變量的困難?這可能是一個int,跟蹤一個級別,或者一個boolean可以在簡單和困難之間切換。現在只需對該變量的值進行硬編碼。

第二步:您可以編寫代碼,以便根據難度級別更改行爲嗎?使用您在第一步中創建的變量。您可以使用if語句來檢查難度級別,或者速度可能會隨着時間的推移而增加。這完全取決於你。從硬編碼值開始。更改該值以查看不同的行爲。

第三步:您可以通過編程方式更改該值嗎?也許這需要用戶選擇難度的設置屏幕,或者隨着時間的推移可能會變得更加困難。但是在開始這一步之前,您必須執行前兩個步驟。

如果您在特定步驟中遇到問題,請發帖MCVE,我們將從此處開始。