21. juli 2001 - 15:40Der er
6 kommentarer og 1 løsning
Yatzee
Jeg er lige igang med at lave et yatzee spil, eller rettere prøve at ændre på en fundet på \"planet source code\". Det jeg har ændret til nu er at få en terning mere i spillet (og så et par andre småting i spillet), men nu da det er en mere terning med (nu er det 6) virker small straight og big straight ikke mere.
Grunden er at der først var sagt at for at få small straight må man ikke have en 6\'er (og omvendt)
Her er koden jeg har prøvet at mixe sammen, men som det kan ses skal man kun har 1 ener for at få lille straight. Kan det ikke sættes til at den først kigger om man har en ener, har man det ser den efter om man har en toer osv...Eller hvordan kan det gøres?
----------------------------------------------------- Private Function chkStraight(intBigSmall As Integer) As Integer Dim i As Integer Dim bolCheck, bolBigSmall As Boolean
For i = 0 To 5
If intBigSmall = 6 Then If DiceValue(i) = 1 Then chkStraight = 15 End If End If Next
End Function -----------------------------------------------------
Jeg er ikke helt sikker på det hjørne i VB, men hvad med at prøve
Private Function chkStraight(intBigSmall As Integer) As Integer Dim i As Integer Dim bolCheck, bolBigSmall, Ch1, Ch2, Ch3, Ch4, Ch5 As Boolean
Ch1=false Ch2=false Ch3=false Ch4=false Ch5=false
If intBigSmall = 6 Then For i = 0 To 5 Select Case DiceValue(i) Case 1 Ch1=True Case 2 Ch2=True Case 3 Ch3=True Case 4 Ch4=True Case 5 Ch5=True End Select If Ch1 And Ch2 And Ch3 And Ch4 And Ch5 Then chkStraight = 15 End If Next End If
End Function
Nu kan jeg ikke gennemskue hvad du bruger intBigSmall til, men jeg har flyttet den udenfor løkken, det kan ikke være nødvendigt at spørge på den 5 gange.
Private Function chkStraight(intBigSmall As Integer) As Integer Dim i As Integer Dim bolCheck, bolBigSmall, Ch1, Ch2, Ch3, Ch4, Ch5 As Boolean
Ch1=false Ch2=false Ch3=false Ch4=false Ch5=false
If intBigSmall = 6 Then For i = 0 To 5 Select Case DiceValue(i) Case 1 Ch1=True Case 2 Ch2=True Case 3 Ch3=True Case 4 Ch4=True Case 5 Ch5=True End Select Next End If
If Ch1 And Ch2 And Ch3 And Ch4 And Ch5 Then chkStraight = 15 Else chkStraight = 0 End If
dim a,i,z as integer a=1, z=1 nestetal: if dicevalue(i) = a then if z < a then z = a a = a + 1 if a = 5 then chkstraight = 15 end if end if if z = a then a=a +1: goto nestetal
Eller noget i den stil? Jeg tror den knækkede på et tidspunkt, kigger på det senere :-)
For at få både den lille og den store straight til at virke fik jeg det til at se sådan ud:
------------------------------------------------ Private Function chkStraight(intBigSmall As Integer) As Integer Dim i As Integer Dim bolCheck, bolBigSmall, Ch1, Ch2, Ch3, Ch4, Ch5, Ch6 As Boolean
For i = 0 To 5 Select Case DiceValue(i) Case 1 Ch1 = True Case 2 Ch2 = True Case 3 Ch3 = True Case 4 Ch4 = True Case 5 Ch5 = True Case 6 Ch6 = True End Select Next
If intBigSmall = 6 Then If Ch1 And Ch2 And Ch3 And Ch4 And Ch5 Then chkStraight = 15 Else chkStraight = 0 End If End If
If intBigSmall = 1 Then If Ch2 And Ch3 And Ch4 And Ch5 And Ch6 Then chkStraight = 30 Else chkStraight = 0 End If End If
End Function ------------------------------------------------
Så der var ellers kun nogle småting der skulle ændres :)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.