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>
- #define kursor SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pozycja)
- #define kursor1 SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pozycja1)
- #define uKursor SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),
- /*
- -timer
- -kamera
- */
- using namespace std;
- //ZMIENNE GLOBALNE
- char znaki[] = {'X',2,'C','T','|','K','o'};
- int dane[2][3] = {0};
- char poziom1[30][100] = {0}; // pierwszy poziom
- bool klucz = false;
- int punkty = 0;
- int highscore = 0;
- //DEKLARACJE FUNKCJI
- void czysc(string tryb = "all");
- short klawisz();
- void rysujRamka();
- void menuGlowne();
- void wczytajMape();
- void gra(/*short slot,*/ int x=4, int y=19);
- void komunikat(string tekst);
- /*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=1; i<31 ;i++)
- {
- for(int z=80; z<99 ;z++)
- {
- COORD poz = {z,i};
- uKursor poz);
- cout << " ";
- }
- }
- return;
- }
- else if(tryb == "chat")
- {
- for(int i=32; i<39 ;i++)
- {
- for(int z=1; z<79 ;z++)
- {
- COORD poz = {z,i};
- uKursor poz);
- cout << " ";
- }
- }
- return;
- }
- else if(tryb == "gra")
- {
- for(int i=1; i<31 ;i++)
- {
- for(int z=1; z<79 ;z++)
- {
- COORD poz = {z,i};
- uKursor poz);
- cout << " ";
- }
- }
- return;
- }
- else if(tryb == "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 dół, 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 dół
- 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++)
- {
- COORD poz = {81,32+i};
- uKursor poz);
- cout<< okno[i];
- }
- return;
- }
- void menuGlowne()
- {
- while(true)
- {
- short wsk = 1;
- string menu[] ={" Gra prawie RPG",
- " ",
- " NowaGra",
- " NarazieNic",
- " Wyjscie",};
- czysc("menu");
- czysc("gra");
- czysc("chat");
- //WYPISANIE MENU GŁÓWNEGO
- for(short i = 0; i < 5 ;i++)
- {
- COORD poz = {80,1+i};
- uKursor poz);
- cout << menu[i];
- }
- //REAKCJA NA KLAWISZ
- while(true)
- {
- COORD poz = {81,wsk+2};
- uKursor poz);
- cout << " >>";
- short klik = klawisz(); // oczekiwanie na klawisz
- if(klik == 13) // Enter
- {
- if(wsk == 1)
- {
- gra();
- break;
- }
- else if(wsk == 2)
- {
- }
- else if(wsk == 3)
- {
- return;
- }
- else
- {
- return;
- }
- }
- else if(klik == 72 && wsk > 1) // strzałka w górę
- {
- wsk--;
- uKursor poz);
- cout << " ";
- }
- else if(klik == 80 && wsk < 3) // strzałka w dół
- {
- wsk++;
- uKursor poz);
- cout << " ";
- }
- }
- }
- }
- void wczytajMape()
- {
- fstream mapa;
- mapa.open("poziom1.txt",ios::in );
- for(int j=0; j<30 ;j++)
- {
- for(int i=0; i<78 ;i++)
- {
- mapa >> poziom1[j][i]; //wpisywanie do tablicy
- int x;
- x=(int)poziom1[j][i];
- if (x==46)
- {
- x=32;
- poziom1[j][i]=(char)x;
- }
- }
- }
- mapa.close();
- }
- void gra(/*short slot,*/ int x, int y)
- {
- int poz_x = x;
- int poz_y = y;
- int kroki = 0;
- czysc("gra");
- czysc("menu");
- czysc("chat");
- string menu[] ={" Gra prawie RPG",
- "===================",
- " ",
- " M(e)nu Opcji:",
- " ",
- " *Ekwipunek",
- " *Wyjdz ",
- " Kroki: ",
- " Lokacja: Poziom 1",
- };
- //WYPISANIE MENU GŁÓWNEGO
- for(short i = 0; i < 9 ;i++)
- {
- if(i>6)
- {
- COORD poz = {80,20+i};
- uKursor poz);
- cout << menu[i];
- }
- else
- {
- COORD poz = {80,1+i};
- uKursor poz);
- cout << menu[i];
- }
- }
- //WYPISANIE EKRANU
- for(int w=0; w < 30 ;w++)
- {
- COORD poz = {1,w+1};
- uKursor poz);
- for(int k=0; k < 78 ;k++)
- {
- if(w == poz_y && k == poz_x)
- {
- cout << znaki[1];
- }
- else
- {
- cout<< poziom1[w][k];
- }
- }
- cout<< endl;
- }
- //ZEGAR
- //STEROWANIE
- short tryb = 0;
- short sytuacja = 0;
- while(true)
- {
- short klik = klawisz();
- if(klik == 101 || klik == 69) tryb = 1;
- if(tryb == 0)
- {
- COORD pozycja = {poz_x+1,poz_y+1};
- kursor;
- cout << znaki[1];
- if(klik == 72 && (poziom1[poz_y-1][poz_x] == (char)32 || poziom1[poz_y-1][poz_x] == znaki[2] || poziom1[poz_y-1][poz_x] == znaki[3] || poziom1[poz_y-1][poz_x] == znaki[5] || poziom1[poz_y-1][poz_x] == znaki[6] ))
- {
- kursor;
- if(poziom1[poz_y][poz_x] == znaki[3])cout<<"T";
- else cout << " ";
- poz_y--;
- kroki++;
- }
- else if(klik == 80 && (poziom1[poz_y+1][poz_x] == (char)32 || poziom1[poz_y+1][poz_x] == znaki[2] || poziom1[poz_y+1][poz_x] == znaki[3] || poziom1[poz_y+1][poz_x] == znaki[5] || poziom1[poz_y+1][poz_x] == znaki[6] ))
- {
- kursor;
- if(poziom1[poz_y][poz_x] == znaki[3])cout<<"T";
- else cout << " ";
- poz_y++;
- kroki++;
- }
- else if(klik == 75 && (poziom1[poz_y][poz_x-1] == (char)32 || poziom1[poz_y][poz_x-1] == znaki[2] || poziom1[poz_y][poz_x-1] == znaki[3] || poziom1[poz_y][poz_x-1] == znaki[5] || poziom1[poz_y][poz_x-1] == znaki[6] ))
- {
- kursor;
- if(poziom1[poz_y][poz_x] == znaki[3])cout<<"T";
- else cout << " ";
- poz_x--;
- kroki++;
- }
- else if(klik == 77 && (poziom1[poz_y][poz_x+1] == (char)32 || poziom1[poz_y][poz_x+1] == znaki[2] || poziom1[poz_y][poz_x+1] == znaki[3] || poziom1[poz_y][poz_x+1] == znaki[5] || poziom1[poz_y][poz_x+1] == znaki[6] ))
- {
- kursor;
- if(poziom1[poz_y][poz_x] == znaki[3])cout<<"T";
- else cout << " ";
- poz_x++;
- kroki++;
- }
- if((poziom1[poz_y][poz_x+1] == '|')or(poziom1[poz_y][poz_x-1] == '|'))
- {
- if (klucz==false){komunikat("Drzwi - aby je otworzyc, znajdz klucz.");}
- else if(klucz==true)
- {
- 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=false;
- }
- sytuacja = 1;
- }
- else if(sytuacja == 1)
- {
- COORD poz_znaki[4] = {poz_x+1,poz_y+1};
- sytuacja = 0;
- czysc("chat");
- }
- if(poziom1[poz_y][poz_x] == 'T')
- {
- komunikat("Teleport - chcesz z niego skorzystac? T/N");
- char t;
- t=getch();
- switch(t)
- {
- case 't':
- {
- if(poz_x==39 && poz_y==12){poz_x={62};poz_y={27}; czysc("chat"); break;}
- else {poz_x={39};poz_y={12};czysc("chat"); break;}
- }
- }
- czysc("chat");
- }
- if(poziom1[poz_y][poz_x] == 'C')
- {
- czysc("chat");
- komunikat("Znalazles klucz. Mozesz teraz otworzyc drzwi ( | )");
- sytuacja = 3;
- klucz = true;
- poziom1[poz_y][poz_x]=' ';
- }
- else if(sytuacja == 3)
- {
- sytuacja = 0;
- czysc("chat");
- }
- if(poziom1[poz_y][poz_x] == 'K')
- {
- komunikat("KONIEC!");
- getch();
- sytuacja = 0;
- system("cls");
- highscore = punkty-(1.5*kroki);
- if (highscore<=0)cout<<"\n\n\n\t\t\tTWOJ WYNIK: "<<"0"<<"\n\n\n";
- else cout<<"\n\n\n\t\t\tTWOJ WYNIK: "<<highscore<<"\n\n\n";
- getch();
- exit(0);
- }
- if(poziom1[poz_y][poz_x] == 'o')
- {
- czysc("chat");
- komunikat("Zebrales punkt!");
- sytuacja = 4;
- punkty+=100;
- poziom1[poz_y][poz_x]=' ';
- }
- else if(sytuacja == 4)
- {
- sytuacja = 0;
- czysc("chat");
- }
- COORD pozycja1 = {poz_x+1,poz_y+1};
- kursor1;
- cout << znaki[1];
- //KROKI
- COORD poz_kroki = {87,27};
- uKursor poz_kroki);
- cout << kroki;
- }
- else if(tryb == 1) // menu boczne
- {
- static short wsk_temp = 6;
- while(true)
- {
- COORD poz = {92,wsk_temp};
- uKursor poz);
- cout << "<<";
- short klik_temp = klawisz();
- if(klik_temp == 72 && wsk_temp > 6)
- {
- wsk_temp--;
- uKursor poz);
- cout << " ";
- }
- else if(klik_temp == 80 & wsk_temp < 7)
- {
- wsk_temp++;
- uKursor poz);
- cout << " ";
- }
- else if(klik_temp == 69 || klik_temp == 101)
- {
- uKursor poz);
- cout << " ";
- tryb = 0;
- break;
- }
- else if(klik_temp == 13)
- {
- if(wsk_temp == 6)
- {
- czysc("chat");
- if(klucz==true)komunikat("Klucz"); //Trzeba zrobić tak, żeby po wyjsciu czyściło okienko
- }
- else if(wsk_temp == 7)
- {
- return;
- }
- else if(klik_temp=='e')czysc("chat");
- }
- }
- }
- }
- }
- void komunikat(string tekst)
- {
- COORD poz = {2,33};
- uKursor poz);
- cout << tekst;
- return;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement