Skip to Main Content

New to Java

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException

843789Feb 3 2010 — edited Feb 3 2010
I have this program that acts like a battle from Lord Of the Rings. I set the size on the board then Randomize Elves,Orcs, and moutains. When the user selects 1 to start the battle it crashes. All the Elves and Orcs are set to move up,down,left,right 1 space at a time. If and Elv or Orc hits a mountain they dont move or if they hit a teammate they stay in there current position. If an Orc and Elve move onto themselves then a battle starts. the battle depends on a random strength set from 0-10 if the strength is the same it is a draw.

One problem is that when an Elve or an Orc move they Duplicate (Example- Move left
E (then move left)
E E (It dident remove itself)
....E (It should move and remove itself from start position)

public class Battlefield {

private int numElves;
private int numOrcs;
private int row; 
private int col; 
private Square battlefield[][];

public Battlefield(){

}
public Battlefield (int row, int col){
this.row = row;
this.col = col;
battlefield = new Square [row][col];
for (int i = 0; i < row; i++)
for (int j = 0; j < col; j++)
battlefield[i][j] = new Square();

}




public int getRow(){return row;

}

public int getCol(){return col;

}

public Square getSquare(int r, int c){//return Square(0, 0);

return battlefield[r][c];

}

public int getNumOrcs(){return numOrcs;

}

public int getNumElves(){return numElves;

}


public String toString(){
return "Row:"+row+ "Col:"+col;+
+}+

+public void setRow(int row){+
+this.row = row;+
+}+

+public void setCol(int col){+
+this.col = col;+
+}+

+public void setSquare(int row,int col, Square square){+
+battlefield[row][col] = new Square (square);+

+}+
+public void display ( ) {+
+// display top row of ---+
+for (int i = 0; i < col; i++)
System.out.print (" -");
System.out.println();
for (int i = 0; i < row; i++) {
System.out.print("|");

for (int j = 0; j < col; j++) 
System.out.print(battlefield[i][j].toString()) ;
System.out.println("|");

}
System.out.println();
for (int i = 0; i < col+2; i++)
System.out.print (" -");

}


public void moveActor(int direction,int row,int col){
/ *int newRow =row +1;+*
*+int newCol =col +1;+*
*+*if (direction == 0){*+*
*+*newRow = row +1;*+*
*+newCol = col +0;}+*
*+*if (direction == 1){*+*
*+*newRow = row - 1;*+*
*+*newCol = col +0;}*+*
*+if (direction == 2){+*
*+newRow = row +0;+*
*+*newCol = col - 1;}*+*
*+*if (direction == 3){*+*
*+*newRow = row +0;*+*
*+newCol = col +1;}/+
*+if (direction == 0){+*
*+newRow = row - 1;+*
*+newCol = col;}+*
*+if (direction == 1){+*
*+newRow = row +1;+*
+newCol = col;}+
+if (direction == 2){+
+newRow = row+ 0;
newCol = col +1;}+
+if (direction == 3){+
+newRow = row+ 0;
newCol = col - 1;}

if (battlefield[row][col].getTerrain()=='m')
return;

if (battlefield[row][col].getActor().getType()==' ')
return;

// if ((battlefield[newRow][newCol].getActor().getType()=='e')
// battlefield[row][col].getActor().getType()== " ")
// return;

if (direction ==0&&row==0)return;
else if (direction ==1&&row==this.row-1)return;
else if (direction ==2&&col==0)return;
else if (direction ==3&&col==this.col-1)return;
else {;}
//else if (battlefield[newRow][newCol].getTerrain() == 'm') return; 

if (battlefield[row][col].getActor().getType()==(battlefield[newRow][newCol].getActor().getType()))
return;



if (battlefield[row][col].getActor().getStrength()>battlefield[newRow][newCol].getActor().getStrength())
if (battlefield[newRow][newCol].getActor().getType()==' '){
battlefield[newRow][newCol].setActor(battlefield[row][col].getActor());
}
else {
if (battlefield[row][col].getActor().getStrength()>battlefield[newRow][newCol].getActor().getStrength()){
battlefield[newRow][newCol].setActor(battlefield[row][col].getActor());
battlefield[row][col].getActor().setStrength(0);
battlefield[row][col].getActor().setType(' ');

}
}
}
}
This is my Main class
*public *class *LordOfTheRings {*



*public* *static* *void* main (String[] argv) { 








Scanner in = *new* Scanner (System.+in+); 





Random generator = *new* Random(); 


Random gemerator1 = *new* Random(); 








*int* row; 


*int* col; 





*do* { 


System.+out+.print( "\nNumber of rows 20 max: "); 


row = in.nextInt(); 


} *while* (row < 0 || row > 20); 





*do* { 


System.+out+.print( "\nNumber of cols 10 max: "); 


col = in.nextInt(); 


} *while* (col < 0 || col > 10); 





Battlefield game = *new* Battlefield(row,col); 





*for* (*int* i =0; i<row; i++){ 


*for* (*int* j =0; j<col; j++){ 


*int* Square = generator.nextInt(10); 


*switch*(Square){ 


*case* 0: 


game.setSquare(i, j, *new* Square ('m', *new* Actor(' ',0))); 


*break*; 


*case* 1: 


game.setSquare(i, j, *new* Square('n', *new* Actor ('e', generator.nextInt(8)+1)));+ 


+*break*;+ 


+*case *2:* +


+*+game.setSquare(i, j, *new *Square('n', *new *Actor ('o', generator.nextInt(8)+1)));+* +


+*+*break;+*+ 


+*default*:+ 


+game.setSquare(i, j, *new *Square('n', *new *Actor (' ', 0)));* +


+*+*break;+*+ 


+}+ 


+}+ 


+}+ 


+game.display();+ 


+System.+out+.println(); 





*int* choice =0;{ 


System.+out+.println("Enter 0 to quit and 1 to continue battle"); 


choice = in.nextInt(); 


*while* (choice !=0) { 


*for* (*int* r=0; r<row; r++){ 


*for* (*int* c=0; c<col; c++){ 


*if* (game.getSquare(r, c).getActor().getType() != ' ') 


game.moveActor(generator.nextInt(4),r,c); 


} 


} 


game.display();
 








} 


} 


} 


}

Edited by: Ray014 on Feb 3, 2010 8:26 PM                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Mar 3 2010
Added on Feb 3 2010
3 comments
268 views