Spilnavigering via keyboard

Tags:    visual-basic


Hvordan får jeg en figur (jpg-fil) til at flytte sig vha. keyboardet? den skal kunne flytte sig i et plan ad EN akse - og kun flytte sig når der bliver trykket på tasten der er gældende for retningen.

også gerne to forskellige... det er til et pong-spil.. i VB 6.0

HJ


Søvn er den eneste lykke, som man først nyder rigtig, når den er forbi.
Alfred Polgar



6 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 5 karma
Sorter efter stemmer Sorter efter dato
Det kan godt være det bare er mig, men jeg synes ikke at KeyDown proceduren bliver afviklet tit nok til at man kan få en flydende bevægelse, istedet bevæger den sig i hak enten op eller ned, og reagere meget langsomt. Desuden kan man heller ikke bevæge sig i en blandet retning af op og til siden på denne måde, men det er jo irrelavant i et ping pong spil hvor man kun skal kunne bevæge sig op og ned.

Reactionstiden kan kun ændres med et API kald, hvilket jeg ikke lige kender til, men der findes sikkert et!

Fold kodeboks ind/udKode 


Som du kan se kan man med en Timer få et billed (picMe) til at bevæge sig i en vis retning, et lille stykke af gangen, indtil den modtager at knappen er blevet løftet.

Denne metode har dog den ulempe at billedet en sjælden gang vil bevæge sig uregelmæssigt hvilket måske ser lidt forvirrende ud at den pludselig bevæger sig længere end normalt.
Et tip til at nedsætte denne uregelmæssighed er at sætte Intervallet på Timeren op og selvfølgelig også konstanten Distance således at hastigheden ikke ændre sig. Dette gør at computeren ikke bare flytter den det lille stykke så hurtigt som den overhovedet kan, men faktisk overholder det Interval du har skrevet.
Dette problem er dog stort set fjernet efter jeg opdagede at DoEvents kunne få den til at overholde Intervallet selvom du sætter det ned på 1 millisekund!

// Great programs often follow great brains!



Jeg håber at du kan bruge dette svar

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 'ASCII KODE' Then
Image1.Top = Image1.Top - 100 'Rykker tingen opad'
End If

ACSII koden er får den tast du ønsker
mener at 13 er enter og 32 space, men kan ikke huske det
Find en tabel på nettet.

- Brian Frimann

Jeg fand lige en tabel www.asciitable.com
Det er tallene fra Dec du skal bruge

[Redigeret d. 08/03-04 14:32:58 af Brian Frimann]



Det er ikke min kode der er noget galt med, måske mit tastatur eller winME, men ikke min kode...

På min PC findes der nemlig bug som måske også virker på din eller andres. Hvis du fx spiller multiplayer og din ven styrer på piletasterne kan du holde tasterne S + D eller D + W eller F + R nede og derved blokke din vens Ned-tast, så han ikke kan bevæge sig nedaf! Samtidigt kan du så holde E + F nede og derved blokke hans Op-tast, så han ikke kan bevæge sig opad!

Den letteste måde at blokke ham helt er ved at holde E + R + F nede samtidigt. Dette kan konkluderes ud fra at F indgår i begge tastekombinationer, og det virker! (på min pc)

// Great programs often follow great brains!



Jeg har læst et eller andet om funktionen DirectInput. Den skulle eftersigende være bedre end API og KeyDown. Er der nogen der kan give en letforståelig indføring i DirectInput til VB 6.0??

Søvn er den eneste lykke, som man først nyder rigtig, når den er forbi.
Alfred Polgar



Alt du skal gøre er at tilføje DirectX8 under Reference i menuen Projects og klikke ok. Herefter vil koden virke! Du skal så selvfølgelig også indsætte en picturebox...

Fold kodeboks ind/udKode 


Hvis jeg skal være helt ærlig har jeg ikke så meget styr på DirectX selv, men denne kode er udledet fra et lidt større spil der brugte DirectX7. Så jeg har altså fundet ud af hvilke kommandoer man skulle bruge og omskrevet dem til DirectX8.
Efter du har tilføjet den der refference og de der variabler jeg har sat, har du ligepludselig en liste over alle kommandoerne så det er bare med at gå igang!

// Great programs often follow great brains!



Er her så nogen der kan hjælpe mig med at forstå denne DirectX8-kode?


Søvn er den eneste lykke, som man først nyder rigtig, når den er forbi.
Alfred Polgar



t