gpt4 book ai didi

C - 咀嚼问题

转载 作者:行者123 更新时间:2023-11-30 17:44:57 25 4
gpt4 key购买 nike

我正在尝试创建游戏 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com