Gå til innhold

[Løst] Poeng system til stein, saks og papir spill c++


Anbefalte innlegg

Hei, jeg har lagd et type stein saks papir spill ved litt hjelp fra forumet (error retting).

Er det mulig at man legger et score system som teller poeng når man vinner og teller poeng når computer vinner?

 

koden ser slik ut:

#include <cstdlib>
#include <iostream>
#include <string>
#include <ctime>

using namespace std;

int main()
{
   srand(static_cast<unsigned int> (time(0)));
   const int NUM_FIELDS = 3;
   const string WORDS[NUM_FIELDS] =
       {
               ("stein"),
               ("papir"),
               ("saks")
       };



   char again = 'j';

   cout << "stein, saks, papir!\n";


   while (again == 'j')
   {
               int play = (rand() % NUM_FIELDS);
               string theComputer = WORDS[play];
               string guess;

               cout << "\nSkriv in ditt valg: ";
               cin >> guess;
               cin.get();
               cout << "\nDatamaskinen sitt valg er: ";
               cout << theComputer << ".";
               cin.get();

         if ((guess == "stein") && (play ==2))
         {
              cout << "\nStein knuser saks! DU VANT!\n";
         }
         else if (guess == "stein" && play ==1)
         {
              cout << "\npapir slår stein. du tapte.\n";
         }
         else if (guess == "stein" && play == 0)
         {
              cout << "\nDet ble likt!\n";
         }
         else if (guess == "papir" && play == 0)
         {
              cout << "\nPapir slår stein! Du VANT!\n";
         }
         else if (guess == "papir" && play == 1)
         {
              cout << "\nDet ble likt!\n";
         }
         else if (guess == "papir" && play == 2)
         {
              cout << "\nSaks kutter papir. du tapte.\n";
         }
         else if (guess == "saks" && play == 1)
         {
              cout << "\nsaks kutter papir! DU VANT!\n";
         }
         else if (guess == "saks" && play == 0)
         {
              cout << "\nStein knuser saks! du tapte.\n";
         }
         else if (guess == "saks" && play == 2)
         {
              cout << "\nDet ble likt!\n";
         }
         else
         {
             cout << "\n Beklager, men det er ikke noe svar.\n";
         }
               cin.get();
               cout << " vil du spille igjen? (j/n): ";
               cin >> again;

       }
       cin.get();
   return EXIT_SUCCESS;
}

 

altså, jeg kunne tenkt meg litt skrift oppe i høyre hjørne som teller poeng med andre ord.

Noen som kan hjelpe meg med dette?

Lenke til kommentar
Videoannonse
Annonse

Skulle da ikke være så vanskelig det? Lag to int-tellere som starter på 0. Den ene kaller du dataPoints og den andre kaller du playerPoints.

 

Så fyller du inn som i dette eksempelet:

 

if ((guess == "stein") && (play ==2))
         {
              cout << "\nStein knuser saks! DU VANT!\n";
              playerPoints++;
         }

 

Så kan du jo sette inn et eget valg for nullstilling av disse int-verdiene.

 

Utprintingen klarer du vel selv. cout<<playerPoints;

 

Edit: utprinting må skje i slutten av while-løkka.

Endret av r2d290 waits for alice
Lenke til kommentar

Skulle da ikke være så vanskelig det? Lag to int-tellere som starter på 0. Den ene kaller du dataPoints og den andre kaller du playerPoints.

 

Så fyller du inn som i dette eksempelet:

 

if ((guess == "stein") && (play ==2))
         {
              cout << "\nStein knuser saks! DU VANT!\n";
              playerPoints++;
         }

 

Så kan du jo sette inn et eget valg for nullstilling av disse int-verdiene.

 

Utprintingen klarer du vel selv. cout<<playerPoints;

 

Edit: utprinting må skje i slutten av while-løkka.

 

... er amatør, så... hva er en int teller? vet ikke helt hva slags kode du mener... :hmm:

Lenke til kommentar

Skulle da ikke være så vanskelig det? Lag to int-tellere som starter på 0. Den ene kaller du dataPoints og den andre kaller du playerPoints.

 

Så fyller du inn som i dette eksempelet:

 

if ((guess == "stein") && (play ==2))
         {
              cout << "\nStein knuser saks! DU VANT!\n";
              playerPoints++;
         }

 

Så kan du jo sette inn et eget valg for nullstilling av disse int-verdiene.

 

Utprintingen klarer du vel selv. cout<<playerPoints;

 

Edit: utprinting må skje i slutten av while-løkka.

 

... er amatør, så... hva er en int teller? vet ikke helt hva slags kode du mener... :hmm:

 

test ut denne koden, så kanskje du forstår det:

#include <iostream>

using namespace std;

int main()
{
   int teller = 0;

   while(teller < 20)
   {
       cout << "Teller er nå: " << teller << endl;
       teller++;
   }
}

Lenke til kommentar

Ja. Det eksempelet burde forklare det. Men med ord: Det jeg mente med en int-teller er en variabel (f.eks. dataPoints eller teller) som du initialiserer som en int-verdi. Int(eger) vil si heltall, altså at du ikke kan ha en kommaverdi i tallet. Men det ønsker du jo ikke uansett. Alternativer til "int" er "double" som vil kunne gi deg desimaltall, eller "string" som vil kunne gi deg bokstaver. Men i dette tilfellet holder det altså med å bruke int.

Lenke til kommentar

den fungerende koden endte opp med å se slik ut :D

#include <cstdlib>
#include <iostream>
#include <string>
#include <ctime>

using namespace std;

int main()
{
   int playerPoints = 0;
   int dataPoints = 0;
   srand(static_cast<unsigned int> (time(0)));
   const int NUM_FIELDS = 3;
   const string WORDS[NUM_FIELDS] =
       {
               ("stein"),
               ("papir"),
               ("saks")
       };



   char again = 'j';

   cout << "stein, saks, papir!\n";
   while (playerPoints < 1)
   while (dataPoints < 1)
   while (again == 'j')
   {
               int play = (rand() % NUM_FIELDS);
               string theComputer = WORDS[play];
               string guess;

               cout << "\t\t\t\t\t\t\tdu har naa:  " << playerPoints << endl;
               cout << "\t\t\t\t\t\t\tcomputer har naa:  "<< dataPoints << endl;
               cout << "\nSkriv in ditt valg: ";
               cin >> guess;

               cin.get();
               cout << "\nDatamaskinen sitt valg er: ";
               cout << theComputer << ".";
               cin.get();

         if ((guess == "stein") && (play ==2))
         {
              cout << "\nStein knuser saks! DU VANT!\n";
              playerPoints++;
         }
         else if (guess == "stein" && play ==1)
         {
              cout << "\npapir slaar stein. du tapte.\n";
              dataPoints++;
         }
         else if (guess == "stein" && play == 0)
         {
              cout << "\nDet ble likt!\n";
         }
         else if (guess == "papir" && play == 0)
         {
              cout << "\nPapir slaar stein! Du VANT!\n";
              playerPoints++;
         }
         else if (guess == "papir" && play == 1)
         {
              cout << "\nDet ble likt!\n";
         }
         else if (guess == "papir" && play == 2)
         {
              cout << "\nSaks kutter papir. du tapte.\n";
              dataPoints++;
         }
         else if (guess == "saks" && play == 1)
         {
              cout << "\nsaks kutter papir! DU VANT!\n";
              playerPoints++;
         }
         else if (guess == "saks" && play == 0)
         {
              cout << "\nStein knuser saks! du tapte.\n";
              dataPoints++;
         }
         else if (guess == "saks" && play == 2)
         {
              cout << "\nDet ble likt!\n";
         }
         else
         {
             cout << "\n Beklager, men det er ikke noe svar.\n";
         }

               cin.get();
               cout << " vil du spille igjen? (j/n): ";
               cin >> again;

       }
       cin.get();
   return EXIT_SUCCESS;
}

 

Takk for all hjelp !

 

har bare ett lite spørsmål:

hvordan kan man legge grafikk til spillet osv.?

har prøvd å søke på det, man fant rett og slett ingen direkte svar på spørsmålet.

Lenke til kommentar

ja du kan, men vil virkelig anbefale at du blir litt flinkere før du begynner å holde på med grafikk. Greit å være helt stødig på de grunleggende prinsippene først.

 

Du kan prøve å lage et lite spill som heter "Guess my number", og etterpå gjøre slik at maskinen spiller dette spillet selv og prøve å gjøre at den bruker færrest mulig gjett.

 

Guess the Number

How to Play:

The FunBrain Magician will pick a secret number and put it in his hat.

You guess what number it is.

If your guess is too high or too low, FunBrain will give you a hint.

See how many turns it takes you to win!

Lenke til kommentar

har bare ett lite spørsmål:

hvordan kan man legge grafikk til spillet osv.?

har prøvd å søke på det, man fant rett og slett ingen direkte svar på spørsmålet.

Tror du burde lære deg en del mer om C++ før du begynner å fundere på det. Du har fortsatt et stykke igjen å gå.

 

Du har gjort testen vesentlig mer komplisert enn den trenger å være. Alle if-testene kan reduseres ned til tre utfall: uavgjort, tap eller seier.

 

Funder på hvordan, i mens legger jeg en løsning i spoiler:

 

 

#include <iostream>
#include <string>

using namespace std;

const string values[] = {"rock", "scissor", "paper"};

int main(int argc, char** argv)
{
int player, computer;
cout << " 1 = " << values[0] << endl << " 2 = " << values[1]  << endl << " 3 = " << values[2] << endl;
cin >> player;
--player;
cout << endl;
computer = rand() % 3;

if(computer == player)
	cout << "Draw! (" << values[player] << ")";
else
{
	if((player + 1) % 3 == computer)
		cout << "You win! " << values[player] << " beats " << values[computer] << "!";
	else
		cout << "You lose! " << values[computer] << " beats " << values[player] << "!";

}
}

 

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...