pastebin - śmietnik na Twój kod

pastebin to narzędzie pozwalające na dzielenie się oraz modyfikowanie fragmentów kodów podczas rozmowy na IRCu, poprzez komunikator internetowy lub na forum.

Ta strona jest przeznaczona dla XHTML oraz CSS2 W3C. Jeżeli widzisz tą wiadomość, musisz pobrać aktualizację dla swojej przeglądarki. Przejdź do WaSP aby to zrobić.

C++ Pastebin - Wklejanie i udostępnianie fragmentów kodu Zobacz pomoc

Posted by Anonim on Fri 15th Jan 17:13 (zmodyfikowany post przez zobacz różnice)
ściągnij jako plik | nowy wpis

  1. #include <iostream>
  2. #include <ctime>   // time()
  3. #include <cstdlib> // srand()
  4.  
  5. using namespace std;
  6.  
  7. class kulka  // elementarne pole - "kulka"
  8. {
  9. private:
  10.   kulka *lewo;
  11.   kulka *prawo;
  12.   kulka *dol;
  13.   kulka *gora;
  14.   int lewo_wartosc, prawo_wartosc, dol_wartosc, gora_wartosc;  // wagi
  15.   bool czy_odwiedzona;
  16.   void wyswietl(int StartMeta);
  17. public:
  18.   kulka();
  19.   friend void PokazPlansze(kulka &plansza, int rozmiar, int wynik, int iks, int igrek)// zaprzyjaznione funkcje, 
  20.   friend int WczytajRozmiarIPokazFabule();                                               // nie dajemy dostepu
  21.   friend void TworzPlansze(int rozmiar_planszy, kulka &start);                           // do skladnikow prywatnych
  22.   friend void Graj(int rozmiar_planszy, kulka &start);                                   // nikomu innemu (enkapsulacja)
  23. };
  24.  
  25. kulka::kulka() // konstruktor
  26. {
  27.   lewo=NULL;
  28.   prawo=NULL;
  29.   dol=NULL;
  30.   gora=NULL;
  31.   czy_odwiedzona=false;
  32.   lewo_wartosc=rand()%6+5, prawo_wartosc=rand()%5+1, dol_wartosc=rand()%5+1, gora_wartosc=rand()%6+5; // losowe wartości
  33. }
  34.  
  35. void kulka::wyswietl(int StartMeta) // wyswietlanie jednej pojedynczej kulki
  36. {
  37.         if(StartMeta==0)
  38.         {
  39.                 if(!czy_odwiedzona)cout << " O ";
  40.                 else cout << "   ";
  41.         }
  42.         else
  43.         {
  44.                 (StartMeta==1) ? cout << " S " : cout << " M ";
  45.         }
  46. }
  47.  
  48. void PokazPlansze(kulka &plansza, int rozmiar, int wynik, int iks, int igrek)
  49. {
  50.         kulka *x=&plansza, *x1=x->prawo;
  51.         x=x->prawo;
  52.         cout << "\n";
  53.         for(int i=0; i<rozmiar; i++) // wiersze
  54.         {
  55.                 for(int j=0; j<rozmiar; j++) // kolumny
  56.                 {
  57.                         if(i==0 && j==0 && wynik==0) x->wyswietl(1)// wyswietlenie startu - reagujemy na wspolrzedne w lewym gorym rogu planszy
  58.                         else if(i==rozmiar-1 && j==rozmiar-1)
  59.                         {
  60.                                 if(iks==rozmiar-1 && igrek==rozmiar-1) cout << " W "; // wyswietlenie mety - reagujemy na wspolrzedne w prawym dolnym koncu planszy
  61.                                 else x->wyswietl(2);
  62.                                 x->dol_wartosc=999; // tak bedziemy potem sprawdzac czy jest meta
  63.                                 x->prawo_wartosc=999; // j.w.
  64.                         }
  65.                                 else if(i==igrek && j==iks) cout << " W ";
  66.                                         else x->wyswietl(0);
  67.                         x=x->prawo;
  68.                 }
  69.                 (i==rozmiar-1) ? cout << "" : cout << "\n";
  70.                 x1=x1->dol;
  71.                 x=x1;
  72.         }
  73.         cout << "\n                                                             Ilosc pkt: " << wynik << "\n";
  74. }
  75.  
  76. int WczytajRozmiarIPokazFabule()
  77. {
  78. cout << "Sredniowiecze. Wyspa Fiord. \n"
  79.                 << "Kierujesz oblezeniem zamku nieprzyjaciela.\n"
  80.                 << "Musisz przemiescic wieze obleznicza z punktu S do punktu M, \n"
  81.                 << "Zostawiasz za soba pulapki wiec nie mozesz odwiedzic 2 razy tego samego\n"
  82.                 << "pola, bo wpadniesz we wlasne sidla!\n"
  83.                 << "Trzymaj sie wyspy, dookola niej grasuja krwiozercze rekiny!\n"
  84.                 << "Wieza jest popsuta - w prawo i w dol moze byc ciezko nia sterowac.\n"
  85.                 << "Ruchy w lewo i w gore sa punktowanie dwukrotnie.\n\n";
  86.        
  87.   int rozmiar_planszy;
  88.   do{
  89.         cout << "Podaj rozmiar wyspy: ";
  90.         cin >> rozmiar_planszy;
  91.         if(rozmiar_planszy < 2) cout << "Zly rozmiar planszy!\n";
  92.   } while(rozmiar_planszy < 2);
  93.   return rozmiar_planszy;
  94. }
  95.  
  96. void TworzPlansze(int rozmiar_planszy, kulka &start)  // funkcja tworzaca plansze o dowonym rozmiarze; polaczenia pinowe i poziome
  97. {
  98.   kulka *biezaca, *poczatek, *x, *y,*x1,*y1;
  99.   biezaca=&start;
  100.   poczatek=&start;
  101.   x=&start;
  102.   int ograniczam=0; // najpierw w rzedzie sa wszystkie kulki
  103.   for(int j=0; j<rozmiar_planszy; j++) // n rzedow
  104.   {
  105.           for(int i=0; i<rozmiar_planszy-ograniczam; i++) //tworzenie jednego rzedu
  106.           {
  107.                   biezaca->prawo=new kulka;
  108.                   biezaca->prawo->lewo=biezaca;
  109.                   if(i==0 && j==0) biezaca->prawo->lewo=NULL; // z kulki start (inicjalizatora) mozemy isc tylko w prawo, wrocic nie mozemy bo to nie jest wlasciwa plansza
  110.                   biezaca=biezaca->prawo;
  111.           }
  112.           if(j==0)
  113.           {
  114.                   poczatek->prawo->dol=new kulka; // pierwsze powiazanie pionowe
  115.                   poczatek->prawo->dol->gora=poczatek->prawo; // j.w, reverse
  116.                   x=poczatek->prawo;
  117.                   y=poczatek->prawo->dol;
  118.                   poczatek=poczatek->prawo->dol;
  119.                   biezaca=poczatek;
  120.                   ograniczam=1; // nastepne rzedy beda mialy o 1 kulke mniej bo juz jedna zrobilismy (ta dolna)
  121.           }
  122.           else if(j<=rozmiar_planszy-2)
  123.           {
  124.                   poczatek->dol=new kulka;
  125.                   poczatek->dol->gora=poczatek;
  126.                   poczatek=poczatek->dol;
  127.                   biezaca=poczatek;
  128.                   ograniczam=1; // j.w.
  129.           }
  130.   }
  131.   x1=x;  //
  132.   y1=y;  // poreczowki
  133.   for(int i=0; i<rozmiar_planszy-1; i++) // polaczenia pionowe
  134.   {
  135.                 for(int j=0; j<rozmiar_planszy-1; j++) // powiazania pionowe w jednym poziomie
  136.                 {
  137.                         x=x->prawo;
  138.                         y=y->prawo;
  139.                         x->dol=y;
  140.                         x->dol->gora=x;
  141.                 }
  142.                 x1=x1->dol; // ok, teraz musimy udac sie nizej powiazac inne kulki pionowo
  143.                 x=x1;
  144.                 y1=y1->dol;
  145.                 y=y1;
  146.   }
  147. }
  148.  
  149. void Graj(int rozmiar_planszy, kulka &start)
  150. {
  151.   kulka  *pozycja;
  152.   int wynik=0;
  153.   PokazPlansze(start, rozmiar_planszy, wynik, 999, 999);
  154.   pozycja=start.prawo;
  155.   start.prawo->czy_odwiedzona=true;
  156.   char wybor;
  157.  
  158.   bool NieMaMety=true;
  159.   int x2=0, y2=0;
  160.   while(NieMaMety)
  161.   {
  162.           cout << "w - w gore   s - w dol   a - w lewo   d - w prawo  p - wyjscie   ";
  163.           cin >> wybor;
  164.           switch (wybor)
  165.           {
  166.           case 'w':
  167.                   if((pozycja->gora) && (!pozycja->gora->czy_odwiedzona))  // z dolu do mety nie da sie dojsc wiec tu nie sprawdzamy mety
  168.                   {
  169.                       y2-=1;
  170.                           pozycja->gora->czy_odwiedzona=true;
  171.                           wynik=wynik+pozycja->gora_wartosc;
  172.                           pozycja=pozycja->gora;
  173.                   }
  174.                   else
  175.                   {
  176.                           cout << "\nGame over! Twoj wynik: " << wynik << endl;
  177.                           cin.get();
  178.                           cin.get();
  179.                           exit(0);
  180.                   }
  181.                   break;
  182.           case 's':
  183.                   if((pozycja->dol) && (!pozycja->dol->czy_odwiedzona))
  184.                   {
  185.                           y2+=1;
  186.                           wynik=wynik+pozycja->dol_wartosc;
  187.                           if(pozycja->dol->dol_wartosc==999)
  188.                           {
  189.                                   cout << "Meta!"// wykrywanie mety jak idziemy na nia z gory
  190.                                   NieMaMety=false;
  191.                           }
  192.                           else pozycja->dol->czy_odwiedzona=true;
  193.                           pozycja=pozycja->dol;
  194.                   }
  195.                   else
  196.                   {
  197.                           cout << "\nGame over! Twoj wynik: " << wynik << endl;
  198.                           cin.get();
  199.                           cin.get();
  200.                           exit(0);
  201.                   }
  202.                   break;
  203.           case 'd':
  204.                   if((pozycja->prawo) && (!pozycja->prawo->czy_odwiedzona))
  205.                   {
  206.                           x2+=1;
  207.                           wynik=wynik+pozycja->prawo_wartosc;
  208.                           if(pozycja->prawo->prawo_wartosc==999)
  209.                           {
  210.                                   cout << "Meta!"// wykrywanie mety jak idziemy na nia z lewej
  211.                                   NieMaMety=false;
  212.                           }
  213.                           else pozycja->prawo->czy_odwiedzona=true;
  214.                           pozycja=pozycja->prawo;
  215.                   }
  216.                 else
  217.                   {
  218.                           cout << "\nGame over! Twoj wynik: " << wynik << endl;
  219.                           cin.get();
  220.                           cin.get();
  221.                           exit(0);
  222.                   }
  223.                   break;
  224.           case 'a':
  225.                   if((pozycja->lewo) && (!pozycja->lewo->czy_odwiedzona)) // z prawej na mete nie da sie dojsc wiec tu nie sprawdzamy mety
  226.                   {
  227.                           x2-=1;
  228.                           wynik=wynik+pozycja->lewo_wartosc;
  229.                           pozycja->lewo->czy_odwiedzona=true;
  230.                           pozycja=pozycja->lewo;
  231.                   }
  232.                 else
  233.                   {
  234.                           cout << "\nGame over! Twoj wynik: " << wynik << endl;
  235.                           cin.get();
  236.                           cin.get();
  237.                           exit(0);
  238.                   }
  239.                   break;
  240.           case 'p':
  241.                   cin.get();
  242.                   cin.get();
  243.                   exit(0);
  244.                   break;
  245.           default:
  246.                   cout << "Gdzie? Nie znam takiego kierunku!";
  247.           }
  248.           PokazPlansze(start, rozmiar_planszy, wynik, x2, y2);
  249.   }
  250.   cout << "Brawo! Jestes dobrym dowodca!"
  251.           << "\nMianuje Cie na dowodce kierowania maszynami oblezniczymi! Twoj wynik: " << wynik << endl;
  252. }
  253.  
  254. int main()
  255. {
  256.         srand(time(NULL))// losowosc przejsc miedzy kulkami
  257.         kulka start;  // kulka inicjalizujaca "starter"
  258.         int rozmiar_planszy = WczytajRozmiarIPokazFabule()// user podaje rozmiar planszy
  259.         TworzPlansze(rozmiar_planszy, start)// stworzenie struktury calej planszy, polaczen etc
  260.         Graj(rozmiar_planszy, start)// wlasciwa gra
  261.         cin.get(); // odpowiednik system("pause");
  262.         cin.get(); //
  263.         return 0;
  264. }

Wyślij poprawkę poniżej (kliknij tu aby wysłać nowy wpis)
Po wysłaniu poprawki będziesz w stanie łatwo zobaczyć różnice między starym a nowym wpisem.

Podświetlanie składni:

Aby podświetlić konkretną linię, wpisz na jej początku @@


Zapamiętaj mniePrivate
Nie wypełniaj tego pola ! =>