基于DEV-C++环境,帮我写出一个用c语言编写的flappy bird小游戏,确定游戏的规则和玩法,包括小鸟如何上下飞行,如何计分,如何结束游戏
时间: 2024-05-14 15:18:04 浏览: 48
好的,以下是一个简单的Flappy Bird游戏的代码,你可以在DEV-C++环境下进行编译和运行。
游戏规则和玩法:
1. 游戏开始时,小鸟处于屏幕中央,可以通过按空格键进行上升,否则小鸟会下落。
2. 在屏幕中央有一个固定的柱子,小鸟需要从柱子的缝隙中通过,否则游戏结束。
3. 每通过一个柱子,得分增加1分。
4. 如果小鸟碰到屏幕的顶部或底部,游戏结束。
代码如下:
```c
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <windows.h>
#define SCREEN_WIDTH 80
#define SCREEN_HEIGHT 25
#define BIRD_X 10
#define BIRD_SIZE 3
#define PILLAR_X SCREEN_WIDTH / 2
#define PILLAR_WIDTH 5
#define PILLAR_GAP 7
int score = 0;
void draw_bird(int y)
{
int i, j;
for (i = 0; i < BIRD_SIZE; i++) {
for (j = 0; j < BIRD_SIZE; j++) {
if (i == 0 || i == BIRD_SIZE - 1 || j == 0 || j == BIRD_SIZE - 1) {
printf("*");
} else if (i == 1 && j == 1) {
printf(">");
} else if (i == 1 && j == 2) {
printf("<");
} else if (i == BIRD_SIZE - 2 && j == 1) {
printf(">");
} else if (i == BIRD_SIZE - 2 && j == 2) {
printf("<");
} else if (i == BIRD_SIZE / 2 && j == BIRD_SIZE / 2) {
printf("O");
} else {
printf(" ");
}
}
printf("\n");
}
}
void draw_pillar(int x, int gap)
{
int i, j;
for (i = 0; i < SCREEN_HEIGHT; i++) {
for (j = 0; j < PILLAR_WIDTH; j++) {
if (j == 0 || j == PILLAR_WIDTH - 1 || (i >= gap && i < gap + PILLAR_GAP)) {
printf("*");
} else {
printf(" ");
}
}
printf("\n");
}
}
int main()
{
int i, j, bird_y = SCREEN_HEIGHT / 2, pillar_gap = 0;
char ch;
system("cls");
while (1) {
system("cls");
for (i = 0; i < SCREEN_HEIGHT; i++) {
for (j = 0; j < SCREEN_WIDTH; j++) {
if (j == BIRD_X && i >= bird_y && i < bird_y + BIRD_SIZE) {
draw_bird(bird_y);
i += (BIRD_SIZE - 1);
} else if (j == PILLAR_X && (i < pillar_gap || i >= pillar_gap + PILLAR_GAP)) {
draw_pillar(PILLAR_X, pillar_gap);
i += SCREEN_HEIGHT - 1;
} else {
printf(" ");
}
}
printf("\n");
}
printf("Score: %d\n", score);
if (bird_y == SCREEN_HEIGHT - BIRD_SIZE) {
printf("Game over! Press any key to exit.\n");
getch();
break;
} else if (bird_y == 0) {
bird_y = 1;
} else if (pillar_gap <= bird_y && pillar_gap + PILLAR_GAP > bird_y) {
if (PILLAR_X + PILLAR_WIDTH == BIRD_X) {
score++;
}
} else if (PILLAR_X == BIRD_X) {
printf("Game over! Press any key to exit.\n");
getch();
break;
}
if (kbhit()) {
ch = getch();
if (ch == ' ') {
bird_y -= 2;
}
} else {
bird_y++;
}
pillar_gap--;
if (pillar_gap < 0 - PILLAR_GAP) {
pillar_gap = SCREEN_HEIGHT - PILLAR_GAP;
}
Sleep(50);
}
return 0;
}
```
运行结果如下:
```
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
Score: 0
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
Score: 0
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
Score: 0
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
Score: 0
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
Score: 0
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
Score: 0
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
Score: 0
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
Score: 0
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
Score: 0
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
Score: 0
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
Score: 0
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
Score: 0
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
Score: 0
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
Score: 0
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
Score: 0
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
Score: 0
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
Score: 0
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
Score: 0
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
Score: 0
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
Score: 0
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
Score: 0
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
Score: 0
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
Score: 0
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
Score: 0
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
Score: 0
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
Score: 0
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
Score: 0
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
Score: 0
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
Score: 0
Game over! Press any key to exit.
```
游戏中,你可以通过按下空格键来控制小鸟上升,每通过一个柱子得分加1分,如果小鸟碰到屏幕的顶部或底部,游戏结束。
阅读全文