Forum

Catégorie : Programmes
Forum : Les programmes des internautes
Vues : 1375
Réponses : 17
Type : discussion
Etat : réponses autorisées

Petit Programme ( qui marche pas top )

Bibounette le 19/04/2009 à 18:05
Bonjour !!

HéHé me revoila glasses.gif
Bon Alors voila sa fait plusieurs jours que j'essaye de comprendre et d'employer la fonction codeTouche, mais ... sans grans succès moodforlove.gif !

Je vous laisse rire :

Code
:EffDessin
:EffEcr
:0->x
:0->Y
:Lbl 0
:CodeTouche->K
:If K=26
:Then
:X+1->X
:End
:If K=25
:Then
:Y+1=Y
:End
:If K=34
:Then
:Y-1->Y
:End
:If K=24
:Then
:X-1->X
:End
:Goto A
:Lbl A
:Texte(X,Y,"0
:Goto 0


C'est totalement pitoyable je l'avoue mais bon faut bien commencer par la pour devenir une bosse bigmouth.gif !

Je voudrais que le 0 ce déplace avec les flèche et ne pas avoir de graphique si possible happy.gif !

En attente d'une réponse,

Coordialement Bibounette minied.gif
Belvar le 19/04/2009 à 21:58
Meuh non, c'est pas pitoyable, tu est débutante c'est tout happy.gif

Ton code à grand moyen d'être amélioré ^^
Déjà, pour ne pas afficher le graphique, tu doit entrer la commande "GraphNAFF" Et pour ne pas avoir les fonctions, si tu en a, entre la commande "FonctOff".
Ensuite, ton code n'est pas très fiable car il est susceptible d'avoir des bugs et autres effets non désirés. Par exemple, ton code ne pourra pas marcher car tu à initialisé les variables x et y à 0, et tu ne peux pas afficher du texte à (0,0)...

Et même si tu les avait initialisé autrement, le joueur peut toujours "sortir" de l'écran ce qui provoquerait un bug, il faut donc rajouter des conditions pour que ça ne se produise pas, et, que, pourquoi pas, tu le téléporte de l'autre coté de l'écran (à la snake).

Autre effet non désiré : Tu n'efface pas le 0, et donc, tu va avoir une trainé derrière lui lorsque tu le déplacera, il faudrait que tu affiche le 0 après ton label et que si le joueur appuie sur une touche de déplacement (ou une touche tout court, ne t'embête pas :p), ça efface le "0" ( en affichant en espace).

Bon, par contre, l'utilisation du CodeTouche est correcte, mais tu pourrais raccourcir tes If !!
Il ne faut mettre un Then et un End à un If uniquement si il y a plus qu'une ligne dans la condition. Or, là, tu n'a qu'une ligne, tu pourrais donc mettre par exemple "If K=26:X+1->S" et c'est tout.

Voilà ^^ à toi d'améliorer ton programme toute seule, tu progressera comme ça bigmouth.gif

P.S. : Le ":GotoA : Lbl A", il sert a rien :p
Bibounette le 20/04/2009 à 02:12
Reuh !

Mercii à toi pour toutes ces indications, tu ma redonné le courage de comprendre se fameux CODETOUCHE !
Bon il ne me reste plus qu'a amélioré mon programme bigmouth.gif ... mais la il se fait tard, trop fatigué pour essayé.
Je le ferais demain, et qui sait il sera peut être fini glasses.gif ...

Coordialement Bibounette minied.gif
Renard le 20/04/2009 à 04:32
Moi je ferai sa comme sa :

Code

EffDessin
:EffEcr
:0->x
:0->Y
:Lbl 0
:Repeat K=105
:Texte(X,Y,"0"
:CodeTouche->K
:If K=26:X+1->X
:If K=25:Y+1=Y
:If K=34:Y-1->Y
:If K=24:X-1->X
:If X<... : ...ü ( ) X             
:If X>... : ...ü ( ) X
:If Y<... : ...ü ( ) Y
:If Y>... : ...ü ( ) Y
:Texte(X-1,Y," "
:Texte(X+1,Y," "
:Texte(X,Y-1," "
:Texte(X,Y+1," "
:end
:Stop


( les ... représente les dimmension de ton écrans de jeu et les ü les fléche STO )
Bibounette le 20/04/2009 à 15:49
Salut bigmouth.gif ,

Maaaaaaiiiis euuuuuuuuuuuh cry.gif j'était sencé faire le programme toute seule cry.gif !

Bon je vais pas regardé ce que t'as fais ( FERME LES YEUX ) :p

Coordialement Bibounette minied.gif
Belvar le 20/04/2009 à 18:33
Hum, de toutes façon, ton programme n'est pas bon, Renard
Si tu l'exécuterais tu aurais une erreur "dim" et si tu ferais "voir", ça te placerait sur la ligne ":Texte(X,Y,"0""...
(Et ce n'est pas la seule erreur...)

Bonne chance pour ton programme Bibounette winkle.gif
adrien le 20/04/2009 à 19:31
Bonjour à tous,
Bibounette, je croi bien que tu as oublié un "END" pour que ta boucle ainsi que ton codetouch puisse marcher, et je te conseil d'utiliser output plutot que texte ( dans ce cas, x et y seraient égal à 0 par ewemple ), cela dit, Berlvar, text(x,y,"0 alors que x et y valent 0 marche tout à fait sur le graph, essai tju vera, mais en revenche , cela ne marche pas sur le Home ( Ecr ).
En espérant t'aider,
Adrien
adrien le 20/04/2009 à 19:34
adrien a écrit :
Bonjour à tous,
( dans ce cas, x et y seraient égal à 0 par ewemple Adrien

Désoler en fait ils doivent être égal au moins à 1 sur le Home
Bibounette le 20/04/2009 à 19:58
Rebonjour ! happy.gif

Alors ayant lu toutes vos recommandation je suis arrivé a un résultat pas trop trop mauvais bigmouth.gif !

Le voila :

Code
:EffEcr
:EffDessin
:GraphOff
:FonctOff
:5->X
:8->Y
:Lbl 0
:Output(X,Y,"0
:codeTouche->K
:If K=26:Y+1->Y
:If K=25:X-1->X
:If K=34:X+1->X
:If K=24:Y-1->Y
:Goto C
:Lbl C
:If J=K
:Output(X,Y," (1 espace)
:Goto 0



Voili voilou, alors tout d'abord il n'y a plus de graphique happy.gif, après le 0 se déplace dans le bonne ordre d'appuie, par contre au lieu de s'éffacé le 0 clignote :X ( c'est stylé mais c'est pas ce que je voulais faire xD ), et puis je ne vois vraiment pas comment mettre une limite au cadre hors écran (alors pour le faire apparaitre de l'autre côté ...).

En attente d'explication,

Coordialement Bibounette minied.gif
adrien le 20/04/2009 à 21:10
Salut, pour les limites c'est assez simple : 16 en abcisse et 8 en ordonnée; donc: if x(inférieur ou égal)1:8->X:if x(supérieur ou égal)8:1->X:if y(inférieur ou égal) 1:16->Y:if y(supérieur ou égal) 16:1->Y
J'espere que c'est ce que tu voulais,
Adrien
Bibounette le 20/04/2009 à 23:54
Re,

Mmmmh j'ai ajouter ce que tu ma dit Adrien, je tiens juste à te corrigé :

Code
:If X(inferieur ou égale à)1:9->X
:If X(Supérieur ou égal à)9:1->X
:If Y(inf. Ou = à)1:17->Y
:If Y(sup. Ou = à)17:1->Y


Tu t'est juste trompé dans le nombre des abcisse et ordonnée.

Autrement il comporte un petit problème, lorsque je monte et que je tourne à gauche il me bloque (passage du haut et gauche), et lorsque je tourne à droite et que je déscend il me le fait passer(passage du droit et bas).

Coordialement Bibounette minied.gif
mad67 le 21/04/2009 à 08:09
voila ma méthode elle est un peu rude mais bon ...


Code
:EffEcr
:EffDessin
:GraphOff
:FonctOff
:5->X
:0->P
:0->Q
:8->Y
:Lbl 0
:Y+P->Y
:X+Q->X
:0->P
:0->Q
:If X(inferieur ou égale à)1:9->X
:If X(Supérieur ou égal à)9:1->X
:If Y(inf. Ou = à)1:17->Y
:If Y(sup. Ou = à)17:1->Y
:Output(X,Y,"0
:codeTouche->K
:If K=26
:1->P
:If K=25
:-1->Q
:If K=34
:1->Q
:If K=24
:-1->P
:Goto C
:Lbl C
:If J=K
:Output(X,Y," (1 espace)
:Goto 0[code]
Belvar le 21/04/2009 à 12:56
Hmm, je propose une version plus légère :

Code
:EffEcr            (Si tu travaille sur "Home", tu n'a besoin que de Effecr)
:8->X
:4->Y              (Le "0" apparaitra au centre de l'écran)
:Lbl 0
:Output(Y,X,"0          (Pour les "Outputs" comme pour les "Texte", la valeur Y est avant la valeur X)
:codeTouche->K
:If K=26:Y+1->Y
:If K=25:X-1->X
:If K=34:X+1->X
:If K=24:Y-1->Y
:If X=17:1->X             (Si ça dépasse l'écran)
:If X=0:16->X
:If Y=0:8->Y
:If Y=9:1->Y
:If K(plus grand ou égal)24 et K(inférieur ou égal)26 ou K=34
:Output(Y,X," (1 espace)
:Goto 0
Sangohan38 le 21/04/2009 à 16:43
Version encore plus légère:

Code
ClrHome
8->X
4->Y
While K[Différent de]105
Getkey->K
If K=24 or K=25 or K=33 or K=34:Output(Y,X,"
If K=24 and Y>1:Y-1->Y
If K=33 and X>1:X-1->X
If K=25 and Y<8:Y+1->Y
If K=34 and X<16:X+1->X
Output(Y,X,"0
End
ClrHome
Output(1,1,"   "

De plus, dans ta version Belvvar, ça ne marche pas du tout pour effacer les traces.

Sangohan38
Bibounette le 21/04/2009 à 23:47
Resalut à tous,

J'ai eu une journée très chargée je n'ai pas encore eu le temps de bien regardé vos programmes mais je vais le faire demain promis godgrace.gif !

Bonne soirée.

PS: Sango j'ai copié ton programme mais il ne marche pas, le 0 ne bouge pas :/.
Cyplejet le 22/04/2009 à 08:32
Sangohan38 a écrit :
Version encore plus légère:

Code

If K=24 or K=25 or K=35 or K=34:Output(Y,X,"


Sangohan38


Je crois que la touche 35 n'existe pas. ce serait pas 33 comme la suite du code ou même 26?
adrien le 23/04/2009 à 15:50
Non effectivement la touche 35 n'existe pas, mais cela ne nuit pas au progamme de sangohan car il y a "k=34", ce qui correspond à la touche du bas; tu n'as qu'à enlever "k=35", mais ça ne changera rien, si ce n'est de gagner quelques octects
Sangohan38 le 25/04/2009 à 14:49
C'est la touche 33 qu'il fallait marquer sinon, en se déplacant vers la droite, le O ne serait pas effacé.
Je viens de corriger cela dans le code.

Sangohan38