Programmera spel i C++ för nybörjare/Sten, sax, påse
Utseende
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 inte 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;
}