Permalänk

vbYesNo kommandon

Hejsan. Har kört fast igen med min programmering. Det är snart klart. Har egentligen bara detta kvar.
I alla fall, det jag håller på att göra är ett Yatzy spel. Om när hela tabellen är fyllt och man kan inte längre spela. Så kommer det upp en MSGBox som säger att man har spelat klart, och får frågan om man vill spela igen eller inte. Om man trycker "Ja" ska formen laddas om. Och ens namn ska finnas kvar. I början av spelat får man skriva in sitt namn. Detta vill jag då att man ska slippa göra en gång till, om man vill spela igen.
Hur ska jag göra för att formen ska laddas om?

Så här ser min kod ut för msgboxen
intres = intres + 1
If intres = 15 Then intsvar = MsgBox("Du har spelat klart, vill du spela igen?", vbYesNo + vbExclamation, "Fråga")
If intsvar = vbYes Then nyttspel
If intsvar = vbNo Then End

Om intsvar = Yes så ska en subrutin ladda om formen. Så vad ska jag skriva in i sub rutinen

Språket är Visual Basic 6.0

Visa signatur

Deadsith: Disc/Holy Priest | Haikeiki: MM/BM Hunter | Garridel: Frost/Arcane mage (Main) | Turák: Resto Druid

Permalänk
Medlem
Skrivet av Geforce9500gt:

Hejsan. Har kört fast igen med min programmering. Det är snart klart. Har egentligen bara detta kvar.
I alla fall, det jag håller på att göra är ett Yatzy spel. Om när hela tabellen är fyllt och man kan inte längre spela. Så kommer det upp en MSGBox som säger att man har spelat klart, och får frågan om man vill spela igen eller inte. Om man trycker "Ja" ska formen laddas om. Och ens namn ska finnas kvar. I början av spelat får man skriva in sitt namn. Detta vill jag då att man ska slippa göra en gång till, om man vill spela igen.
Hur ska jag göra för att formen ska laddas om?

Så här ser min kod ut för msgboxen
intres = intres + 1
If intres = 15 Then intsvar = MsgBox("Du har spelat klart, vill du spela igen?", vbYesNo + vbExclamation, "Fråga")
If intsvar = vbYes Then nyttspel
If intsvar = vbNo Then End

Om intsvar = Yes så ska en subrutin ladda om formen. Så vad ska jag skriva in i sub rutinen

Språket är Visual Basic 6.0

Det är väldigt svårt att säga utan att se koden.
Kort och gott så behöver du utföra allt det som sker efter att man har skrivit in sitt namn.
Rensa listor, komponenter och köra om (nästan) allt.

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Skrivet av Leedow:

Det är väldigt svårt att säga utan att se koden.
Kort och gott så behöver du utföra allt det som sker efter att man har skrivit in sitt namn.
Rensa listor, komponenter och köra om (nästan) allt.

Okej, du ville se min kod. Så postar upp den direkt här.

