帮我用C语言写一个可以玩愤怒的小鸟的程序,要很简单
时间: 2023-11-12 20:09:38 浏览: 106
好的,以下是一个简单的愤怒的小鸟游戏程序示例,代码注释中有详细说明:
```c
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
// 定义窗口大小
#define WINDOW_WIDTH 60
#define WINDOW_HEIGHT 20
// 定义小鸟和障碍物的数据结构
typedef struct {
int x;
int y;
} Bird;
typedef struct {
int x;
int y;
} Obstacle;
// 全局变量
Bird bird; // 小鸟
Obstacle obstacle; // 障碍物
int score = 0; // 得分
// 设置控制台窗口大小
void SetWindowSize(int width, int height) {
char cmd[30];
sprintf(cmd, "mode con cols=%d lines=%d", width, height);
system(cmd);
}
// 隐藏光标
void HideCursor() {
CONSOLE_CURSOR_INFO cursor_info = {1, 0};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}
// 移动光标到指定位置输出字符
void gotoxy(int x, int y, char c) {
COORD pos = {x, y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
putchar(c);
}
// 初始化小鸟和障碍物的位置
void Init() {
bird.x = 10;
bird.y = WINDOW_HEIGHT / 2;
obstacle.x = WINDOW_WIDTH - 1;
obstacle.y = rand() % (WINDOW_HEIGHT - 4) + 2;
score = 0;
}
// 显示游戏界面
void Show() {
// 清空控制台
system("cls");
// 绘制边框
for (int i = 0; i < WINDOW_HEIGHT; i++) {
gotoxy(0, i, '#');
gotoxy(WINDOW_WIDTH - 1, i, '#');
}
for (int i = 1; i < WINDOW_WIDTH - 1; i++) {
gotoxy(i, 0, '#');
gotoxy(i, WINDOW_HEIGHT - 1, '#');
}
// 绘制小鸟和障碍物
gotoxy(bird.x, bird.y, 'O');
gotoxy(obstacle.x, obstacle.y, '|');
gotoxy(obstacle.x, obstacle.y + 1, '|');
gotoxy(obstacle.x, obstacle.y + 2, '|');
// 显示得分
gotoxy(WINDOW_WIDTH / 2 - 2, 0, 'S');
gotoxy(WINDOW_WIDTH / 2, 0, 'C');
gotoxy(WINDOW_WIDTH / 2 + 2, 0, 'O');
gotoxy(WINDOW_WIDTH / 2 - 3, 1, ':');
printf("%d", score);
}
// 处理用户输入
void Input() {
// 检测是否有按键按下
if (_kbhit()) {
char c = _getch();
// 按下空格键,小鸟向上飞
if (c == ' ') {
bird.y -= 2;
}
}
}
// 更新游戏状态
void Update() {
// 障碍物向左移动
obstacle.x--;
// 如果障碍物移出屏幕,重新随机生成并增加得分
if (obstacle.x < 0) {
obstacle.x = WINDOW_WIDTH - 1;
obstacle.y = rand() % (WINDOW_HEIGHT - 4) + 2;
score++;
}
// 小鸟下落
bird.y++;
// 检测小鸟是否撞到边界或障碍物
if (bird.y <= 0 || bird.y >= WINDOW_HEIGHT - 1 ||
(bird.x == obstacle.x && (bird.y <= obstacle.y || bird.y >= obstacle.y + 2))) {
printf("\a"); // 播放声音
Sleep(1000); // 延迟1秒
Init(); // 重新开始游戏
}
}
// 主函数
int main() {
srand((unsigned)time(NULL)); // 初始化随机数种子
SetWindowSize(WINDOW_WIDTH, WINDOW_HEIGHT); // 设置窗口大小
HideCursor(); // 隐藏光标
Init(); // 初始化游戏
while (1) {
Show(); // 显示游戏界面
Input(); // 处理用户输入
Update(); // 更新游戏状态
Sleep(100); // 延迟一段时间
}
return 0;
}
```
运行程序后,按空格键控制小鸟向上飞,避免撞到边界或障碍物,得分越高,速度越快。如果撞到边界或障碍物,会播放声音并重新开始游戏。
阅读全文