Toon posts:

[vb 6.0] Achtergrond plaatje meebewegen voor een game

Pagina: 1
Acties:
  • 453 views sinds 30-01-2008

Verwijderd

Topicstarter
Hallo,

Ik ben bezig met een soort GTA 1(Je kijkt van bovenaf). Nu heb ik bij form1 bij picture gekozen van een stuk van een level van GTA 1. De picture is bijvoorbeeld 1000x1000 terwijl het scherm van form 1 bijvoorbeeld maar 100x100 is. Nu wil ik net zoals bij GTA dat als je een stukje naar onderloopt de picture van form1 meebeweegd (de picture is de achtergrond).. Dus wanneer je naar onder loopt (of boven etc) dan zie je een stukje meer van de stad terwijl het het stuk stad boven je verdwijnt. Iedereen die wel eens GTA1 heeft gespeeld snapt denk ik wel wat ik bedoel.

Hieronder een voorbeeldje hoe het spel er een beetje uitziet:

Afbeeldingslocatie: http://www.lachspieren.net/gta.jpg.

Dus wanneer ik doe:
code:
1
2
3
If KeyCode = vbKeyDown then
'Hier de code voor het verschuiven van picture
End if


Nu dacht ik het zo aan te pakken:
code:
1
Form1.Picture =  Form1.Picture - 100


Maar dit werkt niet. Heeft iemand enig idee hoe ik dit ga aanpakken. Mocht je mijn verhaal nog niet duidelijk zijn zeg het dan gerust.

Groet,

Jonathan

Verwijderd

Dit gaat je sowieso niet lukken in verband met het perspectief. Bij GTA verplaatsen zie niet een achtergrond plaatje hoor :?
Bij GTA gebruiken ze een manier van tekenen; laag voor laag, beginnend achteraan. Zo ontstaat er een look-a-like 3d effect...
Weet zo niet hoe deze techniek heet...

  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 21-05 14:59

pjvandesande

GC.Collect(head);

Je kan gewoon je reactangle verschuiven en het gedeelte van het plaatje opnieuw tekeken met de nieuwe coordinaten.

Verwijderd

Topicstarter
Verwijderd schreef op 18 mei 2004 @ 18:05:
Dit gaat je sowieso niet lukken in verband met het perspectief. Bij GTA verplaatsen zie niet een achtergrond plaatje hoor :?
Bij GTA gebruiken ze een manier van tekenen; laag voor laag, beginnend achteraan. Zo ontstaat er een look-a-like 3d effect...
Weet zo niet hoe deze techniek heet...
Hoezo zou dat niet kunnen. Je kan als achtergrond een stuk van GTA nemen. Dan stop je een picture over een gebouw en dan laat je het controleren of je er niet doorheen loopt. Zo heb ik nu al kunnen maken dat je een deel van een stad hebt waar je kan rondlopen. Maar nu loop je zo het level uit, en dat is niet de bedoeling. De picture moet juist bij elke stap -100 of +100 gaan. Mijn vraag is alleen hoe dat moet.

(ik verwacht ook niet dat ik een game kan maken die beter is als GTA1:p)

[ Voor 30% gewijzigd door Verwijderd op 18-05-2004 18:18 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Mag ik je er even subtiel op wijzen dat een picturebox hier niet echt voor geschikt is? Ik zou me eens verdiepen in DirectX/DirectDraw e.d.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
RobIII schreef op 18 mei 2004 @ 18:18:
Mag ik je er even subtiel op wijzen dat een picturebox hier niet echt voor geschikt is? Ik zou me eens verdiepen in DirectX/DirectDraw e.d.
Ik gebruik geen picture box maar een picture. Dus gewoon een picture van form1. Maar is dit dan niet mogelijk wat ik wil?

  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 21-05 14:59

pjvandesande

GC.Collect(head);

Verwijderd schreef op 18 mei 2004 @ 18:16:
De picture moet juist bij elke stap -100 of +100 gaan. Mijn vraag is alleen hoe dat moet.

(ik verwacht ook niet dat ik een game kan maken die beter is als GTA1:p)
Je kan het beste elke keer maar een gedeelte van de achtergrond tekeken. Dus je laad de achtergrond in je geheugen, dan draw je alleen een specifike Rectangle. De Rectangle X en Y coordinaten pas je aan als het poppetje loopt en je tekent je achtergrond opnieuw.

Verwijderd

Topicstarter
Je bedoeld dat ik de stad in allerlij delen moet splitsen. Wat bedoel je trouwens met Rectangle?

[ Voor 5% gewijzigd door Verwijderd op 18-05-2004 18:47 ]


  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 21-05 14:59

pjvandesande

GC.Collect(head);

Verwijderd schreef op 18 mei 2004 @ 18:37:
Je bedoeld dat ik de stad in allerlij delen moet splitsen. Wat bedoel je trouwens met Rectangle?
Een Rectangle is een struct (variable type). Deze is te vinden voor VB6 in gdi32.dll dacht ik.

Verwijderd

rec·tan·gle - A four-sided plane figure with four right angles

Gaat er al een lampje branden? O-)

