DIRECTX TUTO 2 : DIRECTINPUT : LE CLAVIER ET DIRECTDRAW
cs_azerty25
Messages postés1114Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention 6 mai 2007
-
23 juin 2004 à 20:59
ciberrique
Messages postés589Date d'inscriptionlundi 25 août 2003StatutMembreDernière intervention18 juillet 2010
-
28 juin 2004 à 13:35
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
ciberrique
Messages postés589Date d'inscriptionlundi 25 août 2003StatutMembreDernière intervention18 juillet 20101 28 juin 2004 à 13:35
Oui c'est vrai j'y ais pas pensé.
Regarde à nouveau le tuto et tu verras :
' **** Mise à jour ****
.........
*******************
Voila.
cs_azerty25
Messages postés1114Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention 6 mai 2007 28 juin 2004 à 12:22
Il faudrai que tu dise ou tu as changé les trucs car pour moi qui connait légerement DX, j'ai lu ton tuto avec les fautes et je peux pas rectifier dans ma tete :p Faut pas partir sur de mouvaise bases (enfin avc des fautes) :p
ciberrique
Messages postés589Date d'inscriptionlundi 25 août 2003StatutMembreDernière intervention18 juillet 20101 27 juin 2004 à 11:50
Voila j'ai mis cette source à jour pour les quelques erreur.
Je suis sur la préparation d'un tuto pour faire un menu quand on appuis sur echap car je me suis retrouver dans le probléme de changer de boucle sans faire planter DX, donc je vais vous montrer comment faire.
allé bon code
+
ciberrique
Messages postés589Date d'inscriptionlundi 25 août 2003StatutMembreDernière intervention18 juillet 20101 23 juin 2004 à 22:00
Merci à toi pour les corrections et les idées que tu as donnés, mais à cette vitesse tu auras vite fini mais tuto, héhé ....
cs_azerty25
Messages postés1114Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention 6 mai 2007 23 juin 2004 à 21:50
D'accord, je te remercie, et merci aussi pout tes tutos qui sont tres instructifs, demain je passe aux suivants ;)
ciberrique
Messages postés589Date d'inscriptionlundi 25 août 2003StatutMembreDernière intervention18 juillet 20101 23 juin 2004 à 21:45
Et voila la solution, héhé pour ton probléme de résolution du utilise des variables et selon la variable sa change, pour le stretch c plus un bltfast mais un blt normal et la tu peux faires des agrandissements.
pour la couleurs c'est bizare, mais bon je vois pas pk.
j'espere que j'ai repondu à tes questions ....
cs_azerty25
Messages postés1114Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention 6 mai 2007 23 juin 2004 à 21:35
Oké oké, pour la route, c'est vrai qu'en testant on voit mieux. Un truc par contre qui à mon gout n'est pas tres bon, c'est que tu considère que la résolution sera toujours la même, par exemple pour la route, tu vois, tu fait 2 fois un blt pour faire toute la largeur, mais dans un vrai jeu, on peut choisir la reso, tu met 1024 et hop la route n'est pas complete sur tout l'écran :p Il n'éxiste pas une fonction stretch en DX ? (pour l'étaler sur la totalité de la largeur, il n'y aurait pas de déformation, les traits de la route sont horizontaux)
Sinon, j'ai essayé de mettre en 32 bits, et le blanc devient bleu, sait tu pourquoi ?
Sinon pour le doublement, c'est simple voici la partie qui clochait corrigée :
'Si la fleche de droite est activé
If scroldroite = 1 Then
reelx = reelx + posx
scroldroite = 0
End If
'Si la fleche de gauche est activé
If scrolgauche = 1 Then
reelx = reelx - posx
scrolgauche = 0
End If
Primary.Flip Nothing, DDFLIP_WAIT
En résumé, tu dessinai 2 fois sur l'écran 2 images qui étaient différentes dans le cas ou l'on allait en arriere
ciberrique
Messages postés589Date d'inscriptionlundi 25 août 2003StatutMembreDernière intervention18 juillet 20101 23 juin 2004 à 21:07
Désolé quand j'ai ecris se code j'était pas au top (héhé je le suis toujours pas) en faite oui le For i = 203 To 205 est inutile
et pour le double bltfast essaye d'en enlevé un tu comprendras.....
J'ai constaté le dédoublement de pixel je pense que en faite l'image précédente n'est pas effacé en meme temps que la nouvelle, il faudrai inverser une instruction, mais je me suis pas penché dessus, dsl ....
Pour la disparition de l'ecran c'est normal je ne traite pas dans se tuto de tout le scrolling en detail mais juste d'un base.
a++
cs_azerty25
Messages postés1114Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention 6 mai 2007 23 juin 2004 à 20:59
J'ai testé le ZIP, qq problemes, quand on fait aller le van en arriere, on dirait qu'il se double en fait il y a le van réel, et derriere, on dirait qu'il y a comme un 2eme qui le suis à qq pixels de décalage vers la droite. Un style d'ombre. Il y a aussi le fait que le van disparait de l'écran quand le moindre pixel déborde de l'écran alors que dans la logique, il devrait se masquer au fur et à mesure.
Sinon, je passe aux éléments flous dans ma tete de débutant DX, pourquoi tu fait un BltFast 2 fois ici :
Backbuffer.BltFast 0, 285, route, ddRect(0, 0, 0, 0), DDBLTFAST_WAIT 'on place la route
Backbuffer.BltFast 320, 285, route, ddRect(0, 0, 0, 0), DDBLTFAST_WAIT 'toujours la 'route
Il y a aussi ceci :
For i = 203 To 205 ' i de 203 à 205 pour les touche droite et gauche
If DIstate.Key(i) <> 0 Then 'si une touche est pressé
If DIstate.Key(DIK_RIGHT) <> 0 Then scroldroite = 1 'si c'est la touche de droite notre 'valeur scroldroite vos 1
If DIstate.Key(DIK_LEFT) <> 0 Then scrolgauche = 1 ' si c'est la touche de gauche notre 'valeur scrolgauche vos 1
End If
Next i
End Sub
DIstate.Key(i) testerai si la touche i est enfoncée, mais pourquoi mettre apres une vérification de DIstate.Key(DIK_LEFT) alors que tu l'a déja fait sous une autre forme ?!
28 juin 2004 à 13:35
Regarde à nouveau le tuto et tu verras :
' **** Mise à jour ****
.........
*******************
Voila.
28 juin 2004 à 12:22
27 juin 2004 à 11:50
Je suis sur la préparation d'un tuto pour faire un menu quand on appuis sur echap car je me suis retrouver dans le probléme de changer de boucle sans faire planter DX, donc je vais vous montrer comment faire.
allé bon code
+
23 juin 2004 à 22:00
23 juin 2004 à 21:50
23 juin 2004 à 21:45
pour la couleurs c'est bizare, mais bon je vois pas pk.
j'espere que j'ai repondu à tes questions ....
23 juin 2004 à 21:35
Sinon, j'ai essayé de mettre en 32 bits, et le blanc devient bleu, sait tu pourquoi ?
Sinon pour le doublement, c'est simple voici la partie qui clochait corrigée :
'Si la fleche de droite est activé
If scroldroite = 1 Then
reelx = reelx + posx
scroldroite = 0
End If
'Si la fleche de gauche est activé
If scrolgauche = 1 Then
reelx = reelx - posx
scrolgauche = 0
End If
Backbuffer.BltFast reelx, reely, Surface, ddRect(0, 0, 0, 0), DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY
Primary.Flip Nothing, DDFLIP_WAIT
En résumé, tu dessinai 2 fois sur l'écran 2 images qui étaient différentes dans le cas ou l'on allait en arriere
23 juin 2004 à 21:07
et pour le double bltfast essaye d'en enlevé un tu comprendras.....
J'ai constaté le dédoublement de pixel je pense que en faite l'image précédente n'est pas effacé en meme temps que la nouvelle, il faudrai inverser une instruction, mais je me suis pas penché dessus, dsl ....
Pour la disparition de l'ecran c'est normal je ne traite pas dans se tuto de tout le scrolling en detail mais juste d'un base.
a++
23 juin 2004 à 20:59
Sinon, je passe aux éléments flous dans ma tete de débutant DX, pourquoi tu fait un BltFast 2 fois ici :
Backbuffer.BltFast 0, 285, route, ddRect(0, 0, 0, 0), DDBLTFAST_WAIT 'on place la route
Backbuffer.BltFast 320, 285, route, ddRect(0, 0, 0, 0), DDBLTFAST_WAIT 'toujours la 'route
Il y a aussi ceci :
For i = 203 To 205 ' i de 203 à 205 pour les touche droite et gauche
If DIstate.Key(i) <> 0 Then 'si une touche est pressé
If DIstate.Key(DIK_RIGHT) <> 0 Then scroldroite = 1 'si c'est la touche de droite notre 'valeur scroldroite vos 1
If DIstate.Key(DIK_LEFT) <> 0 Then scrolgauche = 1 ' si c'est la touche de gauche notre 'valeur scrolgauche vos 1
End If
Next i
End Sub
DIstate.Key(i) testerai si la touche i est enfoncée, mais pourquoi mettre apres une vérification de DIstate.Key(DIK_LEFT) alors que tu l'a déja fait sous une autre forme ?!