让Openai 写个贪吃蛇,这个代码对吗?大神给分析一下,这个是自己搭建的chatgpt。目前这个智能Ai 确实有很多的功能
#include
#include
#include
#define ROW 10
#define COL 10
//定义枚举类型,表示蛇身和食物的状态
enum Status{EMPTY, FOOD, BODY};
//定义蛇节点结构体
typedef struct Node
{
int x;
int y;
struct Node *next;
}Node;
//定义蛇结构体
typedef struct Snake
{
Node *head;
Node *tail;
int len;
}Snake;
//定义地图结构体
typedef struct Map
{
int arr[ROW][COL];
int food_x;
int food_y;
}Map;
//定义方向枚举类型
enum Direction{UP, DOWN, LEFT, RIGHT};
//函数声明
void init_map(Map *map);
void init_snake(Snake *snake);
void draw_map(Map *map);
void draw_snake(Snake *snake);
void move_snake(Snake *snake, Map *map, enum Direction dir);
void create_food(Map *map);
int main()
{
Map map;
Snake snake;
//初始化地图
init_map(&map);
//初始化蛇
init_snake(&snake);
//游戏循环
while(1)
{
//绘制地图
draw_map(&map);
//绘制蛇
draw_snake(&snake);
//接收用户输入的方向
enum Direction dir;
printf("请输入上下左右指令:");
scanf("%d", &dir);
//蛇移动
move_snake(&snake, &map, dir);
//判断蛇是否吃到食物
if(map.arr[snake.head->x][snake.head->y] == FOOD)
{
//蛇增长
Node *new_node = (Node *)malloc(sizeof(Node));
new_node->x = snake.tail->x;
new_node->y = snake.tail->y;
new_node->next = NULL;
snake.tail->next = new_node;
snake.tail = new_node;
snake.len++;
//重新生成食物
create_food(&map);
}
//判断蛇是否撞墙或自己
if(snake.head->x == 0 || snake.head->x == ROW-1 ||
snake.head->y == 0 || snake.head->y == COL-1 ||
map.arr[snake.head->x][snake.head->y] == BODY)
{
printf("Game Over! ");
break;
}
//清屏
system("clear");
}
return 0;
}
//初始化地图
void init_map(Map *map)
{
//将地图元素全部置为EMPTY
for(int i=0; i { for(int j=0; j { map->arr[i][j] = EMPTY; } } //随机生成食物 srand((unsigned int)time(NULL)); map->food_x = rand() % (ROW-2) + 1; map->food_y = rand() % (COL-2) + 1; map->arr[map->food_x][map->food_y] = FOOD; } //初始化蛇 void init_snake(Snake *snake) { //创建蛇头 Node *head = (Node *)malloc(sizeof(Node)); head->x = 1; head->y = 1; head->next = NULL; snake->head = head; snake->tail = head; snake->len = 1; //创建蛇身 Node *cur = head; for(int i=2; i<=4; i++) { Node *new_node = (Node *)malloc(sizeof(Node)); new_node->x = 1; new_node->y = i; new_node->next = NULL; cur->next = new_node; cur = new_node; snake->len++; } snake->tail = cur; } //绘制地图 void draw_map(Map *map) { //绘制边界 for(int i=0; i printf("*"); printf("
"); //绘制中间元素 for(int i=0; i { printf("*"); for(int j=0; j { if(map->arr[i][j] == EMPTY) printf(" "); else if(map->arr[i][j] == FOOD) printf("@"); else if(map->arr[i][j] == BODY) printf("#"); } printf("*
"); } //绘制边界 for(int i=0; i printf("*"); printf("
"); } //绘制蛇 void draw_snake(Snake *snake) { Node *cur = snake->head; while(cur != NULL) { //将蛇身元素置为BODY map->arr[cur->x][cur->y] = BODY; cur = cur->next; } } //蛇移动 void move_snake(Snake *snake, Map *map, enum Direction dir) { //备份蛇头 Node *head = (Node *)malloc(sizeof(Node)); head->x = snake->head->x; head->y = snake->head->y; head->next = NULL; //根据方向改变蛇头坐标 switch(dir) { case UP: head->x--; break; case DOWN: head->x++; break; case LEFT: head->y--; break; case RIGHT: head->y++; break; } //更新蛇头 snake->head->x = head->x; snake->head->y = head->y; snake->head->next = head #OpenAI# #ChatGPT#
页面更新:2024-03-01
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号