Poster un nouveau sujet Poster une réponse
algo jeu TV
Auteur Message
monsaibert
Invité
Posté le : Jeu 09 Juil 2015, 15:14   Citer 

bonjour Mathieu,

Voici un Code de jeu TV rencontré

le curseur est placé au centre.Le jeu s'arrête si le curseur arrive sur un côté.
Si le curseur arrive sur le coté,les 2 candidats qui forment ce segment s'affrontent en finale et si le curseur arrive sur un joueur il est le gagnant.
N

O ---------C.-------- E

S

on associe N=1; O=2; S=3; E=4

A, I, J, K entiers naturels:

code
0 -> K
affecter à A un nombre aléatoire entre 1 et 4

tant que I+J < 2 ou I- J < 2 ou I + J > -2
ou J- I < 2
Si A= 1 Then J+ 1 -> J end
Si A=2 Then I-1 -> I end
Si A= 3 then J-1 -> J end
Si A =4 then I+1->I end

K+1-> K
end ( while)
afficher K

Est-ce normal ? l'énoncé est discutable ou pour initié de jeux?

1 - comment exécuter un des 4 " If " alors qu'il n'y a pas de valeurs de I ou J au départ?

2 - ce code décrit 1 partie et s'arrête, d'accord ?on s'attend à avoir le nom du vainqueur en sortie, il devrait donc donner 1, 2, 3 ou 4..quelle relation avec K?

RQ on peut remplacer la condition par " abs (I+J< 2 et abs (I-J < 2 " ?

  Haut de page Bas de page 
 
m@thieu41



Autorisation : Membre
Nb de messages : 848
Inscrit le : Mer 18 Juil 2012, 18:44
Posté le : Ven 10 Juil 2015, 23:34   Citer 

Bonsoir,
Oui le prgm n'a pas de sens pour les raisons que tu donne... Ou l'as tu trouvé ?

Pour ta rq: oui on peut faire un truc comme ça sauf qu'il faut fermer au moins la parenthèse du premier abs, et echanger la place du 2 et du abs (et le sens de l'inégalité) pour le second si tu veux gagner un octet...
Par contre du coup tu fais un test de plus (I-J>-2).

----------------------
Pour vous aidez dans vos débuts (et même ensuite ^^) :
*Tuto Algo->Ti Basic (par Linkakro) : Traduisez vos algo (de type algobox) en prgm pour votre TI!
*Catalogue des emplacements et traductions (anglais/français) des fonctions sur la TI.
*Faites vos propres programmes de maths (par ash)

Et au fait: la politesse n'a jamais tué personne winkle.gif
 Adresse email Haut de page Bas de page 
 
monsalbert
Invité
Posté le : Mar 14 Juil 2015, 10:27   Citer 

Pas moyen de retrouver l'endroit d'où est tiré le code. C'est peut-être un élève qui me l'a proposé ..( je l'avais mis de coté car il m'avait causé un malaise!!).

C'est sans issue? même d'imaginer un code rapprochant? on ferait partir de (I,J) = (0,0)? reste le problème de K (?)

  Haut de page Bas de page 
 
Kelk'1
Invité
Posté le : Jeu 16 Juil 2015, 17:19   Citer 

J'ai absolument rien compris à ce jeu bigmouth.gif

