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.