我如何添加“玩一次”功能在我的井字游戏,并保持分数从以前的游戏?我想要一个消息弹出告诉用户按“空格”再玩当有人赢了或当它是平局。有人建议我做一个while循环,但我不确定下一步该做什么。如果有人赢了/平局了,我是否应该将布尔玩法设置为fales,如果玩法者按了“空格”,我应该将它设置为true,但是我如何保持上一场游戏的比分呢?现在看起来是这样的
boolean playing = false;
do {
// JFrame where the game is painted, all the buttons etc
while(playing == true);
我写的C版这款游戏女巫很像Java多年的时代。这可能会有帮助。
#include <stdio.h>
#define TRUE 1
#define EMPTYCELL ' '
#define TABLEFORMAT " %c | %c | %c \n-----------\n %c | %c | %c \n-----------\n %c | %c | %c \n"
#define POSITIONINPUTFORMAT "Player %c turn\nPLease enter a number from 1 to 9 :\n"
#define X 'X'
#define O 'O'
/*Functions Prototypes*/
void welcome(int);
void printTable(char[]);
int inputCheck(char[], int);
int endCheck(char[], char);
int newGame(char[]);
char roundTurn(int);
void updateGameData(int, char[], char);
int main() {
int round = 0;
char cells[10] = {EMPTYCELL, EMPTYCELL, EMPTYCELL, EMPTYCELL, EMPTYCELL, EMPTYCELL, EMPTYCELL, EMPTYCELL, EMPTYCELL,EMPTYCELL};
int position;
welcome(1);
int end;
while (TRUE) {
round++;
printf(POSITIONINPUTFORMAT, roundTurn(round));
position = inputCheck(cells, position);
updateGameData(position, cells, roundTurn(round));
printTable(cells);
end = endCheck(cells, roundTurn(round));
if (end == TRUE) {
int newGameVal = newGame(cells);
if (newGameVal == 1) {
round = 0;
welcome(2);
continue;
} else if (newGameVal == 2) break;
}
}
return 0;
}
void welcome(int gameNum) {
if (gameNum == 1) {
/*Welcome Messages*/
printf("Hello\nWellCome to Tic Tac Toe\n");
printf("PLease enter a number from map bellow\n"
""TABLEFORMAT, '1', '2', '3', '4', '5', '6', '7', '8', '9');
} else if (gameNum == 2)
printf("PLease enter a number from map bellow\n"
""TABLEFORMAT, '1', '2', '3', '4', '5', '6', '7', '8', '9');
else printf("????");
}
void printTable(char cells[]) {
/*Print Table*/
printf(TABLEFORMAT, cells[1], cells[2], cells[3], cells[4],
cells[5], cells[6], cells[7], cells[8], cells[9]);
}
int inputCheck(char cells[], int position) {
while (TRUE) {
fflush(stdin);
scanf("%d", &position);
/*Input Validation*/
if (((position == 1) && (cells[1] == EMPTYCELL))
|| ((position == 2) && (cells[2] == EMPTYCELL))
|| ((position == 3) && (cells[3] == EMPTYCELL))
|| ((position == 4) && (cells[4] == EMPTYCELL))
|| ((position == 5) && (cells[5] == EMPTYCELL))
|| ((position == 6) && (cells[6] == EMPTYCELL))
|| ((position == 7) && (cells[7] == EMPTYCELL))
|| ((position == 8) && (cells[8] == EMPTYCELL))
|| ((position == 9) && (cells[9] == EMPTYCELL))) {
break;
} else {
printf("Please enter correct number :\n");
continue;
}
}
return position;
}
int endCheck(char cells[], char turn) {
/*Checking Win Situation*/
if (((cells[1] == turn) && (cells[2] == turn) && (cells[3] == turn))
|| ((cells[4] == turn) && (cells[5] == turn) && (cells[6] == turn))
|| ((cells[7] == turn) && (cells[8] == turn) && (cells[9] == turn))
|| ((cells[1] == turn) && (cells[4] == turn) && (cells[7] == turn))
|| ((cells[2] == turn) && (cells[5] == turn) && (cells[8] == turn))
|| ((cells[3] == turn) && (cells[6] == turn) && (cells[9] == turn))
|| ((cells[1] == turn) && (cells[5] == turn) && (cells[9] == turn))
|| ((cells[3] == turn) && (cells[5] == turn) && (cells[7] == turn))) {
printf("Player %c Wins\n", turn);
return TRUE;
/*Checking Draw Situation*/
} else if ((cells[1] != EMPTYCELL) && (cells[2] != EMPTYCELL) && (cells[3] != EMPTYCELL)
&& (cells[4] != EMPTYCELL) && (cells[5] != EMPTYCELL) && (cells[6] != EMPTYCELL)
&& (cells[7] != EMPTYCELL) && (cells[8] != EMPTYCELL) && (cells[9] != EMPTYCELL)) {
printf("Game Draw\nNo One Win\n");
return TRUE;
}
}
int newGame(char cells[]) {
int exit;
/*Asking For New Game Or Exit*/
printf("To play another game enter 1\nFor exit 2\n");
scanf("%d", &exit);
while ((exit != 1) && (exit != 2)) {
fflush(stdin);
printf("Please enter correct number :\n");
scanf("%d", &exit);
}
if (exit == 1) {
/*Reset Game Data*/
for (int i = 0; i < 11; i++) cells[i] = EMPTYCELL;
return 1;
} else if (exit == 2) {
return 2;
}
}
char roundTurn(int round) {
/*Checking The Player Turn*/
if ((round % 2) == 1) return X;
else if ((round % 2) == 0) return O;
else return '?';
}
void updateGameData(int position, char cells[], char turn) {
/*Change Empty Cell With Player Turn*/
cells[position] = turn;
}
问题内容: 新手问题,但我有以下代码: 当用户输入“ y”时,我只需要简单地再次打印欢迎消息即可。但这不起作用。有任何想法吗? 问题答案: 在Java中,使用来比较原始类型(int,long,boolean等)的相等性,而使用方法来比较对象类型(String等)的相等性。如果使用比较两个Object类型,则要检查 身份 ,而不是相等性-也就是说,您要验证两个对象在内存中是否共享完全相同的引用(因此
我有一个关于查询对象两次的问题。我是说我有这样的情况: > - 后来在网站中,我把一个表单编辑一个实体。它就是上述实体之一。所以我查询这个实体的数据库(整体,而不是部分),并把它放在表单中。 问题是,如果我编辑其中一个实体,就不会再次查询它以获取所有字段,因为我以前已经查询过它。 你知道怎么解决这个问题吗?我不想查询选择框的完整实体。
拼命尝试编写https://www.npmjs.com/package/node-firebird#reading-blobs-aasynchronous的同步版本 基本上我需要(a)等两次: 执行回调函数,以便事件发射器可用 为结束事件发生 然后返回Buffer。 我的代码(现在是JS/TS混合代码)当前执行2,但不是1:readBlob返回未定义的,然后Buffer.concat(buffer
我在两个html文件的头部包含了相同的javascript文件: 和html页面1,然后链接到html页面2。但是,当您跟随指向page2的超链接时,加载page2时,javascript文件中的代码不会再次被调用。即使我试图在html文件2的头部或正文中添加一块代码来调用JS文件中的函数,它也不会执行。 我做错什么了吗? 编辑:这是代码http://jsfiddle.net/dL6gpveL/1
我试着为家庭锻炼建立一个倒计时器,它在相同的间隔下运行两次,然后给你一个额外的间隔Rest。之后,它应该重新开始与3个间隔。 目前,我正在成功地运行从30秒到零的第一个间隔。我的问题是,我不能确定JavaFX任务是否完成。更准确地说,如果不创建几个自覆盖进程(例如,使用for循环),我就无法重新开始使用它。 这是我的用于处理我的FXML文件: 描述功能的GUI设计 接下来我可以尝试什么?已经尝试了
问题内容: 如果“之间的区别一个谷歌”,那么很多的解释,会弹出(除了留下javadoc的段落)。这一切都归结于被唤醒等待的线程数:一个是和所有。 但是(如果我确实正确理解了这两种方法之间的区别),总是仅选择一个线程来进行进一步的监视器获取;在第一种情况下,由VM选择,在第二种情况下,由系统线程调度程序选择。程序员不知道它们的确切选择过程(一般情况下)。 然后和的有用区别是什么?我想念什么吗? 问题