Oui ton programme comporte des erreurs, mais si tu me détailles ton programme (comment il marchait et ce qu'il faisait exactement) je pourrai t'en créer un nouveau

  Haut de page Bas de page 
 
monsalbert
Invité
Posté le : Ven 17 Juil 2015, 16:11   Citer 

le texte n'en dit pas plus. si je fais le bilan de ce que je crois:

un palet au centre (0, 0)de l'ecran peut aller soit sur des sommets(N, S, E, O ) qu'on peut noter (0;1), (0;-1), (1;0), (-1;0)
soit sur les côtés (1;1), (1;-1), (-1;-1), (-1;1) qui donnent des finales à 2 joueurs
que signifie k ? j'ignore. c'est d'autant plus énervant que j'ai l'impression que k donne le nom du gagnant! peut-être du genre (0;1) = N (nord) = 1 , (0;-1) = O =2 ainsi de suite S = 3 et E = 4.

si au moins on pouvait faire un code rapprochant.

  Haut de page Bas de page 
 
Kelk'1
Invité
Posté le : Ven 17 Juil 2015, 16:36   Citer 

Donc si j'ai bien compris, voici ton écran de jeu:


Code

l---------------------l
l          N          l
l                     l
l                     l
l                     l
l O        C        E l
l                     l
l                     l
l          S          l
l---------------------l



Ton curseur se déplace d'une case à la fois ou aléatoirement sur le plateau ?

Ensuite un joueur gagne si on a par exemple l'écran suivant:

Code


l---------------------l
l          N          l
l                     l
l                     l
l                     l
l O                 C l
l                     l
l                     l
l          S          l
l---------------------l


Ici E a gagné n'est-ce pas ?

Si on a cet écran alors les 2 joueurs sont en finale:

Code

l---------------------l
l          N          l
l                     l
l               C     l
l                     l
l O                 E l
l                     l
l                     l
l          S          l
l---------------------l



Ici N et E seront en finale:

Code

l---------------------l
l          N          l
l                     l
l                     l
l                     l
l          C          l
l                     l
l                     l
l          E          l
l---------------------l


Et on continue jusqu'à avoir un gagnant (N ou E)

J'ai rien oublié ??

  Haut de page Bas de page 
 
m@thieu41



Autorisation : Membre
Nb de messages : 848
Inscrit le : Mer 18 Juil 2012, 18:44
Posté le : Sam 18 Juil 2015, 13:42   Citer 

J'ai du mal à comprendre l'énoncé...
Comment se déplace le curseur ?

Ne suffit-il pas de tirer un nombre entre 1 et 8 (4 côtés et 4 sommets), puis d'afficher le gagnant/la finale en conséquence ?

----------------------
Pour vous aidez dans vos débuts (et même ensuite ^^) :
*Tuto Algo->Ti Basic (par Linkakro) : Traduisez vos algo (de type algobox) en prgm pour votre TI!
*Catalogue des emplacements et traductions (anglais/français) des fonctions sur la TI.
*Faites vos propres programmes de maths (par ash)

Et au fait: la politesse n'a jamais tué personne winkle.gif
 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
monsalbert
Invité
Posté le : Lun 20 Juil 2015, 17:41   Citer 

comment je vois les choses:

on a 2 axes Cx et Cy (I et J vecteurs unitaires ) C(0,0)
les coordonnées des joueurs:

pour N: (I,J) = (0,1)
Osad.gifI,J) = (-1,0)
Ssad.gifI,J) = (0,-1)
E(I,J) = (1,0)

