8 600 besökare online
856 942 medlemmar • 45 818 065 inlägg
Användarnamn 
Lösenord
Flashback Forum > Dator och IT > Systemutveckling > C# / VB.NET / .NET Framework
Svara på ämne
Ämnesverktyg
Sird
Medlem
Sirds avatar
Hej!

Har grubblat länge nu om hur jag skall lösa detta.
Jag vill att man skall kunna mata in antal tärningar (6 sidiga) som skall slås.
Därefter skall man slå dessa tärningar men när/ifall en tärnings utfall blir 6 så skall man skita i det värdet och slå om med 2 nya tärningar. Ifall det blir 6 i någon av dessa två omslag så skall man skita i just den tärningens värde och slå om med 2 nya tärningar osv osv.

Förstår ni hur jag menar?

Jag kodar i VB.NET och här är min kod för att ni skall förstå ungefär hur jag har tänkt, jag har testat lite olika varianter men det vill inte >.<:
Kod:
intAntalT6 = tbSvårighet.Text For idx = 1 To intAntalT6 Tärning(idx) = random.Next(1, 7) If Tärning(idx) = 6 Then intAntalT6 = intAntalT6 + 2 Antal6or = Antal6or + 1 Tärning(idx) = random.Next(1, 7) If Tärning(idx) = 6 Then intAntalT6 = intAntalT6 + 1 Antal6or = Antal6or + 1 Tärning(idx) = random.Next(1, 7) If Tärning(idx) = 6 Then intAntalT6 = intAntalT6 + 1 Antal6or = Antal6or + 1 Tärning(idx) = random.Next(1, 7) If Tärning(idx) = 6 Then intAntalT6 = intAntalT6 + 1 Antal6or = Antal6or + 1 Tärning(idx) = random.Next(1, 7) End If End If End If End If
 
Nikolajevitj
Medlem
Nikolajevitjs avatar
Citat:
Ursprungligen postat av Sird
Hej!

Har grubblat länge nu om hur jag skall lösa detta.
Jag vill att man skall kunna mata in antal tärningar (6 sidiga) som skall slås.
Därefter skall man slå dessa tärningar men när/ifall en tärnings utfall blir 6 så skall man skita i det värdet och slå om med 2 nya tärningar. Ifall det blir 6 i någon av dessa två omslag så skall man skita i just den tärningens värde och slå om med 2 nya tärningar osv osv.

Förstår ni hur jag menar?

Jag kodar i VB.NET och här är min kod för att ni skall förstå ungefär hur jag har tänkt, jag har testat lite olika varianter men det vill inte >.<:

OBT6 tror jag minsann det kallas
Då jag inte kodat VB på tio år och har ingen erfarenhet av .Net-versionen orkar jag inte riktigt kolla upp exakt hur du skall skriva, men det borde räcka att implementera det på följande sätt (Ingen aning om det faktiskt går att skriva så i VB.net eller om det stämmer med din design, men principen borde iaf. framgå ganska tydligt):

Kod:
intAntalT6 = tbSvårighet.Text TotalSumma = 0 For idx = 1 To intAntalT6 Tärning = random.Next(1, 7) If Tärning == 6 intAntalT6 = intAntalT6+2 Else TotalSumma = TotalSumma+Tärning End If

Resultatet av alla slagen kommer sedan att ligga i variablen TotalSumma.
Märk också att programmet kan hålla på hur länge som helst och alltså inte nödvändigtvis behöver terminera någongång.

Edit:
Det är möjligt att for-loopen slutvärde beräknas i förväg och alltså inte går att ändra på men då borde en do while-loop fungera istället..
Kod:
intAntalT6 = tbSvårighet.Text TotalSumma = 0 Do While intAntalT6 > 0 Tärning = random.Next(1, 7) If Tärning == 6 intAntalT6 = intAntalT6+1 Else TotalSumma = TotalSumma+Tärning intAntalT6 = intAntalT6-1 End If Loop
__________________
Engineers aren't boring people; we just get excited over boring things
 
Sird
Medlem
Sirds avatar
Tack tack!
Mitt huvud var mycket virrigt där ett tag, jag förstog inte vad för fel jag hade gjort .

Jag misstänkte okså att do-loopen var förutbestämd så jag testade att skriva en console applikation som gick igenom loopen och skrev ut vad som hände och såg att intAntalT6 ändrades, men inte antal loopar.

Självklart är det ObT6

Försöker skriva ett program som skall lösa strider.
 
Svara på ämne
Topp Dela »