Permalänk

Lite hjälp i VB6 Önskas(Yatzy)

Hejsan, Är så att jag läser programmering A just nu, och då i Visual Basic 6. Just nu håller vi på att göra ett Yatzy spel, som det verkar som många andra kör också med. Men får inte rätt på en kod. Och det gäller 2 par. Använder bubbelsorterings metoden om jag ska uttrycka mig sig.
Det jag har försökt med när det gäller programmeringskoderna just nu 2par blir så missar den att kolla en ts (Tärning)

Dessa är koderna jag har försökt med
If ts(1) = ts(2) and ts(3) = ts(4) then tvapar = ts(1) + ts(3) *2
If ts(2) = ts(3) and ts(4) = ts(5) then tvapar = ts(2) + ts(4) *2

Postar upp hela koden för programmet, för att ni lättare ska kanske förstå hur resten av programmet ser ut

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 As Integer Sub Slumptal() Randomize intSlump = (5 * Rnd) + 1 End Sub Sub hide_chkboxar() Dim i As Integer For i = 1 To 5 chkHold(i).Visible = False Next i End Sub Sub show_chkboxar() Dim i As Integer For i = 1 To 5 chkHold(i).Visible = True Next i 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() Dim i As Integer intKastnr = 0 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 End Sub Private Sub chk2par_Click() Dim i As Integer intKastnr = 0 <---------DET ÄR HÄR PROBLEMET LIGGER tvapar = 0 lbl2par.Caption = tvapar End Sub Private Sub chktriss_Click() Dim i As Integer intKastnr = 0 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 End Sub Private Sub chkFyrtal_Click() Dim i As Integer intKastnr = 0 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 End Sub Private Sub chklitens_click() Dim i As Integer intKastnr = 0 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 End Sub Private Sub chkstors_click() Dim i As Integer intKastnr = 0 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 End Sub Private Sub chkkak_click() Dim i As Integer intKastnr = 0 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 End Sub Private Sub chkchans_click() intKastnr = 0 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 End Sub Private Sub chkyatzy_click() intKastnr = 0 yatzy = 0 If ts(1) = ts(5) Then yatzy = 50 lblyatzy.Caption = yatzy End Sub Private Sub chkettor_click() intKastnr = 0 ettor = 0 lbl1.Caption = ettor End Sub Private Sub cmdSlumpknapp_Click() Dim i As Integer show_chkboxar intKastnr = intKastnr + 1 Label1.Caption = "Kastnummer = " & intKastnr If intKastnr < 4 Then Label2.Caption = "" Label3.Caption = "" 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 Label2.Caption = Label2.Caption & lblSlumptal(i) Next i Sortera Label3.Caption = ts(1) & ts(2) & ts(3) & ts(4) & ts(5) End If End Sub Private Sub Form_Load() intKastnr = 0 hide_chkboxar End Sub

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, Är så att jag läser programmering A just nu, och då i Visual Basic 6. Just nu håller vi på att göra ett Yatzy spel, som det verkar som många andra kör också med. Men får inte rätt på en kod. Och det gäller 2 par. Använder bubbelsorterings metoden om jag ska uttrycka mig sig.
Det jag har försökt med när det gäller programmeringskoderna just nu 2par blir så missar den att kolla en ts (Tärning)

Dessa är koderna jag har försökt med
If ts(1) = ts(2) and ts(3) = ts(4) then tvapar = ts(1) + ts(3) *2
If ts(2) = ts(3) and ts(4) = ts(5) then tvapar = ts(2) + ts(4) *2

Postar upp hela koden för programmet, för att ni lättare ska kanske förstå hur resten av programmet ser ut

VB är inte ett vackert språk inte.

Kan du beskriva närmare vad som inte fungerar?
Eftersom att du sorterar värdena efter kasten så ser det ut att fungera:
22262 och 51555
blir
22226 och 15555
Båda dessa fall borde fungera med det du har skrivit.

Visa signatur

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

Permalänk
Medlem
Skrivet av Leedow:

VB är inte ett vackert språk inte.

Kan du beskriva närmare vad som inte fungerar?
Eftersom att du sorterar värdena efter kasten så ser det ut att fungera:
22262 och 51555
blir
22226 och 15555
Båda dessa fall borde fungera med det du har skrivit.

Visste inte ens att folk skriver VB längre iaf inte på programmeringskurser...

Visa signatur

Arch - Makepkg, not war -||- Gigabyte X570 Aorus Master -||- GSkill 64GiB DDR4 14-14-15-35-1T 3600Mhz -||- AMD 5900x-||- Gigabyte RX6900XT -||- 2x Adata XPG sx8200 Pro 1TB -||- EVGA G2 750W -||- Corsair 570x -||- O2+ODAC-||- Sennheiser HD-650 -|| Boycott EA,2K,Activision,Ubisoft,WB,EGS
Arch Linux, one hell of a distribution.

Permalänk
Skrivet av Leedow:

VB är inte ett vackert språk inte.

Kan du beskriva närmare vad som inte fungerar?
Eftersom att du sorterar värdena efter kasten så ser det ut att fungera:
22262 och 51555
blir
22226 och 15555
Båda dessa fall borde fungera med det du har skrivit.

Hehe, håller med dig om att VB inte är vackert. Ville läsa C++ och Java i stället. Men det kommer senare i 3:an. Detta är typ som en test för att se om vi har "hjärnan" till att förstå dom andra språken.
Så som du skrev nu, asså att 22262 = 22226 stämmer inte. Jag har så det stora talen först. Kan beskriva vad som händer just nu med det tal jag har

Använder en av koderna jag hade skrivit innan. IF ts(1) = ts(2) and ts(3) = ts(4) then tvapar = ts(1)+ts(2)+ts(3)+ts(4)

54345 blir ju i detta läget 55443 (Fick jag nu) eftersom vi ville ha det största talet först. Men sen så när jag då väljer att summan ska skrivas ut i lbltvapar.caption så stämmer inte poängen. Den tar nu ju ts(1) + ts(2) vilket blir 10poäng och ts(3) + ts(4) är ju 8 poäng vilket nu ska bli 18 poäng vilket det också bli. Så, så långt funkar koden jätte bra. Men ska ta ett tal som det kommer bli fel med te,x 66422 nu funkar inte min kod längre. Ingen av dom jag har testat funkar ej om detta är ett tal som kommer upp. Det är det som händer

Skrivet av Commander:

Visste inte ens att folk skriver VB längre iaf inte på programmeringskurser...

Hehe. Det är mest min lärare som älskar Visual basic. Jag gillar C++ mer. Men det kommer, Men han är lite konstig.

Visa signatur

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

Permalänk

LÄGGER TILL HÄR NU MED ATT JAG HAR LÖST PROBLEMET. Ett totalt hjärnsläpp har jag ju haft ett par dar på detta. Och löser det på ett så enkelt sätt så man blir arg. Nu så funkar allt som det ska. Eftersom nu kolla programmet alla 5 tärningar. Och ingen kan bli utesluten.

Efter som att tärningarna ibland efter sortering kan se ut så här 66422 och vilken kod jag än har testat blir det ju fel. Borde jag ha sett att det var så enkelt som att lägga till koden
If ts(1) = ts(2) and ts(4) = ts(5) then tvapar = ts(1) + ts(2) + ts(4) + ts(5)

Visa signatur

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

Permalänk

Mer hjälp uppskattas :D

