需要帮助来确认游戏!我想要一个tic tac toe我的命令行。我现在卡住了如何在游戏中放置X和O.例如,我只想按1就会改变为" x"或者" o"。在命令Promt中。我也想知道我应该如何宣传玩家在游戏中的转变。 所有你的时间。抱歉我的英语不好。
class GameViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let sceneView = view as! SKView
// sceneView.showsFPS = true
// sceneView.showsNodeCount = true
sceneView.ignoresSiblingOrder = true
let scene = MenuScene(size: view.bounds.size)
scene.scaleMode = .ResizeFill
sceneView.presentScene(scene)
}
答案 0 :(得分:0)
我会帮助理解这种游戏背后的逻辑并给你测试代码,但建议你自己做。
首先,你需要一个标志来告诉你游戏是否完成。
比赛什么时候结束? 2个可能的答案:
这将是您在do{}while()
循环
之后,每次玩家移动时你都需要填充数组。
你必须注意两件事:
第一个条件很简单,但是对于第二个条件你需要一种方法来“存储”两个玩家已经完成的游戏。
在循环结束时,您必须检查游戏是否已完成并更改您的布尔值。
有人如何赢得tic tac toe?通过具有相同字符的水平,垂直或对角线集合。你必须测试所有的可能性并在填满时改变你的旗帜。
否则,如果您的电路板完全填满,您将必须检查并断开循环。
import java.util.ArrayList;
import java.util.Scanner;
public class TicTacToe{
private static Scanner scan = new Scanner(System.in);
public static void main (String[] args){
boolean finished = false;
int plays = 0;
int position = 0;
ArrayList<Integer> alreadyPlayed = new ArrayList<>();
String[] board = {"_","_","_","_","_","_","_","_","_"};
String character;
do{
character = plays % 2 == 0 ? "x" : "o";
do{
System.out.println("Player " + character + ", it's your turn. (0-8)");
System.out.println("Already played :" + alreadyPlayed.toString());
position = scan.nextInt();
} while (position >= 9 || alreadyPlayed.contains(position));
alreadyPlayed.add(position);
board[position] = character;
if (alreadyPlayed.size()>=5){
finished = checkFinished(board);
}
plays++;
for (int i = 0 ; i < 9 ; i++){
System.out.print(board[i]);
if ((i+1) % 3 == 0) System.out.println();
}
} while (!finished && plays < 9);
if (checkFinished(board)) System.out.println("Players " + character + " wins !");
else System.out.println("No one wins.");
}
private static boolean checkFinished(String[] toCheck) {
// Horizontal checks
if (!toCheck[0].equals("_") && toCheck[0].equals(toCheck[1]) && toCheck[0].equals(toCheck[2])) return true;
if (!toCheck[3].equals("_") && toCheck[3].equals(toCheck[4]) && toCheck[3].equals(toCheck[5])) return true;
if (!toCheck[6].equals("_") && toCheck[6].equals(toCheck[7]) && toCheck[6].equals(toCheck[8])) return true;
// Vertical checks
if (!toCheck[0].equals("_") && toCheck[0].equals(toCheck[3]) && toCheck[0].equals(toCheck[6])) return true;
if (!toCheck[1].equals("_") && toCheck[1].equals(toCheck[4]) && toCheck[1].equals(toCheck[7])) return true;
if (!toCheck[2].equals("_") && toCheck[2].equals(toCheck[5]) && toCheck[2].equals(toCheck[8])) return true;
// Diagonal checks
if (!toCheck[0].equals("_") && toCheck[0].equals(toCheck[4]) && toCheck[0].equals(toCheck[8])) return true;
if (!toCheck[2].equals("_") && toCheck[2].equals(toCheck[4]) && toCheck[2].equals(toCheck[6])) return true;
return false;
}
}