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 ? 😮



  • Ja, Tippfehler meinerseits. f'`8k

    Autocogito

    Gruß, TGGC (making great games since 1992)



  • 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

    Autocogito

    Gruß, 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

    Autocogito

    Gruß, 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 😉


Anmelden zum Antworten