Jag har lekmannamässiga kunskaper i främst PHP men även lite i JavaScript sedan innan, men är däremot helt ny inom Java. Nu är det så att jag har fått i uppgift att skriva ett luffarschack-spel som ska köras i konsolen. För nuvarande har jag kommit en bit på vägen med mitt program, nedan följer vad jag redan har skrivit:
- Spelplanen, i form av en tvådimensionell array
- En metod för att skriva ut spelplanen i konsolen
- En metod för att skriva ut spelbrickorna på spelplanen
Här är min kod hittills:
Som ni ser så har jag tre variabler i min main-metod. Spelplanen, spelarens tur (antingen X eller O) samt vilken position spelaren väljer att placera X/O på. Eftersom att turn = 'X'; så innebär det att spelare X börjar per default. Variabeln för spelarens valda position är hittills bara deklarerad men har inget värde. Det är nu jag börjar bli lite osäker på hur jag ska implementera nästa steg...
Istället för att ha all kod i main-metoden, så har jag istället skapat metoder för de olika nödvändiga komponenterna, som sedan ska anropas i main-metoden. Det jag vill göra härnäst är en slags "spärr" som ser till att användaren enbart kan mata in talen 1-9 (dessa symboliserar de 9 rutorna på spelplanen). Jag skapade en separat klass för att experimentera lite med detta, vilken ser ut såhär:
Nu till mitt problem
Programmet som testar huruvida det användaren matar in först och främst är ett tal, och i andra hand att det är ett tal mellan 1-9 verkar fungera. Jag har däremot svårigheter att implementera detta i mitt luffarschack-program. Även detta bör ju rimligtvis vara en separat metod utanför main-metoden, som sedermera anropas i main-metoden. I och med detta så ska ju inte variabeln position deklareras i main-metoden, utan i validateInput()-metoden.
Min teori är att validateInput()-metoden bör returnera ett boolean-värde baserat på om inmatningen är godkänd eller inte, men jag har inte den blekaste aning om hur man bär sig åt för att göra detta. Jag har ännu inte riktigt förstått alla keywords som står framför diverse metoder, men om jag inte missförstått någonting så står i alla fall void för att metoden inte har något return-värde. Bör i sådana fall min validateInput()-metod definieras som "public static boolean validateInput()"?
Och om det nu stämmer att denna metod bör returnera ett boolean-värde, hur skulle man i sådana fall skriva om den? I den första if-satsens condition borde jag ju returnera true, men hur fungerar det med de andra två else-satserna? I den första if-satsens else så vill jag ju returnera false, men även i den nästlade if-satsens else... Det ställer till det i huvudet på mig!
Insåg nu att det blev ett riktigt jävla mastigt inlägg, ber om ursäkt för detta. Tack på förhand för all hjälp
- Spelplanen, i form av en tvådimensionell array
- En metod för att skriva ut spelplanen i konsolen
- En metod för att skriva ut spelbrickorna på spelplanen
Här är min kod hittills:
Kod:
package tictactoe; import java.util.Scanner; public class Tictactoe { public static void main(String[] args) { char[][] gameboard = { {'-', '-', '-'}, {'-', '-', '-'}, {'-', '-', '-'} }; char turn = 'X'; int position; } public static void printGameboard(char[][] gameboard) { for(int i = 0; i < 3; i++) { for(int j = 0; j < 3; j++) { System.out.print(gameboard[i][j] + " "); } System.out.println(); } } public static void placePiece(char[][] gameboard, int position, char turn) { switch(position) { case 1: gameboard[0][0] = turn; break; case 2: gameboard[0][1] = turn; break; case 3: gameboard[0][2] = turn; break; case 4: gameboard[1][0] = turn; break; case 5: gameboard[1][1] = turn; break; case 6: gameboard[1][2] = turn; break; case 7: gameboard[2][0] = turn; break; case 8: gameboard[2][1] = turn; break; case 9: gameboard[2][2] = turn; break; } } }
Som ni ser så har jag tre variabler i min main-metod. Spelplanen, spelarens tur (antingen X eller O) samt vilken position spelaren väljer att placera X/O på. Eftersom att turn = 'X'; så innebär det att spelare X börjar per default. Variabeln för spelarens valda position är hittills bara deklarerad men har inget värde. Det är nu jag börjar bli lite osäker på hur jag ska implementera nästa steg...
Istället för att ha all kod i main-metoden, så har jag istället skapat metoder för de olika nödvändiga komponenterna, som sedan ska anropas i main-metoden. Det jag vill göra härnäst är en slags "spärr" som ser till att användaren enbart kan mata in talen 1-9 (dessa symboliserar de 9 rutorna på spelplanen). Jag skapade en separat klass för att experimentera lite med detta, vilken ser ut såhär:
Kod:
package integerValidation; import java.util.Scanner; public class IntegerValidation { public static void main(String[] args) { int number; Scanner input = new Scanner(System.in); System.out.print("Please enter a number between 1-9: "); if(input.hasNextInt() == true) { number = input.nextInt(); if(number >= 1 && number < 10) { System.out.print("Correct! The number is between 1-9."): } else { System.out.print("Incorrect! The number must be between 1-9.") } } else { System.out.print("Incorrect! You didn't even enter a number."); } } }
Nu till mitt problem
Programmet som testar huruvida det användaren matar in först och främst är ett tal, och i andra hand att det är ett tal mellan 1-9 verkar fungera. Jag har däremot svårigheter att implementera detta i mitt luffarschack-program. Även detta bör ju rimligtvis vara en separat metod utanför main-metoden, som sedermera anropas i main-metoden. I och med detta så ska ju inte variabeln position deklareras i main-metoden, utan i validateInput()-metoden.
Min teori är att validateInput()-metoden bör returnera ett boolean-värde baserat på om inmatningen är godkänd eller inte, men jag har inte den blekaste aning om hur man bär sig åt för att göra detta. Jag har ännu inte riktigt förstått alla keywords som står framför diverse metoder, men om jag inte missförstått någonting så står i alla fall void för att metoden inte har något return-värde. Bör i sådana fall min validateInput()-metod definieras som "public static boolean validateInput()"?
Och om det nu stämmer att denna metod bör returnera ett boolean-värde, hur skulle man i sådana fall skriva om den? I den första if-satsens condition borde jag ju returnera true, men hur fungerar det med de andra två else-satserna? I den första if-satsens else så vill jag ju returnera false, men även i den nästlade if-satsens else... Det ställer till det i huvudet på mig!
Insåg nu att det blev ett riktigt jävla mastigt inlägg, ber om ursäkt för detta. Tack på förhand för all hjälp