Aide pour changement d'Image sur Keydown

AliasX Messages postés 5 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 11 novembre 2009 - 10 nov. 2009 à 01:58
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 - 11 nov. 2009 à 18:40
Bonjour à tous!
Je suis actuellement en fin de session au cégep, et j'ai comme projet de créer un jeu dans le genre de Mario Bros sur un écran fixe. Bref, là n'est pas le problème. Lorsque j'appuie sur la flèche de gauche, l'image d'un gif animé va à gauche, et même chose à droite. Première question: Je veux que lorsque je n'appuie sur rien, l'image se remette par défaut sur une autre image. J'ai bien essayé e.KeyCode = Keys.None, mais rien ne se passe car je crois que VB garde la dernière valeur en note, et je n'ai pas trouvé comment régler ca. Deuxième Question: Quand je fais espace, l'image saute, et retourne au sol, mais ca se passe beaucoup trop vite! Y aurait-il un moyen de ralentir ca? Je vais vous donner un exemple de ce qui se passe quand le personnage Saute:

(e.KeyCode = Keys.Space)
pctMario.Top -= 75
pctMario.Top += 75

Merci Pour votre aide!

9 réponses

cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
10 nov. 2009 à 09:59
Hello,

Il existe le KeyDown pour lorsque l'on appuis sur une touche, et le KeyUp lorsque l'on la relache

Chris...
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
MCPD (webform-winform) / MCSA / MCDST / MCT
0
AliasX Messages postés 5 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 11 novembre 2009
10 nov. 2009 à 20:30
Merci! C'a ma permis de répondre à ma première question^^ Tu pourrais m'aider pour la deuxième? J'avais pensé mettre un timer, mais je ne vois pas trop comment m'y prendre pour l'instant...
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
10 nov. 2009 à 20:57
Oui soit tu passe par les API windows (ce que je conseil pour évité le scintillement), soit tu met un timer qui va gérer cela, d'ailleur tu peux faire les deux ça donnerais un truc pas mal

Chris...
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
MCPD (webform-winform) / MCSA / MCDST / MCT
0
AliasX Messages postés 5 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 11 novembre 2009
10 nov. 2009 à 21:01
Tu pourrais m'éclairer un peu sur le sujet? Je commence en VB, alors les API, je connais pas vraiment, et je gère assez mal les timer ^^"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
10 nov. 2009 à 21:15
Dans ce cas oublie les Api (les DLL natives windows) essaie de le gérer via un timer, avec une intervale, je dirais = à 600ms, puis dans le code il faut que tu gère que ton player monte puis redescende que HauteurMax est atteinte.

exemple :

dim i as int = 1
sub...._tick()
HPlayer += i
if (HPlayer HMax) then i -1
if (HPlayer = 0) then
i = 1
exit sub
end if
...sub

ça devrait te donner une idée ;)

Chris...
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
MCPD (webform-winform) / MCSA / MCDST / MCT
0
AliasX Messages postés 5 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 11 novembre 2009
10 nov. 2009 à 23:21
Bon, je suis pas trop sur d'avoir compris, mais je te montre mon code et redirige moi si je me trompe ^^" Dans le fond, sur mon keydown j'ai activé le timer du Saut

/*pcbMario c'est l'image dans la picturebox*/

Dim intY As Integer = pcbMario.Top
Dim i As Integer = 1
Dim intYMax As Integer = pcbMario.Top + 75

If tmrJump.Enabled = True Then

If intY = intYMax Then
i = -1
pcbMario.Top -= i
ElseIf intY = intY Then
i = 1
pcbMario.Top -= i
End If
End If



End Sub
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
11 nov. 2009 à 11:22
il faudrait que je vois l'ensemble du projet mais ça m'a pas l'air mal

Chris...
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
MCPD (webform-winform) / MCSA / MCDST / MCT
0
AliasX Messages postés 5 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 11 novembre 2009
11 nov. 2009 à 17:01
Bon bien j'ai réussi je crois^^ Mais y aurait-il un moyen de faire en sorte qu'il n'y ait pas une sorte de trait blanc qui ne suive pas mon image quand elle se déplace? Ou bien en vb, c'est certain? ^^
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
11 nov. 2009 à 18:40
Nous y voici, les fameux API, Il faudrait regarder sur le net les DLL/API windows je ne me souviens plus de son nom elle te permettrait d'éviter se sintillement

nb : http://www.google.fr/search?hl=fr&q=api+windows+scintillement+&meta=

devrait te donner quelques voies, je n'ai jamais personnellement utiliser cette api

Chris...
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
MCPD (webform-winform) / MCSA / MCDST / MCT
0