![]() |
Prezentowane materiały są przeznaczone dla uczniów szkół ponadgimnazjalnych. Autor artykułu: mgr Jerzy Wałaszek, wersja1.0 |
©2008 mgr
Jerzy Wałaszek
|
Zapoznaj się z artykułem:
Operacje logiczne w języku C++
Prezentowany poniżej program jest przykładem wykorzystania przez komputer strategii wygrywającej w prostej grze logicznej. Zasady gry są następujące:
W grze uczestniczy dwóch graczy oraz 17 bierek. Gracze naprzemian zabierają od jednej do trzech bierek. Przegrywa ten, który zmuszony jest zabrać ostatnią bierkę.
Dla drugiego gracza istnieje prosta strategia wygrywająca - zawsze uzupełnia on liczbę bierek wziętych przez przeciwnika do 4. W ten sposób w każdej turze zabierane są 4 bierki. Po 4 turach wzięte zostanie 16 bierek i oczywiście zostanie jedna bierka dla pierwszego gracza.
// Bierki // (C)2008 Koło informatyczne w I LO w Tarnowie // Kurs programowania w C++ dla początkujących //-------------------------------------------- #include <iostream> using namespace std; // funkcja wyświetla powtanie //--------------------------- void tytul() { cout << "*******************\n" "*** BIERKI 2008 ***\n" "*******************\n\n"; } // Funkcja wyświetla bierki //------------------------- void wyswietl_bierki(unsigned b) { cout << "BIERKI = "; for(int i = 0; i < b; i++) cout << "|"; cout << endl << endl; } // Funkcja odczytuje poprawny ruch człowieka //------------------------------------------ unsigned ruch_czlowieka(unsigned b) { unsigned r,maxb; do { maxb = 3; if(b < maxb) maxb = b; cout << "Ile bierek zabierasz? (1..." << maxb << ") : "; cin >> r; } while((r == 0) || (r > maxb)); return r; } // Funkcja generuje ruch komputera //-------------------------------- unsigned ruch_komputera(unsigned rcz, unsigned b) { if(b > 1) { unsigned r = 4 - rcz; cout << "Ja zabieram " << r << "\n\n\n"; return r; } else cout << "Przegrales, bo zabrales ostatnia bierke!!!\n\n"; return 0; } // Funkcja prowadzi rozgrywkę //--------------------------- void gra() { unsigned bierki = 17,rczl,rkomp; do { wyswietl_bierki(bierki); rczl = ruch_czlowieka(bierki); rkomp = ruch_komputera(rczl,bierki); bierki -= rczl + rkomp; } while(bierki); } // Funkcja zwraca true, jeżli gracz chce zagrać jeszcze raz //--------------------------------------------------------- bool dalej() { char c; cout << "\n\nGrasz jeszcze raz? (t = TAK) : "; cin >> c; cout << "\n\n\n\n\n\n"; return c == 't'; } // Start programu //--------------- main() { tytul(); do gra(); while(dalej()); } |
|
******************* *** BIERKI 2008 *** ******************* BIERKI = ||||||||||||||||| Ile bierek zabierasz? (1...3) : 3 Ja zabieram 1 BIERKI = ||||||||||||| Ile bierek zabierasz? (1...3) : 2 Ja zabieram 2 BIERKI = ||||||||| Ile bierek zabierasz? (1...3) : 2 Ja zabieram 2 BIERKI = ||||| Ile bierek zabierasz? (1...3) : 1 Ja zabieram 3 BIERKI = | Ile bierek zabierasz? (1...1) : 1 Przegrales, bo zabrales ostatnia bierke!!! Grasz jeszcze raz? (t = TAK) : n |
![]() | 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