Gamme TI-82
Partager sur Facebook Fil RSS Imprimer la page
Cacher les résultats

Résultat de la recherche



Poster un nouveau sujet Poster une réponse Page: 1,      >>
gerer les colisions
Auteur Message
aleo
Invité
Posté le : Jeu 04 Mar 2010, 19:04   Citer 

Bonjours.
j'aurai besoin d'aide, pour gerer des colisions quand on fait le code avec codetouche+outpout.
Merci de vos futur reponces

  Haut de page Bas de page 
 
titozzz



Autorisation : Membre
Nb de messages : 178
Inscrit le : Mer 27 Jan 2010, 18:55
Posté le : Jeu 04 Mar 2010, 19:07   Citer 

Colision avec quoi, peut tu mieux t'expliquer,
si c'est ce que je pense, va faire un tour du coté des Pxl-test

----------------------
Le temps passe et les œufs durent ....
)=======> Concours de Skin (Virtual TI) <=======(
)=======> Chat (non-officiel) du site <=======(
 Adresse email Haut de page Bas de page 
 
Rézus
Avatar

Autorisation : Membre
Nb de messages : 861
Inscrit le : Sam 20 Jui 2009, 20:35
Posté le : Jeu 04 Mar 2010, 19:14   Citer 

Non,pas pxl-test,il a dit dans le output,et je crois que pxl-test ne marche pas pour le output.
Il faut utiliser une matrice 8*16,comme l'écran,ainsi chaque case de la matrice représente une case de l'écran et a les mêmes coordonnées.Il suffit alors de rentrer 1 ou 0 dans la matrice en fonction de si il y a un obstacle ou non à cet endroit,et de faire un test avant chaque déplacement dans la case d'arrivée du déplacement ,qui dit que si la valeur de la matrice à ces coordonnées est 1,il y a un obstacle,sinon il n'y a rien.

 Adresse email Haut de page Bas de page 
 
aleo
Invité
Posté le : Jeu 04 Mar 2010, 19:46   Citer 

Rézus, tu ascompris ce que je voulais dire.
Le problème, c'est que je ne sais pas utiliser les matrices (comme la fonction for()

  Haut de page Bas de page 
 
Rézus
Avatar

Autorisation : Membre
Nb de messages : 861
Inscrit le : Sam 20 Jui 2009, 20:35
Posté le : Jeu 04 Mar 2010, 20:49   Citer 

Ben là ça va être plus dure.Je vois pas autre chose que de mettre les coordonnées de chaque obstacle dans des variables où dans une liste,mais ça fait beaucoup de if,et le for devient indispensable.
Ou alors faut utiliser le graph et le pxl-test.
C'est pour un jeu de course ou d'esquive d'obstacles ?

 Adresse email Haut de page Bas de page 
 
aleo
Invité
Posté le : Jeu 04 Mar 2010, 21:19   Citer 

Pour programmer une petite IA capable de se deplacer toute seul, dans un environement qu'on poura modifier.
Ca n'a pas bcp d'interet, mais c'est defi lancer entre copains. Un ami fait cette IA sur Casio.
Et cela me permettera d'affiner mes competances en prog.

  Haut de page Bas de page 
 
Rézus
Avatar

Autorisation : Membre
Nb de messages : 861
Inscrit le : Sam 20 Jui 2009, 20:35
Posté le : Jeu 04 Mar 2010, 22:22   Citer 

Alors le mieux c'est la matrice ou le pxl-test.

 Adresse email Haut de page Bas de page 
 
aleo
Invité
Posté le : Jeu 04 Mar 2010, 22:33   Citer 

Le problème, c'est que c'est la promière fois fois que je fais un programme de ce type... Je ne me considère pas comme un debutant, car je programme pas mal, et souvent dans le but de m'aider en cour (resolution dequation, et tout le tralala).
Y a-t-il un bon tuto sur lequel je pourais me diriger, afin de combler cette lacune ?

  Haut de page Bas de page 
 
Didouille
Avatar

Autorisation : Membre
Nb de messages : 159
Inscrit le : Dim 11 Oct 2009, 14:18
Posté le : Jeu 04 Mar 2010, 23:01   Citer 

Ici c'est pas mal : http://www.siteduzero.com/tutoriel-3-3656-le-ti-basic.html#part_3657

----------------------
--Didouille--
 Adresse email Haut de page Bas de page 
 
Stupid



Autorisation : Membre
Nb de messages : 769
Inscrit le : Jeu 28 Sep 2006, 18:42
Posté le : Ven 05 Mar 2010, 19:20   Citer 

Une matrice est de la forme [A](Ligne,Colonne)
{Nombre de lignes, Nombre de colonnes}->dim([A]) permet de dimensioner une matrice [A] dont chaque case prendra la valeur 0 si elle est nouvelle. Sinon la fonction Remplir(0,[A]) permet de la remplir de 0 (Fill en anglais, je crois).

T'as donc une matrice [A](8,16) remplie de 0. Tu peux mettre les 1 manuellement ou faire un 1->[A](X,Y) par exemple.

Pour ce qui est des collisions, déjà tu sais que si un mur est en face tu peux pas avancer, sinon tu peux. Donc tu pourras t'aider de booléens pour simplifier le code. Tu dois savoir que si quelque chose est vrai alors il vaut 1 et sinon il vaut 0. par exemple, 2+3=5 vaut 1, 2+3=5=1 vaut 1, 2+3=6 vaut 0. Pour faire avancer un bidule, tu peux faire Aller à droite-Aller à gauche. Si on va à droite on ne peut aller à gauche, donc ici Aller à droite vaut 1 et Aller à gauche vaut 0, et 1-0 vaut 1. Dans le cas contraire, on a 0-1 ce qui vaut -1.

Un code simple sensé marcher (je suis rouillé) qui prend en compte les murs de la matrice (Case qui ne vaut pas 0) et les bords ([A](Y,0) ou [A](9,X) n'existent pas donc bug)


Code

:Output(A,B," "
:(C=26)-(C=24)->T
:If B+T>0 et B+T<16
:B+T(([A](A,B+T)=0)->B
:(C=34)-(C=25)->U
:If A+U>0 et A+U<8
:B+U(([A](A+U,B)=0)->B
:Output(A,B,"O



Bon après à toi de bidouiller.

J'éspere avoir été clair, utile et juste.

 Adresse email Haut de page Bas de page 
 
sypotu
Avatar

Autorisation : Membre
Nb de messages : 660
Inscrit le : Dim 13 Sep 2009, 8:27
Posté le : Sam 06 Mar 2010, 8:35   Citer 

Moi je te conseille d'uttiliser le graphe et des pxl-test
Avec ça j'avais fait une IA qui traversait n'importe quel labyrinthe

----------------------
Ti-83+.fr
Passe en 1ère S


Foire Aux Questions__________Traduction des fonctions Anglais/Français
Emplacement des fonctions____Lexique
Liste des jeux
Ouvrir, éditer et créer des .82p ou .83p sans télécharger de logiciel
Logiciel pour prendre des screenshot animés
Chat du site_________________Hebergeur pour vos .83p
 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
linkakro



Autorisation : Membre
Nb de messages : 3774
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Sam 06 Mar 2010, 12:01   Citer 

Avec la technique de toujours tourner d'un même coté ? ^^
Alors ce n'est pas si difficile (sauf si le labyrinthe n'est pas traditionnel auquel cas cette méthode peut avoir une faille)

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
sypotu
Avatar

Autorisation : Membre
Nb de messages : 660
Inscrit le : Dim 13 Sep 2009, 8:27
Posté le : Sam 06 Mar 2010, 13:06   Citer 

ouai c'est ça
je suis d'accord avec toi c'est pas très dur mais c'est pour dire que l'on peut faire des trucs plus sympa avec le graphe
et qu'il est plus facile de mettre des obstacles avec le graphe

----------------------
Ti-83+.fr
Passe en 1ère S


Foire Aux Questions__________Traduction des fonctions Anglais/Français
Emplacement des fonctions____Lexique
Liste des jeux
Ouvrir, éditer et créer des .82p ou .83p sans télécharger de logiciel
Logiciel pour prendre des screenshot animés
Chat du site_________________Hebergeur pour vos .83p
 Adresse email Haut de page Bas de page 
 
aleo
Invité
Posté le : Sam 06 Mar 2010, 15:10   Citer 

Voila, j'ai testé ton code, stupid, mais il ne marche pas.
J'ai demander conseil a un ami, et voici ce que donne mon code. Il a un bug, car j'ai mis une boucle infini, mais le programme ne la prend pas en compte.

Code

Effecr
//////////////
je cree une liste de dimension 121, et je met des 1 pour mettre des murs
/////////////
1->c:1->d
0->b
1->c
1->a
while a#121
b+1->d
if b=16:c+1->c
if b=16:1->b
if l1(a)=1:output (c,b,"*"
if l1(a)=2
then
output(c,b,"0"
a->u
c->w
b->v
end
a+1->a
end
1->d
lbl d
while 1=1
if d=1
then
if l1(u+16)#1
then
output(v,w," "
w+1->w
u+16->u
output(v,w,"0"
goto m
else
if l1(u+16)=1
then
goto m
else
else
if d=2
then
if l1(u-1)#1
then
output(v,w,"0"
v-1->v
u-1->u
output (v,w,"0"
else
if l1(u-1)=1
else
goto m
else
else
if d=3
then
if l1(u-16)#1
then
output(v,w," "
w-1->w
u-16->u
output(v,w,"0"
else
if l1(u-16)=1
then
goto m
else
else
il d=4
then
if l1(u+1)#1
then
output (u,w," "
v+1->v
u-1->u
output(v,w,"0"
else
if l1(u+1)=1
then
goto m
else
else
lbl m
entaléat(1,4)->d
goto d



  Haut de page Bas de page 
 
aleo
Invité
Posté le : Mar 09 Mar 2010, 18:24   Citer 

Quelqu'un peux m'aider ?

  Haut de page Bas de page 
 
Stupid



Autorisation : Membre
Nb de messages : 769
Inscrit le : Jeu 28 Sep 2006, 18:42
Posté le : Mar 09 Mar 2010, 19:17   Citer 

Oui mon code contenait des erreurs et était incomplet. La il marche bien chez moi.


Code

:4->A
:8->B
:{8,16}->dim([A]
:Remplir(0,[A]
:For(I,1,10
:entaleat(1,8->G
:entaleat(1,16->H
:Output(G,H,"X
:1->[A](G,H
:End
:While 1
:codetouche->C
:(C=26)-(C=24)->T
:Output(A,B," "
:If B+T>0 et B+T<17
:B+T(([A](A,B+T)=0)->B
:(C=34)-(C=25)->U
:If A+U>0 et A+U<9
:A+U(([A](A+U,B)=0)->A
:Output(A,B,"O
:End



 Adresse email Haut de page Bas de page 
 
aleo
Invité
Posté le : Mar 09 Mar 2010, 21:02   Citer 

Je viens de tester le code, et j'ai une erreur argument à la ligne :

B+T(([A](A+B+T)=0)->b

Sur la parenthèse après le T

  Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
Stupid



Autorisation : Membre
Nb de messages : 769
Inscrit le : Jeu 28 Sep 2006, 18:42
Posté le : Mar 09 Mar 2010, 21:55   Citer 

C'est (A,B+T). Sinon pas d'erreurs.

 Adresse email Haut de page Bas de page 
 
aleo
Invité
Posté le : Mar 09 Mar 2010, 22:06   Citer 

Exact...
j'ai corrigé, mais j'ai encore un problème... Quand je descend sur un x, sa me le 'mange'...
ça doit etre encore un faute de recopiage... je verifie demain,et je te dis sa.
merci beaucoup

  Haut de page Bas de page 
 
aleo
Invité
Posté le : Sam 13 Mar 2010, 17:28   Citer 

Ton code marche parfaitement.
Quelqu'un peux me dire d'ou viens le bug dans mon programme s'il vous plait

  Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse Page: 1,      >>





  Powered by Fire-Soft-Board v1.0.10 © 2004 - 2016 Groupe FSB
Page générée en 9 requêtes
BlackOne par Grimmlink
 

Site hébergé par Free Page sous licence creative commons Page validée par le W3C (XHTML 1.0 Transitional) Feuille de style validée par le W3C Flux RSS 2.0 valide Page étiquetée par l'ICRA Page testée par Ocawa