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

Från Wikibooks
Hoppa till navigering Hoppa till sök


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