ArrayList<Integer> x = new ArrayList<Integer>();
ArrayList<Integer> y = new ArrayList<Integer>();
int gridSize = 20;
int h = height;
int w = height;
int xdir = 0;
int ydir = 0;
boolean eaten = false;
int applex;
int appley;
void setup() {
size(400, 400);
frameRate(8);
x.add(width - gridSize*12);
y.add(height - gridSize*12);
x.add(width - gridSize*13);
y.add(height - gridSize*12);
appley = int(random(0, w/gridSize));
applex = int(random(0, w/gridSize));
}
void draw() {
background(0);
grid();
testMovement();
fill(255, 0, 0);
rect(applex*gridSize, appley*gridSize, gridSize, gridSize);
for (int i = 0; i < x.size(); i++) {
int xpos = x.get(i);
int ypos = y.get(i);
int lastxpos = x.get(0);
int lastypos = y.get(0);
fill(0, 255, 0);
rect(x.get(i), y.get(i), gridSize, gridSize);
x.add(xpos += xdir*gridSize);
y.add(ypos += ydir*gridSize);
x.remove(0);
y.remove(0);
//this is where im struggling
if (xpos == applex*gridSize && ypos == appley*gridSize) {
x.add(lastxpos += xdir);
y.add(lastypos += ydir);
}
}
}
void grid() {
stroke(150);
for (int j = 0; j < width; j++) {
line(j*gridSize, 0, j*gridSize, height);
}
for (int k = 0; k < height; k++) {
line(0, k*gridSize, width, k*gridSize);
}
}
void testMovement() {
if (keyPressed) {
if (keyCode == UP) {
xdir = 0; ydir = -1;
}
if (keyCode == DOWN) {
xdir = 0; ydir = 1;
}
if (keyCode == LEFT) {
xdir = -1; ydir = 0;
}
if (keyCode == RIGHT) {
xdir = 1; ydir = 0;
}
}
}```
Hello and welcome to the forum!
Great to have you here!
Can you please state a question about your current code?
Thank you!
Chrisir
Hello,
You posted code and a subject but have not asked a specific question.
Please read and update your post:
https://discourse.processing.org/faq
:)
1 Like
Hi Chrisir,
I have wanted to make snake since I started processing.
As soon as i found out what an arraylist was, i tried to make it.
However, i can’t figure out how to make the snake add on properly.
As you can see, it adds on, but in the wrong spot and goes at a random speed.
I think it is around here that i am struggling:
Hopefully you can help,
Thanks