Visual Basic - PictureBox|Programmering / Grafisk formgivning|Forum|Nordichardware

Search
Forum Scope


Match



Forum Options



Minimum search word length is 3 characters - maximum search word length is 84 characters
Lost password?
The forums are currently locked and only available for read only access
sp_Feed sp_TopicIcon
Visual Basic - PictureBox
Vecna
Kommer du hit ofta?
Medlem
Forum Posts: 674
Member Since:
October 20, 2001
sp_UserOfflineSmall Offline
1
October 27, 2001 - 2:54 pm
sp_Permalink sp_Print

Jag skulle behöva lite hjälp med att konstruera en pictureBox med 9 rutor som är beroende på FALSE eller TRUE.

Om värdet är TRUE så ska det slumpa ut en bild som jag har delat upp i 9 bitar i nån av dom 9 rutorna.

Om det är FALSE så ska det bli en svart ruta.

Problemet som jag ser det kan bli att få upp samma bild i nån annan ruta. Poängen är att när bilden har placerats ut så ska det bort ur räkningen så att den inte kan komma upp igen.

Om någon har tips eller eventuelt en kod som jag skulle kunna utvärdera vore jag tacksam.

Hela projektet går ut på att göra en barn miniräknare med 9 försök och svarar dom rätt så ska en bild komma upp och förhoppningsviss 8 bilder till om dom klarar det smile

[ Detta Inlägg ändrades av: Vecna den 2001-10-27 16:55 ]

Quaero
Kommer du hit ofta?
Medlem
Forum Posts: 779
Member Since:
October 10, 2001
sp_UserOfflineSmall Offline
90374
October 27, 2001 - 4:00 pm
sp_Permalink sp_Print

Gör en matris på de 9 rutorna och kolla först igenom den innan du sätter ut nästa bild. Om bilden redan finns i en annan ruta så tar du en ny bild, kollar om den redan finns och upprepar proceduren tills du har hittat en bild som inte redan finns i någon av rutorna.

Jag tror att det är det enklaste sättet att göra det på. Hoppas det hjälpte, annars får jag komma på något bättre.

Quaero
Kommer du hit ofta?
Medlem
Forum Posts: 779
Member Since:
October 10, 2001
sp_UserOfflineSmall Offline
90380
October 27, 2001 - 4:05 pm
sp_Permalink sp_Print

Förresten, kom på en sak när jag läste ditt inlägg en andra gång. Du behöver väl inte slumpa ut rutan. Poängen är väl att de nio bilderna tillsammans gör en stor bild och då måste de ju ha en bestämd placering i kvadraten (jag antog att de 9 rutorna ska bilda en kvadrat), alltså behöver du bara slumpa fram rutnumret i kvadraten och då blir det enklare att kontrollera bilderna. Då beehöver du ju bara ha en ritad-variabel (förslagsvis boolean) för varje ruta. Om rutan redan är ritad, ta en annan ruta. Fast jag kan ju ha missförstått programmet, vore bra med lite kod.

_________________
Hade jag haft en bra dator skulle jag ha skrutit om den här.

[ Detta Inlägg ändrades av: Quaero den 2001-10-27 18:05 ]

[ Detta Inlägg ändrades av: Quaero den 2001-10-27 18:06 ]

Jerry
Member
Medlem
Forum Posts: 4381
Member Since:
June 18, 2001
sp_UserOfflineSmall Offline
90390
October 27, 2001 - 4:22 pm
sp_Permalink sp_Print

Gör som så att du associerar varje delbild med rutan den ska ligga i. Alltså längst uppe till vänster kan vara 0 och längst ned till höger kan vara 8. Då lägger du upp varje delbild i t.ex en array i den matchande cellen (bilden längst uppe till vänster i cell 0). Sedan slumpar du bara fram ett värde från 0 till 8 och ritar den bilden på samma position som siffran du fick fram. Efter den är ritad kan du sätta cellen till noll eller ngt. Då behöver du bara kolla om det finns någon bild i cellen innan du ritar nästa gång.
Hm...comprende? smile

Vecna
Kommer du hit ofta?
Medlem
Forum Posts: 674
Member Since:
October 20, 2001
sp_UserOfflineSmall Offline
90552
October 27, 2001 - 9:07 pm
sp_Permalink sp_Print

Här ska det inte ritas....hehe smile

Det finns en bild som jag redan har och har delat upp i 9 stycken bitar som ska placeras ut och bli en fin barnbild, ska vara olika bilder beroende på dom 3 svårighetsgraderna jag har.

Dom 9 rutorna är i en array redan. Det kruxiga är ju det där med att om första svaret blir rätt då kommer bild (1 till 9) att slumpas ut men samtidigt ska ju bild 1 vara associerat med ruta 1. Annars blir det ju en mongo bild tillslut smile

