Reputation: 43
So, I am creating a text-based game where you fill in the blanks on the board with the letters, "S, M, A, R, T". To beat this game each row and column can only contain 1 out of the 5 given letters. (It's kind of like the game Sudoku) The game runs perfectly fine but when the user inputs the the row and column they want the letter to be in, it doesn't appear on the board. Could anyone please help me out? Thank you in advance. (Note: I am still new to java coding)
import java.util.Scanner;
public class SmartPuzzleProgram{
static Scanner keyboard = new Scanner(System.in);
static char[][] table = new char[5][5];
public static void main (String[] args){
Board(table);
int i = 0;
while (i < 5){
if( ((int)table[i][0] + (int)table[i][1] + (int)table[i][2] + (int)table[i][3] + (int)table[i][4]) != 391 ){
Move();
Board(table);
}
else
i++;
}
int j = 0;
while (i < 5){
if( ((int)table[0][j] + (int)table[1][j] + (int)table[2][j] + (int)table[3][j] + (int)table[4][j]) != 391 ){
Move();
Board(table);
}
else
j++;
}
System.out.println("Congratulations! You must be SMART.");
}
public static void Move(){
// Ask for user's input
System.out.print("Enter a row (1-5): ");
int r = keyboard.nextInt();
System.out.print("Enter a column (1-5): ");
int c = keyboard.nextInt();
System.out.print("Enter a letter (S,M,A,R or T): ");
char L = keyboard.next().toUpperCase().charAt(0);
if (L == 'S' || L == 'M' || L == 'A' || L == 'R' || L == 'T') {
table[r-1][c-1] = L;
}
else
// Error check
System.out.println("Invalid letter. Use 'S', M', 'A', 'R' or 'T'");
}
public static void Board(char[][] t){
// Given variables
t[0][0] = 'S';
t[0][1] = 'M';
t[0][2] = 'A';
t[0][3] = 'R';
t[0][4] = 'T';
t[1][0] = ' ';
t[1][1] = 'T';
t[1][2] = 'S';
t[1][3] = 'M';
t[1][4] = ' ';
t[2][0] = ' ';
t[2][1] = ' ';
t[2][2] = 'R';
t[2][3] = ' ';
t[2][4] = 'S';
t[3][0] = ' ';
t[3][1] = 'S';
t[3][2] = 'M';
t[3][3] = ' ';
t[3][4] = ' ';
t[4][0] = ' ';
t[4][1] = ' ';
t[4][2] = 'T';
t[4][3] = 'S';
t[4][4] = ' ';
// Prints out the board
System.out.println(" 1 2 3 4 5 ");
System.out.println(" ---+---+---+---+--- ");
System.out.println("1 | " + t[0][0] + " | " + t[0][1] + " | " + t[0][2] + " | " + t[0][3] + " | " + t[0][4] + " |");
System.out.println(" ---+---+---+---+--- ");
System.out.println("2 | " + t[1][0] + " | " + t[1][1] + " | " + t[1][2] + " | " + t[1][3] + " | " + t[1][4] + " |");
System.out.println(" ---+---+---+---+--- ");
System.out.println("3 | " + t[2][0] + " | " + t[2][1] + " | " + t[2][2] + " | " + t[2][3] + " | " + t[2][4] + " |");
System.out.println(" ---+---+---+---+--- ");
System.out.println("4 | " + t[3][0] + " | " + t[3][1] + " | " + t[3][2] + " | " + t[3][3] + " | " + t[3][4] + " |");
System.out.println(" ---+---+---+---+--- ");
System.out.println("5 | " + t[4][0] + " | " + t[4][1] + " | " + t[4][2] + " | " + t[4][3] + " | " + t[4][4] + " |");
System.out.println(" ---+---+---+---+--- ");
}
}
Upvotes: 0
Views: 83
Reputation: 34166
The problem is that you are assigning the values to table each time you call the Board()
method, you may want to initialize them just one time. For this, create a new method, let's say initialize()
:
public static void initialize()
{
System.out.println("here");
table[0][0] = 'S';
table[0][1] = 'M';
table[0][2] = 'A';
table[0][3] = 'R';
table[0][4] = 'T';
table[1][0] = ' ';
table[1][1] = 'T';
table[1][2] = 'S';
table[1][3] = 'M';
table[1][4] = ' ';
table[2][0] = ' ';
table[2][1] = ' ';
table[2][2] = 'R';
table[2][3] = ' ';
table[2][4] = 'S';
table[3][0] = ' ';
table[3][1] = 'S';
table[3][2] = 'M';
table[3][3] = ' ';
table[3][4] = ' ';
table[4][0] = ' ';
table[4][1] = ' ';
table[4][2] = 'T';
table[4][3] = 'S';
table[4][4] = ' ';
}
And call it at the beginning of the main()
:
public static void main(String[] args)
{
initialize();
Board(table);
...
}
Upvotes: 1