如果我可以重新编写代码:
for (lo = 0; lo < 9; lo++){
if (hi[lo] == " "){
hi[lo] = "o";
break;
}
}
所以,你说得对,它插入一个 “O”。
什么问题?
编辑:既然你试图写一个井字棋游戏,让我提出一些总体伪代码:
repeat
ask user where they want to place an "x" (i.e. get a number from 0 to 8)
if that square is not blank, say so and ask again
else put the "x" in the square
If this completes a row, column, or diagonal, exit saying "You win!"
-> enter the loop here if you are making the first move
then find out where to put an "o". You do this by looking at all unoccupied squares.
for each unoccupied square
look at the row, column, and diagonal it is on
if putting an "o" there would make you the winner, give it a really high score
if putting an "o" there would block the user from winning, give it a high score
if putting an "o" there would mean that you could win on the following move, give it a medium score
Otherwise give it a score that is the number of rows, columns, and diagonals it could possibly tie up
end for each
Then put the "o" on the highest-scored square (or one of the highest-scored squares if there are more than one)
If you completed a row, column, or diagonal, exit saying "I win!".
If you can't find a square to mark, exit saying "I give up".
end repeat
我敢肯定有一个较短的版本莫过于此。 它只是我的头顶。
你的问题是什么?你的代码是专门编写插入一个“o”并退出(马上将'j'设置为'false')。那么问题是什么?什么是“如果陈述不正确测试”应该是什么意思? – AnT
该代码首次运行,但是当某个值已经存储在其中一个值中时,它不会输入第二个o。这就是为什么我说它没有正确测试。 – user1108980
认真的我不介意这会被投票,但你可以做的最少的投票是从链接编译代码,看看我自己的意思。 – user1108980