Witam.
Mam pewien problem. Mianowicie nie wiem jak zrobic w c++ aby działanie nie wyświetlały się na konsoli lecz tylko wynik.
slime3000fly napisał(a):
Witam.
Mam pewien problem. Mianowicie nie wiem jak zrobic w c++ aby działanie nie wyświetlały się na konsoli lecz tylko wynik.
Jakie działania? Może ich po prostu nie wypisuj?
Pokaż kod, bo normalnie nie działanie się nie printuje :)
@templas 4 sekundy wcześniej...
Należy po prostu nie wyświetlać działania, a wyświetlać tylko wynik.
#include <iostream>
#include "gra.h"
#include <cstdlib>
using namespace std;
gracz::gracz()
{
nazwa="user";
miecze=0;
piki=0;
topory=0;
drewno=300;
zelazo=300;
i=0;
v=0;
a=0;
}
void gracz::pokaz()
{
cout << "posiadasz:" << endl;
cout << miecze << " mieczników"<< endl;
cout << piki << " pikinierów"<< endl;
cout << topory << " toporników"<< endl;
cout << drewno << " drewna"<< endl;
cout << zelazo << " ¿elaza"<< endl;
}
void gracz::naz()
{
cout<<"podaj nazweêgracza: ";
cin >> nazwa;
cout<< endl << "twoja nazwa to: " << nazwa << endl;
}
void gracz::ustaw()
{
do
{
cout<< endl << "co chesz zrobiæ? " << endl;
cout << "1.zobacz liczbê surowców" << endl;
cout << "2.zobacz liczbê wojsk" << endl;
cout << "3.zrekrutuj wojska" << endl;
cout << "4.nastêpna tura" << endl;
cout << "0.koniec gry" << endl;
cin >> i;
switch(i)
{
case 1:
pokaz();
break;
case 2:
pokaz();
break;
case 3:
cout << endl << "1.zobacz kosztorys" << endl << "2.zrekrutuj wojska" << endl;
cin >> v;
switch(v)
{
case 1:
cout<< endl << "jednego miecznika" << endl << "jednego pikiniera" << endl << "jednego topornika" << endl;
cin >> a;
switch (a)
{
case 1:
cout<< endl << "jeden miecznik kosztuje 20 drewna i 40 zelaza, a posiadasz : "<< endl<<"drewna:" << drewno << endl<< "zelaza:" << zelazo <<endl;
break;
case 2:
cout<< endl << "jeden pikinier kosztuje 15 drewna i 20 zelaza, a posiadasz : "<< endl<<"drewna:" << drewno << endl<< "zelaza:" << zelazo <<endl;
break;
case 3:
cout<< endl << "jeden topornik kosztuje 25 drewna i 60 zelaza, a posiadasz : "<< endl<<"drewna:" << drewno << endl<< "zelaza:" << zelazo <<endl;
break;
}
break;
case 2:
cout << endl << "kogo chesz zrekrutowaæ? 1.miecznika 2.pikiniera 3.topornika" << endl;
cin >> b;
switch(b)
{
case 1:
cout << endl << "ile?" << endl;
cin >> i1;
if (i1*20 > drewno)
{
cout << endl << "masz za ma³o drewna." << endl;
}
else
{
if (i1*40 > zelazo)
{
cout << endl << "masz za ma³o zelaza." << endl;
}
else
{
cout << drewno - i1*20;
cout << zelazo - i1*40;
cout << miecze + 3;
cout << endl << "zrekrutowano: " << i1 << "mieczników" << endl;
}
}
break;
}
break;
}
break;
}
}while (i != 0);
}
chodzi o to by to policzyło ale się nie wyświetliło
cout << drewno - i120;
cout << zelazo - i140;
cout << miecze + 3;
Zablokować wyświetlanie możesz np. poprzez usunięcie linii odpowiadających za wyświetlanie.
ale kiedy usunę cout to się nie liczy
Jak się nie liczy? Przecież Ty jedynie wyświetlasz to na ekran.
Przy okazji: popraw indentację kodu, Twoja jest tragiczna. Nie czytelniej jest tak?
#include <iostream>
#include "gra.h"
#include <cstdlib>
using namespace std;
gracz::gracz() {
nazwa = "user";
miecze = 0;
piki = 0;
topory = 0;
drewno = 300;
zelazo = 300;
i = 0;
v = 0;
a = 0;
}
void gracz::pokaz() {
cout << "posiadasz:" << endl;
cout << miecze << " mieczników" << endl;
cout << piki << " pikinierów" << endl;
cout << topory << " toporników" << endl;
cout << drewno << " drewna" << endl;
cout << zelazo << " ¿elaza" << endl;
}
void gracz::naz() {
cout << "podaj nazweêgracza: ";
cin >> nazwa;
cout << endl << "twoja nazwa to: " << nazwa << endl;
}
void gracz::ustaw() {
do {
cout << endl << "co chesz zrobiæ? " << endl;
cout << "1.zobacz liczbê surowców" << endl;
cout << "2.zobacz liczbê wojsk" << endl;
cout << "3.zrekrutuj wojska" << endl;
cout << "4.nastêpna tura" << endl;
cout << "0.koniec gry" << endl;
cin >> i;
switch (i) {
case 1:
pokaz();
break;
case 2:
pokaz();
break;
case 3:
cout << endl << "1.zobacz kosztorys" << endl << "2.zrekrutuj wojska"
<< endl;
cin >> v;
switch (v) {
case 1:
cout << endl << "jednego miecznika" << endl << "jednego pikiniera"
<< endl << "jednego topornika" << endl;
cin >> a;
switch (a) {
case 1:
cout << endl << "jeden miecznik kosztuje 20 drewna i 40 "
"zelaza, a posiadasz : " << endl
<< "drewna:" << drewno << endl << "zelaza:" << zelazo
<< endl;
break;
case 2:
cout << endl << "jeden pikinier kosztuje 15 drewna i 20 "
"zelaza, a posiadasz : " << endl
<< "drewna:" << drewno << endl << "zelaza:" << zelazo
<< endl;
break;
case 3:
cout << endl << "jeden topornik kosztuje 25 drewna i 60 "
"zelaza, a posiadasz : " << endl
<< "drewna:" << drewno << endl << "zelaza:" << zelazo
<< endl;
break;
}
break;
case 2:
cout
<< endl
<< "kogo chesz zrekrutowaæ? 1.miecznika 2.pikiniera 3.topornika"
<< endl;
cin >> b;
switch (b) {
case 1:
cout << endl << "ile?" << endl;
cin >> i1;
if (i1 * 20 > drewno) {
cout << endl << "masz za ma³o drewna." << endl;
} else {
if (i1 * 40 > zelazo) {
cout << endl << "masz za ma³o zelaza." << endl;
} else {
cout << drewno - i1 * 20;
cout << zelazo - i1 * 40;
cout << miecze + 3;
cout << endl << "zrekrutowano: " << i1 << "mieczników"
<< endl;
}
}
break;
}
break;
}
break;
}
} while (i != 0);
}
Dziękuje pomogło, ale mam jeszcze jedne problem mianowicie to działanie nie zmienia wartości zmiennych. Dodaje załącznik, i z gury dziękuje.
Nie musisz tego wyświetlać. Musisz natomiast przypisać nową wartość do zmiennej.
Zakładam, że miałeś na myśli coś w tym stylu:
drewno = drewno - i1 * 20;
zelazo = zelazo - i1 * 40;
miecze = miecze + 3;
lub w formie skróconej:
drewno -= i1 * 20;
zelazo -= i1 * 40;
miecze += 3;
Odpuść sobie pisanie jakiejś pseudo-gry i weź się lepiej za jakiś podstawowy kurs programowania, bo to się kupy nie trzyma.
Poprzez takie pisanie niczego sensownego się nie nauczysz tylko co chwile będziesz miał takie irytujące problemy.
Przepraszam wszystkich zobaczyłem swój głupi błąd :D