Posté le 24/05/2009 à 17:34 Membre depuis le 13/05/2009, 18 messages
salut j'aimerai faire un bomberman sur ti83+ mais je n'arrive pas à placer la bombe sur ma derniere postion je fait

Output(x+,y,"b")
mais ca pose des problemes de domain
quelqu'un peut m'aider
Posté le 24/05/2009 à 18:04 Membre depuis le 25/12/2006, 499 messages
Output(x+,y,"b")

x+ ?
[nosmile]
Si c'est une ERRgrinOMAIN, c'est certainement parce-que tu essayes d'afficher un point hors de l'écran.
L'ordonnée doit varier entre 1 et 8, et l'abscisse entre 1 et 16.
Posté le 24/05/2009 à 19:23 Membre depuis le 13/05/2009, 18 messages
j'affiche la bombe au dessus de la position de mon perso et j'aimerais qu'il l'affiche sur la case d'ou je viens je vis t'écrire le programme
Posté le 24/05/2009 à 22:08 Membre depuis le 15/03/2005, 3470 messages
Tu pourrais recopier le code en entier ? Ce serait plus simple pour cerner le problème smile
Posté le 25/05/2009 à 18:34Edité par deeph le 25/05/2009 à 19:31 Membre depuis le 13/05/2009, 18 messages
:Lbl A
:ClrHome
:1→X
:1→Y
:1→A
:1→B
:3→V
:
:Lbl 1
:Repeat K=105
:getKey→K
:Y+(K=34)-(K=25)→Y
:X+(K=26)-(K=24)→X
:If X=0:1→X
:If K=1:16→X
:If Y=0:1→Y
:If Y=7:6→Y
:Output(7,1,"----------------
:Output(8,2,"/3
:Output(8,1,V
:Output(B,A," 
:Output(Y,X,"0
:X→A
:Y→B
:If K=21
:Goto 2
:If V=0
:Then
:Output(8,7,"perdu!
:Pause 
:Goto A
:End
:End
:Goto 3
:
:Lbl 2
:Y→C
:X→D
:For(I,1,10
:getKey→K
:Output(C,D,"B
:X+(K=26)-(K=24)→X
:Y+(K=34)+(K=25)→Y
:If X=0:1→X
:If X=17:16→X
:If Y=0:1→Y
:If Y=7:6→Y
:Output(B,A," "
:X→A
:Y→B
:Output(Y,X,"0
:End
:
:For(I,1,10)
:Output(C,D-3,"---+---
:Output(C+2,D,"!
:Output(C+1,D,"!
:Output(C-1,D,"!
:Output(C-2,D,"!
:Output(8,7,"boum!
:End
:
:If Y=C and X=D or Y=C-1 and X=D
:V-1→V
:Output(C,D-3," "
:Output(C+2,D," "
:Output(C+1,D," "
:Output(C-1,D," "
:Output(C-2,D," "
:Output(8,7," "
:Goto 1
:Lbl 3
:ClrHome
:Output(1,1," "
Posté le 25/05/2009 à 18:34Edité par deeph le 25/05/2009 à 19:30 Membre depuis le 13/05/2009, 18 messages
[doublon]
Posté le 25/05/2009 à 18:36 Membre depuis le 13/05/2009, 18 messages
dsl j'en ai posté 2
en fait mon problème est que lorsque le bombe explose près des murs j'ai droit à une error domain et je vois pas comment les régler
Posté le 25/05/2009 à 19:39 Membre depuis le 15/03/2005, 3470 messages
(J'ai édité ton message pour rendre le code source plus lisible.)

Le problème c'est que t'essayes d'afficher l'explosion en dehors de l'écran. Ce qu'il faut faire, je pense, c'est de gérer la propagation du feu de son centre vers l'extérieur. J'vais essayer de te proposer un code si j'ai le temps smile
Posté le 26/05/2009 à 17:45 Membre depuis le 15/03/2005, 3470 messages
J'ai pas encore eu le temps de bien y regarder, mais à mon avis le plus simple c'est de faire avec une matrice...
Posté le 26/05/2009 à 17:48 Membre depuis le 25/12/2006, 499 messages
Tu peux juste donner les grandes lignes de ton prog ? (histoire de comprendre la structure)
Posté le 26/05/2009 à 21:46Edité par gon33 le 27/05/2009 à 12:33 Membre depuis le 11/04/2007, 1076 messages
[nosmile]Y'a des trucs bizarre dans ce programme...
En haut, c'est pas K, c'est X la variable (au 2è if)

Et puis le deuxième For, il ne sert à rien puisque tu ne modifie aucune des variables que tu utilises...

darkovao31 (./5) :
:For(I,1,10)
:Output(C,D-3,"---+--- :Output(C+2,D,"!
:Output(C+1,D,"! :Output(C-1,D,"!
:Output(C-2,D,"! :Output(8,7,"boum! :End

Tu peux remplacer ça par:
:0->I:
:while C-I > 0 and C+I<8 and D-I > 0 and D+I < 16 
:output(C-I, D, "!"
...
:output(C, D+I, "-"
:End


Posté le 26/05/2009 à 22:21 Membre depuis le 15/03/2005, 3470 messages
Ça doit être une erreur de frappe le K au lieu du X.

Puis le 'For(', c'est pas plutôt pour mettre en pause le programme, le temps d'afficher l'explosion ? C'est difficile de proposer autre chose vu qu'en TI-Basic y'a rien de 'propre' pour faire ça (certains utilisent '69!' mais c'est moche).
Posté le 27/05/2009 à 09:16 Membre depuis le 14/11/2003, 504 messages
69! c'est pas assez sur une TI-z80 à 6 MHz pour ralentir une boucle ou quoique ce soit, encore moins sur une 15 MHz. J'aime mieux utiliser Rand, en plus, tu sauve 3 octets.

Malgré que 69... cheeky

Anyway en BASIC vu la lenteur et la taille des programmes, il n'y a pas vraiment de règles à respecter en terme d'esthétisme pour le code. Chaque octet compte.
avatarTI-84 Plus, TI-Nspire, HP Prime, mobile, programming, retro gaming, drawing and music: https://codewalr.us
Ma musique sur Bandcamp: http://djomnimaga.bandcamp.com
Youtube: http://youtube.com/DJOmnimaga
Reverbnation: http://www.reverbnation.com/djomnimaga
Ancien admin d'Omnimaga http://www.omnimaga.org
Posté le 27/05/2009 à 12:33 Membre depuis le 11/04/2007, 1076 messages
N'empêche que le code que je propose à la place du For ne plante pas. Y'a moyen de l'optimiser plus, mais bon, j'ai fait ça à l'arrache...
Posté le 27/05/2009 à 14:40 Membre depuis le 13/05/2009, 18 messages
ah oui le k c'est une erreur de frappe et la boucle for c'est pour voir l'explosin mais ta technique n'est pas mal