Programmera spel i C++ för nybörjare/Sten, sax, påse
Det här är en avancerad variant av det urgamla spelet styen, sax och påse. Man kan t.o.m. satsa pengar och försöka besegra datorn.
Kommandot "system("cls");" fungerar inte i alla kompilatorer men koden utvecklades i Visual Studio 2010 express så där fungerar det. Om du får ett felmeddelande får du kommentera bort alla raderna med kommandot. Sitter du med ett Linux/Unix system är samma kommando: "system("clear");".
//Kod donerad gratis till wikibooks av Niklas Larsson, John Bauergymnasiet i Uddevalla //December 2011 #include "StdAfx.h" #include <iostream> #include <ctime> #include <stdlib.h> using namespace std; //Funktionsdeklarationer float du_vann(int dinapengar, int satsadepengar); //Hur mycket pengar vann man? float du_forlorade(int dinapengar, int satsadepengar); //Hur mycket pengar förlorade man? float lika(int dinapengar, int satsadepengar); //Vad händer vid oavgjort? int main() { bool gameover = false; //Vi måste veta när spelet skall sluta float dinapengar = 1000; //Startsumma för spelaren int satsadepengar = 0; //Variabel för hur mycket man satsar srand(time(NULL)); while (dinapengar > 0) //Fortsätt så länge man har pengar {//gameover //Välj om du vill ha en sten, en sax eller en påse cout << "1 - Sten" << endl; cout << "2 - Sax" << endl; cout << "3 - Pase" << endl; cout << "Vad vill du ha?" << endl; int spelarVal; //Vad valde spelaren? cin >> spelarVal; if (spelarVal > 3 || spelarVal < 1) cout << "Skriv in 1,2 eller 3" << endl; //Om man skrev något annat än sten, sax eller påse else { //Om man valt rätt 1-3 cout << "Hur mycket vill du satsa? (max " << dinapengar << " kr)" << endl; cin >> satsadepengar; if (satsadepengar > dinapengar) cout << "Du har inte tillräckligt med pengar" << endl; //Man satsade mer än man har else { system("cls"); //Rensa skärmen från text if(spelarVal == 1) { cout << "Du valde sten." << endl; } else if (spelarVal == 2) { cout << "Du valde sax." << endl; } else if (spelarVal == 3) { cout << "Du valde pase." << endl; } int datorVal = (rand() % 3) + 1; //Datorn väljer sten, sax eller påse if(datorVal == 1) { cout << "Datorn valde sten." << endl; } else if (datorVal == 2) { cout << "Datorn valde sax." << endl; } else if (datorVal == 3) { cout << "Datorn valde pase." << endl; } if (spelarVal == datorVal) { dinapengar = lika(dinapengar, satsadepengar); //Oavgjort } if (spelarVal == 1 && datorVal == 2) { dinapengar = du_vann(dinapengar, satsadepengar); } else if (spelarVal == 1 && datorVal == 3) { dinapengar = du_forlorade(dinapengar, satsadepengar); } else if (spelarVal == 2 && datorVal == 1 ) { dinapengar = du_forlorade(dinapengar, satsadepengar); } else if (spelarVal == 2 && datorVal == 3) { dinapengar=du_vann(dinapengar, satsadepengar); } else if (spelarVal == 3 && datorVal == 1) { dinapengar=du_vann(dinapengar, satsadepengar); } else if (spelarVal == 3 && datorVal == 2) { dinapengar = du_forlorade(dinapengar, satsadepengar); } if (dinapengar == 0) //pengarna är slut { cout << "Du har inga pengar kvar" << endl; char spelaIgen; cout << "Vill du spela igen? j/n" << endl; cin >> spelaIgen; if (spelaIgen == 'j') { system("cls"); dinapengar = dinapengar + 1000; //ge 1000 kronor till spelaren cout << "Du har " << dinapengar << " att satsa" << endl; } else if (spelaIgen == 'n') { cout << "Tack for att du spelade" << endl; return 0; } else { cout << "Det var varken j eller n. Spelet avslutas" << endl; return 0; } } } // OM man itne har tillräckligt med pengar } //Om man valt rätt 1-3 }//gameover while loop return 0; } //main slut /* Funktionsbeskrivningarna ---------------------------------------------------------------------------------*/ /* Om spelaren vinner får den tillbaka sin insats *2 --------------------------*/ float du_vann(int dinapengar, int satsadepengar) { int utpengar = 0; cout << "Du vann!" << endl; utpengar = (satsadepengar*2)+dinapengar; cout << "Du har " << utpengar << " kr kvar" << endl; cout << "\n"; return utpengar; } /* Om spelaren förlorar tappar den pengarna ----------------------------------*/ float du_forlorade(int dinapengar, int satsadepengar) { int utpengar = 0; cout << "Du forlorade!" << endl; utpengar = dinapengar-satsadepengar; cout << "Du har " << utpengar << " kr kvar" << endl; cout << "\n"; return utpengar; } /* Om det blir oavgjort händer ingenting ------------------------------------*/ float lika(int dinapengar, int satsadepengar) { int utpengar = 0; cout << "Det blev lika!" << endl; utpengar = dinapengar; cout << "Du har " << utpengar << " kr kvar" << endl; cout << "\n"; return utpengar; }