Permalänk

Hjälp med variabler

Jag håller på att lära mig c++ med hjälp av vårt kära internet men det är inte alltid lika lätt att googla svar som det låter (inb4 ni googlar på två sekunder). Jag tänkte därför att jag kunde fråga här.

Detta är en del av min källkod:

int winnings; if (tal1 /*siffran som spelaren bettade på*/ == tal3 /*den vinnande siffran*/) { balance = balance /*spelarens saldo*/ + tal2 /*betsumman*/ * 10; winnings = tal2 * 10; cout << "You won! Your account balance is now: " << balance << endl; cout << "You won: " << winnings << endl; } else { balance = balance - tal2 * 1; cout << "Unfortunately you lost. Your account balance is now: " << balance << endl; } int i; cout << "Press 'i' for information regarding your current session, or any other key to continue. "; cin >> i; while (i == 'i') { cout << "Your session winnings are: " << /*[insert variables]*/ << endl; cout << "Press any key except 'i' to continue. "; cin >> i; }

Någonstans i denna kod vill jag deklarera variabler som gör det möjligt för mig att visa på spelarens totala vinst under sessionen. Ge gärna feedback på själva koden också. Som sagt jag lär mig via internet så jag vet bara om koden funkar, men inte om den är bra.

Permalänk
Moderator
Festpilot 2020, Antiallo

@Bizzzzznes:
Använd gärna taggarna
[code]
Din kod här.
Indenterad korrekt.
Så man kan se vad du har skrivit.
[/code]

Din kod här. Indenterad korrekt. Så man kan se vad du har skrivit.

Visa signatur

 | PM:a Moderatorerna | Kontaktformuläret | Geeks Discord |
Testpilot, Skribent, Moderator & Geeks Gaming Huvudadmin

Permalänk
Skrivet av DavidtheDoom:

@Bizzzzznes:
Använd gärna taggarna
[code]
Din kod här.
Indenterad korrekt.
Så man kan se vad du har skrivit.
[/code]

Din kod här. Indenterad korrekt. Så man kan se vad du har skrivit.

Jag ville göra det från början men visste inte hur... Nu vet jag

Permalänk
Moderator
Festpilot 2020, Antiallo

@Bizzzzznes: Ingen fara.

Spontant känns det som att du saknar en Main-loop och jag hade lagt variabel-deklarationerna utanför (innan) denna.

Tycker även det blir extremt svårt att läsa när du slänger in kommentarerna precis vid variablerna, dessa bör ligga på slutet av raden eller ovanför. Detta handlar främst om vilken kodningskonvention man vill följa och att vara konsekvent.

Till exempel:

if (tal1 /*siffran som spelaren bettade på*/ == tal3 /*den vinnande siffran*/) { balance = balance /*spelarens saldo*/ + tal2 /*betsumman*/ * 10; winnings = tal2 * 10; cout << "You won! Your account balance is now: " << balance << endl; cout << "You won: " << winnings << endl; }

Skulle för mig helst se ut på detta sättet:

if (tal1 == tal3 ) { //Körs om siffran som spelaren bettade == på den vinnande siffran balance = balance + tal2 * 10; //spelarens saldo = Spelarens tidigare saldo + vinst winnings = tal2 * 10; cout << "You won! Your account balance is now: " << balance << endl; cout << "You won: " << winnings << endl; }

Hela tanken med bra variabelnamn är att dessa inte skall behövas förklaras och annars endast kompletteras med en kommentar. Inte att kommentarerna skall störa översikten på koden.

Annars verkar koden spontant vara rätt vettig. Du skulle kunna ändra på ordningen av balance och winnings och således få:

if (tal1 == tal3 ) { //Körs om siffran som spelaren bettade == på den vinnande siffran winnings = tal2 * 10; balance = balance + winnings; //spelarens saldo = Spelarens tidigare saldo + vinst cout << "You won! Your account balance is now: " << balance << endl; cout << "You won: " << winnings << endl; }

Visa signatur

 | PM:a Moderatorerna | Kontaktformuläret | Geeks Discord |
Testpilot, Skribent, Moderator & Geeks Gaming Huvudadmin

Permalänk
Medlem
Skrivet av Bizzzzznes:

Jag håller på att lära mig c++ med hjälp av vårt kära internet men det är inte alltid lika lätt att googla svar som det låter (inb4 ni googlar på två sekunder). Jag tänkte därför att jag kunde fråga här.

Detta är en del av min källkod:

int winnings; if (tal1 /*siffran som spelaren bettade på*/ == tal3 /*den vinnande siffran*/) { balance = balance /*spelarens saldo*/ + tal2 /*betsumman*/ * 10; winnings = tal2 * 10; cout << "You won! Your account balance is now: " << balance << endl; cout << "You won: " << winnings << endl; } else { balance = balance - tal2 * 1; cout << "Unfortunately you lost. Your account balance is now: " << balance << endl; } int i; cout << "Press 'i' for information regarding your current session, or any other key to continue. "; cin >> i; while (i == 'i') { cout << "Your session winnings are: " << /*[insert variables]*/ << endl; cout << "Press any key except 'i' to continue. "; cin >> i; }

Någonstans i denna kod vill jag deklarera variabler som gör det möjligt för mig att visa på spelarens totala vinst under sessionen. Ge gärna feedback på själva koden också. Som sagt jag lär mig via internet så jag vet bara om koden funkar, men inte om den är bra.

Ett tips som är bra att börja med direkt (för att få in det i ryggmärgen) är att inte döpa variabler till x,y eller tal1,tal2 utan döp variablerna så att namnet beskriver vad de håller.
Till exempel:
tal1 ==> bettingNumber
tal2 ==> bettingAmount
tal3 ==> winningNumber

Visa signatur

Corsair Air 540 | Asus strix x470-f gaming | AMD Ryzen 7 3700x| 2x8gb 3200mhz RAM | Asus GTX 2070 |2xSSD 512GB(boot) | 2x1tb WD 7200rpm | Cooler Master V1000 1000W | Skärm: ACER XB280HK, Benq 27" 144hz | Win 11 pro N 64-bit

Permalänk
Skrivet av DavidtheDoom:

@Bizzzzznes: Ingen fara.

Spontant känns det som att du saknar en Main-loop och jag hade lagt variabel-deklarationerna utanför (innan) denna.

Tycker även det blir extremt svårt att läsa när du slänger in kommentarerna precis vid variablerna, dessa bör ligga på slutet av raden eller ovanför. Detta handlar främst om vilken kodningskonvention man vill följa och att vara konsekvent.

Till exempel:

if (tal1 /*siffran som spelaren bettade på*/ == tal3 /*den vinnande siffran*/) { balance = balance /*spelarens saldo*/ + tal2 /*betsumman*/ * 10; winnings = tal2 * 10; cout << "You won! Your account balance is now: " << balance << endl; cout << "You won: " << winnings << endl; }

Skulle för mig helst se ut på detta sättet:

if (tal1 == tal3 ) { //Körs om siffran som spelaren bettade == på den vinnande siffran balance = balance + tal2 * 10; //spelarens saldo = Spelarens tidigare saldo + vinst winnings = tal2 * 10; cout << "You won! Your account balance is now: " << balance << endl; cout << "You won: " << winnings << endl; }

Hela tanken med bra variabelnamn är att dessa inte skall behövas förklaras och annars endast kompletteras med en kommentar. Inte att kommentarerna skall störa översikten på koden.

Annars verkar koden spontant vara rätt vettig. Du skulle kunna ändra på ordningen av balance och winnings och således få:

if (tal1 == tal3 ) { //Körs om siffran som spelaren bettade == på den vinnande siffran winnings = tal2 * 10; balance = balance + winnings; //spelarens saldo = Spelarens tidigare saldo + vinst cout << "You won! Your account balance is now: " << balance << endl; cout << "You won: " << winnings << endl; }

Tack för feedbacken! Du svarade dock inte på min ursprungliga fråga, vilket var hur jag deklarerar variabler för att kunna visa på spelarens totala vinst under en session.

Mitt program fungerar så att spelaren spelar igenom programmet och får sedan välja om hen vill spela igen. Om hen vill spela igen börjar programmet om inom en stor while loop.

While loopen ligger självklart inom main och ser ut likt följande:

main(){ cout << "Press 'c' + ENTER to begin playing, or any other key + ENTER to exit. "; cin >> letter; cout << "\n"; while (letter == 'c') { //ALL PROGRAMKOD LIGGER INOM DENNA WHILE LOOP cout << "Press 'c' to play again, or any other key to quit.\n"; cin >> letter; } return 0; }

Alltså om man (när man får valet) matar in något tecken förutom 'c', så slutar programmet.

Jag kan lätt visa den totala vinsten för spelarens pågående omgång. Men om spelaren har spelat tre gånger vill jag kunna visa vinsten för alla tre gånger totalt. Det är detta jag huvudsakligen ber om hjälp med.

edit: lade in main(){} för att göra er visualisering enklare.

Permalänk
Moderator
Festpilot 2020, Antiallo

Om du vill ha en för total vinst så deklarerar du en ny variabel utanför while loopen. T ex
int totalEarnings = 0;

Och längst ned eller efter varje winnings i den interna loopen så lägger du till en:
totalEarnings = totalEarnings + winnings;
Lätt som en plätt.

Glöm inte att du måste deklarera totalEarnings utanför whileloopen annars nollställs den efter varje omgång.

Om det är exakt efter tre gånger den skall visas upp så får du ha en variabel som räknar antal spelade omgångar + en IF sats som kontrollerar, och om sann printar totalEarnings och nollställs totalEarnings.
Skickades från m.sweclockers.com

Visa signatur

 | PM:a Moderatorerna | Kontaktformuläret | Geeks Discord |
Testpilot, Skribent, Moderator & Geeks Gaming Huvudadmin

Permalänk
Skrivet av DavidtheDoom:

Om du vill ha en för total vinst så deklarerar du en ny variabel utanför while loopen. T ex
int totalEarnings = 0;

Och längst ned eller efter varje winnings i den interna loopen så lägger du till en:
totalEarnings = totalEarnings + winnings;
Lätt som en plätt.

Glöm inte att du måste deklarera totalEarnings utanför whileloopen annars nollställs den efter varje omgång.

Om det är exakt efter tre gånger den skall visas upp så får du ha en variabel som räknar antal spelade omgångar + en IF sats som kontrollerar, och om sann printar totalEarnings och nollställs totalEarnings.
Skickades från m.sweclockers.com

Fungerade utmärkt! Tack så mycket!

Permalänk
Moderator
Festpilot 2020, Antiallo

@Bizzzzznes: Kul att höra!
Du gjorde ju det mesta själv, om du fortsätter så kan du nog hoppa på fler applicerbara uppgifter snart.

Arduino är ju mestadels C++ till exempel

Visa signatur

 | PM:a Moderatorerna | Kontaktformuläret | Geeks Discord |
Testpilot, Skribent, Moderator & Geeks Gaming Huvudadmin