C语言实现Flappy Bird小游戏

本文实例为大家分享了C语言实现Flappy Bird小游戏的具体代码,供大家参考,具体内容如下

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

#include<time.h>

#include<Windows.h>

/********函数变量声明********/

#define PR_Box printf("■")

#define PR_Gold printf("★")

#define PR_Ag printf("☆")

#define PR_FBird printf("Ю")

#define PR_DBird printf("Ф")

#define PR_Land printf("┳┳┯")

#define PR_Bg_TL printf("╔")

#define PR_Bg_TR printf("╗")

#define PR_Bg_DL printf("╚")

#define PR_Bg_DR printf("╝")

#define PR_Bg_X printf("═")

#define PR_Bg_Y printf("║")

#define PR_Blank printf(" ");

int Grade = 1, C_Gold = 0, C_Ag = 0, Score = 0, Delay_time = 1000, Max_blank = 9, Distance = 18;

typedef struct Birds {

int x, y;

int condition;

}Birds;

Birds * Bird;

typedef struct Bg {

int x, y;

int l_blank;

int reward[9];

struct Bg * pri;

struct Bg * next;

}Bg;

Bg * Bg1;

void Position(int x, int y) {

COORD pos = {

x - 1, y - 1

};

HANDLE Out = GetStdHandle(STD_OUTPUT_HANDLE);

SetConsoleCursorPosition(Out, pos);

}

void CreatBird() {

Bird -> x = 41;

Bird -> y = 10;

Bird -> condition = 0;

}

void CreatBg() {

Bg * Bg2 = (Bg * ) malloc(sizeof(Bg));

Bg1 -> x = 90;

Bg1 -> y = 8;

Bg2 -> x = Bg1 -> x + Distance;

Bg2 -> y = 9;

Bg1 -> l_blank = Max_blank - Grade;

Bg2 -> l_blank = Max_blank - Grade;

Bg1 -> next = Bg2;

Bg1 -> pri = Bg2;

Bg2 -> next = Bg1;

Bg2 -> pri = Bg1;

}

void InsertBg(Bg * p) {

int temp;

Bg * Bgs = (Bg * ) malloc(sizeof(Bg));

Bgs -> x = p -> pri -> x + Distance;

Bgs -> l_blank = Max_blank - Grade;

srand((int) time(0));

temp = rand();

if (temp % 2 == 0) //++

{

if ((temp % 4 + p -> pri -> y + Max_blank - Grade) < 21)

Bgs -> y = p -> pri -> y + temp % 4;

else

Bgs -> y = p -> pri -> y;

} else {

if ((p -> pri -> y - temp % 4) > 2)

Bgs -> y = p -> pri -> y - temp % 4;

else

Bgs -> y = p -> pri -> y;

}

Bgs -> pri = p -> pri;

Bgs -> next = p;

p -> pri -> next = Bgs;

p -> pri = Bgs;

}

void Check_Bg(Bg * q) {

Bg * p = q;

int i = 0, temp;

while (++i <= 5) {

if (p -> x > -4)

p = p -> next;

else {

srand((int) time(0));

temp = rand();

if (temp % 2 == 0) //++

{

if ((temp % 4 + p -> y + Max_blank - Grade) < 21)

p -> y = p -> y + temp % 4;

else

p -> y = p -> y;

p -> x = p -> pri -> x + Distance;

p -> l_blank = Max_blank - Grade;

} else {

if ((p -> y - temp % 4) > 2)

p -> y = p -> y - temp % 4;

else

p -> y = p -> y;

p -> x = p -> pri -> x + Distance;

p -> l_blank = Max_blank - Grade;

}

}

}

}

void Loop_Bg(Bg * q) {

Bg * p = q;

int i = 0;

while (++i <= 5) {

p -> x = p -> x - 1;

p = p -> next;

if (Bird -> x == p -> x) {

Score += 1;

if (Score % 4 == 0 && Grade < 4)

Grade++;

}

}

}

