Avatar billede shivan Nybegynder
26. december 2003 - 11:36 Der er 20 kommentarer og
1 løsning

Forhindre gentagelse af et tal??

Jeg er ved at lave en lille spil. I koden indgår at der vælges et tilfældigt heltal mellem 1 og 3
og det tal må ikke være det samme 2 gange i træk.

Det er en ret grundlæggende ting... men kan virkeligt ikke hitte ud af det.

Er det ikke nogen der kan komme med en god blok kode eller teorien bag det? (helt koden, det er vel lidt ala. Bubblesort)
Avatar billede erikjacobsen Ekspert
26. december 2003 - 11:42 #1
Du husker bare det sidste tal.
  Hvis det er 1 må du vælge 2 og 3
  Hvis det er 2 må du vælge 3 og 1
  Hvis det er 3 må du vælge 1 og 2
(forstået rigtigt).
Derfor vælger du et tilfældigt tal mellem 1 og 2 inklusive og lægger til det tal du havde før.
Kommer du på 4 så laver du det om til 1.
Avatar billede erikjacobsen Ekspert
26. december 2003 - 11:43 #2
Og bliver det 5 så laver du det om til 2 (selvfølgelig...)
Avatar billede shivan Nybegynder
26. december 2003 - 12:04 #3
ja.. jeg har bare problemer med at få den til at "huske tallet".. det nye tal overskriver jo det der var gemt... ved ikke... det gamle vil jo altid afhænge af det nye..

jeg prøver lige det du skrev... der skal jo nok bruges 2 forskellige Rnd commands..
Avatar billede kabbak Professor
26. december 2003 - 12:24 #4
Dim GammelVærdi As Byte

Private Sub Command1_Click()
If Værdi <> GammelVærdi Then
' værdien er ikke den samme
GammelVærdi = Værdi
Else
MsgBox "Du har brugt " & Værdi & " en gang"
Værdi = ""
Værdi.SetFocus
End If
End Sub
Avatar billede shivan Nybegynder
26. december 2003 - 12:38 #5
problemet er at huske det sidste tal

Call RndNum (tager et tal mellem 1 og 3) (det outputter integeren Randomnumber)
Sidstetal = Randomnumber

det er bare at når det nye tal skabes overskrives det forrige. De vil altid være afhængige af hinanden?
Avatar billede kabbak Professor
26. december 2003 - 12:47 #6
du skal jo tjekke INDEN du tilføjer næste værdi, se min kommentat

Dim GammelVærdi As Byte

