Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Autres questions


Index du Forum » Autres questions » Problème projet programmation
Jules858 Hors ligne Membre Points: 78 Défis: 2 Message

Problème projet programmation

Posté le 04/02/2014 22:03

Bonjours à toutes et à tous
J'ai pour but de créer un jeu du style pacman (personnage dans une arene avec des IA etc...). J'ai commencé à faire l'arène mais pour ce qui est de la direction du personnage c'est pas encore ça on va dire. Mon code contient une erreur au LpWhile d'après ma calc :
1ãYÙ
DoÙ
Locate Y,1,"#E6A6"Ù
Y+1ãYÙ
LpWhile Y≤21Ù
2ãXÙ
DoÙ
Locate 1,X,"#E6A6"Ù
X+1ãXÙ
LpWhile X≤7Ù
2ãZÙ
DoÙ
Locate 21,Z,"#E6A6"Ù
Z+1ãZÙ
LpWhile Z≤7Ù
1ãWÙ
DoÙ
Locate W,7,"#E6A6"Ù
W+1ãWÙ
LpWhile W≤20Ù
5ãRÙ
5ãQÙ
Lbl 0Ù
DoÙ
R≥22 Or R≤1 And Q≥7 Or Q≤1⇒BreakÙ
Locate R,Q,"#E6A7"Ù
DoÙ
GetkeyãTÙ
LpWhile T≠27 And T≠37 And T≠38 And T≠28Ù
T=37×Q+1ãQÙ
T=28×Q-1ãQÙ
T=27×R+1ãRÙ
T=38×R-1ãRÙ
LpWhile 1Ù               (ici apparement)
R≤22×21ãRÙ
R≥1×2ãRÙ
Q≤7×6ãQÙ
Q≥1×2ãQÙ
Goto 0


Si vous pourriez aussi m'indiquer comment enlever l'ancienne position du personnage sans effacer la map...
Merci d'avance pour me donner quelques suggestions (n'hésitez pas, je suis débutant en la matière)...


Positon Hors ligne Rédacteur Points: 2396 Défis: 57 Message

Citer : Posté le 04/02/2014 22:22 | #


Pour effacer un élément il suffit de placer un espace avec Locate.
Sinon, as-tu déjà entendu parler de la boucle For ?
For 1->Y To 21
Locate Y,1,"#E6A6"
Next

Par contre, en ce qui concerne ton erreur, je vois pas d'où peut provenir le problème...
Totoyo Hors ligne Membre d'honneur Points: 16093 Défis: 102 Message

Citer : Posté le 04/02/2014 23:00 | #


LpWhile 1 => La condition est toujours vraie, exécute-t-elle le code suivant ?
J'en doute car on a une boucle Do-LpWhile après le Break, je ne pense pas que la calculatrice interprète ton code normalement.

D'ailleurs, tu devrais remplacer :
Do
R≥22 Or R≤1 And Q≥7 Or Q≤1⇒Break
...
LpWhile

Par :
While R>1 And R<22 And Q>1 And Q<7
...
WhileEnd
Jules858 Hors ligne Membre Points: 78 Défis: 2 Message

Citer : Posté le 05/02/2014 12:24 | #


Ok je continue avec vos conseils et je re si un autre probleme surgit. merci

Ajouté le 05/02/2014 à 20:38 :
Rebonjours,
Alors oui je connais la fonction For mais je n'y ai pas pensé étant débutant. J'ai donc réussi (enfin je crois) à faire le perso qui bouge et son ancienne position s'efface donc c'est bon. J'ai cependant un problème en ce qui concerne le mur droit (donc la variable R), quand mon perso va contre il ne s'arrête pas, il reste sur l'écran et il efface la carré (mur) ou il ne doit pas être...
Voici le prog :

1ãYÙ
DoÙ
Locate Y,1,"#E6A6"Ù
Isz YÙ
LpWhile Y≤21Ù
1ãXÙ
DoÙ
Locate 1,X,"#E6A6"Ù
Isz XÙ
LpWhile X≤7Ù
1ãZÙ
DoÙ
Locate 21,Z,"#E6A6"Ù
Isz ZÙ
LpWhile Z≤7Ù
1ãWÙ
DoÙ
Locate W,7,"#E6A6"Ù
Isz WÙ
LpWhile W≤22Ù
5ãRÙ
5ãQÙ
Lbl 1Ù
While R>1 And R<22 And Q>1 And Q<7Ù
R≥22 Or R≤1 And Q≥7 Or Q≤1×BreakÙ
Locate R,Q,"#E6A7"Ù
For 1ãA To 222Ù
NextÙ
DoÙ
GetkeyãTÙ
LpWhile T≠27 And T≠37 And T≠38 And T≠28Ù
If T=37Ù
Then Isz Q:Locate R,Q-1," "Ù
IfEndÙ
If T=28Ù
Then Dsz Q:Locate R,Q+1," "Ù
IfEndÙ
If T=27Ù
Then Isz R:Locate R-1,Q," "Ù
IfEndÙ
If T=38Ù
Then Dsz R:Locate R+1,Q," "Ù
IfEndÙ
WhileEndÙ
R≥22×21ãRÙ
R≤1×2ãRÙ
Q≥7×6ãQÙ
Q≤1×2ãQÙ
Goto 1
Positon Hors ligne Rédacteur Points: 2396 Défis: 57 Message

Citer : Posté le 05/02/2014 21:17 | #


C'est normal, tu ne gères pas les collisions. Tu ne dois afficher un espace que si le personnage n'est pas dans le mur.
En fait tu devrais organiser ton code comme ça :
Tu fais une boucle qui tourne tant que tu n'appuies pas sur une touche.
Tu effaces le personnage
Tu modifies ses coordonnées en fonction de la touche sur laquelle tu as appuyé et seulement si ça ne le fait pas rentrer dans un mur.
Tu affiches le personnages
Jules858 Hors ligne Membre Points: 78 Défis: 2 Message

Citer : Posté le 05/02/2014 21:45 | #


Mais le problème n'arrive que sur le coté droit. Les autres cotés marchent nickel...
Positon Hors ligne Rédacteur Points: 2396 Défis: 57 Message

Citer : Posté le 05/02/2014 22:28 | #


R<22

Et aussi
R≥22

Ça vient de là. L'écran texte fait 7 lignes sur 21 colonnes.
Jules858 Hors ligne Membre Points: 78 Défis: 2 Message

Citer : Posté le 07/02/2014 17:30 | #


Ok merci. je pensais que c'était du 7-22 et non du 7-21. Je continue le prog...

Ajouté le 08/02/2014 à 23:25 :
Bon, je re car c'est de nouveau chaud pour moi...
J'ai choisi comme concept des sortes de laser qui vont de la droite à la gauche de l'écran (en ligne) et on doit les éviter. Cependant je n'arrive pas à faire en sorte que si le joueur ne bouge pas les lasers avancent quand même car avec mon prog (enfin ce brouillon!!!) ça ne marche pas...
Nv message: C'est bon j'ai réussi me manque juste un ptit decalage de temps...

1ãYÙ
20ãMÙ
20ãNÙ
20ãOÙ
20ãPÙ
DoÙ
Locate Y,1,"#E6A6"Ù
Isz YÙ
LpWhile YÉ21Ù
1ãXÙ
DoÙ
Locate 1,X,"#E6A6"Ù
Isz XÙ
LpWhile XÉ7Ù
1ãZÙ
DoÙ
Locate 21,Z,"#E6A6"Ù
Isz ZÙ
LpWhile ZÉ7Ù
1ãWÙ
DoÙ
Locate W,7,"#E6A6"Ù
Isz WÙ
LpWhile WÉ21Ù
5ãRÙ
5ãQÙ
Locate M,2,"-"Ù
Locate N,3,"-"Ù
Locate O,4,"-"Ù
Locate P,6,"-"Ù
Lbl 1Ù
While R>1 And R<21 And Q>1 And Q<7Ù
Dsz M:Dsz N:Dsz O:Dsz PÙ
Locate M,2,"-"Ù
Locate N,3,"-"Ù
Locate O,4,"-"Ù
Locate P,6,"-"Ù
Locate R,Q,"#E6A7"Ù
For 1ãL To 50Ù
GetkeyãTÙ
T=27 Or T=37 Or T=38 Or T=28×Goto 2Ù
NextÙ
WhileEndÙ
Goto 1Ù
Lbl 2Ù
RÊ21×20ãRÙ
RÉ1×2ãRÙ
QÊ7×6ãQÙ
QÉ1×2ãQÙ
If T=37Ù
Then Locate R,Q,"#E6A7":Isz Q:Locate R,Q-1," ":For 1ãL To 200Ù
NextÙ
IfEndÙ
If T=28Ù
Then Locate R,Q,"#E6A7":Dsz Q:Locate R,Q+1," ":For 1ãL To 200Ù
NextÙ
IfEndÙ
If T=27Ù
Then Locate R,Q,"#E6A7":Isz R:Locate R-1,Q," ":For 1ãL To 200Ù
NextÙ
IfEndÙ
If T=38Ù
Then Locate R,Q,"#E6A7":Dsz R:Locate R+1,Q," ":For 1ãL To 200Ù
NextÙ
IfEndÙ
Goto 1Ù

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 90 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd