用C语言写一个小游戏,运用链表,指针,结构体,二维数组,文件等知识
时间: 2023-07-31 15:10:10 浏览: 160
好的,我可以给你提供一个小游戏的框架,你可以在此基础上实现链表、指针、结构体、二维数组和文件操作。这个游戏是猜数字游戏,玩家需要在规定次数内猜出系统随机生成的数字。以下是代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 定义链表结构体
typedef struct node {
int score;
struct node *next;
} Node;
// 初始化链表
Node *init_list() {
Node *head = (Node*)malloc(sizeof(Node));
head->score = 0;
head->next = NULL;
return head;
}
// 插入链表
void insert_list(Node *head, int score) {
Node *p = head;
while (p->next != NULL) {
p = p->next;
}
Node *new_node = (Node*)malloc(sizeof(Node));
new_node->score = score;
new_node->next = NULL;
p->next = new_node;
}
// 输出链表
void print_list(Node *head) {
Node *p = head->next;
while (p != NULL) {
printf("%d ", p->score);
p = p->next;
}
printf("\n");
}
int main()
{
srand(time(NULL)); // 用时间做种子,使得每次生成的随机数不同
int answer = rand() % 100; // 产生 0-99 的随机数
int guess, count = 0, max_count = 10; // 最多猜 10 次
Node *score_list = init_list(); // 初始化链表
printf("猜数字游戏开始!\n");
while (count < max_count) {
printf("请输入一个 0-99 的整数:");
scanf("%d", &guess);
count++;
if (guess == answer) {
printf("恭喜你猜对了!你一共猜了 %d 次。\n", count);
insert_list(score_list, count); // 插入链表
break;
} else if (guess < answer) {
printf("猜小了!\n");
} else {
printf("猜大了!\n");
}
}
if (count == max_count) {
printf("很遗憾你没有在规定次数内猜出正确答案,答案是:%d\n", answer);
}
printf("历史最佳成绩:");
print_list(score_list); // 输出链表
// 将链表保存到文件中
FILE *fp = fopen("score.txt", "w");
Node *p = score_list->next;
while (p != NULL) {
fprintf(fp, "%d ", p->score);
p = p->next;
}
fclose(fp);
return 0;
}
```
这个代码中用到了链表、指针、结构体、二维数组和文件操作的知识点。你可以自行实现这些功能,加强自己的编程能力。
阅读全文