如何为蛇游戏添加设置(处理)?

时间:2016-12-07 12:37:15

标签: processing

我试图为处理中制作的蛇游戏添加设置。我希望有一些简单,正常和坚硬的东西或类似的东西,并改变网格的速度和大小。如果有人coudl解释如何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 个答案:

答案 0 :(得分:1)

您需要将问题分解为更小的步骤:

第一步:您可以将难度存储在变量中吗?这可能是跟踪级别的int,也可以是在简单和困难之间切换的boolean。现在只需硬编码该变量的值。

第二步:您能编写代码,以便根据难易程度更改行为吗?使用您在第一步中创建的变量。您可以使用if语句来检查难度级别,也可以使用速度随时间增加。这完全取决于你。从硬编码值开始。更改值以查看不同的行为。

第三步:您能以编程方式更改该值吗?也许这需要一个用户选择难度的设置屏幕,或者随着时间的推移可能会变得更加困难。但是,在开始此步骤之前,您必须执行前两个步骤。

如果您遇到某个特定步骤,请发布MCVE,我们将从那里开始。