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.

  1. #include <iostream> //Für die Ein- und Ausgabe
  2. #include <time.h> //Für die Initialisierung der Random-Funktion
  3. #include <cstdlib> //Für die Random-Funktion selbst
  4. using namespace std; //Damit ich mir das lästige std:: vor den Befehlen ersparen kann.
  5. void msWait(unsigned int _ms); //Hier wird die Funktion deklariert, die weiter unten zu finden ist
  6. //Hier beginnt das eigentliche Programm
  7. int main(){
  8.     // Ein paar Zeilen zur Begrüßung
  9.     cout << "Russian Roulette\nJust a Game ... >:D\n" << endl;
  10.  
  11.     //Anzahl der Plätze im Revolver wo Kugeln reinkönnen
  12.     int cartridges = 6; //In diesem Fall 6
  13.     cout << "Let's play with " << cartridges << " cartridges" << "... You will lose!\n" << endl;
  14.     //Funktion um auch wirklich "zufällige" Zahlen zu erhalten ;-)
  15.     srand((unsigned)time(NULL));
  16.  
  17.     //Die Position an der die Kugel im Revolver ist + Vorbeugung gegen nen kleinen Bug
  18.     int DeadPosition = rand() % (cartridges + 1);
  19.         if(DeadPosition == 0){DeadPosition = 1;}
  20.  
  21.     //Eigene Position wählen
  22.     int CurrentPosition = rand() % (cartridges + 1);
  23.         if(CurrentPosition == 0){CurrentPosition = 1;}
  24.  
  25.     //Nur zu Debug Zwecken, im eigentlichen Spiel macht es keinen Sinn zu wissen an welcher Position die Kugel steckt ;-)
  26.     cout << "\nCurrent Pos: " << CurrentPosition << " DeadPos: " << DeadPosition << "\n" << endl;
  27.  
  28.     int Winner = 0, i = 1;
  29.  
  30.     while(1){
  31.         if(i%2 == 0){
  32.             //Spieler ist dran
  33.             cout << "::: > Your turn!" << endl;
  34.                 //Neu drehen oder gleich schießen?
  35.                 cout << "[Q] Do you wanna spin the cylinder? ([y]es)";
  36.                     char spin, NewPos = 0;
  37.                     cin >> spin;
  38.                     if(spin == 'y'){
  39.                         //Neu drehen, also komplett neue Position
  40.                         cout << "=> Spinning? Haha that won't help you!" << endl;
  41.                         NewPos = rand() % (cartridges + 1);
  42.                             if(NewPos == 0){NewPos = 1;}
  43.                         CurrentPosition = NewPos;
  44.                     }
  45.  
  46.                     //Hier wird eine Zeit zwischen 500ms und 1.5s gewartet. Ein bisschen Spannung muss sein ;-)
  47.                     int ms = ((rand() % 1500) + 500);
  48.                     msWait(ms);
  49.  
  50.                 //Prüfen ob tot oder nicht
  51.                 if(CurrentPosition == DeadPosition){
  52.                     cout << "[XXX] BANG BANG You're dead! - Computer Wins!" << endl;
  53.                     Winner = 1;
  54.  
  55.                     //Es ist wichtig hier aus der Schleife zu springen, da es logischerweise nicht mehr weitergehen kann wenn man tot ist
  56.                     break;
  57.                 }
  58.                 else{
  59.                     cout << "[O] You live ... You're lucky!\n" << endl;
  60.                 }
  61.         }
  62.         else{
  63.             //Computer ist dran
  64.             //Da hier alles ziemlich gleich abläuft wie beim Spieler spare ich mir die Kommentare.
  65.             cout << "::: > Computers turn!" << endl;
  66.  
  67.             //Nach einem Zufallswert wird ermittelt ob der Computer dreht oder schießt
  68.             int spin = ((rand() % 2) + 1), NewPos = 0;
  69.                 if(spin == 1){
  70.                     cout << "=> The Computer want to spin ..." << endl;
  71.                     NewPos = rand() % (cartridges + 1);
  72.                         if(NewPos == 0){NewPos = 1;}
  73.                     CurrentPosition = NewPos;
  74.                 }
  75.  
  76.                 int ms = ((rand() % 1500) + 500);
  77.                 msWait(ms);
  78.  
  79.                 if(CurrentPosition == DeadPosition){
  80.                     cout << "[XXX] 5Y573M 3RR0R - Player Wi....." << endl;
  81.                     Winner = 2;
  82.                     break;
  83.                 }
  84.                 else{
  85.                     cout << "[O] Computer's lucky!\n" << endl;
  86.                 }
  87.         }
  88.  
  89.         //Geschossen, also eine Position weiter
  90.         CurrentPosition++;
  91.         if(CurrentPosition > 6){ CurrentPosition = 1; }
  92.  
  93.         //i wird erhöht. Damit wird dem COmputer klargemacht, dass der nächste Spieler dran ist.
  94.         i++;
  95.         msWait(500);
  96.     }
  97.  
  98.     if(Winner == 1){
  99.         cout << "\n===============================\nThe Game is over, Computer Wins after " << i << " rounds!" << endl;
  100.     }
  101.     else{
  102.         cout << "\n===============================\nThe Game is over, You Win after " << i << " rounds!" << endl;
  103.     }
  104.  
  105.     return 0;
  106. }
  107.  
  108. //Ein Äquivalent zur Sleep() Funktion unter Windows
  109. void msWait(unsigned int _ms){
  110.     usleep(_ms * 1000);
  111. }
  112.  
submitter » gnopaster | imprint « imprint     
» Terms of use «