Hoppa till dokument

Roulette C++

Roulette program
Kurs

Grundläggande programmering med C++ G1N (IT120G)

19 Dokument
Studenter delade 19 dokument i den här kursen
Akademiskt år: 2022/2023
Uppladdad av:
Anonym Student
Det här dokumentet har laddats upp av en student, precis som du, som har valt att förbli anonym.
Högskolan i Skövde

Kommentarer

Använd logga in or registera dig för att göra kommentarer.

Förhandsgranskningstext

Inlämningsuppgift

Roulette

Grundläggande programmering med C++

Axel Juneblad

Introduktion............................................................................................................................

Problembeskrivning...............................................................................................................

  • Introduktion............................................................................................................................
  • Problembeskrivning...............................................................................................................
  • Antaganden och krav.............................................................................................................
  • Lösningsdesign......................................................................................................................
  • Diskussion..............................................................................................................................
  • Källkod....................................................................................................................................

problematiskt var hur koden för vilken siffra användaren matar in skulle se ut. Till sist behövdes även ett resultat som, likt spelvalet färg, ökas eller minskas och därefter presenteras för användaren.

Programmering av slump

Denna slumpgenerering är en kod som står skriven i uppgiftsbeskrivningen. Problemet som uppstod med denna kod var att förstå hur den skulle sättas in och användas. Likt de tidigare problemen behövde den siffra som slumpas fram också jämföras med vad användaren valt.

Programmering av fortsättning och avslutning av spel

Att få programmet att börja om igen var ett återkommande problem, men också av stor vikt för att få det hela att fungera. Användaren ska också ha ett val att kunna avsluta spelet när den vill. Att avsluta programmet var också ett problem då det implementerades i flera delar av programmet.

Antaganden och krav.............................................................................................................

Vad som händer ifall användaren anger en input som inte har ett tilldelat värde när pengar satsas, är det första antagandet som gjordes. Då det inte står något i uppgiftsbeskrivningen om att detta är ett krav, blir insatsen i detta fall 100 kr och programmet fortsätter.

Att användaren ska kunna avsluta spelet är ett tydligt krav. Däremot är det mindre tydligt ifall detta alternativ skulle förekomma vid flera tillfällen i spelet eller endast efter en spelad omgång. Här görs ett antagande om att spelaren kan avsluta spelet efter varje spelad omgång, men också ifall den angivna insatsen är högre än den totala summa pengar på kontot.

Ett annat antagande är ifall användaren inte har råd med någon av insatserna, ska det då finnas ett påfyllnings alternativ eller ska programmet avslutas? Detta program har inget påfyllnings alternativ, utan ifall användaren får slut på pengar avslutas programmet. Här görs också ett antagande kring vad som händer om användaren har pengar kvar men försöker satsa på en insats de inte har råd med, då varnas användaren med ett val om spelet ska fortsätta eller avslutas.

Ännu ett antagande är hur vinsten ska presenteras. Exempelvis, ifall användaren satsar 300 kr och vinner på färg, ska då en summa på 300 kr eller 600 kr presenteras som vinst? I det här fallet presenteras hela summan, alltså vinsten inkluderat med insatsen.

Lösningsdesign......................................................................................................................

Programmering av insats

För att lösa detta används en selektion av flera if statements där en variabel och siffra jämförs med hjälp av relations- och jämlikhets operatorn ==. Detta gör det möjligt att tilldela flera olika värden till variabeln insats beroende på vilken siffra

Programmering av spelval färg

Vid detta val av spel börjar användaren med att välja vilken färg som ska spelas på genom att mata in en siffra till konsolen. Selektionen kontrolleras med hjälp av if statements där variablerna för färg och slumpgeneratorn är kallade på. Därefter kontrolleras också ifall den slumpade siffran är ett jämnt eller ojämnt tal med hjälp av den logiska operatorn &&. Ett exempel på detta är följande. if (spelFärg == 1 && slumpSiffra % 2 == 0 )

Det som detta villkor beskriver är att om användaren satsar på svart och den slumpade siffran är ett jämnt tal, görs följande. konto = konto + insats; cout << "Det blev " << slumpSiffra << endl; cout << "Grattis! Du vann " << insats* 2 << " kronor! Och har nu " << konto << " kronor" << endl << endl;

Användaren förutsåg alltså rätt. Variablerna för pengar på kontot och insatsen kallas på för att sedan multiplicera insatsen med två, addera med den totala summa pengar på kontot och presenteras för användaren. Förutsåg användaren istället fel stämmer villkoret ej och pengarna på kontot subtraheras med insatsen och presenteras för användaren.

Programmering av spelval siffra

Användaren börjar med att välja vilken siffra som ska spelas på genom en inmatning till konsolen. Den valda siffran jämförs sedan med den slumpade siffran med hjälp av relations- och jämlikhets operatorn ==. Här används återigen ett if statement för att avgöra ifall användarens siffra är samma som den slumpade siffran. if (spelSiffra == slumpSiffra)

Likt spelval färg utförs därefter följande steg. Förutsåg användaren rätt multipliceras insatsen med 9 och adderas sedan med den totala summa pengar på kontot och presenteras för användaren. Förutsåg användaren fel subtraheras den totala summa pengar på kontot med insatsen och presenteras för användaren.

Programmering av slump

Lösningen till att få fram en slumpad siffra mellan 1 och 36 var att tilldela en variabel till den kod som stod skriven i uppgiftsbeskrivningen. Detta utfördes på följande sätt. slumpSiffra = rand () % 36 + 1 ;

Därefter behöver endast variabeln kallas på och jämföras med den siffra eller färg användaren valt med hjälp av, ännu en gång, relations- och jämlikhets operatorn ==.

Programmering av fortsättning och avslutning av spel

Hela programmet är skrivet i en do-while loop med villkoret att ifall den totala summan pengarna på kontot är 100 kr eller större fortsätter spelet. Detta betyder att så länge detta villkor stämmer fortsätter spelet. Ifall pengarna på kontot underskrider 100 kr stämmer inte villkoret och användaren kan inte spela vidare. while (konto >= 100 );

Efter varje spelad omgång får användaren också frågan om spelet ska fortsätta eller avslutas. Väljer användaren att fortsätta spela stämmer villkoret ej och spelet börjar om. Väljer användaren att avsluta spelet stämmer villkoret, den totala summa pengarna kvar på kontot presenteras och programmet avslutas med hjälp av return 0. cin >> exit; if (exit == 6 ) { cout << "Du har " << konto << " kronor och valde att sluta spela" << endl << "Välkommen åter" << endl; return 0 ; }

Användaren har även möjlighet att avsluta spelet tidigare. Eftersom ett antagande gjordes att användaren kan avsluta spelet vid fler än ett tillfälle, kan användaren välja att avsluta spelet ifall insatsen är större än pengarna på kontot. Detta löses genom ett if statement som gör följande. if (insats > konto) { cout << "Du har ej råd med den insatsen" << endl << "Vill du avsluta spelet, klicka 6" << endl << "Vill du fortsätta spela, klicka 1 och välj en mer lämplig insats" << endl << endl; cin >> exit;

Diskussion

Brister är något som detta program inte undkommer. En av dessa är vid de fall som användaren anger en inmatning till konsolen som ej har ett tilldelat värde. Däremot fungerar de inmatningar som har ett tilldelat värde korrekt. Det är alltså förutsatt att användaren anger en korrekt inmatning och finns därför inget skydd mot en inmatning som är inkorrekt. Ett exempel på detta är när användaren ska välja en insats. Väljer då användaren en inmatning som inte har ett tilldelat värde blir insatsen noll kronor. Här hade en varning kunnat implementeras och för att sedan tvinga användaren att välja en insats återigen.

if (siffra == 1 ) { insats = 100 ; } else if (siffra == 3 ) { insats = 300 ; } else if (siffra == 5 ) { insats = 500 ; } // Insatsen presenteras för användaren cout << insats << endl << endl;

// Spelaren valde en insats högre än konto och varnas med ett val if (insats > konto) { cout << "Du har ej råd med den insatsen" << endl << "Vill du avsluta spelet, klicka 6" << endl << "Vill du fortsätta spela, klicka 1 och välj en mer lämplig insats” << endl << endl; cin >> exit; }

// Spelarens konto presenteras och spelet avslutas. if (exit == 6 ) { cout << "Du har " << konto << " kronor och valde att sluta spela" << endl << "Välkommen åter" << endl; return 0 ; } } // Spelaren får spela vidare så länge insatsen är högre än kontot while (insats > konto);

// Spelaren väljer val av spelsätt. cout << "Klicka 1 för att spela med färg, eller 2 för att spela med siffra" << endl << endl; cin >> spelVal;

// En siffra mellan 1 och 36 slumpas. srand(time( 0 )); slumpSiffra = rand () % 36 + 1 ;

// Spelaren valde färg. Resultat kontrolleras och presenteras if (spelVal == 1 ) {

cout << "Klicka 1 för att satsa på svart och 2 för att satsa på röd" << endl; cin >> spelFärg; if (spelFärg == 1 && slumpSiffra % 2 == 0 ) { konto = konto + insats; cout << "Det blev " << slumpSiffra << endl; cout << "Grattis! Du vann " << insats* 2 << " kronor! Och har nu " << konto << " kronor" << endl << endl; } else if (spelFärg == 2 && slumpSiffra % 2 == 1 ) { konto = konto + insats; cout << "Det blev " << slumpSiffra << endl; cout << "Grattis! Du vann " << insats* 2 << " kronor! Och har nu " << konto << " kronor" << endl << endl; } else { konto = konto - insats; cout << "Det blev " << slumpSiffra << endl; cout << "Tyvärr, du vann inget denna gång. Du har nu " << konto << " kronor " << endl << endl; } } // Spelaren väljer siffra. Resultat kontrolleras och presenteras else { cout << "Välj en siffra mellan 1 och 36" << endl; cin >> spelSiffra; cout << "Siffran landade på " << slumpSiffra << endl; if (spelSiffra == slumpSiffra) { konto = konto + insats* 10 ; cout << "Grattis! du har vunnit " << insats* 10 << " och har nu " << konto << " kronor" << endl << endl; } else { konto = konto - insats; cout << "Tyvärr, du vann inget denna gång. Du har nu " << konto << " kronor" << endl << endl; } } // Spelaren väljer att fortsätta eller avsluta. cout << "Vill du avsluta spelet, klicka 6." << endl << "Vill du fortsätta spela, klicka 1" << endl << "Ditt konto består utav " << konto << " kronor" << endl;

Var det här dokumentet användbart?

Roulette C++

Kurs: Grundläggande programmering med C++ G1N (IT120G)

