Prawdziwe oblicze Informatyki. Tysiące linijek kodu i kompilatory które nigdy nie wybaczają.
Awatar użytkownika

winuser

Zasłużony użytkownik
Posty: 1437
Rejestracja: 29 sie 2013, 13:15
    Windows 10 Chrome

Post09 sty 2016, 16:59

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ę \\ :(
Laptop: Lenovo ThinkPad T480s | Intel Core i5 8250U | Intel HD 620 | 24GB RAM Hynix | Lexar NM620 NVME 1TB | Windows 10 Pro
Laptop testowy: Lenovo ThinkPad T430 | Intel Core i7 3740QM | Intel HD 4000 | 16GB RAM Hynix | Samsung 850 Pro 256GB | Windows Vista SP3
PC: MSI Z87-G43 | Intel Xeon E3-1240 v3 | nVidia GTX 760 2GB | 20GB RAM Hynix | GoodRAM PX 500 NVME 512GB | Windows 10 Pro
Mobile: Google Pixel 6 | Google Tensor GS101 @2.8 GHz | Mali-G78 MP20 | 8GB RAM | 128GB MMC | Android 14
Serwer: AsRock AD2550-ITX | Intel Atom D2550 | PowerVR SGX545 | 8GB RAM Kingston | WD HDD 500GB | Windows Server 2012 R2 Datacenter
Sieć: Cudy WR3000 Wi-Fi 6 OpenWRT| Huawei HG8010H | Netia 1Gb/s
PlayStation 4 | CUH-1116A | 1TB SSD|

Awatar użytkownika

bsystem

Zasłużony użytkownik
Posty: 655
Rejestracja: 03 lis 2010, 16:44
    Linux Firefox

Post09 sty 2016, 17:35

KOCHAM NAZWY ZMIENNYCH W DWÓCH JĘZYKACH

Awatar użytkownika

pc.qwerty

Zasłużony użytkownik
Posty: 3276
Rejestracja: 01 lip 2010, 12:28
    Windows 7 Chrome

Post09 sty 2016, 19:51

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";
			}
		}
	}
}
There is no cloud. It's just someone else's computer.

Awatar użytkownika

winuser

Zasłużony użytkownik
Posty: 1437
Rejestracja: 29 sie 2013, 13:15
    Windows 7 Chrome

Post09 sty 2016, 23:08

@pc.qwerty, wiszę Ci dobre piwo co najmniej :) Wielkie dzięki :)
Laptop: Lenovo ThinkPad T480s | Intel Core i5 8250U | Intel HD 620 | 24GB RAM Hynix | Lexar NM620 NVME 1TB | Windows 10 Pro
Laptop testowy: Lenovo ThinkPad T430 | Intel Core i7 3740QM | Intel HD 4000 | 16GB RAM Hynix | Samsung 850 Pro 256GB | Windows Vista SP3
PC: MSI Z87-G43 | Intel Xeon E3-1240 v3 | nVidia GTX 760 2GB | 20GB RAM Hynix | GoodRAM PX 500 NVME 512GB | Windows 10 Pro
Mobile: Google Pixel 6 | Google Tensor GS101 @2.8 GHz | Mali-G78 MP20 | 8GB RAM | 128GB MMC | Android 14
Serwer: AsRock AD2550-ITX | Intel Atom D2550 | PowerVR SGX545 | 8GB RAM Kingston | WD HDD 500GB | Windows Server 2012 R2 Datacenter
Sieć: Cudy WR3000 Wi-Fi 6 OpenWRT| Huawei HG8010H | Netia 1Gb/s
PlayStation 4 | CUH-1116A | 1TB SSD|

Awatar użytkownika

pc.qwerty

Zasłużony użytkownik
Posty: 3276
Rejestracja: 01 lip 2010, 12:28
    Windows 7 Chrome

Post09 sty 2016, 23:21

Cieszę się, że działa zgodnie z założeniami.
There is no cloud. It's just someone else's computer.

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 7 gości