package tictactoe;
import java.util.*;
public class tictactoe {
static Map<String,String> board = initstartboard();
public static void main(String[] args)
{
// Put elements to the map
System.out.printf("1|2|3");
System.out.printf("\n=====");
System.out.printf("\n4|5|6");
System.out.printf("\n=====");
System.out.printf("\n7|8|9");
System.out.printf("\nEnter number where to place marker");
System.out.println("\n============================================");
System.out.printf("\n");
boolean xturn = true;
boolean gamenotwon = true;
Scanner reader = new Scanner(System.in);
while (gamenotwon)
{
printboard();
System.out.println((board.get("1")+board.get("2")+board.get("3") == "XXX" ));
System.out.println(board.get("1")+board.get("2")+board.get("3"));
if((isWon())!="sp") { gamenotwon = !gamenotwon; System.out.println(isWon()); break;}
// sp stands for still playing
if (xturn)
{ boolean played = false;
while (!played)
{
System.out.println("Your turn x: ");
String s = reader.next();
String though = board.get(s);
boolean attemptf = though== null;
if (attemptf) { System.out.println("What you entered is not a place on the board");}
boolean fattempt = though == " ";
if ((!fattempt)) {System.out.println("Marker already placed");}
if ((!attemptf)&&(fattempt)) {board.put(s,"X"); played = true; xturn = !xturn;}
}
}
else
{ boolean played = false;
while (!played)
{
System.out.println("Your turn o: ");
String s = reader.next();
String though = board.get(s);
boolean attemptf = though== null;
if (attemptf) { System.out.println("What you entered is not a place on the board");}
boolean fattempt = though == " ";
if ((!fattempt)) {System.out.println("Marker already placed");}
if ((!attemptf)&&(fattempt)) {board.put(s,"O"); played = true; xturn = !xturn;}
}
}
}
}
public static Map<String,String> initstartboard() {
Map map = new HashMap();
map.put("0"," ");
map.put("1"," ");
map.put("2"," ");
map.put("3"," ");
map.put("4"," ");
map.put("5"," ");
map.put("6"," ");
map.put("7"," ");
map.put("8"," ");
map.put("9"," ");
return map;
}
public static void printboard()
{
System.out.printf("\n%s|%s|%s\n=====", board.get("1"),board.get("2"),board.get("3"));
System.out.printf("\n%s|%s|%s\n=====", board.get("4"),board.get("5"),board.get("6"));
System.out.printf("\n%s|%s|%s\n", board.get("7"),board.get("8"),board.get("9"));
}
public static void print(Object x) {System.out.println(x);}
public static String isWon()
{ String drawornot = (board.get("1")+board.get("2")+board.get("3")+board.get("4")+board.get("5")+board.get("6")+board.get("7")+board.get("8")+board.get("9"));
//print((CS(drawornot)));
//{
// return "";
//}
if (CS(drawornot))
{
if((board.get("1")+board.get("2")+board.get("3")) == "XXX" )
{
return "X won";
}
else if((board.get("1")+board.get("2")+board.get("3")) == "OOO")
{
return "O won";
}
else if((board.get("4")+board.get("5")+board.get("6")) == "XXX" )
{
return "X won";
}
else if((board.get("4")+board.get("5")+board.get("6")) == "OOO")
{
return "O won";
}
else if((board.get("7")+board.get("8")+board.get("9")) == "XXX" )
{
return "X won";
}
else if((board.get("7")+board.get("8")+board.get("9") == "OOO"))
{
return "O won";
}
else if(board.get("1")+board.get("4")+board.get("7") == "XXX" )
{
return "X won";
}
else if(board.get("1")+board.get("4")+board.get("7") == "OOO")
{
return "O won";
}
else if(board.get("2")+board.get("5")+board.get("8") == "XXX" )
{
return "X won";
}
else if(board.get("2")+board.get("5")+board.get("8") == "OOO")
{
return "O won";
}
else if(board.get("3")+board.get("6")+board.get("9") == "XXX" )
{
return "X won";
}
else if(board.get("3")+board.get("6")+board.get("9") == "OOO")
{
return "O won";
}
else if(board.get("1")+board.get("5")+board.get("9") == "XXX" )
{
return "X won";
}
else if(board.get("1")+board.get("5")+board.get("9") == "OOO")
{
return "O won";
}
else if(board.get("3")+board.get("5")+board.get("7") == "XXX" )
{
return "X won";
}
else if(board.get("3")+board.get("5")+board.get("7") == "OOO")
{
return "O won";
}
else {System.out.println((board.get("1")+board.get("2")+board.get("3") == "XXX" ));return "sp";}
}
else //if (!CS(drawornot))
{
if(board.get("1")+board.get("2")+board.get("3") == "XXX" )
{
return "X won";
}
else if(board.get("1")+board.get("2")+board.get("3") == "OOO")
{
return "O won";
}
else if(board.get("4")+board.get("5")+board.get("6") == "XXX" )
{
return "X won";
}
else if(board.get("4")+board.get("5")+board.get("6") == "OOO")
{
return "O won";
}
else if(board.get("7")+board.get("8")+board.get("9") == "XXX" )
{
return "X won";
}
else if(board.get("7")+board.get("8")+board.get("9") == "OOO")
{
return "O won";
}
else if(board.get("1")+board.get("4")+board.get("7") == "XXX" )
{
return "X won";
}
else if(board.get("1")+board.get("4")+board.get("7") == "OOO")
{
return "O won";
}
else if(board.get("2")+board.get("5")+board.get("8") == "XXX" )
{
return "X won";
}
else if(board.get("2")+board.get("5")+board.get("8") == "OOO")
{
return "O won";
}
else if(board.get("3")+board.get("6")+board.get("9") == "XXX" )
{
return "X won";
}
else if(board.get("3")+board.get("6")+board.get("9") == "OOO")
{
return "O won";
}
else if(board.get("1")+board.get("5")+board.get("9") == "XXX" )
{
return "X won";
}
else if(board.get("1")+board.get("5")+board.get("9") == "OOO")
{
return "O won";
}
else if(board.get("3")+board.get("5")+board.get("7") == "XXX" )
{
return "X won";
}
else if(board.get("3")+board.get("5")+board.get("7") == "OOO")
{
return "O won";
}
else {return "draw";}
}
}
public static boolean CS(final String testCode){
if(testCode != null){
for(int i = 0; i < testCode.length(); i++){
if(Character.isWhitespace(testCode.charAt(i))){
return true; // functions checks wether or not string has whitespace
}
}
}
return false;
}
}
So im new to Java. I'm starting off with a simple command line tic tac toe game. SO i basically hard coded the function that checks wether or not a player has won. I do this by making alot of if statements. The problem is... Even if i DO HAPPEN to win, Java still doesnt recognize that the string "XXX" (which represents x has won) is equal to "XXX". there is a part of my code where i write
System.out.println((board.get("1")+board.get("2")+board.get("3") == "XXX" ));
System.out.println(board.get("1")+board.get("2")+board.get("3"));
The first line of code prints out false the second line prints out... and you guessed it... XXX. I dont get how java contradicts itself. My question is: How do i fix this?. Thanks in advance and comment below if you need clarification. :D
Aucun commentaire:
Enregistrer un commentaire