Etat du code
Snake en cours...

Sketch faisant apparaître un carré bleu et un cercle rouge de manière aléatoire:
int [] carreX=new int [1];
int [] carreY=new int [1];
int [] cercleX=new int [1];
int [] cercleY=new int [1];
void setup () {
size(400,400);
for (int i=0; i<1; i=i+1) {
carreX [i]=(int) random (10,390);
carreY [i]=(int) random (10,390);
}
for (int i=0; i<1; i=i+1) {
cercleX [i]=(int) random (10,390);
cercleY [i]=(int) random (10,390);
} }
void draw () {
background (#70DEAD);
for (int i=0;i<1;i=i+1) {
rect(carreX[i],carreY[i],20,20);}
noStroke();
fill(#FA0A52);
for (int i=0;i<1;i=i+1){
ellipse(cercleX[i],cercleY[i],20,20;}
noStroke();
fill(#0A78FA);
}
Sketch faisant apparaître le quadrillage:
void setup () {
size (400,400);
}
void draw () {
background (#70DEAD);
for (int i=0; i<400; i=i+20) {
line(0, i,width,i);}
for (int z=0; z<400; z=z+20) {
line(z,0,z,height);}
}
Sketck du déplacement du carré dans le quadrillage et apparition du cercle :
int x=0;
int y=0;
int a=20;
int [] cercleX=new int [1];
int [] cercleY=new int [1];
void setup () {
size (400,400);
for (int i=0; i<1; i=i+1) {
cercleX [i]=(int) random (20,390);
cercleY [i]=(int) random (20,390);
}
}
void draw (){
background (#70DEAD);
rect(x,y,20,20);
fill(#FA0A52);
for (int i=0;i<1;i=i+1){
ellipse(cercleX[i],cercleY[i],20,20);}
fill(#0A78FA);
for (int i=0; i<400; i=i+20) {
line(0, i,width,i);}
for (int z=0; z<400; z=z+20) {
line(z,0,z,height);}
}
void keyPressed(){
if(key==CODED)
{
if (keyCode==RIGHT){x=x+a;}
if (keyCode==LEFT){x=x-a;}
if (keyCode==UP){y=y-a;}
if (keyCode==DOWN){y=y+a;}
}
}
Sketch du tableau bidimentionnelle :
int l=20;
int c=20;
int [][] cases;
void setup () {
size (400,400);
cases = new int[l][c];
}
void draw () {
background (#70DEAD);
for (int i=0; i<400; i=i+20) {
line (0, i, width, i);}
for (int z=0; z<400; z=z+20) {
line (z, 0, z, height);}
}
Sketch faisant apparaître le carré dans une case du quadrillage:
int cercle = int(random (0,19));
int cerclex = 0;
int cercley = 0;
void setup () {
size (400,400); }
void draw (){
background (#70DEAD);
cerclex=20*cercle+10;
cercley=20*cercle+10; }
Lignes pour faire apparaître le message "GAME OVER" :
if (carrex>400) { textSize(40); text("GAMEOVER",90,200);
}
if (carrex<0) { textSize(40); text("GAMEOVER",90,200);
}
if (carrey>400) { textSize(40); text("GAMEOVER",90,200);
}
if (carrey<0) { textSize(40); text("GAMEOVER",90,200);
}
Lignes de code pour faire apparaître le cercle à une autre position aléatoire lorsque le carré le touche :
if (carrex==cerclex-10 && carrey==cercley-10) {cercle = int(random (0,19)); }
Code final:
int carrey=0;
int cercle = int(random (0, 19));
int cerclex = 0;
int cercley = 0;
int a=20;
int compteur=0;
int score=0;
int l=20;
int c=20;
int [][] cases;
void setup () {
size (400, 400);
frameRate(10);
cases = new int[l][c];
remplir_tableau();
}
void remplir_tableau() {
for (int i=0; i<20; i=i+1) {
for (int j=0; j<20; j=j+1) {
cases[i][j]=0;
}
}
}
void draw () {
compteur++;
if(compteur==1){
background (#70DEAD);
positionActuelle();
dessinSnake();
anciennesPositions();
cerclex=20*cercle+10;
cercley=20*cercle+10;
for (int i=0; i<420; i=i+20) {
line(0, i, 400, i);
}
for (int z=0; z<420; z=z+20) {
line(z, 0, z, 400);
}
fill(#FA0A52);
ellipse(cerclex, cercley, 20, 20);
if (keyCode==LEFT) {
carrex=carrex-a;
compteur=0;
}
if (keyCode==RIGHT) {
carrex=carrex+a;
compteur=0;
}
if (keyCode==UP) {
carrey=carrey-a;
compteur=0;
}
if (keyCode==DOWN) {
carrey=carrey+a;
compteur=0;
}
if (carrex==cerclex-10 && carrey==cercley-10) {
cercle = int(random (0, 19));
score=score+1;
}
fill(0);
if (carrex>390) {
textSize(40);
text("GAME OVER", 90, 190);
text("Score:", 120, 250);
text(score, 250, 250);
noLoop();
}
if (carrex<0) {
textSize(40);
text("GAME OVER", 90, 190);
text("Score:", 120, 250);
text(score, 250, 250);
noLoop();
}
if (carrey>390) {
textSize(40);
text("GAME OVER", 90, 190);
text("Score:", 120, 250);
text(score, 250, 250);
noLoop();
}
if (carrey<0) {
textSize(40);
text("GAME OVER", 90, 190);
text("Score:", 120, 250);
text(score, 250, 250);
noLoop();
}
}
if(compteur==1) {compteur=0;}
}
void anciennesPositions() {
for (int i=0; i<20; i=i+1) {
for (int j=0; j<20; j=j+1) {
if(cases[i][j]!=0){
cases[i][j]=cases[i][j]-1;print(cases[i][j]);
}
}
}
println();
}
void positionActuelle(){
if (carrex/20<20) {
if (carrey/20<20) {
if (carrex/20>=0) {
if (carrey/20>=0) {
cases[carrex/20][carrey/20]=1000;
}
}
}
}
}
void dessinSnake(){
fill(#0A78FA);
for (int i=0; i<20; i=i+1) {
for (int j=0; j<20; j=j+1) {
if(cases[i][j]>=1000-score){
rect(20*i, 20*j, 20, 20);
}
}
}
}
Code pour Iphone 5 :
int carrex=0;
int carrey=0;
int cercle=int(random(0,15));
int cerclex = 0;
int cercley = 0;
int a=20;
int compteur=0;
int score=0;
int l=16;
int c=19;
int [][] cases;
void setup () {
size (screen.width, screen.height);
frameRate(9);
cases = new int[l][c];
remplir_tableau();
}
void remplir_tableau() {
for (int i=0; i<16; i=i+1) {
for (int j=0; j<19; j=j+1) {
cases[i][j]=0;
}
}
}
void draw () {
compteur++;
if(compteur==1){
background (#70DEAD);
positionActuelle();
dessinSnake();
anciennesPositions();
fill(255);
rect(0,380,80,80);
rect(80,380,80,80);
rect(160,380,80,80);
rect(240,380,80,80);
fill(0);
textSize(10);
text("DROITE",20,423);
text("GAUCHE",100,423);
text("HAUT",185,423);
text("BAS",270,423);
cerclex=20*cercle+10;
cercley=20*cercle+10;
for (int i=0; i<400; i=i+20) {
line(0, i, 320, i);
}
for (int z=0; z<400; z=z+20) {
line(z, 0, z, 380);
}
fill(#FA0A52);
ellipse(cerclex, cercley, 20, 20);
if (mousePressed && mouseX<320 && mouseX<80){
carrex=carrex+a; compteur=0;}
if (mousePressed && mouseX<320 && mouseX<160 && mouseX>80){
carrex=carrex-a; compteur=0;}
if (mousePressed && mouseX<320 && mouseX<240 && mouseX>160){
carrey=carrey-a; compteur=0;}
if (mousePressed && mouseX<320 && mouseX<320 && mouseX>240) {
carrey=carrey+a; compteur=0;}
if (carrex==cerclex-10 && carrey==cercley-10) {
cercle = int(random (0, 15));
score=score+1;
}
fill(0);
if (carrex>300){ textSize(40); text("GAME OVER",40,200);
text("Score :",80,260);
text(score,220,260);
noLoop();
}
if (carrex<0) { textSize(40); text("GAME OVER",40,200);
text("Score :",80,260);
text(score,220,260);
noLoop();
}
if (carrey>360) { textSize(40); text("GAME OVER",40,200);
text("Score :",80,260);
text(score,220,260);
noLoop();
}
if (carrey<0) { textSize(40); text("GAME OVER",40,200);
text("Score :",80,260);
text(score,220,260);
noLoop();
}
}
if(compteur==1) {
compteur=0;}
}
void anciennesPositions() {
for (int i=0; i<16; i=i+1) {
for (int j=0; j<19; j=j+1) {
if(cases[i][j]!=0){
cases[i][j]=cases[i][j]-1;print(cases[i][j]);
}
}
}
}
void positionActuelle(){
if (carrex/20<16) {
if (carrey/20<19) {
if (carrex/20>=0) {
if (carrey/20>=0) {
cases[carrex/20][carrey/20]=1000;
}
}
}
}
}
void dessinSnake(){
fill(#0A78FA);
for (int i=0; i<16; i=i+1) {
for (int j=0; j<19; j=j+1) {
if(cases[i][j]>=1000-score){
rect(20*i, 20*j, 20, 20);
}
}
}
}