Met het verschuiven van de achtergrond veranderd het perspectief niet...
Ik zal wel even een plaatje maken voor de ongelovige... :Y)

Verwijderd

Topicstarter
hoezo niet:S.
Als jij een plaatje hebt. Je drukt naar onder. Je haalt 5 cm van de bovenkant eraf en plaatst 5 cm aan onder onderkant van een nieuw gedeelte van de stad.

Verwijderd

Een woord: perspectief

  • Super_ik
  • Registratie: Maart 2001
  • Laatst online: 25-05 20:58

Super_ik

haklust!

als jij t toch zo wil doen probeer dan

Visual Basic:
1
2
3
4
'voeg een picturebox toe met grote 1000*1000 waar t plaatje instaat
'voorbeeld naar boven
y =y - 100
picture1.move x,y

8<------------------------------------------------------------------------------------
Als ik zo door ga haal ik m'n dood niet. | ik hou van goeie muziek


Verwijderd

Topicstarter
hiermee word de picturebox versleept, niet de afbeelding erin ;(

  • Super_ik
  • Registratie: Maart 2001
  • Laatst online: 25-05 20:58

Super_ik

haklust!

hu :? de afbeelding zit wel in de picturebox he? en niet in t form toch :?

8<------------------------------------------------------------------------------------
Als ik zo door ga haal ik m'n dood niet. | ik hou van goeie muziek


Verwijderd

Topicstarter
Super_ik schreef op 18 mei 2004 @ 19:57:
hu :? de afbeelding zit wel in de picturebox he? en niet in t form toch :?
Uhm, ik heb hem tot nu toe nog in de form gezet, maar ik kan hem ook gewoon in een picturebox zetten. Maakt beiden niks uit.

  • elnino
  • Registratie: Augustus 2001
  • Laatst online: 25-04 02:41
Achtergrondafbeeldingen in een Form kun je in principe niet bewegen, tenzij je met PictureClips o.i.d. gaat werken, maar dat laat ik verder even buiten beschouwing. Je zult inderdaad een PictureBox- of (beter nog) een Image-control moeten gebruiken en daar vervolgens dan het figuur inzetten. Die kun je dan verplaatsen. De code van Super_ik zou wel moeten werken, mits je de PictureBox picture1 hebt genoemd.

Zoals eerder gezegd is dit geen ideale manier om dingen te tekenen. Kijk anders maar eens rond op internet of je geen voorbeelden van spelletjes kunt vinden die ook met bewegende achtergronden werken en bekijk dan de VB-code.

De code die je zelf geeft zal sowieso niet werken:
code:
1
Form1.Picture =  Form1.Picture - 100

Je kunt geen 100 aftrekken van een afbeelding. (Net zomin dat je 3 kunt optellen op een banaan, dat zijn twee verschillende dingen die in principe niet samengaan. Als dat wel had gekunt, had je er sowieso nog geen controle gehad of hij die 100 van de bovenkant, onderkant, linkerkant of rechtkant vandaan zou halen.)

Succes! :)

[ Voor 7% gewijzigd door elnino op 18-05-2004 20:10 ]


Verwijderd

Topicstarter
elnino schreef op 18 mei 2004 @ 20:09:
Achtergrondafbeeldingen in een Form kun je in principe niet bewegen, tenzij je met PictureClips o.i.d. gaat werken, maar dat laat ik verder even buiten beschouwing. Je zult inderdaad een PictureBox- of (beter nog) een Image-control moeten gebruiken en daar vervolgens dan het figuur inzetten. Die kun je dan verplaatsen. De code van Super_ik zou wel moeten werken, mits je de PictureBox picture1 hebt genoemd.

Zoals eerder gezegd is dit geen ideale manier om dingen te tekenen. Kijk anders maar eens rond op internet of je geen voorbeelden van spelletjes kunt vinden die ook met bewegende achtergronden werken en bekijk dan de VB-code.

De code die je zelf geeft zal sowieso niet werken:
code:
1
Form1.Picture =  Form1.Picture - 100

Je kunt geen 100 aftrekken van een afbeelding. (Net zomin dat je 3 kunt optellen op een banaan, dat zijn twee verschillende dingen die in principe niet samengaan. Als dat wel had gekunt, had je er sowieso nog geen controle gehad of hij die 100 van de bovenkant, onderkant, linkerkant of rechtkant vandaan zou halen.)

