AwsmPineapple Skrevet 25. januar 2012 Del Skrevet 25. januar 2012 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
r2d290 Skrevet 25. januar 2012 Del Skrevet 25. januar 2012 (endret) 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 25. januar 2012 av r2d290 waits for alice Lenke til kommentar
AwsmPineapple Skrevet 25. januar 2012 Forfatter Del Skrevet 25. januar 2012 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... Lenke til kommentar
etse Skrevet 25. januar 2012 Del Skrevet 25. januar 2012 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... 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
r2d290 Skrevet 26. januar 2012 Del Skrevet 26. januar 2012 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
AwsmPineapple Skrevet 26. januar 2012 Forfatter Del Skrevet 26. januar 2012 aha, forstod hva dere mente nå boka er på engelsk, så måtte bare "forstå" hvordan det funka. Lenke til kommentar
AwsmPineapple Skrevet 26. januar 2012 Forfatter Del Skrevet 26. januar 2012 den fungerende koden endte opp med å se slik ut #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
etse Skrevet 26. januar 2012 Del Skrevet 26. januar 2012 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 NumberHow 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
AwsmPineapple Skrevet 26. januar 2012 Forfatter Del Skrevet 26. januar 2012 guess my number er et eget kapittel i boka Lenke til kommentar
GeirGrusom Skrevet 27. januar 2012 Del Skrevet 27. januar 2012 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
Bytex Skrevet 27. januar 2012 Del Skrevet 27. januar 2012 Det er et ganske langt stykke fra å lage rene "DOS"-programmer til å begynne å inkludere grafikk. Ikke prøv å sprinte før du kan gå, da stanger du bare hodet i veggen og gir opp. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå