I am trying to code a snake game. This isn’t the finished version, but I am already cluless.
When I try to run it this error appears:
ArrayIndexOutOfBoundsException: -1
Could not run the sketch (Target VM failed to initialize).
For more information, read revisions.txt and Help ? Troubleshooting.
and it marks the like I've written bold.
Help would be appreciated. :heart:
int spielfeldgroesse = 30;
int spielfeldskalierung = 20;
int maximaleSpielerGroesse = 100;
int spielerGroesse;
int positionsGroesse =2;
int leeresFeldGroesse = 5;
int spielerFeldGroesse = 20;
int beuteFeldGroesse = 20;
float maximaleTickzeit = 0.1;
float tickzeit = 0;
int[][] spielfeld;
int[][] spielerPosition;
int[] beutePosition;
String richtung;
String letzteRichtung;
void setup(){
size(600, 600);
rectMode(CENTER);
spielfeld = new int[spielfeldgroesse ][spielfeldgroesse ];
spielerPosition = new int[maximaleSpielerGroesse][positionsGroesse];
beutePosition = new int[positionsGroesse];
resetGame();
}
void draw(){
background(0);
tickzeit = tickzeit + 1/frameRate;
if(tickzeit > maximaleTickzeit) {
bewegeSpieler();
testeSpielerKolision();
setzteSpielfeldZurueck();
zeichneSpielfigurenAufSpielfeld();
tickzeit = 0;
}
zeichneSpielfeld();
setzteSpielerEingabe();
}
void setzteSpielfeldZurueck(){
for(int i = 0; i < spielfeldgroesse; i++){
for(int j = 0; j < spielfeldgroesse; j++){
spielfeld[i][j] = 0;
}
}
}
void resetGame(){
setzteZufaelligBeutePosition();
//setzte Spieler
spielerPosition[0][0] = spielfeldgroesse / 2;
spielerPosition[0][1] = spielfeldgroesse / 2;
for(int p = 1; p < maximaleSpielerGroesse; p++) {
spielerPosition[p][0] = 0;
spielerPosition[p][0] = 0;
}
spielerGroesse = 1;
richtung = "up";
letzteRichtung = "up";
}
void bewegeSpieler(){
int oldPositionx = spielerPosition[0][0];
int oldPositiony = spielerPosition[0][1];
if(richtung.equals("up")){
spielerPosition[0][1] = spielerPosition[0][1] - 1;
letzteRichtung = "up";
}else if(richtung.equals("left")){
spielerPosition[0][0] = spielerPosition[0][0] - 1;
letzteRichtung = "left";
}else if(richtung.equals("down")){
spielerPosition[0][1] = spielerPosition[0][1] - 1;
letzteRichtung = "down";
}else if(richtung.equals("right")){
spielerPosition[0][0] = spielerPosition[0][0] - 1;
letzteRichtung = "right";
}
//schiebe alle anderen Punte nach
for(int p = 1; p < spielerGroesse; p++) {
int tempx = spielerPosition[p][0];
int tempy = spielerPosition[p][1];
spielerPosition[p][0] = oldPositionx;
spielerPosition[p][1] = oldPositiony;
oldPositionx = tempx;
oldPositiony = tempy;
}
}
void zeichneSpielfigurenAufSpielfeld(){
//zeichne Spieler
for(int p = 0; p < maximaleSpielerGroesse; p++){
if(spielerPosition[p][0] != 0 && spielerPosition[p][1] != 0){
**spielfeld[spielerPosition[p][0]][spielerPosition[p][1]] = 1;**
}
}
// setzte Beute
spielfeld[beutePosition[0]][beutePosition[1]] = 2;
}
void zeichneSpielfeld(){
for(int i = 1; i < spielfeldgroesse; i++){
for(int j = 1; j < spielfeldgroesse; j++){
if(spielfeld[i][j] == 0) {
ellipse(spielfeldskalierung * i, spielfeldskalierung * j, leeresFeldGroesse, leeresFeldGroesse);
}
if(spielfeld[i][j] == 1) {
ellipse(spielfeldskalierung * i, spielfeldskalierung * j, spielerFeldGroesse, spielerFeldGroesse);
}
if(spielfeld[i][j] == 2) {
rect(spielfeldskalierung * i, spielfeldskalierung * j, beuteFeldGroesse, beuteFeldGroesse);
}
}
}
}
void setzteZufaelligBeutePosition() {
beutePosition[0] = floor(random(1, spielfeldgroesse));
beutePosition[1] = floor(random(1, spielfeldgroesse));
}
void setzteSpielerEingabe() {
if(keyPressed){
if(keyCode == UP && letzteRichtung != "down") {
richtung = "up";
}
if(keyCode == LEFT && letzteRichtung != "right") {
richtung = "left";
}
if(keyCode == DOWN && letzteRichtung != "up") {
richtung = "down";
}
if(keyCode == RIGHT && letzteRichtung != "left") {
richtung = "right";
}
}
}
void testeSpielerKolision() {
}