P009 - Gra w OKO dla dwóch graczy
Program uruchomiono w środowisku Bloodshed Dev-C++ 4.9.9.2
// I Liceum Ogólnokształcące
// im. K. Brodzińskiego
// w Tarnowie
//--------------------------
// Koło informatyczne 2006/7
//--------------------------
// Program: P009
//--------------------------

#include <iostream>
#include <iomanip>

using namespace std;

// Funkcja rysuje kostkę do gry
//-----------------------------
void Kostka(int oczka)
{
  cout << " ----- \n";
  for(int i = 1; i <= 9; i++)
  {
    switch(i)
    {
      case 1:
      case 4:
      case 7: cout << "| ";         
    }        
    switch(i)
    {
      case 1:
      case 9: if(oczka > 1) cout << "O"; else cout << " ";
              break;
      case 2:
      case 8: cout << " "; break;
      case 3:
      case 7: if(oczka > 3) cout << "O"; else cout << " ";
              break;
      case 4:
      case 6: if(oczka == 6) cout << "O"; else cout << " ";
              break;
      case 5: if(oczka % 2) cout << "O"; else cout << " ";
              break;
    }
    switch(i)
    {
      case 3:
      case 6:
      case 9: cout << " |\n";
    }                
  }
  cout << " ----- \n";  
}

// Funkcja wyświetla punkty gracza
//--------------------------------
void Punkty(int n, int pg)
{
  cout << "GRACZ NR " << n << endl
       << "PUNKTY = " << pg << endl << endl;     
}

// Funkcja dokonuje ruchu
//-----------------------
void Ruch(int n, int &pg, bool &gg)
{
  char odp;
  int  los;
   
  cout << "\n\n--------------------------\n";
  Punkty(n,pg);
  cout << "Grasz dalej ? (T = TAK) : ";
  cin >> odp;
  cout << endl;
  if((odp == 'T') || (odp == 't'))
  {
    los = 1 + rand() % 6;
    Kostka(los);
    pg += los;
    Punkty(n,pg);
  }
  else gg = false;
}

// Funkcja ocenia punkty gracza
//---------------------------
bool Przegrana(int pg, bool &gg)
{
  if(pg > 21)
  {
    gg = false;
    return true;
  }
  return false;
}    

// Funkcja dokonuje oceny gry
//---------------------------
void Ewaluacja(int n, int pg, int pp)
{
  cout << "GRACZ NR " << n << ", PUNKTY = " << setw(2) << pg << " : ";
          
  if((pp > 21) || ((pg <= 21) && (pg > pp)))
    cout << "GRATULACJE !!! WYGRANA !!!";
  else if(pg == pp)
    cout << "REMIS";
  else cout << "PRZEGRANA !!!";
  cout << "\n\n";    
}

// Program główny gry
//-------------------
main()
{
  int pg1,pg2;
  bool gg1,gg2;
  char w;
  
  srand((unsigned)time(NULL));
  do
  {
    cout << "Gra w OKO dla dwoch graczy\n"
            "==========================\n\n";
    pg1 = pg2 = 0;
    gg1 = gg2 = true;        
    while(gg1 || gg2)
    {
       if(gg1)
       {
         Ruch(1,pg1,gg1);
         if(Przegrana(pg1,gg1)) break;
       }
       if(gg2)
       {
         Ruch(2,pg2,gg2);
         if(Przegrana(pg2,gg2)) break;
       }       
    }
    cout << "\n\n\nWYNIKI GRY\n"
            "==========\n\n";
    Ewaluacja(1,pg1,pg2);
    Ewaluacja(2,pg2,pg1);            
    cout << "\n\n--------------------------\n"
            "Jeszcze raz (T = TAK) ? : ";
    cin >> w;
    cout << "\n\n\n\n";
  } while((w == 'T') || (w == 't'));
}

 

Widok okienka konsoli w uruchomionym programie
Gra w OKO dla dwoch graczy
==========================



--------------------------
GRACZ NR 1
PUNKTY = 0

Grasz dalej ? (T = TAK) : t

 -----
| O   |
|  O  |
|   O |
 -----
GRACZ NR 1
PUNKTY = 3



--------------------------
GRACZ NR 2
PUNKTY = 0

Grasz dalej ? (T = TAK) : t

 -----
| O O |
|  O  |
| O O |
 -----
GRACZ NR 2
PUNKTY = 5



--------------------------
GRACZ NR 1
PUNKTY = 3

Grasz dalej ? (T = TAK) : n



--------------------------
GRACZ NR 2
PUNKTY = 5

Grasz dalej ? (T = TAK) : n




WYNIKI GRY
==========

GRACZ NR 1, PUNKTY =  3 : PRZEGRANA !!!

GRACZ NR 2, PUNKTY =  5 : GRATULACJE !!! WYGRANA !!!



--------------------------
Jeszcze raz (T = TAK) ? : n

       Wyjaśnienie

Ten przykład miał na celu wykorzystanie poznanych wiadomości do stworzenia prostej gry logicznej dla dwóch graczy. Zasady gry są następujące:

Na podstawie tych zasad wyrysowaliśmy schemat blokowy gry, który symbolizuje poszczególne operacje rozgrywki. Na schemacie zaznaczyliśmy podstawowe operacje, które należy w grze wykonać. Następnie ustaliliśmy sposób implementacji każdej z tych operacji. W ten sposób powstał szablon programu, który w dalszej kolejności stopniowo wypełniliśmy instrukcjami.

Powyższy schemat blokowy można zastosować do wielu różnych gier losowych dla dwóch (lub po drobnej przeróbce dla większej liczby) graczy.



List do administratora Serwisu Edukacyjnego Nauczycieli I LO

Twój email: (jeśli chcesz otrzymać odpowiedź)
Temat:
Uwaga: ← tutaj wpisz wyraz  ilo , inaczej list zostanie zignorowany

Poniżej wpisz swoje uwagi lub pytania dotyczące tego rozdziału (max. 2048 znaków).

Liczba znaków do wykorzystania: 2048

 

W związku z dużą liczbą listów do naszego serwisu edukacyjnego nie będziemy udzielać odpowiedzi na prośby rozwiązywania zadań, pisania programów zaliczeniowych, przesyłania materiałów czy też tłumaczenia zagadnień szeroko opisywanych w podręcznikach.



   I Liceum Ogólnokształcące   
im. Kazimierza Brodzińskiego
w Tarnowie

©2017 mgr Jerzy Wałaszek

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.