Würfelspiel?



  • Hi Leute!

    Ich soll ein Würfelspiel programmieren.

    Gegeben ist mir der Programmrahmen:

    #include<iostream>
    #incldue<stdlib.h>
    #include<time.h>
    
    void initD6()
    {
    srand((unsigned)time( NULL ) );
    }
    
    int D6()
    {
    return ((rand()%6)+1);
    }
    
    int main()
    {
    
        initD6();
    
    system("pause");
    return 0;
    }
    

    Ich möchte nun, dass wenn der Spieler z.B ein "s" drückt, die generierung der Zufallszahlen begint und beim druck auf "w" die generierung endet und die 5 Zufallszahlen ausgibt.

    Ich habe gelesen, dass srand in abhängigkeit der Zeit der Funktion D6 unterschiedliche Startwerte liefert, dass auch immer unterschiedliche Zufallszahlen generiert werden können.

    Da ich leider auch nicht durch die Hilfe von google herausfinden konnte, wie ich diese beiden Funktion srand und rand starten kann damit sie mir diese Zahlen liefert frag ich hier eben mal nach. Ich mach das alles zum ersten Mal!

    Wisst ihr ne gute Website auf der diese Funktionen erklärt sind damit mach auch als blutiger Anfänger zurecht kommt?

    Könnt ihr mir ein bisschen drauf helfen?


  • Mod

    😕 Alles wonach du fragst ist doch schon vorgegeben. initD6 ruft srand auf, und D6 liefert dir eine passende Zufallszahl, du brauchst doch nur noch den Rahmen zu schreiben.

    Eine gute Referenz zu C++ findest du hier:
    www.cplusplus.com



  • Gut, wenn alles schon vorgegeben ist, dann müsste doch der Code schon die erste Zufallszahl ausgegeben, oder?

    #include<iostream>
    #include<stdlib.h>
    #include<time.h>
    using namespace std;
    
    void initD6()
    {
    srand((unsigned)time( NULL ) );
    }
    
    int D6()
    {
    return ((rand()%6)+1);
    }
    
    int main()
    {
        int s_wurf;
    
        initD6();
    
        cout << D6;
    
    system("pause");
    return 0;
    }
    

    Was er aber nicht tut weil er mir immer ein 1 bringt...



  • cout << D6();
    


  • Sind die Header so vorgegeben?
    Frage wegen dem Mix aus C und C++.
    Besser ist meist, wenn man sich für eine Variante entscheidet.

    Mit "s" die Generierung starten ist okay
    Aber mit "w" abbrechen ist ungewöhnlich aber nicht unmöglich - steht das so in der Aufgabe? "w" würde ich eher mit "write", also "schreiben" verbinden.

    Beim Quellcode hast du ja die richtigen Tags gewählt. Beim schnellen darüber Sehen fällt in Zeile 2 auf, das da kein blau ist - hat sich da ein Fehler im Quelltext eingeschlichen?

    MfG f.-th.



  • zu langsam 😉



  • Danke... Das war dann wohl der Fehler! Da ich ja eine Funktion aufrufe, muss ich auch die Klammern mit hinschreiben. Ist es nicht so ... 🙂



  • Das iostream (c++) hab ich hingeschrieben, weil ich mich mmit printf() noch nicht auskenne...

    PS: Das "w" soll "wurf" bedeuten. Ist vielleicht wirklich etwas unglücklich gewählt...



  • Du bekommst immer eine 1?
    Du hast ein Klammerpaar vergessen 👍

    MfG f.-th.



  • Versuchs mal so:
    ( Bei mir geht es. )

    Falls du wissen willst warum meine Variante funktioniert und deine nicht nimm halt einen Debugger mit Disassembler.
    ( z.b. Olly Debugger )

    #include<iostream>
    #include<stdlib.h> 
    #include<time.h> 
    using namespace std; 
    
    void initD6() 
    { 
    srand((unsigned)time( NULL ) ); 
    } 
    
    int D6() 
    { 
    return ((rand()%6)+1); 
    } 
    
    int main() 
    { 
    int s_wurf;
    int ret;
    
    	initD6();
    
    	ret = D6();
    
    	cout << ret;
    
    system("pause"); 
    return 0; 
    }
    

Log in to reply