How to elegantly overwrite a character in a 2d Java array when the player moves to it? -
i coding game in ‘p’ moves across 10x10 board picking ‘doughnuts’ , avoiding ‘walls’. far, have gotten right cannot player ‘p’ overwrite character '@' when player moves latter's position, in other words ‘eat’ doughnut.
i have tried implement in inputmanager method, works problems ‘eats’ doughnuts in order in have been declared, opposed positon of ‘p’.
can please kindly me aspect?
import java.util.random; import java.util.scanner; public class game { //initial player , home positions static int playercolumn = 0; static int playerrow = 9; static int homecolumn = 9; static int homerow = 0; //variable declaration player , home static char player = 'p'; static char home = 'h'; //doughnut coordinates //doughnut 1 static int d1c = 5; static int d1r = 6; //doughnut 2 static int d2c = 7; static int d2r = 1; //doughnut 3 static int d3c = 1; static int d3r = 4; //doughnut 4 static int d4c = 2; static int d4r = 8; //doughnut 5 static int d5c = 4; static int d5r = 5; //variable declaration doughnuts static char d1 = '@'; static char d2 = '@'; static char d3 = '@'; static char d4 = '@'; static char d5 = '@'; //board dimension variables static final int column = 10; static final int row = 10; //board setup static char[][] tenbyten = new char[column][row]; //counters static int movecounter; static int doughnutcounter; public static void main(string[] args) { while (true) { boardmanager(); inputmanager(); } } public static void boardmanager() { //iterate through r (int r = 0; r < tenbyten.length; r++) { //iterate through c (int c = 0; c < tenbyten[r].length; c++) { tenbyten[c][r] = '.'; tenbyten[3][2] = 'x'; tenbyten[3][3] = 'x'; tenbyten[3][4] = 'x'; tenbyten[3][5] = 'x'; tenbyten[3][6] = 'x'; tenbyten[7][2] = 'x'; tenbyten[7][3] = 'x'; tenbyten[7][4] = 'x'; tenbyten[7][5] = 'x'; tenbyten[7][6] = 'x'; tenbyten[2][7] = 'x'; tenbyten[3][7] = 'x'; tenbyten[4][7] = 'x'; tenbyten[5][7] = 'x'; tenbyten[6][7] = 'x'; //position doughnuts per coordinates defined @ class level tenbyten[d1c][d1r] = d1; tenbyten[d2c][d2r] = d2; tenbyten[d3c][d3r] = d3; tenbyten[d4c][d4r] = d4; tenbyten[d5c][d5r] = d5; //position player , home accordingly tenbyten[playercolumn][playerrow] = player; tenbyten[homecolumn][homerow] = home; system.out.print(tenbyten[c][r] + " "); } system.out.println(); } system.out.println(""); //user prompt system.out.println("press 'u' move up, 'd' move down, 'l' move left , 'r' move right"); //move counter system.out.println(movecounter); system.out.println(doughnutcounter); // quit mechanism: valid when player position 'p' equal home 'h' if (tenbyten[playercolumn][playerrow] == tenbyten[homecolumn][homerow]) { system.out.println("welcome home and...good bye!"); system.exit(0); } } public static void inputmanager() { scanner scan = new scanner(system.in); char inputcharacter = scan.nextline().charat(0); switch (inputcharacter) { case 'u': if (playerrow == 0) { system.out.println("sorry, move takes off board"); } else if (tenbyten[playercolumn][playerrow - 1] == 'x') { system.out.println("you cannot go through wall"); } else if (tenbyten[playercolumn][playerrow - 1] == tenbyten[d1c][d1r]) { doughnutcounter++; playerrow = --playerrow; d1 = '.'; } else if (tenbyten[playercolumn][playerrow - 1] == tenbyten[d2c][d2r]) { doughnutcounter++; playerrow = --playerrow; d2 = '.'; } else if (tenbyten[playercolumn][playerrow - 1] == tenbyten[d3c][d3r]) { doughnutcounter++; playerrow = --playerrow; d3 = '.'; } else if (tenbyten[playercolumn][playerrow - 1] == tenbyten[d4c][d4r]) { doughnutcounter++; playerrow = --playerrow; d4 = '.'; } else if (tenbyten[playercolumn][playerrow - 1] == tenbyten[d5c][d5r]) { doughnutcounter++; playerrow = --playerrow; d5 = '.'; } else { movecounter++; playerrow = --playerrow; } break; case 'd': if (playerrow == 9) { system.out.println("sorry, move takes off board"); } else if (tenbyten[playercolumn][playerrow + 1] == 'x') { system.out.println("you cannot go through wall"); } else if (tenbyten[playercolumn][playerrow + 1] == tenbyten[d1c][d1r]) { doughnutcounter++; playerrow = --playerrow; d1 = '.'; } else if (tenbyten[playercolumn][playerrow + 1] == tenbyten[d2c][d2r]) { doughnutcounter++; playerrow = --playerrow; d2 = '.'; } else if (tenbyten[playercolumn][playerrow + 1] == tenbyten[d3c][d3r]) { doughnutcounter++; playerrow = --playerrow; d3 = '.'; } else if (tenbyten[playercolumn][playerrow + 1] == tenbyten[d4c][d4r]) { doughnutcounter++; playerrow = --playerrow; d4 = '.'; } else if (tenbyten[playercolumn][playerrow + 1] == tenbyten[d5c][d5r]) { doughnutcounter++; playerrow = --playerrow; d5 = '.'; } else { movecounter++; playerrow = ++playerrow; } break; case 'l': if (playercolumn == 0) { system.out.println("sorry, move takes off board"); } else if (tenbyten[playercolumn - 1][playerrow] == 'x') { system.out.println("you cannot go through wall"); } else if (tenbyten[playercolumn - 1][playerrow] == tenbyten[d1c][d1r]) { doughnutcounter++; playerrow = --playerrow; d1 = '.'; } else if (tenbyten[playercolumn - 1][playerrow] == tenbyten[d2c][d2r]) { doughnutcounter++; playerrow = --playerrow; d2 = '.'; } else if (tenbyten[playercolumn - 1][playerrow] == tenbyten[d3c][d3r]) { doughnutcounter++; playerrow = --playerrow; d3 = '.'; } else if (tenbyten[playercolumn - 1][playerrow] == tenbyten[d4c][d4r]) { doughnutcounter++; playerrow = --playerrow; d4 = '.'; } else if (tenbyten[playercolumn - 1][playerrow] == tenbyten[d5c][d5r]) { doughnutcounter++; playerrow = --playerrow; d5 = '.'; }else { movecounter++; playercolumn = --playercolumn; } break; case 'r': if (playercolumn == 9) { system.out.println("sorry, move takes off board"); } else if (tenbyten[playercolumn + 1][playerrow] == 'x') { system.out.println("you cannot go through wall"); } else if (tenbyten[playercolumn + 1][playerrow] == tenbyten[d1c][d1r]) { doughnutcounter++; playerrow = --playerrow; d1 = '.'; } else if (tenbyten[playercolumn + 1][playerrow] == tenbyten[d2c][d2r]) { doughnutcounter++; playerrow = --playerrow; d2 = '.'; } else if (tenbyten[playercolumn + 1][playerrow] == tenbyten[d3c][d3r]) { doughnutcounter++; playerrow = --playerrow; d3 = '.'; } else if (tenbyten[playercolumn + 1][playerrow] == tenbyten[d4c][d4r]) { doughnutcounter++; playerrow = --playerrow; d4 = '.'; } else if (tenbyten[playercolumn + 1][playerrow] == tenbyten[d5c][d5r]) { doughnutcounter++; playerrow = --playerrow; d5 = '.'; }else { movecounter++; playercolumn = ++playercolumn; } break; default: system.out.println("please ensure enter correct character: 'u', 'd', 'l', or 'r'"); } } }
you switching value of initial char, (named d1/2/3/4/5), instead of changing value inside array, @ 1 of positions declared:
tenbyten[d1c][d1r] = "."; or..
tenbyten[d2c][d2r] = "."; etc...
good luck!
Comments
Post a Comment