- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建游戏 Chomp 。我已经完成一半了,但很困难。
游戏将有 5 种不同的功能。不允许使用指针和结构。
a) initialize() 将矩阵中的每个位置初始化为“O”。无参数或返回值。
b) print_board() 打印矩阵。无参数或返回值。
c) get_move() 扫描玩家的移动(行和列)并用数组“返回”它。参数:有关轮到谁的信息(玩家 1 或玩家 2),以及一个包含两个元素的数组,用于存储移动坐标。无返回值。
d) check_move() 控制移动是否合法(不是在矩阵之外,也不是已经被吃掉的位置)。参数:要检查的移动(行和列)。返回值: 控制结果。 <------ ??????
e) update_board() 更新矩阵。参数:新移动(行和列)。无返回值。
这就是我已经走了多远,我被困在 check_move() 函数上。我不明白我将从该函数返回什么。
#include <stdio.h>
int height = 4;
int width = 10;
char matrix[4][10];
void initialize()
{
for(int row = 0; row < height; row++)
for(int col = 0; col < width; col++)
matrix[row][col] = 'O';
}
void print_board()
{
for(int row = 0; row < height; row++)
{
for(int col = 0; col < width; col++)
{
printf("%c", matrix[row][col]);
}
printf("\n");
}
printf("\n");
}
void get_move(int player, int input[])
{
printf("Player %d, make your move: ", player);
scanf("%d %d", &input[0], &input[1]);
}
int check_move(int position[])
{
int row = position[0];
int col = position[1];
if(row <= height && col <= width)
{
for(row; row <= height; row++)
{
for(col; col <= width; col++)
{
if(matrix[row][col] == ' ');
printf("Invalid move! \n");
}
}
}
}
void update_board(int x, int y)
{
for(int xi = x; xi <= 10; ++xi)
{
for(int yi = y; yi <= 10; ++yi)
matrix[xi-1][yi-1] = ' ';
}
}
int main(void)
{
int player = 1;
int position[2];
initialize();
print_board();
get_move(player, position);
check_move(position);
update_board(position[0], position[1]);
print_board();
getchar();
getchar();
getchar();
return 0;
}
最佳答案
您应该从 check_move 返回一个值,因为它的原型(prototype)是这样的,我假设您想在某处使用退出状态? :
int check_move(int position[])
并且您的 if
末尾有一个不必要的 ;
:
int check_move(int position[])
{
int row = position[0];
int col = position[1];
int status = 1;
if(row <= height && col <= width)
{
for(row; row <= height; row++)
{
for(col; col <= width; col++)
{
if(matrix[row][col] == ' ') //removed ";" from end of line, otherwise,
{ //printf will always be called
printf("Invalid move! \n");
return 0;
}//also added brackets to force return if error (only need one error to return)
}
}
}
return status; //added return status
}
所以,现在主要是,您将执行类似这样的操作来调用 check_move()
:
int main(void)
{
int player = 1;
int position[2];
initialize();
print_board();
get_move(player, position);
while(check_move(position) != 1)
{
printf("Try again!\n\n");
print_board();
get_move(player, position);
}
update_board(position[0], position[1]);
print_board();
getchar();
getchar();
getchar();
return 0;
}
关于C - 咀嚼问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19776967/
我正在测试一个监视应用程序运行状况的应用程序,决定因素之一是 jvm 内存。我很好奇我怎样才能把它吃完才能达到测试的阈值?这行得通吗? ArrayList list = new ArrayList()
我的应用程序尺寸逐渐变大,我正在尝试使用“使用共享运行时”缩小尺寸,应用程序运行正常,没有任何错误。但是,当我选中“使用共享的运行时”复选框时,我可以创建apk文件来安装它,但在某些曾经工作过的设备上
我是一名优秀的程序员,十分优秀!