Advertisement
ElfikCo

GraPrawieRpg pre-alpha debug mode v 1.1

Oct 21st, 2016
333
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 12.97 KB | None | 0 0
  1. #include<iostream>
  2. #include<fstream>
  3. #include<windows.h>
  4. #include<conio.h>
  5. #include<time.h>
  6. #define kursor SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pozycja)
  7. #define kursor1 SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pozycja1)
  8. #define uKursor SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),
  9.  
  10. /*
  11.  
  12. -timer
  13. -kamera
  14.  
  15. */
  16.  
  17.  
  18. using namespace std;
  19.  
  20. //ZMIENNE GLOBALNE
  21. char znaki[] = {'X',2,'C','T','|','K','o'};
  22. int dane[2][3] = {0};
  23. char poziom1[30][100] = {0}; // pierwszy poziom
  24. bool klucz = false;
  25. int punkty = 0;
  26. int highscore = 0;
  27.  
  28.  
  29.  
  30. //DEKLARACJE FUNKCJI
  31. void czysc(string tryb = "all");
  32. short klawisz();
  33. void rysujRamka();
  34. void menuGlowne();
  35. void wczytajMape();
  36. void gra(/*short slot,*/ int x=4, int y=19);
  37. void komunikat(string tekst);
  38.  
  39. /*void opcje()
  40. {
  41.     CONSOLE_FONT_INFOEX cfi;
  42.     cfi.cbSize = sizeof cfi;
  43.     cfi.nFont = 0;
  44.     cfi.dwFontSize.X = 12;
  45.     cfi.dwFontSize.Y = 16;
  46.     cfi.FontFamily = FF_DONTCARE;
  47.     cfi.FontWeight = FW_NORMAL;
  48.     SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), FALSE, &cfi);
  49. }*/
  50.  
  51. int main()
  52. {
  53.    //opcje();
  54.    rysujRamka();
  55.    wczytajMape();
  56.        menuGlowne();
  57.  
  58.     return 0;
  59. }
  60.  
  61. void czysc(string tryb)
  62. {
  63.     if( tryb == "menu")
  64.     {
  65.         for(int i=1; i<31 ;i++)
  66.         {
  67.             for(int z=80; z<99 ;z++)
  68.             {
  69.                 COORD poz = {z,i};
  70.                 uKursor poz);
  71.                 cout << " ";
  72.             }
  73.         }
  74.         return;
  75.     }
  76.     else if(tryb == "chat")
  77.     {
  78.         for(int i=32; i<39 ;i++)
  79.         {
  80.             for(int z=1; z<79 ;z++)
  81.             {
  82.                 COORD poz = {z,i};
  83.                 uKursor poz);
  84.                 cout << " ";
  85.             }
  86.         }
  87.         return;
  88.     }
  89.     else if(tryb == "gra")
  90.     {
  91.         for(int i=1; i<31 ;i++)
  92.         {
  93.             for(int z=1; z<79 ;z++)
  94.             {
  95.                 COORD poz = {z,i};
  96.                 uKursor poz);
  97.                 cout << " ";
  98.             }
  99.         }
  100.         return;
  101.     }
  102.     else if(tryb == "all")
  103.     {
  104.         system("cls");
  105.         return;
  106.     }
  107.     else
  108.         return;
  109. }
  110.  
  111. short klawisz()
  112. {
  113.     int k = getch();
  114.     k=static_cast<int>(k);
  115.  
  116.     if(k==224) //jeśli strzałki
  117.     {
  118.         k=getch();  //która strzałka? 80-w dół, 72-wgórę
  119.         k=static_cast<int>(k); // zamiana na typ int
  120.         return k;
  121.     }
  122.     return k;
  123. }
  124.  
  125. void rysujRamka()
  126. {
  127.     int dl_x = 100;
  128.     int dl_y = 40;
  129.  
  130.     for(int i=1; i <= dl_y ;i++)
  131.     {
  132.         for(int z=1; z <= dl_x ;z++)
  133.         {
  134.             if(i == 1 && z == 1) //lewy górny róg
  135.                 cout << (char)201;
  136.             else if(i == 1 && z == dl_x) //prawy dolny róg
  137.                 cout << (char)187;
  138.             else if(i == dl_y && z == 1) //lewy dolny róg
  139.                 cout << (char)200;
  140.             else if(i == dl_y && z == dl_x) //prawy dolny róg
  141.                 cout << (char)188;
  142.             else if(i == 32 && z == 1) // trójnik w lewo
  143.                 cout << (char)204;
  144.             else if(i == 32 && z == dl_x) // trójnik w prawo
  145.                 cout << (char)185;
  146.             else if(i == dl_y && z == 0.8*dl_x) //trójnik w górę
  147.                 cout << (char)202;
  148.             else if(i == 1 && z == 0.8*dl_x) //trójnik w dół
  149.                 cout << (char)203;
  150.             else if(i == 32 && z == 0.8*dl_x) //skrzyżowanie
  151.                 cout << (char)206;
  152.             else if(i == 1 || i == dl_y || i == 32) //znaki poziome
  153.                 cout << (char)205;
  154.             else if(z == 1 || z == dl_x || z == 0.8*dl_x) // znaki pionowe
  155.                 cout << (char)186;
  156.             else
  157.                 cout << " ";
  158.         }
  159.         cout<< endl;
  160.     }
  161.  
  162.     string okno[] = {"Autorzy:"," ", "Elfik & Karkrieg", " ","Kompilacja:"," "__DATE__};
  163.  
  164.     for(int i=0; i < 6 ;i++)
  165.     {
  166.         COORD poz = {81,32+i};
  167.         uKursor poz);
  168.         cout<< okno[i];
  169.     }
  170.  
  171.     return;
  172. }
  173.  
  174. void menuGlowne()
  175. {
  176.     while(true)
  177.     {
  178.  
  179.     short wsk = 1;
  180.     string menu[] ={"  Gra prawie RPG",
  181.                     " ",
  182.                     "     NowaGra",
  183.                     "     NarazieNic",
  184.                     "     Wyjscie",};
  185.     czysc("menu");
  186.     czysc("gra");
  187.     czysc("chat");
  188.  
  189. //WYPISANIE MENU GŁÓWNEGO
  190.         for(short i = 0; i < 5 ;i++)
  191.         {
  192.             COORD poz = {80,1+i};
  193.             uKursor poz);
  194.             cout << menu[i];
  195.         }
  196.  
  197. //REAKCJA NA KLAWISZ
  198.  
  199.     while(true)
  200.     {
  201.         COORD poz = {81,wsk+2};
  202.         uKursor poz);
  203.         cout << " >>";
  204.  
  205.         short klik = klawisz(); //  oczekiwanie na klawisz
  206.  
  207.         if(klik == 13) // Enter
  208.         {
  209.             if(wsk == 1)
  210.             {
  211.                 gra();
  212.                 break;
  213.             }
  214.             else if(wsk == 2)
  215.             {
  216.  
  217.             }
  218.             else if(wsk == 3)
  219.             {
  220.                 return;
  221.             }
  222.             else
  223.             {
  224.                 return;
  225.             }
  226.         }
  227.         else if(klik == 72 && wsk > 1) // strzałka w górę
  228.         {
  229.             wsk--;
  230.             uKursor poz);
  231.             cout << "   ";
  232.         }
  233.         else if(klik == 80 && wsk < 3) // strzałka w dół
  234.         {
  235.             wsk++;
  236.             uKursor poz);
  237.             cout << "   ";
  238.         }
  239.     }
  240.     }
  241. }
  242.  
  243.  
  244. void wczytajMape()
  245. {
  246.     fstream mapa;
  247.     mapa.open("poziom1.txt",ios::in );
  248.  
  249.     for(int j=0; j<30 ;j++)
  250.     {
  251.         for(int i=0; i<78 ;i++)
  252.         {
  253.             mapa >> poziom1[j][i]; //wpisywanie do tablicy
  254.             int x;
  255.             x=(int)poziom1[j][i];
  256.  
  257.             if (x==46)
  258.             {
  259.                 x=32;
  260.                 poziom1[j][i]=(char)x;
  261.             }
  262.         }
  263.     }
  264.     mapa.close();
  265. }
  266.  
  267. void gra(/*short slot,*/ int x, int y)
  268. {
  269.     int poz_x = x;
  270.     int poz_y = y;
  271.     int kroki = 0;
  272.  
  273.     czysc("gra");
  274.     czysc("menu");
  275.     czysc("chat");
  276.  
  277.     string menu[] ={"  Gra prawie RPG",
  278.                     "===================",
  279.                     " ",
  280.                     " M(e)nu Opcji:",
  281.                     " ",
  282.                     " *Ekwipunek",
  283.                     " *Wyjdz    ",
  284.                     " Kroki: ",
  285.                     " Lokacja: Poziom 1",
  286.                         };
  287.  
  288. //WYPISANIE MENU GŁÓWNEGO
  289.         for(short i = 0; i < 9 ;i++)
  290.         {
  291.             if(i>6)
  292.             {
  293.                 COORD poz = {80,20+i};
  294.                 uKursor poz);
  295.                 cout << menu[i];
  296.             }
  297.             else
  298.             {
  299.                 COORD poz = {80,1+i};
  300.                 uKursor poz);
  301.                 cout << menu[i];
  302.             }
  303.         }
  304.  
  305. //WYPISANIE EKRANU
  306.  
  307.         for(int w=0; w < 30 ;w++)
  308.         {
  309.             COORD poz = {1,w+1};
  310.             uKursor poz);
  311.  
  312.             for(int k=0; k < 78 ;k++)
  313.             {
  314.                 if(w == poz_y && k == poz_x)
  315.                 {
  316.                     cout << znaki[1];
  317.                 }
  318.                 else
  319.                 {
  320.                     cout<< poziom1[w][k];
  321.                 }
  322.             }
  323.             cout<< endl;
  324.         }
  325.  
  326. //ZEGAR
  327.  
  328.  
  329. //STEROWANIE
  330.     short tryb = 0;
  331.     short sytuacja = 0;
  332.  
  333.     while(true)
  334.     {
  335.         short klik = klawisz();
  336.         if(klik == 101 || klik == 69) tryb = 1;
  337.  
  338.     if(tryb == 0)
  339.     {
  340.         COORD pozycja = {poz_x+1,poz_y+1};
  341.         kursor;
  342.         cout << znaki[1];
  343.  
  344.         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] ))
  345.         {
  346.             kursor;
  347.             if(poziom1[poz_y][poz_x] == znaki[3])cout<<"T";
  348.             else cout << " ";
  349.             poz_y--;
  350.             kroki++;
  351.         }
  352.         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] ))
  353.         {
  354.             kursor;
  355.             if(poziom1[poz_y][poz_x] == znaki[3])cout<<"T";
  356.             else cout << " ";
  357.             poz_y++;
  358.             kroki++;
  359.         }
  360.         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] ))
  361.         {
  362.             kursor;
  363.             if(poziom1[poz_y][poz_x] == znaki[3])cout<<"T";
  364.             else cout << " ";
  365.             poz_x--;
  366.             kroki++;
  367.         }
  368.         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] ))
  369.         {
  370.             kursor;
  371.             if(poziom1[poz_y][poz_x] == znaki[3])cout<<"T";
  372.             else cout << " ";
  373.             poz_x++;
  374.             kroki++;
  375.         }
  376.  
  377.          if((poziom1[poz_y][poz_x+1] == '|')or(poziom1[poz_y][poz_x-1] == '|'))
  378.         {
  379.  
  380.             if (klucz==false){komunikat("Drzwi - aby je otworzyc, znajdz klucz.");}
  381.             else if(klucz==true)
  382.                 {
  383.                     if (poziom1[poz_y][poz_x+1] == '|')
  384.                     {
  385.                        poziom1[poz_y][poz_x+1] = ' ';
  386.                     }
  387.                     else if(poziom1[poz_y][poz_x-1] == '|')
  388.                     {
  389.                         poziom1[poz_y][poz_x-1] = ' ';
  390.                     }
  391.                         komunikat("Otwarles drzwi!"); klucz=false;
  392.                 }
  393.             sytuacja = 1;
  394.         }
  395.         else if(sytuacja == 1)
  396.         {
  397.             COORD poz_znaki[4] = {poz_x+1,poz_y+1};
  398.             sytuacja = 0;
  399.             czysc("chat");
  400.  
  401.  
  402.         }
  403.  
  404.  
  405.        if(poziom1[poz_y][poz_x] == 'T')
  406.         {
  407.             komunikat("Teleport - chcesz z niego skorzystac? T/N");
  408.            char t;
  409.             t=getch();
  410.            switch(t)
  411.                 {
  412.                case 't':
  413.                 {
  414.                     if(poz_x==39 && poz_y==12){poz_x={62};poz_y={27}; czysc("chat"); break;}
  415.                     else {poz_x={39};poz_y={12};czysc("chat"); break;}
  416.                 }
  417.         }
  418.         czysc("chat");
  419.         }
  420.  
  421.         if(poziom1[poz_y][poz_x] == 'C')
  422.         {
  423.             czysc("chat");
  424.             komunikat("Znalazles klucz. Mozesz teraz otworzyc drzwi ( | )");
  425.             sytuacja = 3;
  426.             klucz = true;
  427.             poziom1[poz_y][poz_x]=' ';
  428.         }
  429.         else if(sytuacja == 3)
  430.         {
  431.             sytuacja = 0;
  432.  
  433.             czysc("chat");
  434.         }
  435.  
  436.          if(poziom1[poz_y][poz_x] == 'K')
  437.         {
  438.             komunikat("KONIEC!");
  439.             getch();
  440.             sytuacja = 0;
  441.             system("cls");
  442.             highscore = punkty-(1.5*kroki);
  443.             if (highscore<=0)cout<<"\n\n\n\t\t\tTWOJ WYNIK: "<<"0"<<"\n\n\n";
  444.             else cout<<"\n\n\n\t\t\tTWOJ WYNIK: "<<highscore<<"\n\n\n";
  445.             getch();
  446.             exit(0);
  447.         }
  448.  
  449.          if(poziom1[poz_y][poz_x] == 'o')
  450.         {
  451.             czysc("chat");
  452.             komunikat("Zebrales punkt!");
  453.             sytuacja = 4;
  454.             punkty+=100;
  455.             poziom1[poz_y][poz_x]=' ';
  456.         }
  457.         else if(sytuacja == 4)
  458.         {
  459.             sytuacja = 0;
  460.  
  461.             czysc("chat");
  462.         }
  463.  
  464.         COORD pozycja1 = {poz_x+1,poz_y+1};
  465.         kursor1;
  466.         cout << znaki[1];
  467.  
  468. //KROKI
  469.         COORD poz_kroki = {87,27};
  470.         uKursor poz_kroki);
  471.         cout << kroki;
  472.     }
  473.     else if(tryb == 1) // menu boczne
  474.     {
  475.         static short wsk_temp = 6;
  476.  
  477.         while(true)
  478.         {
  479.             COORD poz = {92,wsk_temp};
  480.             uKursor poz);
  481.             cout << "<<";
  482.  
  483.             short klik_temp = klawisz();
  484.  
  485.             if(klik_temp == 72 && wsk_temp > 6)
  486.             {
  487.                 wsk_temp--;
  488.                 uKursor poz);
  489.                 cout << "  ";
  490.             }
  491.             else if(klik_temp == 80 & wsk_temp < 7)
  492.             {
  493.                 wsk_temp++;
  494.                 uKursor poz);
  495.                 cout << "  ";
  496.             }
  497.             else if(klik_temp == 69 || klik_temp == 101)
  498.             {
  499.                 uKursor poz);
  500.                 cout << "  ";
  501.                 tryb = 0;
  502.                 break;
  503.             }
  504.             else if(klik_temp == 13)
  505.             {
  506.                 if(wsk_temp == 6)
  507.                 {
  508.                     czysc("chat");
  509.                     if(klucz==true)komunikat("Klucz"); //Trzeba zrobić tak, żeby po wyjsciu czyściło okienko
  510.  
  511.                 }
  512.                 else if(wsk_temp == 7)
  513.                 {
  514.                     return;
  515.                 }
  516.                 else if(klik_temp=='e')czysc("chat");
  517.             }
  518.         }
  519.     }
  520.     }
  521. }
  522.  
  523. void komunikat(string tekst)
  524. {
  525.     COORD poz = {2,33};
  526.     uKursor poz);
  527.     cout << tekst;
  528.     return;
  529. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement