Permalänk
Medlem

Problem med c++ kod

Hej, jag ska göra ett enkelt yatzy spel och har ett problem med att när tärningen kastas så ska alla 1or sparas i en array och sen ska tärningen kastas igen, hur gör jag detta? Har gjort ett försök som ni kan se i koden men det funkar inte, tacksam för hjälp!

// Yatzy light #include <iostream> #include <fstream> #include <ctime> #include <string> using namespace std; void rules(); int main(){ locale swedish("swedish"); locale::global(swedish); const int howManyDices = 5; const int nrOfPlayers = 2; const int protocol = 7; int dices[howManyDices]; int result[protocol]; string players[nrOfPlayers]; srand(time(NULL)); cout << "Nu spelar vi Yatzy!\n"; cout << endl; rules(); cout << endl; cout << "Namn på första spelaren: \n"; cin >> players[0]; cout << endl; for(int i = 0; i < 5; i++){ dices[i] = (rand() % 6) +1; } cout << "Dina kast blev: "; for(int i = 0; i < 5; i++){ cout << dices[i] << " "; if(dices[i] == 1){ result[0]++; } } system("pause"); getchar(); return 0; } void rules(){ cout << "I denna förenklade variant är det 2 spelare som möts\n"; cout << "och det handlar om att få så många 1:or, 2:or, 3:or,\n"; cout << "4:or, 5:or & 6:or som möjligt i tur och ordning.\n"; cout << endl; }

Dold text
Permalänk
Medlem

Du får la lägga en loop omkring det. Är dock inte mycket till spel om man inte får göra några val.

Permalänk
Medlem
Skrivet av hawy:

Du får la lägga en loop omkring det. Är dock inte mycket till spel om man inte får göra några val.

Men det ligger ju redan i en foor-loop?

}
cout << "Dina kast blev: ";
for(int i = 0; i < 5; i++){
cout << dices[i] << " ";

if(dices[i] == 1){
result[0]++;
}

Funkar ändå inte...

Permalänk
Medlem

Alltså först och främst kanske du ska säga vad som inte funkar. Koden komplilerade inte ens. Lägg till

#include <stdlib.h>
#include <time.h>

du kan prova ta bort locale också då det ger runtime error.

Jag får känslan att detta är en copypaste och att du inte ens provat...

Permalänk
Medlem
Skrivet av hawy:

Alltså först och främst kanske du ska säga vad som inte funkar. Koden komplilerade inte ens. Lägg till

#include <stdlib.h>
#include <time.h>

du kan prova ta bort locale också då det ger runtime error.

Jag får känslan att detta är en copypaste och att du inte ens provat...

För mig funkar koden, men det jag vill göra är att när jag har kastat mina 5 tärningar vill jag spara alla 1or och sen kasta de 4a tärningarna som är kvar och spara 1orna också.

Permalänk
Medlem

Du får gå igenom din array och ta bort alla icke ettor, kanske sortera och sedan ta in nya värden.

Permalänk
Inaktiv

Koden är förmodligen Copy-paste, jag har skrämmande lik kod på ett utskrivet papper ifrån min tid i skolan. Förmodligen har du inte ens testat koden själv. Du har väl fått den som en uppgift av din lärare och nu pallar du inte lösa den själv gissar jag på. I don't blame you, jag pallade inte heller c++ lektionerna...

Permalänk
Medlem
Skrivet av peggysue:

För mig funkar koden, men det jag vill göra är att när jag har kastat mina 5 tärningar vill jag spara alla 1or och sen kasta de 4a tärningarna som är kvar och spara 1orna också.

Du borde lägga till ett val efter utskriften så att användaren kan välja vilken siffra som ska sparas.
Det kan ju visa sig att det är tre stycken 4or som dyker upp, då vill personen inte spara 1or tex.

Gör en metod som hanterar "kastning" av tärningarna, inparameter kan ju vara antal tärningar, retunerar en array av resultatet eller så använder du en referens, sen kan du baka in utskrift där med, om du känner för det.
Sen lägger du detta i en loop.

Sen kan du använda dig av två arrayer, en för kastning och en för de sparade kasten/tärningarna.
Med hjälp av ett val kan du sen bara loopa igenom arrayen och leta efter valet, och skicka in det i "spara" arrayen.
Om det sen visa sig att andra kasten så kommer det upp 4 stycken av nåt annat bör du hantera detta också.

Hoppas detta ger dig lite tips, finns ju mycket olika alternativ för att lösa uppgiften, här har du ett som du borde kunna lösa.

Lycka till

Visa signatur

Corsair 16GB (4x4096MB) CL9 1600Mhz | Asus P8Z77-V PRO |
Samsung SSD Basic 830-Series 256GB | Intel Core i7 3770K 3,5Ghz |
Asus Xonar Essence STX | Noctua NH-U9B SE2 | Antec Performance One P280 | Corsair HX 850W 80+ Gold Modulär | MSI GTX 770