Hjälp med spel i c++ (nästan färdigt)

Permalänk
Medlem

Hjälp med spel i c++ (nästan färdigt)

Hej!

Detta är den kod (c++) jag har än så länge för ett tärningsspel men det är några saker jag skulle behöva hjälp med.

I nuläget jämför den 2 tärningar en spelare kastat med 2 tärningar kastade av datorn. Jag behöver ändra det så att den som slår högsta tärningen vinner, alltså inte summan för de 2 tärningarna. Hur kan jag uttrycka detta?

Man ska sätta in pengar i början men kan i nuläget sätta in över 5000 fast det ska vara mellan 100 - 5000kr. Hur kan jag fixa detta kriteriet?

Jag startade en ny tråd för det blev något konstigt med den andra!
(om någon moderator ser detta, ursäkta krångel och ta gärna bort den andra tråden)

Tack på förhand!

//vad gör programmet #include <iostream> #include <ctime> #include <cstdlib> using namespace std; int main() { //intierara variabelr int insatt = 0; int konto = 0; int bet = 0; int yourscore = 0; int computerscore = 0; int rond = 0; int slumptal1 = 0; int slumptal2 = 0; int slumptal3 = 0; int slumptal4 = 0; char svar; srand(time(NULL)); do { cout << "Det har ar ett tarningsspel." << endl; cout << "Spelet gar ut pa att besegra datorn genom att kasta tva tarningar i bast av tre omgangar. Den som slar den hogst enskilda tarningen vinner omgangen. Om du vinner eller forlorar tva omgangar i rad sa ar spelet over." << endl << endl; cout << "Hur mycket pengar vill du satta in pa ditt konto? (max 5000kr): "; cin >> konto; //konto = insatt; cout << "Du har " << konto << "kr pa ditt konto" << endl; cout << "Hur mycket pengar vill du satsa? 100,300 eller 500kr): "; cin >> bet; cout << "Du har satsat " << bet << "kr" << endl; cout << "Nu borjar forsta ronden" << endl << endl; yourscore = 0; computerscore = 0; while (yourscore < 2 && computerscore < 2) //loopa till tärningsrond. { slumptal1 = rand() % 6 + 1; slumptal2 = rand() % 6 + 1; slumptal3 = rand() % 6 + 1; slumptal4 = rand() % 6 + 1; cout << "Du slog " << slumptal1 << " med forsta tarningen." << endl; cout << "Du slog " << slumptal2 << " med andra tarningen." << endl; cout << "Datorn slog " << slumptal3 << " med forsta tarningen." << endl; cout << "Datorn slog " << slumptal4 << " med andra tarningen." << endl << endl; //Här kontrolleras tärningskasten för att se vem som vann if ((slumptal1 + slumptal2) > (slumptal3 + slumptal4)) { rond = rond + 1; yourscore = yourscore + 1; cout << "Du vann rond " << rond << "!" << endl; cout << "Din poang: " << yourscore << endl; cout << "Datorns poang: " << computerscore << endl; cout << "Nu borjar nasta rond" << endl << endl; } else if ((slumptal1 + slumptal2) < (slumptal3 + slumptal4)) { rond = rond + 1; yourscore = yourscore + 0; computerscore = computerscore + 1; cout << "Du forlorande rond" << rond << ".." << endl; cout << "Din poang: " << yourscore << endl; cout << "Datorns poang: " << computerscore << endl << endl; cout << "Nu borjar nasta rond" << endl << endl; } else { yourscore = yourscore + 0; computerscore = computerscore + 0; cout << "Det blev lika!" << endl; cout << "Nu borjar nasta rond" << endl << endl; } } if (yourscore == 2) { konto = konto + bet; cout << "Grattis! Du vann spelet!" << endl; cout << "Du har nu: " << konto << " pa ditt konto" << endl; } else if (computerscore == 2) { konto = konto - bet; cout << "Tyvarr, du forlorade spelet.." << endl; cout << "Du har: " << konto << " pa ditt konto" << endl; } //cout << "Amount on account" << konto << endl; cout << "Vill du spela igen? (j)" << endl; cin >> svar; } while ((svar == 'j') || (svar == 'J')); //loopa till nytt spel. cin.get(); return 0; }

Permalänk
Medlem

För att avgöra vem som slagit högst tärning kan du använda std::max från algorithm för att få reda på vilket av varje spelares två tärningskast som är störst:

int i = std::max(4, 2); // i kommer få värdet 4

Om du vill använda det mindre värdet för att avgöra en vinnare när det är lika så kan du använda std::minmax för att få ut både det minsta och det högsta värdet direkt:

auto [min_val, max_val] = std::minmax(4, 2); // min_val = 2, max_val = 4

För att begränsa hur mycket spelaren får sätta in så stoppar du bara inläsningen i en loop som loopar tills en giltig insats matas in:

do { // Läs in insats // Skriv ut felmeddelande om fel värde matades in } while (konto inte har ett giltigt värde);

Permalänk
Medlem

@perost: ''Det med att begränsa kontot funkar nu men får inte det med tärningarna att fungera. Hur kan jag skriva om den delen av koden på ett bra sätt? :)"

Permalänk
Skrivet av kijsee92:

@perost: ''Det med att begränsa kontot funkar nu men får inte det med tärningarna att fungera. Hur kan jag skriva om den delen av koden på ett bra sätt? :)"

Löste du problemet? Är spelet färdigt?

Permalänk

Hej , har fått exakt likadant uppgift . Skulle någon snälla hjälpa mig med det ? Jag har börjat programmera men har ett problem med att när jag startar programmet , allting sätts igång ? Alltså spelet är inte i steg t.ex. '' Spelarens tur''... du kastade 3'' sedan vill jag att man trycker Y för att fortsätta till datorns tur . Just nu sätts allting igång när jag startar programmet .

Permalänk
Medlem
Skrivet av Markus1010:

Hej , har fått exakt likadant uppgift . Skulle någon snälla hjälpa mig med det ? Jag har börjat programmera men har ett problem med att när jag startar programmet , allting sätts igång ? Alltså spelet är inte i steg t.ex. '' Spelarens tur''... du kastade 3'' sedan vill jag att man trycker Y för att fortsätta till datorns tur . Just nu sätts allting igång när jag startar programmet .

Ingen kan hjälpa dig om du inte visar vad du har försökt.

Visa signatur

AMD Ryzen 7 1700X 3.8 GHz 20MB | ASUS PRIME X370-PRO | MSI GeForce GTX 1080 Gaming X 8GB | G.Skill 16GB DDR4 3200 MHz CL14 Flare X | Corsair RM650x 650W