Strona 1 z 1

Pomoc z modyfikacją/napisaniem programu

: 09 sty 2016, 16:59
autor: winuser
Cześć, muszę napisać (dość dla mnie dziwny, jako osoby nie korzystającej kilka lat z C++) program o takiej specyfikacji:
Należy stworzyć grę „w 33” wg poniższych założeń. Gra powinna być napisana w języku C++,
w formie aplikacji konsolowej lub okienkowej (do wyboru). Przebieg działania aplikacji:
Użytkownik podaje swoje imię. Następnie zaczyna się gra: użytkownik podaje liczbę od 1 do 3. Dalej
przeciwnik (czyli program o imieniu Komputer), losuje liczbę z zakresu od 1 do 3 i dodaje do liczby
podanej przez przeciwnika i wyświetla wynik dodawania. Jeśli liczba podana przez użytkownika
jest większa od 15, komputer sprawdza, czy może podać liczbę będącą wielokrotnością liczby 4
– jeśli może, podaje właśnie tą liczbę (przez to ma szansę na wygraną z człowiekiem).
Następne kroki to podawanie wyników sumy poprzedniej liczby z liczbami z zakresu od 1 do 3
na przemian. Podaną przez użytkownika liczbę należy zweryfikować, czy faktycznie jest sumą
poprzedniej liczby oraz liczby z zakresu od 1 do 3. Jeśli nie, upominamy użytkownika i prosimy o
podanie poprawnej wartości i tak w koło.
Gra toczy się aż do liczby 33. Kto jest zmuszony podać taką liczbę - przegrywa. Zwycięzcę należy
podać w formie: "Grę wygrywa <imię>!".
Z poprzedniego, podobnego programu, mam tyle:

Kod: Zaznacz cały

#include <iostream> #include <cstdlib> #include <ctime> using namespace std; int main() { int x=0, suma=1,turn=1; srand( time( NULL ) ); cout << suma << endl; while (suma<33) { if (turn==1) { cin >> x; if ((x>0)&&(x<4)&&(suma+x<=33)) { suma+=x; cout << suma << endl; turn=2; } } else if (turn==2) { x=( rand() % 2 ) + 1; if (suma+x<=33) { suma+=x; cout << suma << endl; turn=1; } } if (suma==33) { cout << (turn==1?"Wygrales!":"Przegrales!"); } } }
Jak to zmodyfikować, jakie warunki muszę dodać w pętli, żeby to działało jak powinno ? Stawiam browary każdemu, kto pomoże, bo muszę to mieć na jutro, więc nockę raczej zarwę \\ :(

Pomoc z modyfikacją/napisaniem programu

: 09 sty 2016, 17:35
autor: bsystem
KOCHAM NAZWY ZMIENNYCH W DWÓCH JĘZYKACH

Pomoc z modyfikacją/napisaniem programu

: 09 sty 2016, 19:51
autor: pc.qwerty
Nie wiem czy dobrze zrozumiałem polecenie ale program nawet działa (pisałem od zera). Wiem że kod jest brzydki jak noc, jak chcesz to mogę dodać komentarze.

Kod: Zaznacz cały

#include <iostream> #include <cstdlib> #include <ctime> using namespace std; int main(){ int liczba_uzytkownik,liczba_komputer,licznik=0,suma=0,komputer_zakres; komputer_zakres=4; srand(time(NULL)); string imie; cout<<"Podaj imie: "; cin>>imie; do{ cout<<"Podaj liczbe [1-3]: "; cin>>liczba_uzytkownik; } while(liczba_uzytkownik==0||liczba_uzytkownik>3); suma+=liczba_uzytkownik; do(liczba_komputer=rand()%4); while(liczba_komputer==0); suma+=liczba_komputer; cout<<"Komputer podaje: "<<suma<<"\n"; for(;;){ if(suma==32){cout<<"Wygral komputer";break;} if(suma==33){cout<<"Wygral "<<imie; break;} licznik++; cout<<"Podaj liczbe: ["<<suma<<"+[1-3]: "; cin>>liczba_uzytkownik; if(liczba_uzytkownik<=suma||liczba_uzytkownik>suma+3){cout<<"Bledna liczba\n";} else{ suma=liczba_uzytkownik; if(suma>15&&licznik<2){ for(int i=1;i<9;i++){ if(4*i>suma&&4*i<33){ liczba_komputer=4*i; break; } } suma=liczba_komputer; cout<<"Komputer podaje: "<<suma<<"\n"; } else{ if(suma==32){liczba_komputer=1;} else{ if(suma>30) komputer_zakres=2; do{ liczba_komputer=rand()%komputer_zakres; if(liczba_komputer!=0&&suma+liczba_komputer<34) break; } while(1); } suma+=liczba_komputer; cout<<"Komputer podaje: "<<suma<<"\n"; } } } }

Pomoc z modyfikacją/napisaniem programu

: 09 sty 2016, 23:08
autor: winuser
@pc.qwerty, wiszę Ci dobre piwo co najmniej :) Wielkie dzięki :)

Pomoc z modyfikacją/napisaniem programu

: 09 sty 2016, 23:21
autor: pc.qwerty
Cieszę się, że działa zgodnie z założeniami.