Option Explicit Dim intSlump As Integer Dim intKastnr As Integer Dim t(5), ts(5) As Integer Dim par, tvapar, triss, fyrtal, litenstege, storstege, kak, chans, yatzy, ettor, tvaor, treor, fyror, femmor, sexor As Integer Dim bonus, summa, total Dim namn As String Dim intres As Integer Dim intsvar As Integer ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Sub nyttspel() End Sub ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Sub summera() Dim i As Integer For i = 1 To 5 imgtarning(i).Visible = False lblSlumptal(i).Visible = False chkHold(i).Value = 0 chkHold(i).Visible = False Next i intKastnr = 0 summa = ettor + tvaor + treor + fyror + femmor + sexor If summa > 62 Then bonus = 50 Else bonus = 0 lblbonus.Caption = bonus lblsumma.Caption = summa total = summa + bonus + par + tvapar + triss + fyrtal + litenstege + storstege + kak + chans + yatzy lblsumma1.Caption = total cmdSlumpknapp.Caption = "Kasta ditt första kast " & namn intres = intres + 1 If intres = 15 Then intsvar = MsgBox("Du har spelat klart, vill du spela igen?", vbYesNo + vbExclamation, "Fråga") If intsvar = vbYes Then nyttspel If intsvar = vbNo Then End End Sub ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Sub Slumptal() Randomize intSlump = (6 * Rnd) + 0.5 End Sub ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Sub Sortera() Dim n(5), temp, inteklar, i As Integer n(1) = t(1) n(2) = t(2) n(3) = t(3) n(4) = t(4) n(5) = t(5) inteklar = 1 Do While inteklar = 1 inteklar = 0 For i = 1 To 4 If n(i) < n(i + 1) Then temp = n(i + 1) n(i + 1) = n(i) n(i) = temp inteklar = 1 End If Next i Loop ts(1) = n(1) ts(2) = n(2) ts(3) = n(3) ts(4) = n(4) ts(5) = n(5) End Sub ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Private Sub chk1par_Click() If intKastnr > 0 Then par = 0 If ts(4) = ts(5) Then par = ts(4) * 2 If ts(3) = ts(4) Then par = ts(3) * 2 If ts(2) = ts(3) Then par = ts(2) * 2 If ts(1) = ts(2) Then par = ts(1) * 2 lblPar.Caption = par chk1par.Enabled = False summera Else chk1par.Value = 0 End If End Sub ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Private Sub chk2par_Click() If intKastnr > 0 Then tvapar = 0 If ts(1) = ts(2) And ts(3) = ts(4) Then tvapar = ts(1) + ts(2) + ts(3) + ts(4) If ts(2) = ts(3) And ts(4) = ts(5) Then tvapar = ts(2) + ts(3) + ts(4) + ts(5) If ts(1) = ts(2) And ts(4) = ts(5) Then tvapar = ts(1) + ts(2) + ts(4) + ts(5) lbl2par.Caption = tvapar chk2par.Enabled = False summera Else chk2par.Value = 0 End If End Sub ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Private Sub chktriss_Click() If intKastnr > 0 Then triss = 0 If ts(3) = ts(5) Then triss = ts(4) * 3 If ts(2) = ts(4) Then triss = ts(4) * 3 If ts(1) = ts(3) Then triss = ts(3) * 3 lbltriss.Caption = triss chktriss.Enabled = False summera Else chktriss.Value = 0 End If End Sub ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Private Sub chkFyrtal_Click() If intKastnr > 0 Then fyrtal = 0 If ts(2) = ts(5) Then fyrtal = ts(4) * 4 If ts(1) = ts(4) Then fyrtal = ts(3) * 4 lblFyrtal.Caption = fyrtal chkFyrtal.Enabled = False summera Else chkFyrtal.Value = 0 End If End Sub ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Private Sub chklitens_click() If intKastnr > 0 Then litenstege = 0 If ts(1) = 5 And ts(2) = 4 And ts(3) = 3 And ts(4) = 2 And ts(5) = 1 Then litenstege = 15 lbllstege.Caption = litenstege chklitens.Enabled = False summera Else chklitens.Value = 0 End If End Sub ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Private Sub chkstors_click() If intKastnr > 0 Then storstege = 0 If ts(1) = 6 And ts(2) = 5 And ts(3) = 4 And ts(4) = 3 And ts(5) = 2 Then storstege = 20 lblsstege.Caption = storstege chkstors.Enabled = False summera Else chkstors.Value = 0 End If End Sub ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Private Sub chkkak_click() If intKastnr > 0 Then kak = 0 If ts(1) = ts(3) And ts(4) = ts(5) Then kak = ts(1) + ts(2) + ts(3) + ts(4) + ts(5) If ts(1) = ts(2) And ts(3) = ts(5) Then kak = ts(1) + ts(2) + ts(3) + ts(4) + ts(5) lblkak.Caption = kak chkkak.Enabled = False summera Else chkkak.Value = 0 End If End Sub ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Private Sub chkchans_click() If intKastnr > 0 Then chans = 0 If ts(1) + ts(2) + ts(3) + ts(4) + ts(5) Then chans = ts(1) + ts(2) + ts(3) + ts(4) + ts(5) lblchans.Caption = chans chkchans.Enabled = False summera Else chkchans.Value = 0 End If End Sub ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Private Sub chkyatzy_click() If intKastnr > 0 Then yatzy = 0 If ts(1) = ts(5) Then yatzy = 50 lblyatzy.Caption = yatzy chkyatzy.Enabled = False summera Else chkyatzy.Value = 0 End If End Sub ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Private Sub chkettor_click() Dim i As Integer If intKastnr > 0 Then intKastnr = 0 ettor = 0 For i = 1 To 5 If ts(i) = 1 Then ettor = ettor + 1 Next i lbl1.Caption = ettor chkettor.Enabled = False Else chkettor.Value = 0 End If summera End Sub ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Private Sub chktvaor_click() Dim i As Integer If intKastnr > 0 Then intKastnr = 0 tvaor = 0 For i = 1 To 5 If ts(i) = 2 Then tvaor = tvaor + 2 Next i lbl2.Caption = tvaor chktvaor.Enabled = False Else chktvaor.Value = 0 End If summera End Sub ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Private Sub chktreor_click() Dim i As Integer If intKastnr > 0 Then intKastnr = 0 treor = 0 For i = 1 To 5 If ts(i) = 3 Then treor = treor + 3 Next i lbl3.Caption = treor chktreor.Enabled = False Else chktreor.Value = 0 End If summera End Sub ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Private Sub chkfyror_click() Dim i As Integer If intKastnr > 0 Then intKastnr = 0 fyror = 0 For i = 1 To 5 If ts(i) = 4 Then fyror = fyror + 4 Next i lbl4.Caption = fyror chkfyror.Enabled = False Else chkfyror.Value = 0 End If summera End Sub ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Private Sub chkfemmor_click() Dim i As Integer If intKastnr > 0 Then femmor = 0 For i = 1 To 5 If ts(i) = 5 Then femmor = femmor + 5 Next i lbl5.Caption = femmor chkfemmor.Enabled = False Else chkfemmor.Value = 0 End If summera End Sub ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Private Sub chksexor_click() Dim i As Integer If intKastnr > 0 Then intKastnr = 0 sexor = 0 For i = 1 To 5 If ts(i) = 6 Then sexor = sexor + 6 Next i lbl6.Caption = sexor chksexor.Enabled = False Else chksexor.Value = 0 End If summera End Sub ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Private Sub cmdSlumpknapp_Click() Dim i As Integer For i = 1 To 5 imgtarning(i).Visible = True lblSlumptal(i).Visible = True chkHold(i).Visible = True Next i intKastnr = intKastnr + 1 If intKastnr = 1 Then cmdSlumpknapp.Caption = "Kasta ditt andra kast " & namn If intKastnr = 2 Then cmdSlumpknapp.Caption = "Kasta ditt tredje kast " & namn If intKastnr = 3 Then cmdSlumpknapp.Caption = "Lägg ut ditt resultat " & namn If intKastnr < 4 Then For i = 1 To 5 If chkHold(i).Value = 0 Then Slumptal t(i) = intSlump lblSlumptal(i).Caption = t(i) imgtarning(i).Picture = LoadPicture("C:\Skolarbete\VB\tarning" & intSlump & ".gif") End If Next i Sortera End If End Sub ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Private Sub Form_Load() intKastnr = 0 intres = 0 namn = InputBox("Ange ditt namn:", "Inmatning av namn") cmdSlumpknapp.Caption = "Kasta ditt första kast " & namn End Sub

Visa signatur

Deadsith: Disc/Holy Priest | Haikeiki: MM/BM Hunter | Garridel: Frost/Arcane mage (Main) | Turák: Resto Druid

Permalänk

Som Leedow skrev, du får helt enkelt nolla allt som ändrats under spelets gång. Enklast är ju att göra en funktion av det som även anropas när programmet startas första gången, så du slipper ha dubbel kod.

Tex:

Public Function reset() lblTitle.Text = "Spela nu" cmdStart.Enabled = True ... osv. vad du nu har som behöver fixas. End Function och sen: Private Sub Form_Load() reset() End Sub Private Sub cmdNytt_Click() reset() End Sub

Du kan inte "ladda om" formen om du bara har en form, då kommer programmet avslutas. Om själva spelet däremot ligger i en sub-form kan du eventuellt göra en stäng-knapp med Unload Me och sedan Load formName. Men personligen skulle jag bara resetta det som behövs som jag skrev ovan.

Permalänk
Skrivet av infinity08:

Som Leedow skrev, du får helt enkelt nolla allt som ändrats under spelets gång. Enklast är ju att göra en funktion av det som även anropas när programmet startas första gången, så du slipper ha dubbel kod.

Tex:

Public Function reset() lblTitle.Text = "Spela nu" cmdStart.Enabled = True ... osv. vad du nu har som behöver fixas. End Function och sen: Private Sub Form_Load() reset() End Sub Private Sub cmdNytt_Click() reset() End Sub

Du kan inte "ladda om" formen om du bara har en form, då kommer programmet avslutas. Om själva spelet däremot ligger i en sub-form kan du eventuellt göra en stäng-knapp med Unload Me och sedan Load formName. Men personligen skulle jag bara resetta det som behövs som jag skrev ovan.

Förstod inte mycket av det du skrev i koden. Skulle du kunna försöka göra koden men hjälp av dom koderna jag använder. För mitt huvud förvirrar allt ihop

Visa signatur

Deadsith: Disc/Holy Priest | Haikeiki: MM/BM Hunter | Garridel: Frost/Arcane mage (Main) | Turák: Resto Druid

Permalänk
Medlem
Skrivet av Geforce9500gt:

Förstod inte mycket av det du skrev i koden. Skulle du kunna försöka göra koden men hjälp av dom koderna jag använder. För mitt huvud förvirrar allt ihop

Det enda nya han har lagt till är en metod som heter reset().
Denna metod körs om man klickar på knappen cmd_Nytt eller formuläret startas Form_Load().

I reset-metoden ska du lägga till nollställning av alla dina variabler och labels samt övriga kontroller.
Exempelvis så ska du göra så att lblcaption, lblbonus, lbltriss ska bli satta till defaultvärden, eller det värde som dessa ska ha precis innan man börjar ett spel.
Alla dina heltalsvariabler ska sättas till 0.

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Skrivet av Leedow:

Det enda nya han har lagt till är en metod som heter reset().
Denna metod körs om man klickar på knappen cmd_Nytt eller formuläret startas Form_Load().

I reset-metoden ska du lägga till nollställning av alla dina variabler och labels samt övriga kontroller.
Exempelvis så ska du göra så att lblcaption, lblbonus, lbltriss ska bli satta till defaultvärden, eller det värde som dessa ska ha precis innan man börjar ett spel.
Alla dina heltalsvariabler ska sättas till 0.

Du har inte lust att skriva koden så jag fattar den mer. För blir frustrerad nu när jag inte får det att funka

Visa signatur

Deadsith: Disc/Holy Priest | Haikeiki: MM/BM Hunter | Garridel: Frost/Arcane mage (Main) | Turák: Resto Druid

Permalänk
Medlem
Skrivet av Geforce9500gt:

Du har inte lust att skriva koden så jag fattar den mer. För blir frustrerad nu när jag inte får det att funka

Ok, jag kan skriva lite mer. Om vi utgår från det som infinity08 skrev och fyller på.

Public Function reset() intSlump = 0 intKastnr = 0 t.Clear() ts.Clear() par = 0 tvapar = 0 triss = 0 fyrtal = 0 litenstege = 0 storstege = 0 kak = 0 chans = 0 yatzy = 0 ettor = 0 tvaor = 0 treor = 0 fyror = 0 femmor = 0 sexor = 0 bonus = 0 summa = 0 total = 0 namn = "" intres = 0 intsvar = 0 lblbonus.Caption = "" lblsumma.Caption = "" lblsumma1.Caption = "" lbltriss.Caption = "" lblFyrtal.Caption = "" // Fyll på med ALLA labels, variabler och övriga kontroller som skall nollställas här End Function Private Sub Form_Load() reset() End Sub Private Sub cmdNytt_Click() reset() End Sub

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk

Fick allt att funka, tog bort några saker som inte skulle resetas som Namn tex då jag antar att du inte har byt namn efter att ha spelat ett spel La även till lite andra saker , så blev c:a 50 rader Men tack för hjälpen

Visa signatur

Deadsith: Disc/Holy Priest | Haikeiki: MM/BM Hunter | Garridel: Frost/Arcane mage (Main) | Turák: Resto Druid