Permainan

 #include <iostream>

#include <windows.h>

#include <conio.h>

#include <time.h>

#include <stdlib.h>

#define KOTAK char(178)

#define BATAS_KIRI 16

#define BATAS_KANAN 59

#define BATANG char(219)

using namespace std;

void gotoxy(int x, int y)

{

        COORD koord = {x, y};

        SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), koord);

}

void Credit()

{

    gotoxy(BATAS_KANAN + 5, 15); cout << "CONTROL";

    gotoxy(BATAS_KANAN + 5, 16); cout << "W : ATAS ";

    gotoxy(BATAS_KANAN + 5, 17); cout << "S : BAWAH";

    gotoxy(BATAS_KANAN + 5, 18); cout << "D : KANAN";

    gotoxy(BATAS_KANAN + 5, 19); cout << "A : KIRI";

    gotoxy(BATAS_KANAN + 5, 22); cout << "";

    gotoxy(BATAS_KANAN + 5, 23); cout << "";

}

void gambarLatar()

{

    for(int i = 0; i <= 24; i++)

    {

        gotoxy(BATAS_KIRI + 3, i); cout << BATANG;

        gotoxy(BATAS_KANAN - 2, i); cout << BATANG;

        gotoxy(BATAS_KIRI, i); cout << KOTAK << KOTAK;

        gotoxy(BATAS_KANAN, i); cout << KOTAK << KOTAK;

    }

}

void gambarJalan(int spasi, int awal)

{

      for(int i = awal + 1; i <= 24; i += spasi)

      {

              gotoxy(BATAS_KIRI, i - 1); cout << KOTAK << KOTAK;

              gotoxy(BATAS_KANAN, i - 1); cout << KOTAK << KOTAK;

              gotoxy(BATAS_KIRI, i); cout << "  ";

              gotoxy(BATAS_KANAN, i); cout << "  ";

      }

}

int abs(int a)

{

    if(a < 0) return -a;

}

void batangDarah(int a)

{

    gotoxy(1, 4);

    cout << "HEALTH : ";

    gotoxy(1, 5);

    for(int i = 1; i <= a / 10; i++)

    {

        cout << BATANG;

    }

    for(int i = 1; i <= 10 - (a / 10); i++)

    {

        cout << KOTAK;

    }

}

void jarak(int iJarak)

{

    gotoxy(1, 7);

    cout << "JARAK :";

    gotoxy(1, 8);

    cout << iJarak;

}

void Speed(int speed)

{

    gotoxy(1, 10);

    cout << "KECEPATAN :";

    gotoxy(1, 11);

    cout << "    ";

    gotoxy(1, 11);

    cout << speed;

}

class car {

  public :

    int x,y,darah, kebal;

    bool exis;

    string gambar[5];

    car()

    {

        x = 25;

        y = 20;

        exis = false;

        darah = 100;

        kebal = 0;

        gambar[0] = " - ";

        gambar[1] = "0+1";

        gambar[2] = " + ";

        gambar[3] = "0+1";

    }

    void setPos(int a, int b)

    {

        x = a;

        y = b;

    }

    void keKiri()

    {

      if(x > 20)

       {

         hapus();

         x -= 1;

       }

    }

    void keKanan()

    {

       if(x + 2 < 56)

       {

         hapus();

         x += 1;

       }

    }

    void keBawah()

    {

       if(y + 3 <= 23)

       {

            hapus();

            y += 1;

       }

    }

    void keAtas()

    {

        if(y + 3 > 3)

        {

            hapus();

            y -= 1;

        }

    }

    void hapus()

    {

        gotoxy(x+1, y);   cout << " ";

        gotoxy(x, y+1);   cout << "   ";

        gotoxy(x+1, y+2); cout << " ";

        gotoxy(x, y+3);   cout << "   ";

    }

    bool cekTabrakan(car a)

    {

        if((a.y >= y && a.y <= y+3) && (abs(a.x - x) < 3))

        {

            return true;

        } else

        {

            return false;

        }

    }

    void gores()

    {

        for(int i = y; i <= (y + 3); i++)

        {

            gotoxy(x, i);

            for(int j = 0; j < gambar[i - y].length(); j++)

            {

             if(gambar[i - y][j] == '0') cout << char(221); else

             if(gambar[i - y][j] == '1') cout << char(222); else

             if(gambar[i - y][j] == '+') cout << BATANG; else

             if(gambar[i - y][j] == '-') cout << char(220); else

             cout << " ";

            }

        }

    }

    void buatGambar()

    {

                 if(kebal == 0)

                 {

                   gores();

                 } else

                 {

                   if(kebal % 2 == 0)

                   {

                    gores();

                   }

                   else {

                    hapus();

                   }

                 }

    }

};

void tulisTengah(string s, int y)

{

    gotoxy(40 - (s.length() / 2), y);

    cout << s;

}

void tidur(int a)

{

    time_t now = clock();

    while((clock() - now) < a) {};

}

void opening()

{

    tulisTengah("Bersedia", 10);

    tidur(1000);

    tulisTengah("        ", 10);

    tulisTengah("3", 10);

    tidur(1000);

    tulisTengah("2", 10);

    tidur(1000);

    tulisTengah("1", 10);

    tidur(1000);

    tulisTengah(" ", 10);

}

int main()

{

 int spk = 0;

 float fSpk = 0;

  while(spk <= 0)

  {

    system("cls");

    tulisTengah("RACED CAR by unlimited group v 1.0", 10);

    tulisTengah("==============================", 11);

    tulisTengah("Masukkan Tingkat Kesulitan Berupa Angka", 13);

    tulisTengah("Semakin besar nilai angka-nya semakin mudah permainan", 14);


 


    tulisTengah("--            FINDOMEDIA             --", 20);


 


    tulisTengah("Masukkan angka [ dimulai dari 0 ]: ", 15);

    cin >> fSpk;

    spk = (int) fSpk;

  }

  system("cls");

    srand(clock());

    car pemainUtama;

    car enemy[4];

    char control = ' ';

    enemy[0].setPos(20 + rand()%34, 0);

    enemy[1].setPos(20 + rand()%34, 0);

    enemy[2].setPos(20 + rand()%34, 0);

    enemy[0].exis = true;

    bool mulai = false;

    int spasi = 8, awal = 0, nMusuh = 0, iJarak = 0;

    batangDarah(pemainUtama.darah);

    float before = clock();

    gambarLatar();

    Credit();

    while(pemainUtama.darah > 0 && (spk - iJarak / 200) > 0)

    {

        Speed(spk - iJarak / 200);

        iJarak++;

        if(awal > 8) awal = 0;

        gambarJalan(spasi, awal);

        awal++;

        if(kbhit())

            {

                control = getch();

                control = toupper(control);

            }

        switch (control)

            {

                case 'W' : pemainUtama.keAtas(); break;

                case 'S' : pemainUtama.keBawah(); break;

                case 'D' : pemainUtama.keKanan(); break;

                case 'A' : pemainUtama.keKiri(); break;

            }

        pemainUtama.buatGambar();

        //generate musuh

        for(int i = 0; i <= 2; i++)

        {system ("color e");

           if(enemy[i].exis == true)

           {

            enemy[i].keBawah();

            enemy[i].buatGambar();

            if(enemy[i].y > 20)

            {

                enemy[i].hapus();

                enemy[i].y = 0;

                enemy[i].x = 20 + rand()%34;

                enemy[i].exis = false;

                nMusuh++;

            }

            if(enemy[i].cekTabrakan(pemainUtama))

            {

                if(pemainUtama.kebal == 0)

                {

                    pemainUtama.darah -= 10;

                    pemainUtama.kebal = 45;

                    batangDarah(pemainUtama.darah);

                }

            }

           } else

           {

               nMusuh = i - 1;

               if(nMusuh < 0) nMusuh = 3;

               if(enemy[nMusuh].y >= 7)

               {

                   enemy[i].exis = true;

               }

           }

           if(pemainUtama.kebal > 0)

           {

               pemainUtama.kebal--;

           }

           jarak(iJarak);

        }

        if(mulai == false)

        {

            opening();

            mulai = true;

        }

        control = ' ';

        tidur(spk - iJarak / 200);

    }

    spk -= iJarak / 200;

    system("cls");

    gotoxy(20, 12); cout << "Game End - Your Score    : " << (iJarak / spk) + pemainUtama.darah * 100;

    gotoxy(20, 13); cout << "Total Waktu Bermain      : " << (clock() - before) / 1000 << " Detik";


 


    tulisTengah("=========================================", 16);


 


    tulisTengah("Thank You for Play AND Join Our Game. ", 17);

    tulisTengah("Findomedia             ", 18);

    tulisTengah("----------", 19);

    tulisTengah("=========================================", 20);

    tidur(5000);

    getch();

}

Share on :

0 Response to "Permainan "

Posting Komentar