我正在尝试制作一个tic tac toe游戏,它的工作范围我可以插入X但计算机只能插入一个O.因为这是一个tic tac toe游戏我需要计算机能够插入多个零。每次运行此代码时,如果已经有一个值为o的变量,则不会将另一个变量更改为值o。我认为问题是if语句。很抱歉没有明确说明我的问题。如果它仍然没有意义,你可以编译我的其余代码。然后你可能会看到我的意思。
这是the rest
以下是我认为的问题。
bool j=true ;
int lo=0;
string hi [9]={a,b,c,d,e,f,g,h,i};
while(j==true)
{
if (lo>8)
{
j=false;
}
else if(hi[lo]!="x"&&hi[lo]!="o")
{
hi[lo]="o";
j=false;
}
else
{
lo=lo+1;
j=true;
}
}
答案 0 :(得分:4)
如果我可以重新编写代码:
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
我确信版本比这短。 这只是我的头脑。