π
<-

Opti-Défi n°2 : Snake

Re: Opti-Défi n°2 : Snake

Unread postby grosged » 09 Jun 2014, 19:53

si, si !! autant pour moi , merci ;)
(je rectifie ça tout de suite)
User avatar
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 30.2%
 
Posts: 770
Images: 75
Joined: 14 Sep 2011, 12:29
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: Opti-Défi n°2 : Snake

Unread postby mdr1 » 10 Jun 2014, 17:00

Dommage que vous postiez déjà vos codes, j'ai à peine commencé le mien. Tant pis, le voici :

Code: Select all
"Ans-X(Ans=X+1)+Xnot(Ans→Y1
"1=sum(L1=X and L2=Ans→Y2
ClrHome
Full
Disp "0  *****
8→I // la tête du serpent
8→dim(L2 // liste des ordonnées
Fill(1,L2
cumSum(L2→L1 // liste des abscisses
4→F // la queue du serpent (deux premières cases des listes : score ; case suivante : nourriture)
4→G
DelVar TDelVar Y1→X // direction actuelle : X pour l'abscisse, Y pour l'ordonnée. T = score
Repeat L1(3)-L1(I) and L2(3)-L2(I // jusqu'à ce que le serpent ne mange pas une nourriture (et que c'est donc un véritable obstacle)

Repeat Y2(L1(3 // jusqu'à ce que le positionnement de la nourriture ne soit pas déjà pris
randInt(1,16→L1(3 // L1(3) = abscisse de la nourriture
randInt(1,8→L2(3 // L2(3) = ordonnée de la nourriture
End // fin du positionnement de la nourriture
Output(Ans,L1(3),8 // Affichage de la nourriture
B
While Y2(A // jusqu'à ce que le serpent fonce dans un obstacle
L1(I→A
L2(I→B
Output(B,A,"* // affichage du morceau de serpent
IS>(I,128 // Incrémentation de la tête
If 0
4→I // qui retourne au début de la liste si elle déborde
Output(L2(F),L1(F),"
0→L1(G
0→L2(G
F→G
IS>(F,128
If 0
4→F
getKey→K
If K
(K=26)-(K=24→X
If K
(K=34)-(K=25→Y
A+X
Y1(16→L1(I
B+Y
Y1(8→L2(I
B
End
G→F
T+1→T
Output(1,1,T
End


Le Full est obligatoire, sinon, votre programme ne respecte pas les consignes.

357 octets, sans optimisation encore. J'espère avoir envoyé la version qui fonctionne.
Image ImageImage
User avatar
mdr1Premium
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 44%
 
Posts: 1083
Images: 12
Joined: 28 Mar 2011, 00:00
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Je voyage toujours en première.

Re: Opti-Défi n°2 : Snake

Unread postby grosged » 10 Jun 2014, 20:12

Hey mdr1 ! je suis en train de parcourir ton listing...Pas mal, tout ça !! :)
ça prouve bien que pour un même thème, on a chacun son approche...personnelle ;)
c'est vrai qu'il y a (encore) moyen d'optimiser :)
Last edited by grosged on 10 Jun 2014, 20:16, edited 1 time in total.
User avatar
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 30.2%
 
Posts: 770
Images: 75
Joined: 14 Sep 2011, 12:29
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: Opti-Défi n°2 : Snake

Unread postby Extra44 » 10 Jun 2014, 20:14

euh je veux pas polémiquer, mais c'est mdr...1 :)
User avatar
Extra44Premium
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 58.4%
 
Posts: 591
Images: 1
Joined: 20 Jan 2011, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: S.I.

Re: Opti-Défi n°2 : Snake

Unread postby grosged » 10 Jun 2014, 20:16

rectifié ;)
User avatar
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 30.2%
 
Posts: 770
Images: 75
Joined: 14 Sep 2011, 12:29
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: Opti-Défi n°2 : Snake

Unread postby mdr1 » 10 Jun 2014, 20:41

Oui, il y a encore moyen d'optimiser mais je n'ai pas vraiment le temps. Puis même en optimisant ma version, on n'arrivera pas à une version légère comme la tienne. Il y a toujours plusieurs manières d'aborder le problème et c'est au moment où l'on code que l'on voit si c'est vraiment ce qui donne le plus compact. J'ai songé à d'autres méthodes mais n'ai pas eu le temps de les concrétiser.

Je viens de survoler ton programme et me suis rendu compte que tu utilises aussi les fonctions ! Je remarque également le "If... End" : l'as-tu appris dans mon tutoriel ?

En tout cas, ça faisait bizarre de refaire un peu de Basic parce que ça devait faire un an que je n'y avais pratiquement pas touché (cruel manque de temps et possession d'une TI-Nspire).

Tu as sans doute remarqué l'utilisation de la commande "IS>" qui est la plus inutile que je connaisse, avec "DS<". C'est la première fois que j'arrive à m'en servir. J'avais tellement envie de m'en servir pour une fois que je me suis un peu forcé... :p

Je remarque que tu affiches la tête du serpent avec un zéro. J'y avais également pensé : ça permet d'économiser un guillemet. Malheureusement, ça ne respecte pas la consigne qui demande de distinguer le score du reste il me semble (je n'ai pas essayé). Je me rends compte que j'ai oublié de gérer le score à trois chiffres dans mon programme.

Pas bête ta technique du "D" pour la position donnée par un seul nombre plutôt que deux.

Une méthode à laquelle j'ai pensé est la suivante : on met dans P le nombre de pas qui s'incrémente à chaque fois. Dans la liste L1 représentant la carte 8*16, lorsque le serpent avance vers une case, on y met P. Pour faire disparaître la queue de la liste, il suffit de faire L1(L1>P-T->L1 avec T la longueur du serpent. Ça enlève une variable.
Image ImageImage
User avatar
mdr1Premium
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 44%
 
Posts: 1083
Images: 12
Joined: 28 Mar 2011, 00:00
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Je voyage toujours en première.

Re: Opti-Défi n°2 : Snake

Unread postby grosged » 10 Jun 2014, 21:11

L'astuce du "If...end" m'a été suggérée par TheMachine02. ;) (à la base, c'était un "Lbl ...Goto ")

Je reconnais que le fait d'utiliser des chiffres pour le corps du serpent/ la nourriture, ça fait brouillon avec le score... je vais y remédier. ;)
(il y a aussi le score qui est effacé par le serpent s'il s'y cogne : ça m'plaît pas, à revoir aussi)

Sinon, concernant l'autre méthode à laquelle tu as pensé, euh... je comprends pas très bien (je pourrais pas te la piquer cette idée ! haha)

Je repars de nouveau sur ton listing, je déchiffre ta gestion des téléporteurs... :)

Édition par mdr1 : attention aux majuscules, à la typographie etc. Et qu'est-ce qu'un "listing" ?
User avatar
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 30.2%
 
Posts: 770
Images: 75
Joined: 14 Sep 2011, 12:29
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: Opti-Défi n°2 : Snake

Unread postby mdr1 » 10 Jun 2014, 21:30

Tu "déchiffres" ma gestion des téléporteurs ? :p
Tout le secret est dans IS>.
Image ImageImage
User avatar
mdr1Premium
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 44%
 
Posts: 1083
Images: 12
Joined: 28 Mar 2011, 00:00
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Je voyage toujours en première.

Re: Opti-Défi n°2 : Snake

Unread postby grosged » 10 Jun 2014, 21:52

aaahhh l'emploi du mot "listing" est révélateur (j'suis comme la mimolette : un demi-vieux haha)
( http://fr.wikipedia.org/wiki/Listing )
User avatar
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 30.2%
 
Posts: 770
Images: 75
Joined: 14 Sep 2011, 12:29
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: Opti-Défi n°2 : Snake

Unread postby mdr1 » 10 Jun 2014, 22:13

Sauf que :

Un listing est un imprimé [...]


ce qui n'est guère le cas ici. :D

Ma méthode pour la liste est de regarder comment elle est modifiée et d'en déduire ce qui s'est produit plutôt que l'inverse. À chaque fois que le serpent avance d'un cran, P augmente de 1. La case de la liste correspondant à la nouvelle position de la tête se voit attribuer la valeur de P. Du coup, ça me permet de virer la queue simplement et de supprimer un des deux "IS> If 0".

Plus encore, on pourrait alors améliorer le serpent et faire couper sa queue quand il se fonce dedans ! Le tout en trois fois rien de plus d'octets...
Image ImageImage
User avatar
mdr1Premium
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 44%
 
Posts: 1083
Images: 12
Joined: 28 Mar 2011, 00:00
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Je voyage toujours en première.

PreviousNext

Return to TI-Basic

Who is online

Users browsing this forum: ClaudeBot [spider] and 7 guests

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
2313 utilisateurs:
>2294 invités
>12 membres
>7 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)