19 Dokument
Studenter delade 19 dokument i den här kursen
Var det här dokumentet användbart?
Inlämningsuppgift #
Roulette
Grundläggande programmering med C++
Axel Juneblad
1
Introduktion............................................................................................................................3
Problembeskrivning...............................................................................................................3
Antaganden och krav.............................................................................................................4
Lösningsdesign......................................................................................................................5
Diskussion..............................................................................................................................8
Källkod....................................................................................................................................9
2
Introduktion
Denna uppgift går ut på att skapa ett roulette spel i C++. Roulette spelet fungerar på
följande sätt. Användaren tilldelas en startsumma på 1000 kr. Därefter väljer
användaren en insats på antingen 100, 300 eller 500 kronor, för att sedan satsa på
en färg eller siffra. Lyckas användaren förutse rätt erhålls en vinst på, tio gånger
insatsen vid rätt val av siffra eller två gånger insatsen vid rätt val av färg. Efter varje
slumpad färg eller siffra presenteras användarens vinst eller förlust, samt den totala
summa pengar användaren har. Vid en färdigspelad omgång har användaren
möjlighet att avsluta spelet eller fortsätta spela, förutsatt att det finns pengar kvar.
Det fanns flera olika lösningsförslag till hur programmet skulle se ut. Det som
underlättade mest var att utgå ifrån flödesdiagrammet och sedan dela upp varje del
för sig och stegvis översätta det till kod.
Problembeskrivning
Programmering av insats
Det värde som användaren väljer att satsa var det första problemet som uppstod.
Dessa värden fick bara vara 100, 300 och 500 kr. Alltså är det ej tillåtet för
användaren att satsa på en lägre eller högre summa. Därefter uppstod problemet om
användarens totala summa pengar. Om den totala summan är för liten för att ha råd
att satsa kan användaren ej spela vidare.
Programmering av spelval
I denna del av programmet uppstod problemet om vilket val av spel användaren
väljer. Då det finns två olika val av spel, färg eller siffra, behövde programmet
struktureras på ett sätt som gör att endast ett av dessa val startas. Svårigheten här
var just hur dessa spelval skulle startas för att sedan vidare kunna starta koden för
vilken färg eller siffra användaren valt.
Programmering av spelval färg
Ifall användaren väljer att spela med färg måste programmet kunna starta koden för
vilken färg användaren väljer att spela med, röd eller svart. Här uppstod det ett
problem då dessa färger behövde vara kopplade till en jämn och ojämn siffra för att
få fram ett resultat utav vinst eller förlust. Därefter måste även pengarna på kontot
ökas eller minskas beroende på resultatet och presenteras för användaren.
Programmering av spelval siffra
Det främsta problemet som uppstod ifall användaren väljer att spela med siffra var
att denna siffra måste jämföras med den siffra som slumpas fram. Mindre
3
problematiskt var hur koden för vilken siffra användaren matar in skulle se ut. Till sist
behövdes även ett resultat som, likt spelvalet färg, ökas eller minskas och därefter
presenteras för användaren.
Programmering av slump
Denna slumpgenerering är en kod som står skriven i uppgiftsbeskrivningen.
Problemet som uppstod med denna kod var att förstå hur den skulle sättas in och
användas. Likt de tidigare problemen behövde den siffra som slumpas fram också
jämföras med vad användaren valt.
Programmering av fortsättning och avslutning av spel
Att få programmet att börja om igen var ett återkommande problem, men också av
stor vikt för att få det hela att fungera. Användaren ska också ha ett val att kunna
avsluta spelet när den vill. Att avsluta programmet var också ett problem då det
implementerades i flera delar av programmet.
Antaganden och krav
Vad som händer ifall användaren anger en input som inte har ett tilldelat värde när
pengar satsas, är det första antagandet som gjordes. Då det inte står något i
uppgiftsbeskrivningen om att detta är ett krav, blir insatsen i detta fall 100 kr och
programmet fortsätter.
Att användaren ska kunna avsluta spelet är ett tydligt krav. Däremot är det mindre
tydligt ifall detta alternativ skulle förekomma vid flera tillfällen i spelet eller endast
efter en spelad omgång. Här görs ett antagande om att spelaren kan avsluta spelet
efter varje spelad omgång, men också ifall den angivna insatsen är högre än den
totala summa pengar på kontot.
Ett annat antagande är ifall användaren inte har råd med någon av insatserna, ska
det då finnas ett påfyllnings alternativ eller ska programmet avslutas? Detta program
har inget påfyllnings alternativ, utan ifall användaren får slut på pengar avslutas
programmet. Här görs också ett antagande kring vad som händer om användaren
har pengar kvar men försöker satsa på en insats de inte har råd med, då varnas
användaren med ett val om spelet ska fortsätta eller avslutas.
Ännu ett antagande är hur vinsten ska presenteras. Exempelvis, ifall användaren
satsar 300 kr och vinner på färg, ska då en summa på 300 kr eller 600 kr
presenteras som vinst? I det här fallet presenteras hela summan, alltså vinsten
inkluderat med insatsen.
4
Lösningsdesign
Programmering av insats
För att lösa detta används en selektion av flera if statements där en variabel och
siffra jämförs med hjälp av relations- och jämlikhets operatorn ==. Detta gör det
möjligt att tilldela flera olika värden till variabeln insats beroende på vilken siffra
5