【发布时间】:2010-08-11 23:58:45
【问题描述】:
我正在学习 C,所以决定尝试制作一个井字游戏,使用 ASCII 艺术作为表格。
我还没有很多...
#include <stdio.h>
#define WIDTH 2;
#define HEIGHT 2;
int main (int argc, char *argv[]) {
printf("Welcome to Tic Tac Toe!\n\n");
int width = WIDTH;
int height = HEIGHT;
// Make grid
for (int y = 0; y <= height; y++) {
for (int x = 0; x <= width; x++) {
printf("%d%d", x, y);
if (x != width) {
printf("||");
}
}
if (y != height) {
printf("\n");
for (int i = 0; i < (width + (width * 4)); i++) {
printf("=");
}
printf("\n");
} else {
printf("\n");
}
}
// Ask for user input
printf("Please enter the cell where you would like to place an X, e.g. for example the first top left cell is '00'\n");
}
在命令行上运行时,我得到这个输出
Welcome to Tic Tac Toe!
00||10||20
==========
01||11||21
==========
02||12||22
Please enter the cell where you would like to place an X, e.g. for example the first top left cell is '00'
现在,当我弄清楚如何获取多个字符的输入时(到目前为止,我只知道如何使用 getchar() 获取单个字符,尽管对于本示例来说这可能可行),我想再次循环并为相应的单元格放置一个 X。
我是否应该编写一个用于打印表格的函数,该函数接受诸如“int markerX,int markerY”之类的参数来放置X?
然后我将如何存储标记的位置,以便我可以检查游戏是否赢了?
我的选择要放置标记的单元格是在命令行上要求用户输入游戏的最佳方式吗?
谢谢!
【问题讨论】:
-
当向用户显示输出时,我可能只会将单元格编号为 1-3、4-6 和 7-9。许多用户会被 xy 网格系统弄糊涂。
-
是的。由于只有 9 个网格将信息存储在一个维度数组中,因此也非常简单。只有当它使事情变得更容易时才应该使用抽象,在这种情况下它确实没有。
-
WIDTH 和 HEIGHT 都应该为 3。我假设您将它们更改为 2 以满足您的循环;但考虑在循环中使用
-
width和height变量也是多余的。您当然可以使用 WIDTH 和 HEIGHT 来代替它们。
标签: c tic-tac-toe