Kan använda denna tråden igen, till en annan fråga. Nu så har jag kommit så långt som att jag ska fixa till 1 till 6. Men kommer inte på hur jag ska få det att funka alls. Har testat lite allt möjligt, Men det funkar endast på 1 och 6. Så om någon som kan förstå detta bättre än jag som jag lust att hjälpa mig lite.
Postar upp en ny uppdatering av koden som finns tillgänglig

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 ------------------------------------------------------------------------------------------- Sub Slumptal() Randomize intSlump = (5 * Rnd) + 1 End Sub ------------------------------------------------------------------------------------------- Sub hide_chkboxar() Dim i As Integer For i = 1 To 5 chkHold(i).Visible = False Next i End Sub ------------------------------------------------------------------------------------------- Sub show_chkboxar() Dim i As Integer For i = 1 To 5 chkHold(i).Visible = True Next i 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() Dim i As Integer intKastnr = 0 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 End Sub ------------------------------------------------------------------------------------------- Private Sub chk2par_Click() Dim i As Integer intKastnr = 0 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 End Sub ------------------------------------------------------------------------------------------- Private Sub chktriss_Click() Dim i As Integer intKastnr = 0 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 End Sub ------------------------------------------------------------------------------------------- Private Sub chkFyrtal_Click() Dim i As Integer intKastnr = 0 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 End Sub ------------------------------------------------------------------------------------------- Private Sub chklitens_click() Dim i As Integer intKastnr = 0 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 End Sub ------------------------------------------------------------------------------------------- Private Sub chkstors_click() Dim i As Integer intKastnr = 0 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 End Sub ------------------------------------------------------------------------------------------- Private Sub chkkak_click() Dim i As Integer intKastnr = 0 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 End Sub ------------------------------------------------------------------------------------------- Private Sub chkchans_click() intKastnr = 0 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 End Sub ------------------------------------------------------------------------------------------- Private Sub chkyatzy_click() intKastnr = 0 yatzy = 0 If ts(1) = ts(5) Then yatzy = 50 lblyatzy.Caption = yatzy End Sub ------------------------------------------------------------------------------------------- Private Sub chkettor_click() intKastnr = 0 ettor = 0 If ts(5) = 1 Then ettor = 1 If ts(4) = 1 Then ettor = 2 If ts(3) = 1 Then ettor = 3 If ts(2) = 1 Then ettor = 4 If ts(1) = 1 Then ettor = 5 lbl1.Caption = ettor End Sub ------------------------------------------------------------------------------------------- Private Sub chktvaor_click() intKastnr = 0 tvaor = 0 BEHÖVER HJÄLP HÄR lbl2.Caption = tvaor End Sub ------------------------------------------------------------------------------------------- Private Sub chktreor_click() intKastnr = 0 treor = 0 BEHÖVER HJÄLP HÄR lbl3.Caption = treor End Sub ------------------------------------------------------------------------------------------- Private Sub chkfyror_click() intKastnr = 0 fyror = 0 BEHÖVER HJÄLP HÄR lbl4.Caption = fyror End Sub ----------------------------------------------------------------------------------------- Private Sub chkfemmor_click() intKastnr = 0 femmor = 0 BEHÖVER HJÄLP HÄR lbl5.Caption = femmor End Sub ------------------------------------------------------------------------------------------- Private Sub chksexor_click() intKastnr = 0 sexor = 0 If ts(1) = 6 Then sexor = 6 If ts(2) = 6 Then sexor = 12 If ts(3) = 6 Then sexor = 18 If ts(4) = 6 Then sexor = 24 If ts(5) = 6 Then sexor = 30 lbl6.Caption = sexor End Sub ------------------------------------------------------------------------------------------- Private Sub cmdSlumpknapp_Click() Dim i As Integer show_chkboxar intKastnr = intKastnr + 1 Label1.Caption = "Kastnummer = " & intKastnr If intKastnr < 4 Then Label2.Caption = "" Label3.Caption = "" 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 Label2.Caption = Label2.Caption & lblSlumptal(i) Next i Sortera Label3.Caption = ts(1) & ts(2) & ts(3) & ts(4) & ts(5) End If End Sub ------------------------------------------------------------------------------------------- Private Sub Form_Load() intKastnr = 0 hide_chkboxar End Sub

Visa signatur

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

Permalänk

Det är inget problem att förstå koden men frågan är hur du tänker dig att du ska hantera uppgiften? Om du utgår från att spelaren väljor 3:or (som ett exempel) vad ska programmet göra? Om du tänker på att den ska -räkna- antal -förekomster- av tärningar med 3 prickar, blir det enklare då? När du väl har antal tärningar med 3 prickar kan du få fram poängen med "antal x 3". Samma gäller för 1:or, 2:or, 4:or, 5:or, och 6:or.

PS. VB6 kan vara vackert om man kan det.