Programmera spel i C++ för nybörjare/Sten, sax, påse

Från Wikibooks


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; 
}