den skal være global ellers husker den ikke
Avatar billede shivan Nybegynder
26. december 2003 - 12:55 #7
tak for alle svarne.. ( :
Avatar billede shivan Nybegynder
26. december 2003 - 12:55 #8
øh.. der er egentlig ikke nogen der har afgivet et svar..? kun kommentar
Avatar billede kabbak Professor
26. december 2003 - 13:03 #9
hvis du kan bruge det, beder du om at vi svarer, det er kun dem eller den du vil give point, du behøver at bede.
Avatar billede shivan Nybegynder
26. december 2003 - 13:33 #10
da jeg stadig er n00b i VB havde jeg lidt svært ved at forstå det.
det stod ikke noget om .setfocus i min lærebog.. så jeg blev nød til at strege det svar.

Jeg fandt dog en vej udenom. I stedet for at kigge på den forrige tal, så kigger man på hvilken hvilken handling tallet sidst var skyld i.
Avatar billede kabbak Professor
26. december 2003 - 13:52 #11
prøv at sætte din kode herind, så kikker jeg på den senere.

Er det i vb6 du laver den.?
Avatar billede shivan Nybegynder
26. december 2003 - 13:56 #12
Private Sub Timer1_Timer()
10 ' et mærke man kan gå tilbage til
Call Rndnum 'tilfældigt tal mellem 0 og 2
'vælger nummeret efter det er blevet genereret
Select Case rndnumbreed
    Case Is = 0
        If premarkid <> 1 Then 'premark er for hvad der skete sidste gang
        cmd33.Enabled = False
        cmd33.Visible = False
        cmd22.Enabled = False
        cmd22.Visible = False
        cmd11.Enabled = True
        cmd11.Visible = True
        premarkid = 1
        option1 = option1 + 1
        Else
        GoTo 10
        End If
    Case Is = 1
        If premarkid <> 2 Then
        cmd11.Enabled = False
        cmd11.Visible = False
        cmd33.Enabled = False
        cmd33.Visible = False
        cmd22.Enabled = True
        cmd22.Visible = True
        premarkid = 2
        option2 = option2 + 1
        Else
        GoTo 10
        End If
    Case Is = 2
        If premarkid <> 3 Then
        cmd11.Enabled = False
        cmd11.Visible = False
        cmd22.Enabled = False
        cmd22.Visible = False
        cmd33.Enabled = True
        cmd33.Visible = True
        premarkid = 3
        option3 = option3 + 1
        Else
        GoTo 10
        End If
End Select
    'Checker om tiden er løbet ud og nedskriver score hvis man endnu ikke har tabt
timeleft = timeleft - 1
lbltime = timeleft
If timeleft = 0 Then
    gamelost = True
End If
Avatar billede kabbak Professor
26. december 2003 - 16:16 #13
må jeg se koden på


Call Rndnum
Avatar billede shivan Nybegynder
26. december 2003 - 17:39 #14
Public Sub Rndnum()
'laver et nummer mellem 1 og 3
Randomize
rndnumbreed = Int(3 * Rnd)
Randomize
End Sub
Avatar billede kabbak Professor
26. december 2003 - 19:35 #15
det kan vist laves således
Avatar billede kabbak Professor
26. december 2003 - 19:35 #16
Dim PremarkId As Byte
Dim RndNumbreed As Byte
Public Sub Timer1_Timer()
Randomize
OM:
RndNumbreed = Int(3 * Rnd) + 1
If PremarkId = RndNumbreed Then GoTo OM
PremarkId = RndNumbreed
'tilfældigt tal mellem 1 og 3
'vælger nummeret efter det er blevet genereret
Select Case RndNumbreed
    Case 1
        cmd33.Enabled = False
        cmd33.Visible = False
        cmd22.Enabled = False
        cmd22.Visible = False
        cmd11.Enabled = True
        cmd11.Visible = True
        option1 = option1 + 1
    Case 2
        cmd11.Enabled = False
        cmd11.Visible = False
        cmd33.Enabled = False
        cmd33.Visible = False
        cmd22.Enabled = True
        cmd22.Visible = True
        option2 = option2 + 1
    Case 3
        cmd11.Enabled = False
        cmd11.Visible = False
        cmd22.Enabled = False
        cmd22.Visible = False
        cmd33.Enabled = True
        cmd33.Visible = True
        option3 = option3 + 1
      End Select
    'Checker om tiden er løbet ud og nedskriver score hvis man endnu ikke har tabt
timeleft = timeleft - 1
lbltime = timeleft
If timeleft = 0 Then
    gamelost = True
End If
End Sub
Avatar billede kabbak Professor
26. december 2003 - 19:36 #17
lav lige
Public Sub Timer1_Timer()
om til
Private Sub Timer1_Timer()

jeg rettede den
Avatar billede kabbak Professor
07. januar 2004 - 14:22 #18
hvordan går det ?
Avatar billede shivan Nybegynder
08. januar 2004 - 09:54 #19
jeg har fået løst problemet.
spillet i sin betaversion kan downloades på www.shivan.dk
Avatar billede kabbak Professor
08. januar 2004 - 11:09 #20
tak for point ;-))
Avatar billede shivan Nybegynder
08. januar 2004 - 18:20 #21
jeg lægger snart spillet ind i en væsenligt opdateret udgave
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester