让openai写个贪吃蛇 搭建的chatgpt

让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

标签:蛇头   初始化   边界   元素   定义   食物   方向   类型   结构   地图

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top