Att kolla tex. om den har slumpat ut bild 5 redan i ruta 5 efter första svaret så vill jag ju inte ha ut bild nr.5 igen....min poäng är att det blir ju en jäkla massa IF tillslut för att kolla ALLA bilder.

IF bild1=ruta1 typ
THEN bild2=ruta2
ELSE bild3 bla bla bla

om du förstår principen fast bild 1-9 kommer jag göra en random till men att få JUST den random till RÄTT ruta blir ju problemet. Säg att det slumpar ut bild5 då måste jag på något sätt definera att det är JUST ruta 5 den ska till.....

Det enklaste man kan göra är ju att koppla rutorna till dom 9 försöken men då kommer det ju upp en bild på samma ställe hela tiden och det blir tråkigt i längden, det är därför jag vill ha en random på även den.

Kort beskrivning av allt:
1. Välj räknesätt
2. Välj nivå (3st)
3. SLUMPA (slumpar ut 2 tal)
4. Gissa svar (2 försök)
5. Visa dom 2 talen + svar (bock efter för rätt svar och kryss för fel.
6. Beroende på TRUE eller FALSE ska slumvald bild komma upp, fel=svart och rätt=en av dom 9 bilderna.

Det är hela mitt prog och bara pictureboxen är kvar smile

Hmmm....det var mycket det här smile

Tacksam för alla ideer och tack till ni som redan har hjälpt mej hittils smile

[ Detta Inlägg ändrades av: Vecna den 2001-10-27 23:12 ]

Jerry
Member
Medlem
Forum Posts: 4381
Member Since:
June 18, 2001
sp_UserOfflineSmall Offline
90557
October 27, 2001 - 9:27 pm
sp_Permalink sp_Print

Det var väldigt länge sedan jag använde Basic så jag kommer inte ihåg syntaxen, men borde inte något sådant här fungera.

10
curRuta = (int)(Rnd *8)

if ruta[curRuta] != 0 then
PictureBox[curRuta].picture = ruta[curRuta] ruta[curRuta] = 0
else
goto 10
end if

Om det inte går att lösa så i Basic, är jag på rätt spår i alla fall?

_________________
P4 1,4, ASUS P4T, PoV GF2 MX200, SB live(!), 2*64 RDRAM, Iiyama 19"

[ Detta Inlägg ändrades av: Jerry den 2001-10-27 23:28 ]

Quaero
Kommer du hit ofta?
Medlem
Forum Posts: 779
Member Since:
October 10, 2001
sp_UserOfflineSmall Offline
90565
October 27, 2001 - 9:39 pm
sp_Permalink sp_Print

Låt mig se om jag förstått detta rätt.

Du har en bild bestående av 9 mindre bilder.

Du har nio bildplatser dit det ritas ut antingen en svart ruta eller en av de små bilderna.

Var och en av de små bilderna har en bestämd bildplats där den ska ritas.

Således behöver inte bildplatsen slumpas fram.

Efter att ha sammanställt dessa fakta som jag hoppas är korrekta, annars får du rätta mig på de punkter som är felaktiga, så anser jag att detta bör lösa problemet:

Du har en array för de nio bildpositionerna.

Varje bild är associerad med en given plats bland de nio rutorna.

När du ska rita en bild så slumpar du fram numret på bilden.

Bildens nummer bestämmer också dess plats bland de nio rutorna.

Ungefär så här:

Slumpa fram bildnummer.

om Bildpositionsarray[bildnummer]=ritad så börja om vid slumpningen.

sätt Bildnpositionsarray[bildnummer] till ritad.

Fråga efter svar på fråga.

Om givet svar är rätt rita den lilla bilden på dess plats.

Om givet svar är fel rita en svart kvadrat på bildens plats.

Börja om igen tills alla rutor är fyllda.

Jag tror att detta skall lösa problemet. smile
(Jag hoppas i alla fall)

Vecna
Kommer du hit ofta?
Medlem
Forum Posts: 674
Member Since:
October 20, 2001
sp_UserOfflineSmall Offline
90711
October 28, 2001 - 12:40 am
sp_Permalink sp_Print

Korrekt.

IF svar=TRUE
THEN slumpabild()

Där slumpabild() redan är en kod för random på bilderna och dess plats.

Hur skulle en kod kunna se ut för att "låsa" box[0-8] med rätt bild?

För finns koden FÖRST där bild0-8 har en bestämd plats i min box så behöver jag ju bara en randomize på "svar" beroende om den är FALSE eller TRUE smile

Kruxet här är egentligen bara att låsa bild 0 till box 0 osv. sen en check att den inte redan är utplacerad.

Quaero
Kommer du hit ofta?
Medlem
Forum Posts: 779
Member Since:
October 10, 2001
sp_UserOfflineSmall Offline
90920
October 28, 2001 - 1:11 pm
sp_Permalink sp_Print

Bör inte vara så svårt.

Gör en switch-case sats (eller 9 if).

Om bilden som slumpats fram är bild nummer 1 så ska den ritas i ruta 1, bild 2 i ruta 2 osv.

Om svaret på frågan var fel så ritar du ju helt enkelt svart istället för bilden.

Quaero
Kommer du hit ofta?
Medlem
Forum Posts: 779
Member Since:
October 10, 2001
sp_UserOfflineSmall Offline
90932
October 28, 2001 - 1:29 pm
sp_Permalink sp_Print

Egentligen vore det snyggaste att använda funktioner som gör allt åt dig.

Funktionshuvuden:
void Rita_Bild(int Bildnummer, int Bildposition);
void Rita_Svart(int Bildposition);

Kod:
int Nummer = random(9);
int Bild_Array[9]={0,0,0,0,0,0,0,0,0};

while(Bild_Array[Nummer]!=0;
Nummer = random(9);

Bild_Array[Nummer]=1;

if(Svar==Rätt_Svar)
Rita_Bild(Nummer, Nummer);
else
Rita_Svart(Nummer);

Om jag inte tänkt fel någonstans så löser detta problemet.

Avatar
Donan Fear
Kommer du hit ofta?
Medlem
Forum Posts: 730
Member Since:
May 24, 2001
sp_UserOfflineSmall Offline
91031
October 28, 2001 - 4:46 pm
sp_Permalink sp_Print

Öh! Det ska vara VB inte C! smile


Dim Bild_Array(8) As Boolean

Sub RitaBild(ByVal Position As Integer, ByVal Bild As String)
'kod här
End Sub

Sub Nånting(ByVal Svar As Boolean)

Dim Nummer As Integer
Randomize
Nummer = Random * 8
Do Until Bild_Array(Nummer) = False
Nummer = Random * 8
Loop

Bild_Array(Nummer) = True

If Svar Then
RitaBild Nummer, "c:blablagubbe" & Nummer & ".bmp"
Else
RitaBild Nummer, "c:blablasvart.bmp"
End If

End Sub

Om man vill få det snyggare kan man lägga in själva bilderna i en annan array.

Vecna
Kommer du hit ofta?
Medlem
Forum Posts: 674
Member Since:
October 20, 2001
sp_UserOfflineSmall Offline
91039
October 28, 2001 - 4:58 pm
sp_Permalink sp_Print

Ok, hoppas jag blir klokare av det där smile

Varför ska det vara så jäkla svårt att få ut EN bild i en box bestående av 9 simpla rutor som ligger i en array?

Bilderna heter för övrigt bild0, bild1 osv. ända upp till 8 så det blir 9st.

[ Detta Inlägg ändrades av: Vecna den 2001-10-28 18:10 ]

Quaero
Kommer du hit ofta?
Medlem
Forum Posts: 779
Member Since:
October 10, 2001
sp_UserOfflineSmall Offline
91094
October 28, 2001 - 6:04 pm
sp_Permalink sp_Print

On 2001-10-28 17:46, Donan Fear wrote:
Öh! Det ska vara VB inte C! smile

Jag kan ingen VB-syntax så jag skrev i C, tänkte att koden ändå inte borde vara så svår att förstå.

Vecna
Kommer du hit ofta?
Medlem
Forum Posts: 674
Member Since:
October 20, 2001
sp_UserOfflineSmall Offline
91105
October 28, 2001 - 6:22 pm
sp_Permalink sp_Print

Ett stort TACK till alla som svarat och försökt hjälpa mej och TACK Donan för att ha räddat min dag + vecka smile

[ Detta Inlägg ändrades av: Vecna den 2001-10-28 19:26 ]

Forum Timezone: Europe/Stockholm
Most Users Ever Online: 1030
Currently Online:
Guest(s) 40
Currently Browsing this Page:
1 Guest(s)
Top Posters:
Andreas Galistel: 16287
Jonas Klar: 15897
ilg@dd: 10810
Nyhet: 10607
Mind: 10550
Ctrl: 10355
Gueno: 9881
Guest: 9344
Snorch: 8881
Callister: 8468
Newest Members:
PetrbonFU PetrbonFU
Karine Bembry
Dolores Mcdaniels
Anibal McLeish
Francisca Alt
Alfie Everhart
Lester Huitt
Orlando Jorgensen
Mikki Lundgren
Dakota Kozlowski
Forum Stats:
Groups: 11
Forums: 59
Topics: 146630
Posts: 1300967

 

Member Stats:
Guest Posters: 2
Members: 79425
Moderators: 0
Admins: 11
Administrators: nordicadmin, Henrik Berntsson, Anton Karmehed, Carl Holmberg, Joel Oscarsson, Mikael Linnér, Mikael Schwartz, Andreas Paulsson, Nickebjrk, Mattias Pettersson, EmxL