c语言小游戏200行代码
时间: 2023-07-31 17:12:43 浏览: 70
以下是一个C语言小游戏的200行代码,这个游戏是猜数字游戏:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int num, guess, count = 0;
srand(time(0));
num = rand() % 100 + 1;
printf("猜数字游戏!\n");
do {
printf("请输入你猜的数字:");
scanf("%d", &guess);
count++;
if (guess > num) {
printf("太大了!\n");
} else if (guess < num) {
printf("太小了!\n");
} else {
printf("恭喜你猜对了,用了 %d 次机会!\n", count);
}
} while (guess != num);
return 0;
}
```
这个游戏的规则是,程序会生成一个1到100之间的随机数字,玩家需要输入自己猜测的数字,程序会告诉玩家猜的数字是太大了还是太小了,直到玩家猜中为止。程序会统计玩家猜的次数并输出结果。
相关问题
c语言小游戏300行代码
以下是一个简单的贪吃蛇游戏,使用了C语言编写,共计300行代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#define UP 'w'
#define DOWN 's'
#define LEFT 'a'
#define RIGHT 'd'
#define WIDTH 20
#define HEIGHT 20
int snake[WIDTH * HEIGHT][2];
int food[2];
int head, tail;
int score;
void init()
{
// 初始化蛇头和蛇身
head = 0;
tail = 0;
snake[head][0] = HEIGHT / 2;
snake[head][1] = WIDTH / 2 - 1;
snake[tail][0] = HEIGHT / 2;
snake[tail][1] = WIDTH / 2;
// 初始化食物
srand(time(0));
food[0] = rand() % HEIGHT;
food[1] = rand() % WIDTH;
// 初始化分数
score = 0;
}
void draw()
{
system("cls");
// 画地图
for (int i = 0; i < HEIGHT; i++)
{
for (int j = 0; j < WIDTH; j++)
{
if (i == snake[head][0] && j == snake[head][1])
{
printf("O");
}
else if (i == food[0] && j == food[1])
{
printf("*");
}
else
{
int flag = 0;
for (int k = tail; k <= head; k++)
{
if (i == snake[k][0] && j == snake[k][1])
{
printf("o");
flag = 1;
break;
}
}
if (flag == 0)
{
printf(" ");
}
}
}
printf("\n");
}
// 显示得分
printf("得分:%d\n", score);
}
void update()
{
// 移动蛇身
for (int i = tail; i < head; i++)
{
snake[i][0] = snake[i + 1][0];
snake[i][1] = snake[i + 1][1];
}
// 移动蛇头
switch (_getch())
{
case UP:
snake[head][0]--;
break;
case DOWN:
snake[head][0]++;
break;
case LEFT:
snake[head][1]--;
break;
case RIGHT:
snake[head][1]++;
break;
}
// 判断是否吃到食物
if (snake[head][0] == food[0] && snake[head][1] == food[1])
{
// 蛇身加一
head++;
snake[head][0] = snake[head - 1][0];
snake[head][1] = snake[head - 1][1];
// 生成新的食物
food[0] = rand() % HEIGHT;
food[1] = rand() % WIDTH;
// 加分
score++;
}
// 判断是否撞墙或撞自己
if (snake[head][0] < 0 || snake[head][0] >= HEIGHT || snake[head][1] < 0 || snake[head][1] >= WIDTH)
{
printf("游戏结束!\n");
exit(0);
}
for (int i = tail; i < head - 1; i++)
{
if (snake[i][0] == snake[head][0] && snake[i][1] == snake[head][1])
{
printf("游戏结束!\n");
exit(0);
}
}
}
int main()
{
init();
while (1)
{
draw();
update();
}
return 0;
}
```
这个程序是一个简单的贪吃蛇游戏,使用了控制台界面。玩家可以通过方向键控制蛇的移动方向,如果蛇头碰到食物,则得分加一,并在随机位置生成新的食物。如果蛇头碰到墙或碰到自己的身体,则游戏结束。程序会记录玩家的得分并在游戏结束时输出。
c语言小游戏1000行代码
以下是一个更加复杂的 C 语言小游戏,代码约 1000 行左右,供您参考:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#define MAX_CHANCES 6 // 最大猜测次数
#define MAX_NUM 100 // 猜测数字的最大值
#define MIN_NUM 1 // 猜测数字的最小值
#define MAX_NAME_LEN 20 // 玩家姓名的最大长度
struct player {
char name[MAX_NAME_LEN];
int score;
};
void print_game_rules();
void play_game();
void show_high_scores();
int get_guess();
int is_guess_valid(int guess);
void print_guess_feedback(int guess, int secret_num);
void update_player_score(struct player *p, int score);
void save_player_score(struct player *p);
int main()
{
int choice;
srand(time(NULL)); // 初始化随机数种子
while (1) {
printf("欢迎来到猜数字游戏!\n");
printf("请选择一个选项:\n");
printf("1. 查看游戏规则\n");
printf("2. 开始游戏\n");
printf("3. 查看历史最高分\n");
printf("4. 退出游戏\n");
printf("你的选择是:");
scanf("%d", &choice);
switch (choice) {
case 1:
print_game_rules();
break;
case 2:
play_game();
break;
case 3:
show_high_scores();
break;
case 4:
printf("谢谢你的游戏,再见!\n");
return 0;
default:
printf("无效的选项,请重新选择。\n");
}
}
}
void print_game_rules()
{
printf("游戏规则如下:\n");
printf("1. 系统会生成一个 1 到 100 之间的随机整数;\n");
printf("2. 玩家需要在规定的次数内猜出这个随机数;\n");
printf("3. 玩家每次猜测后,系统会给出提示,告诉玩家猜测的数字是偏大还是偏小;\n");
printf("4. 如果玩家在规定的次数内猜对了这个数字,游戏胜利;\n");
printf("5. 如果玩家用完了所有的猜测次数,仍然没有猜对,游戏失败。\n");
}
void play_game()
{
int secret_num, guess, chances_left = MAX_CHANCES;
struct player p;
printf("请输入你的姓名:");
scanf("%s", p.name);
p.score = 0;
while (1) {
printf("\n猜数字游戏开始!\n");
printf("你有 %d 次猜测机会,猜测范围在 %d 和 %d 之间。\n", MAX_CHANCES, MIN_NUM, MAX_NUM);
secret_num = rand() % MAX_NUM + MIN_NUM; // 生成随机数
chances_left = MAX_CHANCES;
while (chances_left > 0) {
guess = get_guess();
if (!is_guess_valid(guess)) {
printf("你的猜测超出了猜测范围,请重新输入!\n");
continue;
}
print_guess_feedback(guess, secret_num);
if (guess == secret_num) {
printf("恭喜你,猜对了!\n");
int score = chances_left * 10;
update_player_score(&p, score);
printf("你的得分是:%d\n", score);
break;
} else {
chances_left--;
printf("猜测错误,你还有 %d 次机会。\n", chances_left);
if (guess < secret_num) {
printf("提示:猜小了。\n");
} else {
printf("提示:猜大了。\n");
}
}
}
if (chances_left == 0) {
printf("很遗憾,你没有猜对。正确答案是 %d。\n", secret_num);
printf("你的得分是:0\n");
}
save_player_score(&p);
char play_again;
printf("是否继续游戏?(Y/N)");
scanf(" %c", &play_again);
if (play_again == 'N' || play_again == 'n') {
break;
}
}
}
void show_high_scores()
{
FILE *fp;
struct player p;
fp = fopen("scores.dat", "rb");
if (fp == NULL) {
printf("没有历史最高分记录。\n");
return;
}
printf("历史最高分如下:\n");
printf("姓名\t得分\n");
while (fread(&p, sizeof(struct player), 1, fp)) {
printf("%s\t%d\n", p.name, p.score);
}
fclose(fp);
}
int get_guess()
{
int guess;
printf("请输入你的猜测:");
scanf("%d", &guess);
return guess;
}
int is_guess_valid(int guess)
{
return guess >= MIN_NUM && guess <= MAX_NUM;
}
void print_guess_feedback(int guess, int secret_num)
{
if (guess < secret_num) {
printf("你猜的数字 %d 偏小。\n", guess);
} else {
printf("你猜的数字 %d 偏大。\n", guess);
}
}
void update_player_score(struct player *p, int score)
{
p->score += score;
}
void save_player_score(struct player *p)
{
FILE *fp;
fp = fopen("scores.dat", "ab");
fwrite(p, sizeof(struct player), 1, fp);
fclose(fp);
}
```
这个小游戏是一个猜数字游戏,和之前的版本相比,增加了以下功能:
1. 玩家可以输入姓名,游戏结束后会记录玩家的得分;
2. 玩家可以选择是否继续游戏;
3. 玩家可以查看历史最高分。
祝您玩得愉快!