Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.
Petit Programme ( qui marche pas top )
Bibounette le 19/04/2009 à 18:05
Bonjour !!
HéHé me revoila
Bon Alors voila sa fait plusieurs jours que j'essaye de comprendre et d'employer la fonction codeTouche, mais ... sans grans succès

!
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

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

!
En attente d'une réponse,
Coordialement Bibounette

Belvar le 19/04/2009 à 21:58
Meuh non, c'est pas pitoyable, tu est débutante c'est tout
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
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

... mais la il se fait tard, trop fatigué pour essayé.
Je le ferais demain, et qui sait il sera peut être fini

...
Coordialement Bibounette

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

,
Maaaaaaiiiis euuuuuuuuuuuh

j'était sencé faire le programme toute seule

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

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

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,
Adrienadrien 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 !
Alors ayant lu toutes vos recommandation je suis arrivé a un résultat pas trop trop mauvais

!
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

, 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

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,
AdrienBibounette 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

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

!
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 octectsSangohan38 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 Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.