Toon posts:

[VB6] Hoe maak ik een picturebox onder Run-time?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben een tijdje geleden begonnen aan het programmeren met VB6 en heb een aantal simpele programmaatjes in elkaar gezet (zoals: priemgetalcheck, simpel database lezen, enz). Ik probeer nu ook een spel te maken in VB (kweet het, helemaal foute programmeertaal, maar toch wil ik het proberen), maar al snel liep ik tegen een probleem.

Wat voor spel maakt op zich niet zo veel uit, maar we gaan even van een soort strategie spel uit. Hoe kan ik nieuwe units of gebouwen aanmaken? Ik kan onmogelijk van te voren 100 pictureboxen aan maken, zodat als een unit maak, er een ongebruikte picturebox in het speelveld wordt gezet, en de eigenschappen krijgt van die bepaalde unit. Dit is natuurlijk veels te veel werk.

Mijn bedoeling is daarom ook geweest dat als ik een unit maak, VB een nieuwe picturebox aan laat maken, en die een naam te geven die ik met een variabele aanduid.

Ik ben begonnen met tutorials en boeken over VB6 te lezen en online help (ook de search hier op GoT) te zoeken, maar daar worden dit soort gevallen (uiteraard) niet behandeld. In een applicatie voor een bedrijf zal je geval niet zo snel tegenkomen.

Toen las ik iets over MDI childform, dit zag ik als een mogelijkheid om het probleem op te lossen, omdat je oneindig veel child forms in een parent kan plaatsen, onder run-time. Het maken van zo'n constructie is gelukt, maar een child form is verreweg van ideaal om een unit te representateren. Ik vond het namelijk niet zo makkelijk om er een afbeelding op het form te plaatsen, en dan uiteraard de rand met de - en x knop weg te halen.

Ik vraag me dus af of het mogelijk is in VB om onder run-time, pictureboxen, of command buttons te generen.

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 31-08 15:46

mulder

ik spuug op het trottoir

Ja dat is mogelijk. Je zult gebruik moeten maken van 1 invisible control met een index. Deze kun je dan runtime laden, visible + index zetten. Maar dit is heel goed in de search, op google of elders op internet te vinden.

oogjes open, snaveltjes dicht


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Verwijderd schreef op 22 september 2002 @ 18:52:
Ik ben een tijdje geleden begonnen aan het programmeren met VB6 en heb een aantal simpele programmaatjes in elkaar gezet (zoals: priemgetalcheck, simpel database lezen, enz). Ik probeer nu ook een spel te maken in VB (kweet het, helemaal foute programmeertaal, maar toch wil ik het proberen), maar al snel liep ik tegen een probleem.
Foute taal voor een spel? Helemaal niet, wel als je de gewone graphics van vb6 gebruikt. Probeer maar een een plaatje in zon box te zetten en hem dan met een timer steeds een stapje naar links te laten maken. Hij knipperd als een gek is het gevolg.

Oplossing is gebruik te gaan maken van directx 7 directdraw. En als je het helemaal goed wil gaan doen zou ik overstappen naar vb .net want die is aardig wat sneller. en die snelheid kan je goed gebruiken, vooral bij een spel.

Voor die directx heb ik wel een goeie link voor je. http://www.exhedra.com/DirectX4VB/TUT_DX7_DD.asp

In het begin lijkt het mischien een beetje lastig, maar als het eenmaal een beetje doorhebt dan lukt het erg goed. Ik ben nu een een RTS engine aan het maken in directdraw. Ik ben met vier mensen uit mijn klas een RTS aan het maken voor een project. Toevallig he.

Je mag de source wel hebben zoals die tot nu toe is in vb6. Werken ermee zul je een beetje zelf uit moeten vinden. Beste is natuurlijk om er gewoon zelf een te bouwen.

Wat nou zo makkelijk is in directdraw is dat een mannetje of een gebouw geen control is maar gewoon een object met data, wat niets met directdraw te maken heeft, en een plaatje die je op het beeld zet. Het aan maken van een mannetje is dan zo simpel als een nieuwe instantie maken van een classe en een mannetje erbij zetten op het scherm. Geen geklooi met controls wat toch nooit goed gaat werken.

Dus kies maar wat je wilt gaan doen. In ieder geval mijn tips hier want ik zat een half jaar geleden met exact hetzelfde probleem.

Noushka's Magnificent Dream | Unity


Verwijderd

Topicstarter
Dank je wel Don Facundo! Dat is precies wat ik zocht. Jij ook, Michali, ik had al wel wat gelezen over hoe je directdraw in je programma kan zetten, maar deze link is veel beter. Mijn excuses dat ik jullie lastig heb gevallen met iets waar ik ook zelf achter had kunnen komen, maar zoeken naar iets waarvan je niet precies weet wat het is, is soms moeilijk.

Edit: Bedankt voor je aanbod Michali, maar ik ga zelf proberen alles uit te vinden (met af en toe een beetje hulp van jullie dus ;) ).

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Dat doen we dan maar. Daarom zijn we hier op het GoT toch? :)

Noushka's Magnificent Dream | Unity


  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 16:55

johnwoo

3S-GTE

Een PictureBox array is inderdaad niet de verstandigste aanpak om een soort gamegrid te bouwen.
Betere en toch simpele oplossing: een (of enkele) onzichtbare PictureBox gebruiken met daarin je graphics, een zichtbare PictureBox als gameview, en BitBlt gebruiken om de juiste blokjes te kopieren van de onzichtbare naar de zichtbare.
Nog betere maar wel moeilijkere oplossing: DirectX :)

4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1


Verwijderd

Als je echt aan de gang wilt met VB/Graphics en games, moet je even naar www.truevision3d.com gaan. Dit is een hele goede engine om dit soort dingen in te maken. Je zult versteld staan wat je met VB kuint maken

Verwijderd

Als je een 'spel' in vb gaat maken doormiddel van directdraw kun je het dus niet echt meer een vb-spel noemen, je programmeert met directdraw en laat het alleen maar weergeven in een vb-schermpje, maar het werkt wel, heb het ook een keer geprobeerd met een gta1/2 alike spelletje, van bovenaf dus, met animatietjes enzo, leuk speelgoed

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Verwijderd schreef op 23 september 2002 @ 20:24:
Als je een 'spel' in vb gaat maken doormiddel van directdraw kun je het dus niet echt meer een vb-spel noemen, je programmeert met directdraw en laat het alleen maar weergeven in een vb-schermpje, maar het werkt wel, heb het ook een keer geprobeerd met een gta1/2 alike spelletje, van bovenaf dus, met animatietjes enzo, leuk speelgoed
En wat is een spel dan in c++ met opengl of direct3d? Daar gaat het toch eigenlijk niet om. Een groot deel van het spel wordt nog steed gemaakt in Vb hoor. Mischien de paar api calls naar directdraw,die je toch met vb code erom heen aanroept, maar verder alles erom heen zoals de ai en weet ik al niet wat is toch VB.

Noushka's Magnificent Dream | Unity


Verwijderd

daar heb je gelijk in, de ai enzo kunnen we niet aan directdaw overlaten, had er eigenlijk niet heel goed over nagedacht

Verwijderd

Wat dacht je van BitBlt... met de GDI32 api
Pagina: 1