Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<fstream>
- #include<windows.h>
- #include<conio.h>
- #include<time.h>
- /*
- -timer
- -kamera
- */
- using namespace std;
- //ZMIENNE GLOBALNE
- char znaki[] = {'X',2};
- int dane[2][3] = {0};
- char poziom1[30][100] = {0}; // pierwszy poziom
- //DEKLARACJE FUNKCJI
- void czysc(string tryb = "all");
- short klawisz();
- void rysujRamka();
- void menuGlowne();
- void wczytajMape();
- void gra();
- void komunikat(string tekst);
- void Kursor(int, int);
- void zapis(int);
- void wyniki();
- void opcje()
- {
- CONSOLE_FONT_INFOEX cfi;
- cfi.cbSize = sizeof cfi;
- cfi.nFont = 0;
- cfi.dwFontSize.X = 12;
- cfi.dwFontSize.Y = 16;
- cfi.FontFamily = FF_DONTCARE;
- cfi.FontWeight = FW_NORMAL;
- SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), FALSE, &cfi);
- }
- int main()
- {
- opcje();
- rysujRamka();
- wczytajMape();
- menuGlowne();
- return 0;
- }
- void czysc(string tryb)
- {
- if( tryb == "menu")
- {
- for(int i=4; i<31 ;i++)
- {
- for(int z=80; z<99 ;z++)
- {
- Kursor(z,i);
- cout << " ";
- }
- }
- return;
- }
- else if(tryb == "chat")
- {
- for(int i=32; i<39 ;i++)
- {
- for(int z=1; z<79 ;z++)
- {
- Kursor(z,i);
- cout << " ";
- }
- }
- return;
- }
- else if(tryb == "gra")
- {
- for(int i=1; i<31 ;i++)
- {
- for(int z=1; z<79 ;z++)
- {
- Kursor(z,i);
- cout << " ";
- }
- }
- return;
- }
- else if(tryb == "bezramki")
- {
- for(int i=4; i<31 ;i++)
- {
- for(int z=80; z<99 ;z++)
- {
- Kursor(z,i);
- cout << " ";
- }
- }
- for(int i=32; i<39 ;i++)
- {
- for(int z=1; z<79 ;z++)
- {
- Kursor(z,i);
- cout << " ";
- }
- }
- for(int i=1; i<31 ;i++)
- {
- for(int z=1; z<79 ;z++)
- {
- Kursor(z,i);
- cout << " ";
- }
- }
- return;
- }
- else if("all")
- {
- system("cls");
- return;
- }
- else
- {
- return;
- }
- }
- short klawisz()
- {
- int k = getch();
- k=static_cast<int>(k);
- if(k==224) //jeśli strzałki
- {
- k=getch(); //która strzałka? 80-w dol, 72-wgórę
- k=static_cast<int>(k); // zamiana na typ int
- return k;
- }
- return k;
- }
- void rysujRamka()
- {
- int dl_x = 100;
- int dl_y = 40;
- for(int i=1; i <= dl_y ;i++)
- {
- for(int z=1; z <= dl_x ;z++)
- {
- if(i == 1 && z == 1) //lewy górny róg
- cout << (char)201;
- else if(i == 1 && z == dl_x) //prawy dolny róg
- cout << (char)187;
- else if(i == dl_y && z == 1) //lewy dolny róg
- cout << (char)200;
- else if(i == dl_y && z == dl_x) //prawy dolny róg
- cout << (char)188;
- else if(i == 32 && z == 1) // trójnik w lewo
- cout << (char)204;
- else if(i == 32 && z == dl_x) // trójnik w prawo
- cout << (char)185;
- else if(i == dl_y && z == 0.8*dl_x) //trójnik w górę
- cout << (char)202;
- else if(i == 1 && z == 0.8*dl_x) //trójnik w dol
- cout << (char)203;
- else if(i == 32 && z == 0.8*dl_x) //skrzyżowanie
- cout << (char)206;
- else if(i == 1 || i == dl_y || i == 32) //znaki poziome
- cout << (char)205;
- else if(z == 1 || z == dl_x || z == 0.8*dl_x) // znaki pionowe
- cout << (char)186;
- else
- cout << " ";
- }
- cout<< endl;
- }
- string okno[] = {"Autorzy:"," ", "Elfik & Karkrieg", " ","Kompilacja:"," "__DATE__};
- for(int i=0; i < 6 ;i++)
- {
- Kursor(81,32+i);
- cout<< okno[i];
- }
- return;
- }
- void wczytajMape()
- {
- fstream mapa;
- mapa.open("poziom1.txt",ios::in );
- //WPISYWANIE MAPY DO TABLICY ZNAKÓW
- for(int j=0; j<30 ;j++)
- {
- for(int i=0; i<78 ;i++)
- {
- mapa >> poziom1[j][i]; //wpisywanie do tablicy
- if ((int)poziom1[j][i]==46)
- {
- poziom1[j][i]=' ';
- }
- }
- }
- mapa.close();
- }
- void Kursor(int x,int y)
- {
- COORD pozycja = {x,y};
- SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pozycja);
- return;
- }
- void menuGlowne()
- {
- while(1)
- {
- //ZMIENNE AUTOMATYCZNE
- short wsk = 4;
- short kier = 0;
- short x = 80;
- string menu[] ={" Gra prawie RPG",
- "===================",
- " ",
- " NowaGra",
- " Wyniki",
- " Wyjscie",};
- //PRZYGOTOWANIE
- czysc("bezramki");
- //WYPISANIE MENU GŁÓWNEGO
- for(short i = 0; i < sizeof(menu)/8 ;i++)
- {
- Kursor(x,i+1);
- cout << menu[i];
- }
- //REAKCJA NA KLAWISZ
- while(true)
- {
- if(kier == 1)
- {
- Kursor(x,wsk);
- cout << " ";
- wsk--;
- }
- else if(kier == 2)
- {
- Kursor(x,wsk);
- cout << " ";
- wsk++;
- }
- Kursor(x,wsk);
- cout << " >>";
- short klik = klawisz(); // oczekiwanie na klawisz
- if(klik == 72 && wsk > 4) // strzałka w górę
- {
- kier = 1;
- }
- else if(klik == 80 && wsk < 6) // strzałka w dol
- {
- kier = 2;
- }
- else
- {
- kier = 0;
- }
- if(klik == 13) // Enter
- {
- if(wsk == 4)
- {
- gra(); // parametry startu
- break;
- }
- else if(wsk == 5)
- {
- wyniki();
- }
- else if(wsk == 6)
- {
- return;
- }
- else
- {
- return;
- }
- }
- }
- }
- }
- void gra()
- {
- //ZMIENNE AUTOMATYCZNE
- string menu[] ={" Lokacja: Poziom 1",
- " Kroki: ",
- " (W) Wyjscie ",
- " Punkty: ",
- " Klucze: "
- };
- int punkty = 0;
- int highscore = 0;
- int kroki = 0;
- short sytuacja = 0;
- //PRZYGOTOWANIE
- czysc("gra");
- czysc("menu");
- czysc("chat");
- //WYPISANIE MAPY
- for(int w=0; w < 30 ;w++)
- {
- Kursor(1,w+1);
- for(int k=0; k < 78 ;k++)
- {
- cout<< poziom1[w][k];
- }
- cout<< endl;
- }
- //WYPISANIE MENU
- Kursor(80,4);
- cout<< menu[0];
- Kursor(80,30);
- cout << menu[2];
- //STEROWANIE
- char znak[] = {' ','T','C','o','K'};
- int poz_x = 1;
- int poz_y = 21;
- char pZnak;
- bool gora,dol,lewo,prawo;
- int klucz = 0;
- bool chat = false;
- while(true)
- {
- //RESETOWANIE MOŻLIWOŚĆI
- gora = false;
- dol = false;
- lewo = false;
- prawo = false;
- for(int i = 0; i < sizeof(znak) ;i++) // sprawdzenie przestrzeni dookoła naszego położenia
- {
- if(poziom1[poz_y-1][poz_x] == znak[i])
- gora = true;
- if(poziom1[poz_y+1][poz_x] == znak[i])
- dol = true;
- if(poziom1[poz_y][poz_x-1] == znak[i])
- lewo = true;
- if(poziom1[poz_y][poz_x+1] == znak[i])
- prawo = true;
- }
- Kursor(poz_x+1,poz_y+1);
- cout << znaki[1];
- //LICZNIKI I EKWIPUNEK
- Kursor(80,22);
- cout << menu[1] << kroki;
- Kursor(80,23);
- cout << menu[3] << punkty << " * 100";
- if(klucz > 0)
- {
- Kursor(80,20);
- cout << menu[4] << klucz;
- }
- else
- {
- Kursor(80,20);
- cout << " ";
- }
- //AKCJA
- short klik = klawisz();
- if(chat == true)
- {
- czysc("chat");
- chat = false;
- }
- Kursor(poz_x+1,poz_y+1);
- cout << pZnak;
- pZnak = ' ';
- if(klik == 72 && gora == true)
- {
- poz_y--;
- kroki++;
- }
- else if(klik == 80 && dol == true)
- {
- poz_y++;
- kroki++;
- }
- else if(klik == 75 && lewo == true)
- {
- poz_x--;
- kroki++;
- }
- else if(klik == 77 && prawo == true)
- {
- poz_x++;
- kroki++;
- }
- else if(klik == 119 || klik == 87)
- return;
- if((poziom1[poz_y][poz_x+1] == '|')or(poziom1[poz_y][poz_x-1] == '|'))
- {
- if (klucz < 1)
- {
- komunikat("Drzwi - aby je otworzyc, znajdz klucz.");
- chat = true;
- }
- else
- {
- if (poziom1[poz_y][poz_x+1] == '|')
- {
- poziom1[poz_y][poz_x+1] = ' ';
- }
- else if(poziom1[poz_y][poz_x-1] == '|')
- {
- poziom1[poz_y][poz_x-1] = ' ';
- }
- komunikat("Otwarles drzwi!");
- klucz--;
- chat = true;
- }
- }
- if(poziom1[poz_y][poz_x] == 'T')
- {
- komunikat("Teleport - chcesz z niego skorzystac? T/N");
- char opcja = getch();
- if(opcja == 't' || opcja == 'T')
- {
- if(poz_x == 39 && poz_y == 12)
- {
- poz_x = 62;
- poz_y = 27;
- }
- else if(poz_x == 62 && poz_y == 12)
- {
- poz_x = 39;
- poz_y = 12;
- }
- }
- pZnak = 'T';
- chat = true;
- }
- if(poziom1[poz_y][poz_x] == 'C')
- {
- komunikat("Znalazles klucz. Mozesz teraz otworzyc drzwi");
- klucz++;
- chat = true;
- poziom1[poz_y][poz_x]=' ';
- }
- if(poziom1[poz_y][poz_x] == 'o')
- {
- komunikat("Zebrales punkt!");
- punkty += 1;
- chat = true;
- poziom1[poz_y][poz_x]=' ';
- }
- if(poziom1[poz_y][poz_x] == 'K')
- {
- komunikat("KONIEC!");
- Sleep(1000);
- czysc("bezramki");
- highscore = punkty*100 - kroki;
- if(highscore <= 0)
- {
- highscore = 0;
- }
- zapis(highscore);
- return;
- }
- } //koniec pętli 'while'
- }
- void zapis(int wynik)
- {
- string nick;
- czysc("bezramki");
- Kursor(2,2);
- cout << "Twoj wynik: " << wynik;
- Kursor(2,3);
- cout << "Podaj nick: ";
- cin >> nick;
- fstream save;
- save.open("highscores.txt", ios::app);
- save << endl << nick << " " << wynik;
- Sleep(1000);
- save.close();
- }
- void wyniki()
- {
- string nazwa[10] = {""};
- int wynik[10] = {0};
- int l;
- string imie;
- int liczba;
- czysc("gra");
- fstream plik;
- plik.open("highscores.txt");
- for(l = 0; plik.is_open() ;l++)
- {
- if(plik.eof())
- {
- plik.close();
- break;
- }
- plik >> imie >> liczba;
- nazwa[l] = imie;
- wynik[l] = liczba;
- }
- for(int i = 0; i < l ;i++)
- {
- for(int z = 0; z < l ;z++)
- {
- if(wynik[z] < wynik[z+1])
- {
- swap(wynik[z],wynik[z+1]);
- swap(nazwa[z],nazwa[z+1]);
- }
- }
- }
- Kursor(2,2);
- cout << "Najlepsze wyniki: ";
- for(int i = 0; i < 10 ;i++)
- {
- Kursor(2,i+5);
- if(wynik[i] == 0)
- {
- continue;
- }
- else
- {
- cout << i+1 << ". " << nazwa[i] << " - " << wynik[i];
- }
- }
- Kursor(2,30);
- cout<< "(W)Wyjscie";
- while(1)
- {
- char w = getch();
- if(w == 'w' || w == 'W')
- {
- czysc("gra");
- return;
- }
- }
- }
- void komunikat(string tekst)
- {
- Kursor(2,33);
- cout << tekst;
- return;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement