Knobelspiel c++
-
yeah danke!!!
werd das direkt heute oder spätestens morgen mal austesten!

-
michael83 schrieb:
yeah danke!!!
werd das direkt heute oder spätestens morgen mal austesten!

ah sry es muss heissen
if(n1 == n2) { //spiel endet } else { if((bool)((n1+n2)%2) == (bool)((int)(n2/n1))) { //spieler 2 gewonnen } else { //spieler 1 gewonnen }man muss ja nicht runden, sondern abrunden
-
pixartist schrieb:
man muss ja nicht runden, sondern abrunden
Was jetzt, runden oder nicht? :p
Edit: Damit werden natürlich nur zwei der vier Fälle abgedeckt...
-
Grossmeister schrieb:
pixartist schrieb:
man muss ja nicht runden, sondern abrunden
Was jetzt, runden oder nicht? :p
Edit: Damit werden natürlich nur zwei der vier Fälle abgedeckt...
((bool)((n1+n2)%2) == (bool)((int)(n2/n1)))
zahl gerdade:
(bool)((n1+n2)%2) = false
->(bool)((int)(n2/n1))) n2 > n1 = true, n2 < n1 = false
zahl ungerdade:
(bool)((n1+n2)%2) = true
->(bool)((int)(n2/n1))) n2 > n1 = true, n2 < n1 = false-> es deckt alle 4 fälle ab
-
Habs auch gerade gemerkt... mea culpa

-
Aber fuer was soll man da runden? Da ist wohl wer unnoetig clever...
if( ( n1%n2 == 0 ) == n1 < n2 ) ) f'`8k
Gruß, TGGC (making great games since 1992)
-
TGGC schrieb:
Aber fuer was soll man da runden? Da ist wohl wer unnoetig clever...
if( ( n1%n2 == 0 ) == n1 < n2 ) ) f'`8k
Gruß, TGGC (making great games since 1992)
oO stimmt so gehts natürlich leichter xD
aber meinst du nicht
n1+n2%2 == 0 ?
wieso gibt mir denn n1%n2 == 0 zurück ob die summe der zahlen gerade ist? das ist doch eher ob n2 durch n1 teilbar ist ... oder irre ich mich jetzt ?
-
-
hi,
habs geschafft das Spiel zum laufen zu bringen...nochmal vielen dank an pixartist!
#include <cstdio> #include <cstdlib> #include <iostream> using namespace std; int main() { int n1; int n2; cout<<"++++++++++++++++++++++++++++++++++++++++++++\n"; cout<<"Spieler 1 -> Bitte geben sie eine Zahl ein:\n "; cin>>n1; cout<<"++++++++++++++++++++++++++++++++++++++++++++\n"; cout<<"Spieler 2 -> Bitte geben sie eine Zahl ein:\n "; cin>>n2; if(n1 == n2) { //spiel endet cout<<"++++++++++++++++++++++++++++++++++++++++++++\n"; cout<<"Unentschieden\n "; cout<<"++++++++++++++++++++++++++++++++++++++++++++\n"; return 0; } else { if((bool)((n1+n2)%2) == (bool)((int)(n2/n1))) { //spieler 2 gewonnen cout<<"++++++++++++++++++++++++++++++++++++++++++++\n"; cout<<"Spieler 2 -> Sie haben gewonnen!\n "; cout<<"++++++++++++++++++++++++++++++++++++++++++++\n"; } else { //spieler 1 gewonnen cout<<"++++++++++++++++++++++++++++++++++++++++++++\n"; cout<<"Spieler 1 -> Sie haben gewonnen!\n "; cout<<"++++++++++++++++++++++++++++++++++++++++++++\n"; } } system("PAUSE"); return 0; }Das is der code für "eine" Runde...
Nun möchte ich das ganze aber auf 5 Runden spielen.
Ich hab mal versucht ein Zählersystem einzubauen das mir den Punktestand ausgiebt.
nur leider will das nicht so wie ich will...

#include <cstdio> #include <cstdlib> #include <iostream> using namespace std; int main() { int n1; int n2; int gewonnen_n1; int gewonnen_n2; cout<<"++++++++++++++++++++++++++++++++++++++++++++\n"; cout<<"Spieler 1 -> Bitte geben sie eine Zahl ein: "; cout<<"++++++++++++++++++++++++++++++++++++++++++++\n"; cin>>n1; cout<<"++++++++++++++++++++++++++++++++++++++++++++\n"; cout<<"Spieler 2 -> Bitte geben sie eine Zahl ein:"; cout<<"++++++++++++++++++++++++++++++++++++++++++++\n"; cin>>n2; if(n1 == n2) { //spiel endet cout<<"++++++++++++++++++++++++++++++++++++++++++++\n"; cout<<"Unentschieden->Spieler 1 %d, Spieler 2 %d" gewonnen_n1, gewonnen_n2; cout<<"++++++++++++++++++++++++++++++++++++++++++++\n"; gewonnen_n1 = 0; gewonnen_n2 = 0; return 0; } else { if((bool)((n1+n2)%2) == (bool)((int)(n2/n1))) { //spieler 2 gewonnen cout<<"++++++++++++++++++++++++++++++++++++++++++++\n"; cout<<"Spieler 2 -> Sie haben gewonnen! "gewonnen_n1, gewonnen_n2; cout<<"++++++++++++++++++++++++++++++++++++++++++++\n"; gewonnen_n1 = 0; gewonnen_n2++; } else { //spieler 1 gewonnen cout<<"++++++++++++++++++++++++++++++++++++++++++++\n"; cout<<"Spieler 1 -> Sie haben gewonnen! "gewonnen_n1, gewonnen_n2; cout<<"++++++++++++++++++++++++++++++++++++++++++++\n"; gewonnen_n1++; gewonnen_n2 = 0; } if(gewonnen_n1==1) { cout<<"\n Spieler 1 hat das Spiel gewonnen!!!.\n -Game Over-"; } else(gewonnen_n2==1) { cout<<"\nSpieler 2 hat das Spiel gewonnen!!!\n -Game Over-"; } } system("PAUSE"); return 0; }Wäre echt super wenn mir da jemand weiterhelfen könnte.

-
Na dann bete doch schon mal, das dich niemand fragt, wie if((bool)((n1+n2)%2) == (bool)((int)(n2/n1))) genau funktioniert. Das traue ich einem C++ Anfaenger naemlich nicht unbedingt zu. f'`8k
AutocogitoGruß, TGGC (making great games since 1992)
-
Pack den ganzen Block der Eingabe und Auswertung in eine Schleife:
int gewonnen1=0,gewonnen2=0; while(gewonnen1<5&&gewonnen2<5) { ... if((bool)((n1+n2)%2) == (bool)((int)(n2/n1))) { ... ++gewonnen2; } else { ... ++gewonnen1; } } cout<<"Gesamtsieg für Spieler "<<(gewonnen1==5)?1:2<<endl;
-
TGGC schrieb:
Na dann bete doch schon mal, das dich niemand fragt, wie if((bool)((n1+n2)%2) == (bool)((int)(n2/n1))) genau funktioniert. Das traue ich einem C++ Anfaenger naemlich nicht unbedingt zu. f'`8k
AutocogitoGruß, TGGC (making great games since 1992)
jau nimm mal lieber tggc's code
( n1+n2%2 == 0 ) == n1 < n2 )ist schöner, schneller und vorallem leicher zu lesen
