C language Flappy Bird game

  • 2020-06-12 10:12:25
  • OfStack

This article shares the specific code of Flappy Bird game with C language for your reference. The specific content is as follows


#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
#include<Windows.h>
/******** Function variable declaration ********/
#define PR_Box printf(" s ")
#define PR_Gold printf(" u ")
#define PR_Ag printf(" Do things ")
#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("  S s   S s \n");
  printf("  S s   S s \n");
  printf("  S s   S s  C Language version  Flappy Bird\n");
  printf("  S s   S s   Blind person: yyposs\n");
  printf("  S s   S s   Date: 2014.2\n");
  printf("  S s   S s   Time: 4 hours \n");
  printf("  S s s   S s   Game description: \n");
  printf("  S s  1- Press the arrow up to make the bird take off \n");
  printf("  S s  2- The higher the level, the harder it is! \n");
  printf("  Ю   S s s \n");
  printf("\n");
  printf("  S s s   Welcome to all the great gods 1 The discussion \n");
  printf("  S s \n");
  printf("  S s \n");
  printf("  S s   S s s   [Copyright free, modify at will] \n");
  printf("  S s   S s \n");
  printf("  S s   Ф   S s \n");
  printf("  S s   S s \n");
  printf("  S s   S s \n");
  printf("  S s   S s \n");
  printf("  S s   S s \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");
}

Related articles: