Permalänk
Medlem

massor av slumptal

nu börjar mitt monopol ta fart men jag har stött på ett problem igen..

det är så här..

char kastad_tarning; cin >> kastad_tarning; if (kastad_tarning=='k') { här ska jag ha något som fixar så att en variabell får ett slump tal }

då är det bara så att jag har en funktion som fixar ett slump tal..

den ser ut så här

int tarning_1() { srand(time(NULL)); return rand()%6+1; }

i main så har jag tarning_1=kastad_tarning;

om ja jag då kallar på kastad tarning så blir det väll samma tal hela tiden?

jag vill ha ett nytt slumptal varje gång..

Visa signatur

[AMD 2600+] [280 GB] [GeForce FX 5600 Ultra] [1024 Mb DDR]

http://galleri.sweclockers.com/galleri_visa.php?chassi_id=364...

Permalänk

Tror att du ska lägga in "srand(time(0))" i main() och endast ha "return rand()%6+1;" i din funktion.

Visa signatur

Mjo Mjo?

Permalänk
Medlem

det funkar.. så koden som den är nu ska vi inte klaga på

blir det olika tal varje gång?

är det inte så att jag tilldelar variablen ett värde så har den det hela tiden?

jag vill "uppdatera" värdet till ett nytt slump tal varje gång jag trycker på k..

Visa signatur

[AMD 2600+] [280 GB] [GeForce FX 5600 Ultra] [1024 Mb DDR]

http://galleri.sweclockers.com/galleri_visa.php?chassi_id=364...

Permalänk

if (kastad_tarning=='k')
{
variabel_namn = tarning_1();
}

Förstår inte riktigt hur du menar Men nu får variabeln ett nytt värde varje gång du kör loopen, (om koden nu ligger i en).

Visa signatur

Mjo Mjo?

Permalänk
Medlem

srand() ska anropas en gång, inte varje gång du ska ha ett slumptal..

Om du kör som du har nu, så innebär det att du får problem om du vill ha två slumptal under samma sekund, då de skulle bli samma.

Lägg srand() i din main och låt kastad tärning endast köra rand()

Visa signatur

The difference between stupidity and genius - the latter has limits

Permalänk
Medlem

Kan dock bli fel när du har anrop till srand i samma funktion som slumpar och som du anropar ofta. Ska du bara slumpa lite tal ska du anropa srand en gång, inte mer.

Permalänk
Medlem

okej..

är det så här ni menar med srand?

int tarning_1() { int slumptal; slumptal = rand() / (RAND_MAX / 6 + 1) + 1; return slumptal; } int main() { srand(time(0)); kastad_tarning = tarning_1();

jag får göra en ny variabel varje gång bara då eller?

Visa signatur

[AMD 2600+] [280 GB] [GeForce FX 5600 Ultra] [1024 Mb DDR]

http://galleri.sweclockers.com/galleri_visa.php?chassi_id=364...

Permalänk
Medlem

du kan returnera rand()%6+1 direkt, du behöver inte lagra det i en int först..

Dock skulle jag iaf föredra följande sätt att köra med..

#include <cstdlib> #include <iostream> int main(); void roll(int &dice); int main() { srand(time(NULL)); int dice; roll(dice); std::cout << dice << std::endl; } void roll(int &dice) { dice=(int)(rand()%6+1); }

Kanske tom. göra dice till en static int, så att man kan använda den i alla funktioner utan att skicka den..

Visa signatur

The difference between stupidity and genius - the latter has limits

Permalänk
Medlem

Zevon>> skulle du kunna förklara koden lite?
förstår nämligen inte så mycke av det där..

Visa signatur

[AMD 2600+] [280 GB] [GeForce FX 5600 Ultra] [1024 Mb DDR]

http://galleri.sweclockers.com/galleri_visa.php?chassi_id=364...

Permalänk
Medlem

sure..

//Här inkluderar vi lite headers, så att vi får tillgång till cout, time(), srand() osv.. #include <cstdlib> #include <iostream> /* orkade inte skriva en header fil, så jag gjorde en header del här.. Dvs följande är funktions deklarationer */ int main(); void roll(int &dice); /* Här kommer så funktions definitionerna. */ int main() { srand(time(NULL)); //gör så att vi får olika slumpvärden varje gång programmet körs int dice; //skapar en int vid namn dice roll(dice);//skickar dice till funktionen roll std::cout << dice << std::endl; //skriver ut dice } /* Ok, här kommer det intressanta i programmet roll tar in en referens till en int. Dvs den tar minnesplatsen där dice ligger. Funktionen skapar alltså inte en kopia av dice som den skulle gjort i vanliga fall. Den dice vi använder i funktionen är samma dice som vi skickade in */ void roll(int &dice) { dice=(int)(rand()%6+1); //dice = randomtal mellan 1-6. }

Visa signatur

The difference between stupidity and genius - the latter has limits

Permalänk
Medlem

tyckte att det värkade svårt/jobbigt hehe..

är inte så jätte skillad så jag gör det lättaste möjliga till att börja med så att jag vet att det funkar å sedan förfinar koden

Visa signatur

[AMD 2600+] [280 GB] [GeForce FX 5600 Ultra] [1024 Mb DDR]

http://galleri.sweclockers.com/galleri_visa.php?chassi_id=364...

Permalänk

Hur går det emd programmeringen?

Visa signatur

MSI K8N Neo platinum | AMD64 3000+ | Leadtek 6800le 16/1.6 | 200GB maxtor hdd | kingston 512 ddr pc3200
http://offtopic.tfv.se
Varför?http://forum.sweclockers.com/showthread.php?s=&threadid=42139...

Permalänk
Medlem

Det går sådär..

iom att den andra tråden blev låst för att jag skulle fortsätta här så gör jag väll det.

#include<iostream> #include<string> #include<time.h> #include<ctime> #include<stdlib.h> using namespace std; int steg; int meny; int jag; int pengar; int kastad_tarning; int kastad_tarning1; int tarning_1() { int slumptal; slumptal = rand() / (RAND_MAX / 6 + 1) + 1; return slumptal; } int main() { steg=0; char kasta_tarning; srand(time(0)); kastad_tarning1 = tarning_1(); kastad_tarning = tarning_1(); steg = (steg + kastad_tarning); if (steg >= 11) { steg=1; } int namn[10]; namn[0]; namn[1]; namn[2]; namn[3]; namn[4]; namn[5]; namn[6]; namn[7]; namn[8]; namn[9]; int chans[10]; chans[0]; chans[1]; chans[2]; chans[3]; chans[4]; chans[5]; chans[6]; chans[7]; chans[8]; chans[9]; int ruta[10]; ruta[0] = 200; ruta[1] = 300; ruta[2] = 400; ruta[3] = 500; ruta[4] = 600; ruta[5] = 700; ruta[6] = 800; ruta[7] = 900; ruta[8] = 1000; ruta[9] = 1100; char tarning_2; string name; cout << "MONOPOL\n\n\n"; cout << ".::MENY::.\n[1]Nytt spel [2]Avsluta"; cin >> meny; if(meny == 1) { cout << "välj namn"<<endl; cin >> name; cout << "ditt namn är:"<<name; cout << "är det okej? \n[1]ja [2]nej"; int val; cin >> val; if (val==1) { cout << "grattis, nu kan vi börja spelet"<<endl; pengar = 4000; cout << "Starta spelet genom att trycka på k"; cin >> tarning_2; if (tarning_2='k') { cout << kastad_tarning<<"\n\n\n\n\n"; if(steg == 1) { cout << "****************\n"; cout << "*Namn:Ruta 1 *\n"; cout << "* *\n"; cout << "*Antal hus: *\n"; cout << "* *\n"; cout << "*kostar:200kr *\n"; cout << "****************\n"; cin >> kasta_tarning; if(kasta_tarning=='k') { steg= steg+kastad_tarning1; } } else if(steg == 2) { cout << "****************\n"; cout << "*Namn:Ruta 2 *\n"; cout << "* *\n"; cout << "*Antal hus: *\n"; cout << "* *\n"; cout << "*kostar:300kr *\n"; cout << "****************\n"; cin >> kasta_tarning; if(kasta_tarning=='k') { steg= steg+kastad_tarning1; } } else if(steg == 3) { cout << "****************\n"; cout << "*Namn:Ruta 3 *\n"; cout << "* *\n"; cout << "*Antal hus: *\n"; cout << "* *\n"; cout << "*kostar:400kr *\n"; cout << "****************\n"; cin >> kasta_tarning; if(kasta_tarning=='k') { steg= steg+kastad_tarning1; } } else if(steg == 4) { cout << "****************\n"; cout << "*Namn:Ruta 4 *\n"; cout << "* *\n"; cout << "*Antal hus: *\n"; cout << "* *\n"; cout << "*kostar:500kr *\n"; cout << "****************\n"; cin >> kasta_tarning; if(kasta_tarning=='k') { steg= steg+kastad_tarning1; } } else if(steg == 5) { cout << "****************\n"; cout << "*Namn:Ruta 5 *\n"; cout << "* *\n"; cout << "*Antal hus: *\n"; cout << "* *\n"; cout << "*kostar:600kr *\n"; cout << "****************\n"; cin >> kasta_tarning; if(kasta_tarning=='k') { steg= steg+kastad_tarning1; } } else if(steg == 6) { cout << "****************\n"; cout << "*Namn:Ruta 6 *\n"; cout << "* *\n"; cout << "*Antal hus: *\n"; cout << "* *\n"; cout << "*kostar:700kr *\n"; cout << "****************\n"; cin >> kasta_tarning; if(kasta_tarning=='k') { steg= steg+kastad_tarning1; } } else if(steg == 7) { cout << "****************\n"; cout << "*Namn:Ruta 6 *\n"; cout << "* *\n"; cout << "*Antal hus: *\n"; cout << "* *\n"; cout << "*kostar:700kr *\n"; cout << "****************\n"; cin >> kasta_tarning; if(kasta_tarning=='k') { steg= steg+kastad_tarning1; } } else if(steg == 8) { cout << "****************\n"; cout << "*Namn:Ruta 6 *\n"; cout << "* *\n"; cout << "*Antal hus: *\n"; cout << "* *\n"; cout << "*kostar:700kr *\n"; cout << "****************\n"; cin >> kasta_tarning; if(kasta_tarning=='k') { steg= steg+kastad_tarning1; } } else if(steg == 9) { cout << "****************\n"; cout << "*Namn:Ruta 6 *\n"; cout << "* *\n"; cout << "*Antal hus: *\n"; cout << "* *\n"; cout << "*kostar:700kr *\n"; cout << "****************\n"; cin >> kasta_tarning; if(kasta_tarning=='k') { steg= steg+kastad_tarning1; } } else if(steg == 10) { cout << "****************\n"; cout << "* Start *\n"; cout << "* *\n"; cout << "* *\n"; cout << "*du inkasserar *\n"; cout << "* 200;- *\n"; cout << "****************\n\n\n"; pengar = pengar+200; cin >> kasta_tarning; if(kasta_tarning=='k') { steg= steg+kastad_tarning1; } } } } } else { cout << "bye"; } system("pause"); return 0; }

Det funkar inte när jag ska slå det andra slaget.

kanske att jag måste lägga Ruta1-10 i en loop eller nått men jag vet inte hur så snälla hjälp.

Visa signatur

[AMD 2600+] [280 GB] [GeForce FX 5600 Ultra] [1024 Mb DDR]

http://galleri.sweclockers.com/galleri_visa.php?chassi_id=364...

Permalänk
Medlem

Inte för att klanka ner på dig, eller på nått sätt vara ohövlig, men om du inte förstod hans kod kanske ett "Monopol"-spel är för avancerat. Om jag var du skulle jag försöka mig på lite lättare saker :). Ett snake-spel tex.

Visa signatur

CTMod Developer (WoW UI Mod)
http://www.CTMod.net

Permalänk
Medlem

men alltså.. jag har kollat lite på det men fattar inte hur jag ska börja..

Visa signatur

[AMD 2600+] [280 GB] [GeForce FX 5600 Ultra] [1024 Mb DDR]

http://galleri.sweclockers.com/galleri_visa.php?chassi_id=364...

Permalänk
Medlem

På ett snakespel?

Visa signatur

CTMod Developer (WoW UI Mod)
http://www.CTMod.net

Permalänk
Medlem

japp, ett snake spel..

är det dumt att använda denna som förebild och expimentera i?
http://www.cplusplus.se/paste.php?id=643

Visa signatur

[AMD 2600+] [280 GB] [GeForce FX 5600 Ultra] [1024 Mb DDR]

http://galleri.sweclockers.com/galleri_visa.php?chassi_id=364...

Permalänk
Medlem

Tror du lär dig mer om du lyckas själv, men om du känner att det är över din skicklighet så kan det fungera att experimentera också :).

Visa signatur

CTMod Developer (WoW UI Mod)
http://www.CTMod.net