Visual basic Dobbelstenen

Status
Niet open voor verdere reacties.

Robbert1978

Terugkerende gebruiker
Lid geworden
2 nov 2002
Berichten
2.349
Ik probeer een spelletje te maken met 5 dobbelstenen in Visual Basic 6.0

Ik dacht, ik maak eerst 5 tekstboxen, die elk random een getal genereren van 1 tm 6. Tot zover gelukt.

Nu wil ik, dat er als er in die tekstbox bv een 1 staat, dat hij ook het plaatje van de dobbelsteen met 1 puntje weergeeft in een picturebox en bij 2 een 2 enz.

Hoe los ik dit op?
 
Je zou het op een manier als deze kunnen proberen :
Code:
Private Sub Command1_Click()

Dim filename As String, steen As Byte
filename = "C:\dobbel\"

steen = Int((Rnd(Timer) * 6)) + 1

Text1.Text = steen
filename = filename + Trim(Text1.Text) + ".bmp"
Picture1.Picture = LoadPicture(filename)

End Sub

Bovenstaand voorbeeld gaat er vanuit dat je het spel in de map c:\dobbel hebt staan en daar 6 bitmapjes (1.bmp, 2.bmp, 3.bmp etc) te vinden zijn.

Bij elke worp wordt dan gelijk de juiste bitmap geladen.

Voor meerdere dobbelstenen kun he met een array gaan werken van meerdere bitmaps naast elkaar.
 
Ik heb nu voor 1 steen het voor elkaar.

Hoe werkt dat met die arrays ook alweer? Ik heb nu wel onder Picture1.Picture = LoadPicture(filename)
hetzelfde staan alleen dan met Picture2.Picture maar dan zijn die 2 getallen hetzelfde, en die moeten dus verschillend zijn (tenminste, kan af en toe wel hetzelfde natuurlijk, maar ze moeten onafhankelijk van elkaar random zijn
 
Een array kun je eenvoudig maken van een imagebox.

Je plaatst dan de picturebox op het form, selecteert die en doet CTRL-C.

Als je vervolgens plakt met CTRL-V, wordt je gevraagd of je een array wilt maken.
Klik op yes en de picturebox wordt in een array geplaatst.

Als je 5 dobbelstenen hebt moet je dus nog 3x plakken.

Bij de eigenschappen van de picturebox zie je nu staan :

picturebox1(0) tm picturebox1(4)

die kun je dus aanspreken met hun indexwaarde.

voorbeeldje :

Code:
sub testje()

dim t as byte, FileName(4) as string

FileName(0) ="1.bmp"
FileName(1) ="2.bmp"
FileName(2) ="3.bmp"
FileName(3) ="4.bmp"
FileName(4) ="5.bmp"

for t = 0 to 4

Picture1(t).Picture = LoadPicture(FileName(t))

Next t

End Sub

Uiteraard kun je dan voor de dobbelstenen/random ook array gebruiken

Dim Worp(4) as byte
for t = 0 to 4
Worp(t) = int(rnd(timer)*6+1)
next t

Hier zet je 5 random waarden in een array

Het handige is dat Worp(0) overeenkomt met Picture1(0), dus kun je makkelijk werken.
 
Ik heb nu het volgende


Private Sub cmdGooi_Click()

Dim steen As Byte, FileName(5) As String

FileName(0) = "c:\ijsbeer\1.gif"
FileName(1) = "c:\ijsbeer\2.gif"
FileName(2) = "c:\ijsbeer\3.gif"
FileName(3) = "c:\ijsbeer\4.gif"
FileName(4) = "c:\ijsbeer\5.gif"
FileName(5) = "c:\ijsbeer\6.gif"




For steen = 0 To 4
Picture1(steen).Picture = LoadPicture(FileName(steen))

Next steen
End Sub

Hoe krijg ik dit nu, dat hij niet 1 tm 5 (de plaatjes) neerzet maar dit random uitkiest en op moment dat ik nu weer op de button klik dat hij het opnieuw selecteerd?
 
Even uit mijn hoofd ;)
Je zit al een heel stujk in de richting alleen moet je nog de eigenlijke worp uitvoeren (random waarden aan de stenen geven). Als het goed is gaat dat zoals hieronder :


Code:
Private Sub cmdGooi_Click() 

Dim steen As Byte, FileName(5) As String 
Dim Worp as byte 

'Worp (0-4) bevat straks het eigenlijke aantal geworpen ogen

Randomize(timer)

FileName(0) = "c:\ijsbeer\1.gif" 
FileName(1) = "c:\ijsbeer\2.gif" 
FileName(2) = "c:\ijsbeer\3.gif" 
FileName(3) = "c:\ijsbeer\4.gif" 
FileName(4) = "c:\ijsbeer\5.gif" 
FileName(5) = "c:\ijsbeer\6.gif" 

'Hier de eigenlijke worp

For steen = 0 to 4
worp (steen) = int (rnd(timer)*6)  'ken een willekeurig nummer (1-6) toe aan elke steen
next steen

'hier het uitlezen van de worp 

For steen = 0 To 4 
Picture1(steen).Picture = LoadPicture(FileName(Worp(steen)) )

Next steen 

End Sub
 
Laatst bewerkt:
Als ik dit doe dan krijg ik allemaal Invalid Outside procedures
 
In de code moest
Code:
dim Worp as byte

zijn :

Code:
dim worp(4) as byte


Verder werkt het (getest)

Ik heb voor het gemak het prog even bijgevoegd zodat je kunt zien hoe de code is.
 

Bijlagen

oke werkt goed

Maar hoe zorg ik nu dat aan plaatje 1.gif het cijfer 1 komt te hangen, aan 2.gif het cijfer 2 enz. Dat er dus als er bv in dobbelsteen 3 een 5 komt dat er dan in textbox 5 ook een 5 komt te staan
 
Ik weet niet of je van de textboxen ook een array hebt gemaakt.

worp(steen) bevat het aantal ogen van de betreffende steen (0-5). Je kunt dat dus in dezelfde loop verwerken als waar de plaatjes geplaatst zijn.

Dus dan worst het betreffende stukje code :
Code:
For steen = 0 To 4 
Picture1(steen).Picture = LoadPicture(FileName(Worp(steen)) )
Text1(steen).text = str(worp(steen))

Next steen
 
Oke, klopt, op een klein puntje na, zoals jij het zij kwam er in de tekstboxen hetzelfde te staan als in de dobbelstenen -1 dus als er dobbelsteen 5 kwam dan stond er in die tekstbox 4 enz. Heb dus ff dit:

For steen = 0 To 4
Picture1(steen).Picture = LoadPicture(FileName(Worp(steen)))
Text1(steen).Text = Str(Worp(steen)) + 1

Next steen

ervan gemaakt en dan werkt het, bedankt
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan