Deadsith: Disc/Holy Priest | Haikeiki: MM/BM Hunter | Garridel: Frost/Arcane mage (Main) | Turák: Resto Druid
vbYesNo kommandon
Visa signatur
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
ηλί, ηλί, λαμά σαβαχθανί!?
Citera flera
Citera
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
Citera flera
Citera
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.
Citera flera
Citera
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
Citera flera
Citera
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
ηλί, ηλί, λαμά σαβαχθανί!?
Citera flera
Citera
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
Citera flera
Citera
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
ηλί, ηλί, λαμά σαβαχθανί!?
Citera flera
Citera
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
Citera flera
Citera
Hårdvara
- Igår Nvidia: "Energieffektiva RTX 4060 sparar hundralappar" 36
- Igår MSI Geforce RTX 4060 Ventus 2X OC – bra prestanda vid 1080p men medioker kylare 45
- Igår Noctua släpper monteringsram för "deliddade" Ryzen 7000-processorer 15
- Igår Nvidias nästa arkitektur för Geforce kommer år 2025 58
- 27 / 6 Afox släpper kompakt Geforce RTX 4090 36
Mjukvara
Övrigt
- Igår Veckans fråga: Vilket operativsystem föredrar du? 79
- Igår Bilar med smarta inslag ger fler dumma fel 58
- 27 / 6 Telekombranschen: "Smarta glasögon ersätter telefoner inom fem år" 88
- 26 / 6 Lastpass-användare rasar – kan inte logga in 59
- 26 / 6 Inet frågar SweClockers – Vad skulle du vilja förbättra på Inet.se? 53
Datorkomponenter
Ljud, bild och kommunikation
- Solfilm till fönster för sommarvärmen. Behöver råd.30
- Hjälp angående gammal psu och "nytt" grafikkort2
- Ert dyraste ” datormisstag”?402
- Vad lyssnar du på just nu?12615
- Fästingar.2
- Krönika: Teknikutvecklingen avstannar – men det gör också uppgraderingsbehovet67
- Bildvisnings program6
- Dator från Inet (30k~)1
- Kommer flytta till stan och mitt wifi kommer säkert synas av hundratals människor varje dag. Vilken router ska jag köpa och hur ska den ställas in?7
- Vilken serie såg du senast?1253
- Säljes LG 27'' UltraGear 27GP950 4K Nano IPS 160 Hz HDMI 2.1
- Säljes Star Wars Jedi AMD kod
- Säljes Trasig Xiaomi Mi Electric Scooter (M365) Svart
- Säljes 5800x3D + x570 Meg Unify + be quiet! Dark Rock Slim
- Säljes AMD ASUS DUAL RX6700XT
- Säljes Dell OptiPlex 7010
- Säljes Datordelar: i5 9600k + 1070 GTX mm.
- Säljes 1080 TI | Vattenblock | 1TB SSD | Apple Watch 4 Stainless | Hörlurar | Mikrofon
- Säljes Intressekoll: Xbox Series S 512Gb samt Switch Oled 64Gb Vit
- Säljes Gamingdator RTX 3090, i9-10900K, 32GB ram
- Nvidia: "Energieffektiva RTX 4060 sparar hundralappar"36
- MSI Geforce RTX 4060 Ventus 2X OC – bra prestanda vid 1080p men medioker kylare45
- Veckans fråga: Vilket operativsystem föredrar du?79
- Bilar med smarta inslag ger fler dumma fel58
- Noctua släpper monteringsram för "deliddade" Ryzen 7000-processorer15
- Nvidias nästa arkitektur för Geforce kommer år 202558
- Microsoft vill strömma Windows från molnet71
- Starfield utvecklas med AMD:s välsignelse148
- Telekombranschen: "Smarta glasögon ersätter telefoner inom fem år"88
- En av tre svenskar använder annonsblockerare80
Externa nyheter
Spelnyheter från FZ
- Alan Wake och CoD: Kallt krig snart på PS Plus, enligt läcka igår
- Red Dead Redemption åldersmärkt igen i Korea – det spekuleras i remaster igår
- Fallout London flyttas för att slippa Starfield-konkurrensen igår
- Minecraft-filmen kan ha hittat sin Steve – Pedro "The Last of Us-Joel" Pascal igår
- Stor Diablo IV-patch släppt, mer XP och ombalanserade klasser igår