Avatar billede karl_fritjof Nybegynder
14. juni 2000 - 17:24 Der er 8 kommentarer og
1 løsning

Hjælp til et plat spil

Jeg sidder og prøver på at lave det kendte spil, hvor det gælder om ikke at komme til at fjerne den sidste pind ud af 21. Jeg har forsøgt følgende:


Private Sub Command1_Click()

X = Et eller andet

If Option1.Value = True Then GoTo 1 Else GoTo 2
1
LineX.Visible = False
GoTo 3
2
LineX.Visible = False
LineX+1.Visible = False
3

Dette virker ikke (heller ikke med "" omkring X'et, så hvordan klarer jeg den.

Hvordan er det, at randomfunktionen fungerer i VB

Hilsen Karl Fritjof
Avatar billede driis Nybegynder
14. juni 2000 - 17:58 #1
Prøv lige at forklare spm'et lidt nærmere... (Jeg har ikke helt forstået hvad du ønsker, men det kan jo være, det er mig, der er dum...)
Avatar billede tdaugaard Nybegynder
14. juni 2000 - 21:21 #2
Jeg forstår det godt, men det er forkert lavet.
Jeg gætter på du har et array af Lines, det refererer du til på følgende måde:

Line(index).Visible
Line(index+1).Visible

Jeg kan se på dine GoTo's at du næsten lige er begyndt med VB, derfor vil jeg lige fortæller dig at istedet for GoTo så brug f.eks.

If Option1.Value = True Then
    Line(X).Visible = False
Else
    Line(X).Visible = False
    Lines(X + 1).Visible = False
End If

Det gør at hvis Option1.Value = True så udføres koden FØR "Else" og hvis den er ALT andet (nu kan den så kun være False) så udføres koden mellem "Else" og "End If"

Random funktionen virker således:

Randomize [seed] (eks. Randomize Timer (plejer man at bruge))

det initialiserer random number generatoren.

Så bruger du "Rnd" til at finde et tal.

F.eks.

X = (Rnd * 15) + 10

hvilket finder et tal mellem 10 og 25 (mener jeg!)

Rnd returnere et decimaltal på <1 derfor skal du gange det med hvor stort et tal du vil have.
Avatar billede driis Nybegynder
14. juni 2000 - 23:22 #3
Mht. Random nummer funktionen: Jeg går ud fra du skal have et helt tal her - For at få et helt tal ud af RND mellem 10 og 25 gør du således:

X=INT(1+(RND * 15)) + 10)

Grunden til "1+(RND*15)" er, at RND returnerer et tal, x, der er 0<x<1

Dermed giver (RND * 15) et tal under 15, som eks. kan være 14.9999.
INT returnerer værdien nedrundet, dvs, at INT(14.9999)=14

Dermed giver INT(RND*15) højst 14, hvorimod så hvis du vil bevare muligheden for at resultatet bliver 25, skal det hedde INT(1+(RND * 15))+10)
Avatar billede karl_fritjof Nybegynder
14. juni 2000 - 23:48 #4
Tak for svarene. De var meget brugbare.

Det er rigtigt, at jeg lige er begyndt at programere i VB. Tidligere har jeg kun programeret på min Ti83 lommeregner og lidt qbasic.

Hvis der er nogle, der kender nogle steder, hvor man kan lære om VB på internettet, vil jeg gerne have adresserne (Af samme årgsag venter jeg med at lukke spørgsmålet).
Avatar billede karl_fritjof Nybegynder
15. juni 2000 - 00:00 #5
Svarene var desvære ikke brugbare nok.

Når jeg følger tdaugaards råd, kommer der en syntaxfejl. Jeg er ikke sikker på, at jeg har lavet et array af Lines. Jeg har bare lavet 21 lines, da det var det jeg skulle bruge. Det jeg har lavet ser sådan ud:

Private Sub Command1_Click()
X = Int(1 + (Rnd * 21))
If Option1.Value = True Then
    Line(X).Visible = False
Else
    Line(X).Visible = False
    Line(X+1).Visible = False
End If
End Sub
Avatar billede driis Nybegynder
15. juni 2000 - 00:10 #7
Hvis du bare har lavet 21 linier, så har du fået 21 individuelle linjer, altså

Line1,Line2,Line3 osv, og altså ikke et array, men enkeltstående linjer som har navnet "Line1" osv.

Du skal have oprettet et array, før koden virker.
Avatar billede karl_fritjof Nybegynder
15. juni 2000 - 00:12 #8
Hvordan opretter jeg så et array?
Avatar billede tdaugaard Nybegynder
15. juni 2000 - 02:01 #9
Du giver EEN "line" et navn, derefter i navngiver du alle de andre med SAMME navn (første gang vil du blive spurgt om du vil oprette et Control Array, klik Ja) derefter vil du kunne bruge den kode jeg skrev, og undgå at du skal skrive f.eks. (som mange nybegyndere gør (det gjorde jeg også selv dengang))

If bla bla Then
  Line1.bla bla =true
ElseIf bla bla Then
  Line2.bla bla =false
...
etc.

<< driis >>

Vil du have halvdelen af pointsne ?? Du kom jo egentlig med ligeså meget brugbart som jeg gjorde. Bare sig til og jeg opretter et spm.
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