DIRECTX TUTO 2 : DIRECTINPUT : LE CLAVIER ET DIRECTDRAW

cs_azerty25 Messages postés 1114 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 6 mai 2007 - 23 juin 2004 à 20:59
ciberrique Messages postés 589 Date d'inscription lundi 25 août 2003 Statut Membre Dernière intervention 18 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.

https://codes-sources.commentcamarche.net/source/21187-directx-tuto-2-directinput-le-clavier-et-directdraw

ciberrique Messages postés 589 Date d'inscription lundi 25 août 2003 Statut Membre Dernière intervention 18 juillet 2010 1
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és 1114 Date d'inscription jeudi 19 décembre 2002 Statut Membre Derniè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és 589 Date d'inscription lundi 25 août 2003 Statut Membre Dernière intervention 18 juillet 2010 1
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és 589 Date d'inscription lundi 25 août 2003 Statut Membre Dernière intervention 18 juillet 2010 1
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és 1114 Date d'inscription jeudi 19 décembre 2002 Statut Membre Derniè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és 589 Date d'inscription lundi 25 août 2003 Statut Membre Dernière intervention 18 juillet 2010 1
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és 1114 Date d'inscription jeudi 19 décembre 2002 Statut Membre Derniè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

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
ciberrique Messages postés 589 Date d'inscription lundi 25 août 2003 Statut Membre Dernière intervention 18 juillet 2010 1
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és 1114 Date d'inscription jeudi 19 décembre 2002 Statut Membre Derniè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 ?!
Rejoignez-nous