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 |
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:
- W grze uczestniczy dwóch graczy, którzy na przemian rzucają kostką.
- Wyrzuconą liczbę oczek każdy gracz zlicza dla siebie.
- Gracz automatycznie przegrywa, jeśli suma wyrzuconych oczek jest większa od 21.
- Gracz w dowolnej chwili gry może zrezygnować z dalszych rzutów.
- Jeśli oboje gracze zrezygnują z dalszych rzutów dokonywana jest ewaluacja gry.
- Wygrywa ten gracz, który zebrał więcej oczek od swojego przeciwnika.
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.
I Liceum Ogólnokształcące |
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe