gnopaste

Sorry for this ugly message. We are searching for some translators.
Please take a look here
Thanks to all translators, you're doing a great job!

Name
enco
Scriptlanguage
C++
Tabwidth
4
Date
08/09/2008 02:08:33 am
IP
88.76.145.215

Russian Roulette
Created on: 05.08.2008
Author: enco

Das Programm wurde unter Linux geschrieben und erfolgreich kompiliert.
Unter Windows müssen einige Änderungen vorgenommen werden.

#include <iostream> //Für die Ein- und Ausgabe
#include <time.h> //Für die Initialisierung der Random-Funktion
#include <cstdlib> //Für die Random-Funktion selbst

using namespace std; //Damit ich mir das lästige std:: vor den Befehlen ersparen kann.

void msWait(unsigned int _ms); //Hier wird die Funktion deklariert, die weiter unten zu finden ist

//Hier beginnt das eigentliche Programm
int main(){
    // Ein paar Zeilen zur Begrüßung
    cout << "Russian Roulette\nJust a Game ... >:D\n" << endl;

    //Anzahl der Plätze im Revolver wo Kugeln reinkönnen
    int cartridges = 6; //In diesem Fall 6
    cout << "Let's play with " << cartridges << " cartridges" << "... You will lose!\n" << endl;

    //Funktion um auch wirklich "zufällige" Zahlen zu erhalten ;-)
    srand((unsigned)time(NULL));

    //Die Position an der die Kugel im Revolver ist + Vorbeugung gegen nen kleinen Bug
    int DeadPosition = rand() % (cartridges + 1);
        if(DeadPosition == 0){DeadPosition = 1;}

    //Eigene Position wählen
    int CurrentPosition = rand() % (cartridges + 1);
        if(CurrentPosition == 0){CurrentPosition = 1;}

    //Nur zu Debug Zwecken, im eigentlichen Spiel macht es keinen Sinn zu wissen an welcher Position die Kugel steckt ;-)
    cout << "\nCurrent Pos: " << CurrentPosition << " DeadPos: " << DeadPosition << "\n" << endl;

    int Winner = 0, i = 1;

    while(1){
        if(i%2 == 0){
            //Spieler ist dran
            cout << "::: > Your turn!" << endl;
                //Neu drehen oder gleich schießen?
                cout << "[Q] Do you wanna spin the cylinder? ([y]es)";
                    char spin, NewPos = 0;
                    cin >> spin;
                    if(spin == 'y'){
                        //Neu drehen, also komplett neue Position
                        cout << "=> Spinning? Haha that won't help you!" << endl;
                        NewPos = rand() % (cartridges + 1);
                            if(NewPos == 0){NewPos = 1;}
                        CurrentPosition = NewPos;
                    }

                    //Hier wird eine Zeit zwischen 500ms und 1.5s gewartet. Ein bisschen Spannung muss sein ;-)
                    int ms = ((rand() % 1500) + 500);
                    msWait(ms);

                //Prüfen ob tot oder nicht
                if(CurrentPosition == DeadPosition){
                    cout << "[XXX] BANG BANG You're dead! - Computer Wins!" << endl;
                    Winner = 1;

                    //Es ist wichtig hier aus der Schleife zu springen, da es logischerweise nicht mehr weitergehen kann wenn man tot ist
                    break;
                }
                else{
                    cout << "[O] You live ... You're lucky!\n" << endl;
                }
        }
        else{
            //Computer ist dran
            //Da hier alles ziemlich gleich abläuft wie beim Spieler spare ich mir die Kommentare.
            cout << "::: > Computers turn!" << endl;

            //Nach einem Zufallswert wird ermittelt ob der Computer dreht oder schießt
            int spin = ((rand() % 2) + 1), NewPos = 0;
                if(spin == 1){
                    cout << "=> The Computer want to spin ..." << endl;
                    NewPos = rand() % (cartridges + 1);
                        if(NewPos == 0){NewPos = 1;}
                    CurrentPosition = NewPos;
                }

                int ms = ((rand() % 1500) + 500);
                msWait(ms);

                if(CurrentPosition == DeadPosition){
                    cout << "[XXX] 5Y573M 3RR0R - Player Wi....." << endl;
                    Winner = 2;
                    break;
                }
                else{
                    cout << "[O] Computer's lucky!\n" << endl;
                }
        }

        //Geschossen, also eine Position weiter
        CurrentPosition++;
        if(CurrentPosition > 6){ CurrentPosition = 1; }

        //i wird erhöht. Damit wird dem COmputer klargemacht, dass der nächste Spieler dran ist.
        i++;
        msWait(500);
    }

    if(Winner == 1){
        cout << "\n===============================\nThe Game is over, Computer Wins after " << i << " rounds!" << endl;
    }
    else{
        cout << "\n===============================\nThe Game is over, You Win after " << i << " rounds!" << endl;
    }

    return 0;
}

//Ein Äquivalent zur Sleep() Funktion unter Windows
void msWait(unsigned int _ms){
    usleep(_ms * 1000);
}

submitter » gnopaster | imprint « imprint     
» Terms of use «