void Prt_Bg(Bg * q) {

Bg * p = q;

int i = 0, k, j;

while (++i <= 5) {

if (p -> x > 0 && p -> x <= 78) {

for (k = 2; k < p -> y; k++) {

Position(p -> x + 1, k);

PR_Box;

PR_Box;

PR_Blank

}

Position(p -> x, p -> y);

PR_Box;

PR_Box;

PR_Box;

PR_Blank;

Position(p -> x, p -> y + p -> l_blank);

PR_Box;

PR_Box;

PR_Box;

PR_Blank;

k = k + p -> l_blank + 1;

for (k; k <= 22; k++) {

Position(p -> x + 1, k);

PR_Box;

PR_Box;

PR_Blank;

}

Position(p -> x, 23);

for (k = 1; k < Distance / 3 - 2; k++)

PR_Land;

}

p = p -> next;

if (p -> x == 0) {

for (j = 2; j < p -> y; j++) {

Position(p -> x + 1, j);

PR_Blank;

PR_Blank;

}

Position(p -> x + 1, p -> y);

PR_Blank;

PR_Blank;

PR_Blank;

Position(p -> x + 1, p -> y + Max_blank - Grade);

PR_Blank;

PR_Blank;

PR_Blank;

j = j + Max_blank - Grade + 1;

for (j; j <= 22; j++) {

Position(p -> x + 1, j);

PR_Blank;

PR_Blank;

}

}

}

}

void PrtBg() {

int i;

Position(1, 1);

PR_Bg_TL;

Position(79, 1);

PR_Bg_TR;

Position(1, 24);

PR_Bg_DL;

Position(79, 24);

PR_Bg_DR;

for (i = 3; i <= 78; i += 2) {

Position(i, 1);

PR_Bg_X;

Position(i, 24);

PR_Bg_X;

}

}

void PrtBird() {

Position(Bird -> x, Bird -> y - 1);

PR_Blank;

Position(Bird -> x, Bird -> y);

PR_FBird;

Position(38, 2);

printf("Score:%d", Score);

}

int CheckYN(Bg * q) {

Bg * p = q;

int i = 0;

while (++i <= 5) {

if (Bird -> y > 23)

return 0;

if (Bird -> x == p -> x && Bird -> y <= p -> y)

return 0;

if ((Bird -> x == p -> x || Bird -> x == p -> x + 1 || Bird -> x == p -> x + 2) && Bird -> y == p -> y)

return 0;

if (Bird -> x == p -> x && Bird -> y > p -> y + p -> l_blank)

return 0;

if ((Bird -> x == p -> x || Bird -> x == p -> x + 1 || Bird -> x == p -> x + 2) && Bird -> y == p -> y +

p -> l_blank)

return 0;

p = p -> next;

}

return 1;

}

void Prtfirst() {

printf("══════════════════════════════════════\n");

printf(" ■■ ■■\n");

printf(" ■■ ■■\n");

printf(" ■■ ■■ C语言版 Flappy Bird\n");

printf(" ■■ ■■ 瞎搞人:yyposs\n");

printf(" ■■ ■■ 瞎搞日期:2014.2\n");

printf(" ■■ ■■ 耗时:4小时\n");

printf(" ■■■ ■■ 游戏说明:\n");

printf(" ■■ 1-按上箭头使鸟起飞\n");

printf(" ■■ 2-等级越高,难度越大!\n");

printf(" Ю ■■■\n");

printf("\n");

printf(" ■■■ 欢迎各路大神一起探讨\n");

printf(" ■■\n");

printf(" ■■\n");

printf(" ■■ ■■■ 【无版权,随意修改】\n");

printf(" ■■ ■■\n");

printf(" ■■ Ф ■■\n");

printf(" ■■ ■■\n");

printf(" ■■ ■■\n");

printf(" ■■ ■■\n");

printf(" ■■ ■■\n");

printf(" ┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳\n");

system("pause");

Position(1, 1);

int i = 0;

while (i++ < 40 * 25)

PR_Blank;

}

void main() {

int i = 0;

Bird = (Birds * ) malloc(sizeof(Birds));

Bg1 = (Bg * ) malloc(sizeof(Bg));

Prtfirst();

PrtBg();

CreatBg();

InsertBg(Bg1);

InsertBg(Bg1);

InsertBg(Bg1);

CreatBird();

while (1) {

if (!CheckYN(Bg1))

break;

Check_Bg(Bg1);

Prt_Bg(Bg1);

PrtBird();

Loop_Bg(Bg1);

Bird -> y = Bird -> y + 1;

if (GetAsyncKeyState(VK_UP)) {

Position(Bird -> x, Bird -> y - 1);

PR_Blank;

Bird -> y = Bird -> y - 4;

}

while (i++ < 500); {

Sleep(100);

}

i = 0;

}

Position(38, 10);

printf("You Lost!");

Position(1, 25);

system("pause");

}

以上是 C语言实现Flappy Bird小游戏 的全部内容, 来源链接: utcz.com/z/332907.html

回到顶部