|
ArrayIndexOutOfBoundsException: 0 |
|
Meine Frage:
Hallo Zusammen,
in diesem Programm das ich bei einem Youtuber nach geschrieben habe kommt ein ArrayIndexOutOfBoundsException: 0 Fehler bei: setztezufaelligbeuteposition.
Ich habe keine Ahnung wie ich diesen Fehler beheben kann da es im video genauso drinsteht. Bitte um Hilfe
Hier das Programm: (ist mit Processing 3.3.6 geschrieben)
int spielfeld_groesse = 30;
int spielfeld_skalierung = 20;
int maximale_spieler_groesse = 100;
int positions_groesse;
int leeres_feld_groesse = 5;
int spieler_feld_groesse = 20;
int beute_feld_groesse = 20;
float maximale_tick_zeit = 0.1;
int[][] spielfeld;
int[][] spieler_position;
int[] beute_position;
int spieler_groesse;
String richtung;
String letzte_richtung;
float tick_zeit = 0;
void setup(){
size(600, 600);
rectMode(CENTER);
spielfeld = new int[spielfeld_groesse][spielfeld_groesse];
spieler_position = new int[maximale_spieler_groesse][positions_groesse];
beute_position = new int[positions_groesse];
resetGame();
}
void draw(){
background(0);
tick_zeit = tick_zeit + 1/frameRate;
if(tick_zeit > maximale_tick_zeit){
bewegeSpieler();
testeSpielerKollision();
setzteSpielfeldZurueck();
zeichneSpielfigurenAufSpielfeld();
tick_zeit = 0;
}
zeichneSpielfeld();
setzteSpielerEingabe();
}
void setzteSpielfeldZurueck(){
for(int i = 0; i < spielfeld_groesse; i++){
for(int j = 0; j < spielfeld_groesse; j++){
spielfeld[i][j] = 0;
}
}
}
void bewegeSpieler(){
int old_position_x = spieler_position[0][0];
int old_position_y = spieler_position[0][1];
if(richtung.equals("up")){
spieler_position[0][1] = spieler_position[0][1] = 1;
}else if(richtung.equals("left")){
}else if(richtung.equals("down")){
}else if(richtung.equals("right")){
}
}
void zeichneSpielfigurenAufSpielfeld(){
//zeichne Spieler
for(int p = 0; p < maximale_spieler_groesse; p++){
if(spieler_position[p][0] != 0 && spieler_position[p][1] != 0){
spielfeld[spieler_position[p][0]][spieler_position[p][1]] = 1;
}
}
//setzte beute
spielfeld[beute_position[0]][beute_position[1]] = 2;
}
void zeichneSpielfeld(){
for(int i = 1; i < spielfeld_groesse; i++){
for(int j = 1; j < spielfeld_groesse; j++){
if(spielfeld[i][j] == 0){
ellipse(spielfeld_skalierung * i, spielfeld_skalierung * j, leeres_feld_groesse, leeres_feld_groesse);
}
if(spielfeld[i][j] == 1){
ellipse(spielfeld_skalierung * i, spielfeld_skalierung * j, spieler_feld_groesse, spieler_feld_groesse);
}
if(spielfeld[i][j] == 2){
rect(spielfeld_skalierung * i, spielfeld_skalierung * j, beute_feld_groesse, beute_feld_groesse);
}
}
}
}
void setzteZufaelligBeutePosition(){
beute_position[0] = floor(random(1, spielfeld_groesse));
beute_position[1] = floor(random(1, spielfeld_groesse));
}
void setzteSpielerEingabe(){
if(keyPressed){
if(keyCode == UP && letzte_richtung != "down"){
richtung = "up";
}
if(keyCode == DOWN && letzte_richtung != "up"){
richtung = "down";
}
if(keyCode == LEFT && letzte_richtung != "right"){
richtung = "left";
}
if(keyCode == RIGHT && letzte_richtung != "left"){
richtung = "right";
}
}
}
void testeSpielerKollision(){
}
void resetGame(){
setzteZufaelligBeutePosition();
//setzte Spieler
spieler_position[0][0] = spielfeld_groesse / 2;
spieler_position[0][1] = spielfeld_groesse / 2;
for(int p = 1; p < maximale_spieler_groesse; p++){
spieler_position[p][0] = 0;
spieler_position[p][0] = 0;
}
spieler_groesse = 1;
richtung = "up";
letzte_richtung = "up";
}
Meine Ideen:
Hier der Youtube Link vom Video:
https://www.youtube.com/watch?v=WJtiJcsOOg0&index=10&list=PLHlPTbN2USompedW
jDKesFwg31mmmIoeP
Programmier Anfänger hat dieses Bild (verkleinerte Version) angehängt:
|
|