Succes! :)
Nee, die code van Super _ik werkt niet juist. Kijk in een picturebox zit een plaatje. Dat PLAATJE moet verschuiven. Niet de picturebox zelf. Dit gebeurd wel wanneer ik ondertaande code gebruik.

- Ik zet een picturebox zo groot als de form op het form.
- Ik plaats de objecten in de picture box zoals het poppetje.
- Ik verander de Form_keydown in Picture1_Keydown
- Wanneer ik nu loop gaat de picturebox bewegen, maar niet het plaatje zelf

Groet,

Jonathan

  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 21-05 14:59

pjvandesande

GC.Collect(head);

Waarom niet tekenen met GDI of DirectDraw? :|

Verwijderd

Topicstarter
questa schreef op 18 mei 2004 @ 23:02:
Waarom niet tekenen met GDI of DirectDraw? :|
Kzit met een paar vragen.

- Is dit voor newbies makkelijk te begrijpen
- Kun je hiervoor gewoon 1 bitmap afbeelding voor gebruiken of moet je de stad in duizenden plaatje knippen

groet,

Jonathan

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Je hoeft niet te groeten...

Die picturebox moet groter zijn dan het form. Als je dan de picturebox verplaatst lijkt het alsof de achtergrond verplaatst. Snap je?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Dit gaat dus absoluut niet lukken. Als je echt serieus bent moet je gaan werken met DirectX/OpenGL, iets wat zowiezo gigantisch fuck is in VB. Met een picture of picturebox ga je dit nooit van je leven voor elkaar krijgen. Er zitten teveel limieten aan (collision detect en refresh zullen EXTREEM traag zijn, en je kunt er geen AI in gooien)

[ Voor 22% gewijzigd door Verwijderd op 18-05-2004 23:36 ]


Verwijderd

Topicstarter
RobIII schreef op 18 mei 2004 @ 23:32:
Je hoeft niet te groeten...

Die picturebox moet groter zijn dan het form. Als je dan de picturebox verplaatst lijkt het alsof de achtergrond verplaatst. Snap je?
Dat kan idd niet, want een beetje level is hier al te groot voor. Ik denk toch dat ik maar even een tut ga opzoeken over Direct X

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op 18 mei 2004 @ 23:44:
[...]


Dat kan idd niet, want een beetje level is hier al te groot voor. Ik denk toch dat ik maar even een tut ga opzoeken over Direct X
Goed zo :Y)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Verwijderd schreef op 18 mei 2004 @ 23:44:
[...]


Dat kan idd niet, want een beetje level is hier al te groot voor. Ik denk toch dat ik maar even een tut ga opzoeken over Direct X
Mag ik daarbij een eerlijk advies geven terwijl ik dit topic sluit omdat het nergens heen gaat?

Begin eens met Hello World, en dat is niet lullig bedoeld. Je bent nu in de algemene probleemfase waar alle beginnende programmeurs in zitten, en vooral degenen met een RAD-omgeving (Rapid Application Development oftewel sleur-en-pleur) zoals VB6 onder z'n gat: je hebt een paar leuke dingetjes gebrouwen met textboxjes en denkt de wereld aan te kunnen. Laat ik je veel frustratie besparen: nee dat kun je niet en je bent nog bij lange na niet in staat om een spel te maken met de kennis die je hier etaleert. Een programmeur gaat de volgende fases in volgorde door:
• 'Ik kan niets en dat weet ik'
• 'Ik kan alles en dat dat niet zo is weet ik niet'
• 'Ik kan niet veel en dat heb ik me met pijn en moeite gerealiseerd'
• 'Ik kan veel en dat weet ik'


Jij zit nu in fase 2. Je denkt met een paar stukjes basisprogrammeren alles te kunnen, maar je mist iedere achtergrondkennis om uberhaupt de globaalste problemen te kunnen tacklen. Echt programmeren is een grote verzamelbak van veel technieken en heel veel kennis beheersen en begrijpen, waarvan "kunnen dromen in je favoriete programmeertaal" slechts de basis vormt. Ik wil je graag de pijn en moeite besparen die tussen fases 2 en 3 zit. Pak eens wat simpele projecten op, maak een administratie voor je sportclub die data kan exporteren naar Excel of iets dergelijks. Pik iets simpels uit waar je steeds modulair dingen aan toe kunt voegen. En zodra je alle basis Windows mechanismes en je favoriete progtaal kunt opdreunen in je slaap: pak dan gevorderde dingen als DirectX op die je nodig hebt om een enigszins bruikbaar spel te kunnen bouwen.

Just my few cents, en volgens mij het langste slotje wat ik ooit heb getypt :)

Professionele website nodig?

Pagina: 1

Dit topic is gesloten.