entAleat(1,4 est le "moteur" : s'il fait 4 par exemple , d'après le code :
(0,0)+ (1,0) donne (1,0) donc E gagne.

une finale quand se fait (1,1) ou (1,-1)
Un arrêt du jeu quand se fait un ( 2,0) par exemple.
Je n'affirme rien. Le premier joueur est-il sûr de gagner? ( plaisant?)

Tout de même celui qui a donné ce code avec autant d'infos!...Peut-on faire une ébauche de code ?

  Haut de page Bas de page 
 
Kelk'1
Invité
Posté le : Ven 24 Juil 2015, 2:14   Citer 

Oui bien-sûr que c'est faisable, c'est juste que je voulais avoir des explications claires pour pouvoir faire le programme le plus proche de celui de ton élève

Malheureusement, je pars en vacances goutte.gif , je serais donc loin de mon pc et d'internet d'ici demain et ce pour un certain temps.

Je n'ai entre autres pas le temps de t'écrire le programme maintenant (je dois encore faire mes valises, etc...), désolé cry.gif

Si tu n'es pas pressé(e), je peux te l'écrire directement quand je reviendrai (fin août), vu que je vais rien faire pendant 1 mois, j'ai le temps de me pencher là dessus.


ou sinon M@thieu41 peut te le faire à ma place (si ça ne le dérange pas)

C'est comme tu veux.

  Haut de page Bas de page 
 
monsalbert
Invité
Posté le : Ven 24 Juil 2015, 10:20   Citer 

entendu fais celà pendant les vacances. C'est bien aussi. si Mathieu le fait, il aura son " point de vue ". Et avoir 2 points de vue différents celà me plait bien.
bonnes vacances.

  Haut de page Bas de page 
 
m@thieu41



Autorisation : Membre
Nb de messages : 848
Inscrit le : Mer 18 Juil 2012, 18:44
Posté le : Ven 24 Juil 2015, 11:40   Citer 

Voici une ébauche de code :


Code

//Le Jeu
0->I
0->J

While 2!=abs(I)+abs(J //Tant qu'il n'y a pas finale ou gain d'un joueur
entAléat(0,3->M
If not(M
I+1->I
If M=1
I-1->I
If M=2
J+1->J
If M=3
J-1->J
Disp I
Pause J
End

//Si on est en finale
If abs(I)=abs(J
Then

Finale...

End

//On affiche le gagnant
Disp "Gagnant:
.5I+1
Rép+2+(Rép<0



Je ne suis pas sur d'avoir compris le déroulement de la finale par contre...

----------------------
Pour vous aidez dans vos débuts (et même ensuite ^^) :
*Tuto Algo->Ti Basic (par Linkakro) : Traduisez vos algo (de type algobox) en prgm pour votre TI!
*Catalogue des emplacements et traductions (anglais/français) des fonctions sur la TI.
*Faites vos propres programmes de maths (par ash)

Et au fait: la politesse n'a jamais tué personne winkle.gif
 Adresse email Haut de page Bas de page 
 
monsalbert
Invité
Posté le : Dim 26 Juil 2015, 0:50   Citer 

bonsoir Mathieu,

- je ne comprends pas cette commande: While 2! = abs(I) + abs(J). on est dans le cas ou le curseur arrive sur un côté ( genre I=1, J=+1 ou -1 ) et donc à l'arrêt; de plus ne manque t-il pas la 2 ème partie "qu'il ne soit pas sur un sommet abs (I-J) < 2
que signifie le " ! ".
en un mot je ne retrouve pas le while de l'énoncé

- comment se déroule la partie je comprends pas du tout comme se passent les choses.
( ni sur l'énoncé ni sur ton code ) on clique, on clique, on clique,.. et alors? et les joueurs comment ça se passent?

- je ne comprends pas pourquoi tu Disp gagnant, sans condtion, ni la suite 0.5 I+1 ni Rep +2 +( Rep < 1

autrement dit la situation est tragique!!

Des essais pour voir, avec ton code donnent

* Disp I et Pause J ne s'affichent pas
* à chaque clic, l'écran affiche " GAGNANT .5I+1 et dessous 2

  Haut de page Bas de page 
 
m@thieu41



Autorisation : Membre
Nb de messages : 848
Inscrit le : Mer 18 Juil 2012, 18:44
Posté le : Dim 26 Juil 2015, 11:58   Citer 

Bonjour,

Je ne me suis pas préoccupé du while de l'énoncé : il est incomplet, et ne correspond pas à ce qu'on veut obtenir.

!= représente simplement le simbole différent de.

Du coup "2 != abs(I) + abs(J)" vaudra vrai tant qu'on est pas sur un coin (car on aura I = +- 1 (idem pour J) donc abs(I) + abs(J) = 1 + 1 = 2) ou sur un côté (on a l'une des variable qui vaut +- 2, l'autre 0, la somme des valeurs absolues fait donc 2).

Ceci correspond à
"une finale quand se fait (1,1) ou (1,-1)
Un arrêt du jeu quand se fait un ( 2,0) par exemple."


J'ai fait le déroulement d'une partie d'après ce que tu m'as dit (ou du moins ce que j'ai compris crazy.gif ) : un curseur se déplace, on a une finale s'il atteint (1, 1), (-1, 1), (-1, -1), (1, -1) et une victoire si (0, 2), (2, 0), (-2, 0), (0, -2).


Je ne Disp pas gagnant sans condition : on est passé par la phase de jeu. Ensuite, j'ai traité le cas de la finale (mais je ne sais pas ce qu'on est sensé faire en finale...). Donc après ça on a forcément un gagnant.
Je considère qu'on a alors (vrai pour la phase de jeu, finale à faire) l'une des variable I ou J qui vaut +- 2, l'autre 0.
.5I+1
Rép+2+(Rép<0
permet simplement d'obtenir un nombre entre 1 et 4, différent pour chaque cas.


"à chaque clic, l'écran affiche " GAGNANT .5I+1 et dessous 2"
Ce n'est pas normal. As-tu recopié ceci tel quel ? Avec une nouvelle instruction pour le .5I+1 ?

Code
Disp "Gagnant:
.5I+1
Rép+2+(Rép<0




Par contre je n'ai pas du tout compris le déroulement d'une finale...

----------------------
Pour vous aidez dans vos débuts (et même ensuite ^^) :
*Tuto Algo->Ti Basic (par Linkakro) : Traduisez vos algo (de type algobox) en prgm pour votre TI!
*Catalogue des emplacements et traductions (anglais/français) des fonctions sur la TI.
*Faites vos propres programmes de maths (par ash)

Et au fait: la politesse n'a jamais tué personne winkle.gif
 Adresse email Haut de page Bas de page 
 
monsalbert
Invité
Posté le : Lun 27 Juil 2015, 10:32   Citer 

" ! " i'ai cru factorielle. ( symbole curieux )

- d'accord pour (1,1 ), (1,-1 ), (-1,1 ), (-1,(-1,-1 ) :finale
(2,0) , (0,2), (-2,0), (0,-2) victoire
correspond bien au while. Pour ces valeurs TI s'arrête. Donc on doit cliquer tant qu'elle ne s'arrête pas ( juste?)

- avec Pause et Disp on sait dans quel cas on est. si abs (I )= ab(J) on repart à 0,0 por la finale.
si (2,0) , (0,2), ...elle affiche (1,2,3,ou 4)

- je ne comprends pas pour le gain: instruction sur I seul? et J?
( je fais le même code )


Pour les essais toujours pareil. Très curieux: Disp et Pause n'affichent pas I et J.
Un SEUL clic et TI affiche : gagnant et 2 toujours

  Haut de page Bas de page 
 
m@thieu41



Autorisation : Membre
Nb de messages : 848
Inscrit le : Mer 18 Juil 2012, 18:44
Posté le : Lun 27 Juil 2015, 11:37   Citer 

Oui le curseur se déplace bien aléatoirement ?

Je me suis trompé en recopiant dans un terme...

Code
Disp "Gagnant:
.5I+J
Rép+2+(Rép<0



"Disp et Pause n'affichent pas I et J."
Comment ça?
Rien ne s'affiche ?

Un seul tour de boucle me parait étrange : le terme abs(I) + abs(J) ne peut augmenter que d'un à chaque tour...

!= est utilisé dans d'autre langage pour différent de, faute de mieux c'est ce qui est utilisé généralement sur le forum.

----------------------
Pour vous aidez dans vos débuts (et même ensuite ^^) :
*Tuto Algo->Ti Basic (par Linkakro) : Traduisez vos algo (de type algobox) en prgm pour votre TI!
*Catalogue des emplacements et traductions (anglais/français) des fonctions sur la TI.
*Faites vos propres programmes de maths (par ash)

Et au fait: la politesse n'a jamais tué personne winkle.gif
 Adresse email Haut de page Bas de page 
 
monsalbert
Invité
Posté le : Mar 28 Juil 2015, 19:17   Citer 

On approche!!

- puisque:
" finale s'il atteint (1, 1), (-1, 1), (-1, -1), (1, -1) et une victoire si (0, 2), (2, 0), (-2, 0), (0, -2)."
il faut que abs(I) + abs (J) <2 (j'ai noté que tu n'étais pas affirmatif sur"!="

un essais confirme, tout marche.C'est vérifié pour " I ". Je pense qu'il faut les même instruction pou "J". (Calculs pour I vérifiés.)

  Haut de page Bas de page 
 
m@thieu41



Autorisation : Membre
Nb de messages : 848
Inscrit le : Mer 18 Juil 2012, 18:44
Posté le : Mar 28 Juil 2015, 21:37   Citer 

< ou != auront le même effet.

Vérifie pour I mais pas pour J ? Je ne comprend pas...

----------------------
Pour vous aidez dans vos débuts (et même ensuite ^^) :
*Tuto Algo->Ti Basic (par Linkakro) : Traduisez vos algo (de type algobox) en prgm pour votre TI!
*Catalogue des emplacements et traductions (anglais/français) des fonctions sur la TI.
*Faites vos propres programmes de maths (par ash)

Et au fait: la politesse n'a jamais tué personne winkle.gif
 Adresse email Haut de page Bas de page 
 
monsalbert
Invité
Posté le : Mer 29 Juil 2015, 19:53   Citer 

_ le code fonctionne avec < pas avec != .

- sinon le code fonctionne mais pour les parties gagnées les résultats sont:

J=0 et I = -2 -> sommet gagnant: 2
I = 2 -> sommet gagnant: 3

avec I = 0 et J = -2 -> sommet gagnant: 1
J = 2 -> sommet gagnant: 4

est-tu d'accord avec ces résultats?

bien sur on peut modifier l'énoncé mais si on tient compte de l'énoncé on doit avoir
0, 2 sommet gagnant: N (1)
-2, 0 sommet gagnant: O (2)
0, -2 sommet gagnant: S (3)
2, 0 sommet gagnant: E (4)

  Haut de page Bas de page 
 
m@thieu41



Autorisation : Membre
Nb de messages : 848
Inscrit le : Mer 18 Juil 2012, 18:44
Posté le : Mer 29 Juil 2015, 21:55   Citer 

_Ce n'est pas normal.
au début abs(I)+abs(J) = 0
Comme ce terme ne peut augmenter que d'un a chaque tour de boucle, on a, pour un tour donné : abs(I)+abs(J) < 2 depuis le début ssi abs(I)+abs(J) != 2 depuis le début.
Donc "< 2" et "!= 2" doivent avoir le même comportement. Non?

_On peut tout à fait modifier cet affichage.
J'avoue ne pas avoir fait attention à l'énoncé pour la répartition des joueurs.
Je n'ai pas cherché une fonction qui satisferait ce qu'on veut:

Code
3
If I=2
4
If I=-2
2
If J=2
1
Disp "Gagnant:
Rép


(j'utilise la "variable" Rép (Ans en anglais) qui stocke le dernier "calcul" effectué.)

----------------------
Pour vous aidez dans vos débuts (et même ensuite ^^) :
*Tuto Algo->Ti Basic (par Linkakro) : Traduisez vos algo (de type algobox) en prgm pour votre TI!
*Catalogue des emplacements et traductions (anglais/français) des fonctions sur la TI.
*Faites vos propres programmes de maths (par ash)

Et au fait: la politesse n'a jamais tué personne winkle.gif
 Adresse email Haut de page Bas de page 
 
monsalbert
Invité
Posté le : Jeu 30 Juil 2015, 10:35   Citer 

- nous sommes donc d'accord sur ce code d'énoncé assez spécial .
Remarque, as tu une idée du rôle de K à part celui de compter "les coups "? pas de donner le vainqueur en tout cas, ce qui est curieux.

- pour "!="
j'ai essayé avec le différent de la TI : " =/= ", pas de problème.
le " ! " c'est bien le factorielle de MATH ?

  Haut de page Bas de page 
 
m@thieu41



Autorisation : Membre
Nb de messages : 848
Inscrit le : Mer 18 Juil 2012, 18:44
Posté le : Jeu 30 Juil 2015, 12:16   Citer 

K fait seulement ce que tu as dit - compter les coups.

"!=" represente le symbole "different de", désolé si je me suis mal exprimé.

----------------------
Pour vous aidez dans vos débuts (et même ensuite ^^) :
*Tuto Algo->Ti Basic (par Linkakro) : Traduisez vos algo (de type algobox) en prgm pour votre TI!
*Catalogue des emplacements et traductions (anglais/français) des fonctions sur la TI.
*Faites vos propres programmes de maths (par ash)

Et au fait: la politesse n'a jamais tué personne winkle.gif
 Adresse email Haut de page Bas de page 
 
monsalbert
Invité
Posté le : Jeu 06 Aoû 2015, 20:12   Citer 

bonjour Mathieu

le code marche bien, voici un essais de partie (avec des Disps où il convient , en ajoutant K)

( I, J )
0,-1
0, 0
-1, 0
0, 0
-1, 0
-1, -1 bilan final, K= 6

finale1
0;1
1,1 K=2

finale2
0; -1
1; -1 K= 2

finale3
0,1
0,2 K= 2 vainqueur Est ( 4, Nord est 1)


Juste une question sur les "end " : je compare le code des Diviseurs à celui ci:
- dans le 1er tout est carré: nous avons un For et 2 If ( chacun rédigé normalement ) On a 3 " end " un pour For, 2 pour les If

- dans le code du jeu, il y a un While et 2 If si on peut dire.
Je compte la première série de If pour 1 -> il a son end
deuxième If (pour la finale ) -> il a son end

après il y a la serie des If que tu as ajouter pour identification des joueurs -> pas de end

et surtout While n'a pas de end ( j'en ai mis un, la TI l'a refusé )!

Peux tu m'expliquer ces écritures. Merci.

  Haut de page Bas de page 
 
m@thieu41



Autorisation : Membre
Nb de messages : 848
Inscrit le : Mer 18 Juil 2012, 18:44
Posté le : Jeu 06 Aoû 2015, 22:58   Citer 

Concernant les boucles/structures en ti basic:

While necessite toujours un end.
Repeat/For aussi.

Le if est particulier:

If condition
Instruction

If condition
Then
Plusieurs instructions
End

If condition
Then
Instructions1
Else
Instructions2
End

Un if seul ne concerne que l'instruction qui suit directement. Il n'y a pas besoin de then/end. (on peut ruser avec les delVar mais ce n'est pas le sujet).
Par contre, si tu veux englober plusieurs instructions, ou mettre un else, il faut rajouter un then et le end final.

----------------------
Pour vous aidez dans vos débuts (et même ensuite ^^) :
*Tuto Algo->Ti Basic (par Linkakro) : Traduisez vos algo (de type algobox) en prgm pour votre TI!
*Catalogue des emplacements et traductions (anglais/français) des fonctions sur la TI.
*Faites vos propres programmes de maths (par ash)

Et au fait: la politesse n'a jamais tué personne winkle.gif
 Adresse email Haut de page Bas de page 
 
monsalbert
Invité
Posté le : Mer 26 Aoû 2015, 12:53   Citer 

Bonjour Mathieu;

Reprise après quelques jours sur " la grande bleue " ..

Merci pour ces informations sur If, For, While, Repeat. If surtout..

  Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
Kelk'1
Invité
Posté le : Lun 31 Aoû 2015, 10:13   Citer 

Oui c'est bien ce factoriel là

  Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Page générée en 9 requêtes