The Sky Is Falling!!!, Game di Program C++

Contoh  game yang dibuat dengan c++
Mungkin dapat kalian coba :)



 
#include 
#include 
#include 
#include 

enum Direction
{
 Left,
 Right,
};

struct Apple
{
 int Xpos;
 int Ypos;
 BOOL Falling;
}Apple[500];

struct Hero
{
 int Xpos;
 int Ypos;
 Direction Direction;
 int Frame;
}Hero;

CHAR _Apple[9][11] =
{
 "   ## ####",
 "  # # #  #",
 "   ### ## ",
 " ######## ",
 "#   #   # ",
 "#       # ",
 " #     #  ",
 " #  #  #  ",
 "  ## ##   ",
};

CHAR Hero_RightA[26][20] =
{
 "      #####        ",
 "     #     #       ",
 "    #       #      ",
 "   #       # #     ",
 "   #       # ##    ",
 "   #           #   ",
 "   #           #   ",
 "   #    #    ##    ",
 "    #    ## #      ",
 "     #     #       ",
 "     #######       ",
 "     #     #       ",
 "     #  #  #       ",
 "     ##  # #       ",
 "     ##  # #       ",
 "     ##  # #       ",
 "     #######       ",
 "      #  ##        ",
 "      ### #        ",
 "      #   #        ",
 "      #   #        ",
 "      ######       ",
 "      #     #      ",
 "      #     #      ",
 "      #######      ",
};

CHAR Hero_RightB[26][20] =
{
 "      #####        ",
 "     #     #       ",
 "    #       #      ",
 "   #       # #     ",
 "   #       # ##    ",
 "   #           #   ",
 "   #           #   ",
 "   #    #    ##    ",
 "    #    ## #      ",
 "     #     #       ",
 "     #######       ",
 "     #     #       ",
 "     #   ###       ",
 "    ##      ##     ",
 "   # #  #    #     ",
 "   # #  ##  # #    ",
 "    ######### #    ",
 "     #      ##     ",
 "    #       # ###  ",
 "   #    #    #   # ",
 "  # ## ### ##    # ",
 " #    ##  #     ## ",
 " ##     #  #  ##   ",
 "   ##   #   ##     ",
 "     ###           ",
};

CHAR Hero_LeftA[26][20] = 
{
 "        #####      ",
 "       #     #     ",
 "      #       #    ",
 "     # #       #   ",
 "    ## #       #   ",
 "   #           #   ",
 "   #           #   ",
 "    ##    #    #   ",
 "      # ##    #    ",
 "       #     #     ",
 "       #######     ",
 "       #     #     ",
 "       #  #  #     ",
 "       # #  ##     ",
 "       # #  ##     ",
 "       # #  ##     ",
 "       #######     ",
 "        ##  #      ",
 "        # ###      ",
 "        #   #      ",
 "        #   #      ",
 "       ######      ",
 "      #     #      ",
 "      #     #      ",
 "      #######      ",
};

CHAR Hero_LeftB[26][20] = 
{
 "        #####      ",
    "       #     #     ",
 "      #       #    ",
 "     # #       #   ",
 "    ## #       #   ",
 "   #           #   ",
 "   #           #   ",
 "    ##    #    #   ",
 "      # ##    #    ",
 "       #     #     ",
 "       #######     ",
 "       #     #     ",
 "       ###   #     ",
 "     ##      ##    ",
 "     #    #  # #   ",
 "    # #  ##  # #   ",
 "    # #########    ",
 "     ##      #     ",
 "  ### #       #    ",
 " #   #    #    #   ",
 " #    ## ### ## #  ",
 " ##     #  ##    # ",
 "   ##  #  #     ## ",
 "     ##   #   ##   ",
 "           ###     ",
};

int Score;

void Draw_Hero()
{
 for(int Y = 0; Y < 26; Y ++)
 {
 for(int X = 0; X < 20; X ++)
 {
  COORD Pos;

  Pos.X = X + Hero.Xpos;
  Pos.Y = Y + Hero.Ypos;

  SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);

  switch(Hero.Direction)
  {
  case Left:
   if(Hero.Frame == 0)
    printf("%c", Hero_LeftA[Y][X]);
   else
    printf("%c", Hero_LeftB[Y][X]);
   break;
  case Right:
   if(Hero.Frame == 0)
    printf("%c", Hero_RightA[Y][X]);
   else
    printf("%c", Hero_RightB[Y][X]);
   break;
  }
 }
 }
}

void Erase_Hero()
{
 for(int Y = 0; Y < 26; Y ++)
 {
 for(int X = 0; X < 20; X ++)
 {
  COORD Pos;

  Pos.X = X + Hero.Xpos;
  Pos.Y = Y + Hero.Ypos;

  SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);

  printf(" ");
 }
 }
}

void Update_Hero()
{
 if(kbhit())
 {
  CHAR Ch = getch();

  switch(Ch)
  {
  case 77:
   Erase_Hero();

   Hero.Direction = Right;

   if(Hero.Xpos < 298)
    Hero.Xpos += 4;

   if(Hero.Frame == 0)
    Hero.Frame = 1;
   else
    Hero.Frame = 0;

   Draw_Hero();
   break;
  case 75:
   Erase_Hero();

   Hero.Direction = Left;

   if(Hero.Xpos > 0)
    Hero.Xpos -= 4;

   if(Hero.Frame == 0)
    Hero.Frame = 1;
   else
    Hero.Frame = 0;

   Draw_Hero();
   break;
  case 27:
   exit(0);
   break;
  }
 }
}

void Draw_Apple(int Xpos, int Ypos)
{
 for(int Y = 0; Y < 9; Y ++)
 {
 for(int X = 0; X < 11; X ++)
 {
  COORD Pos;

  Pos.X = X + Xpos;
  Pos.Y = Y + Ypos;

  SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);

  printf("%c", _Apple[Y][X]);
 }
 }
}

void Erase_Apple(int Xpos, int Ypos)
{
 for(int Y = 0; Y < 9; Y ++)
 {
 for(int X = 0; X < 11; X ++)
 {
  COORD Pos;

  Pos.X = X + Xpos;
  Pos.Y = Y + Ypos;

  SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);

  printf(" ");
 }
 }
}

void Update_Apples()
{
 for(int i = 0; i < 500; i ++)
 {
  if(Apple[i].Falling)
  {
   if(Apple[i].Ypos < 72)
   {
    Erase_Apple(Apple[i].Xpos, Apple[i].Ypos);
    Apple[i].Ypos ++;
    Draw_Apple(Apple[i].Xpos, Apple[i].Ypos);

    if(Apple[i].Ypos >= Hero.Ypos)
    {
     if(Apple[i].Xpos >= Hero.Xpos &&
      Apple[i].Xpos + 11 <= Hero.Xpos + 20)
     {
      Score ++;

      if(Score >= 10)
      {
       MessageBox(NULL, "*** [ Congratulations!!! ] *** You collected 10 apples! You win! (:", NULL,
        MB_OK);

       exit(0);
      }
     }
    }
   }
   else
   {
    Erase_Apple(Apple[i].Xpos, Apple[i].Ypos);
    Apple[i].Falling = FALSE;

    Apple[i + 1].Falling = TRUE;
    Apple[i + 1].Xpos = rand() % 289;
    Apple[i + 1].Ypos = 0;
   }
  }
 }
}

void main()
{
 srand(GetTickCount());

 CONSOLE_CURSOR_INFO CursorInfo;

 CursorInfo.bVisible = FALSE;
 CursorInfo.dwSize = 1;

 SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &CursorInfo);

 COORD Size;

 Size.X = 320;
 Size.Y = 100;

 SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), Size);
 
 Hero.Xpos = 0;
 Hero.Ypos = 72;
 Hero.Direction = Right;
 Hero.Frame = 0;

 Draw_Hero();

 Apple[0].Falling = TRUE;
 Apple[0].Xpos = rand() % 289;
 Apple[0].Ypos = 0;

 Draw_Apple(Apple[0].Xpos, Apple[0].Ypos);

 while(TRUE)
 {
  Update_Hero();

  static DWORD TickCount = GetTickCount();

  if(GetTickCount() - TickCount > 50)
  {
   Update_Apples();
   TickCount = GetTickCount();
  }
 }
}

Author : Brenton Andrew Saunders  ( http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=9005&lngWId=3 )
Description: The point of the game is to catch the apples as the fall from the sky. Catch 10 to win. The controls are simple. Left Arrow - Move Left, Right Arrow - Move Right, Escape Key - Quit.

"Berbagilah ilmu yang kita punya"
Previous
Next Post »

2 komentar

Write komentar

Berkomentarlah yang saling membangun dan sesuai topik yang diisajikan,
Dilarang menyematkan hal yang berbau link dan berkomentar kotor.
EmoticonEmoticon