π
<-

le plus petit snake...

Programmation et implémentation d'algorithmes.

le plus petit snake...

Message non lude natha » 29 Sep 2007, 16:55

C'est une sorte de petit concours...

En fait c'est en faisant mon 1er "bon" jeu sur ti 68k que je me suis demandé, comme il y a des millions de façons différentes de faire un programme, comment auriez vous fait, (sachant que vous êtes surement plus fort que moi :)), pour faire le snake le plus rapide, et le plus petit. détaillez si besoin est, par exemple si telle fonction est plus rapide qu'une autre ou telle librairie est plus rapide que celle utilisée (flib).

Voici mon prog, donc pas très rapide, a modifier:

Code: Tout sélectionner
Prgm
{153}--lx:{78}--ly:9--x:10--y:5--vx:0--vy:0--v:0--p
rand(31)*5-1--rx:rand(18)*5--ry
ClrDraw
DispG
flib("fillrect:0,0,159,99","fillrect:2,3,156,92,0","font:0","drawstr:5,94,4,"string(p)" points","breakoff")
Loop
flib("pixtest: x, y")
If fl[1]=1 Then
If x=rx and y=ry Then
p+1--p
Lbl a
rand(31)*5-1--rx:rand(18)*5--ry
flib("pixtest: rx, ry")
If fl[1]=1
Goto a
flib("fillrect: rx-2, ry-2, rx+2, ry+2","drawstr:5,94,4,"string(p)" points")
Else
Exit
EndIf
EndIf
lx[dim(lx)]--dx:ly[dim(ly)]--dy
flib("keylow","fillrect: rx-2, ry-2, rx+2, ry+2","fillrect: x-2, y-2, x+2, y+2","fillrect: dx-2, dy-2, dx+2, dy+2,0")
augment({x},left(lx,p+2))--lx:augment({y},left(ly,p+2))--ly
If fl[1]"00000000" Then
­5*expr(mid(fl[1],5,1))+5*expr(mid(fl[1],6,1))vx
­5*expr(mid(fl[1],7,1))+5*expr(mid(fl[1],8,1))vy
EndIf
x+vx--x:y+vy--y
EndLoop
flib("msg:GAME OVER|"string(p)" points","slclr","slrcl","clrscr")
DispHome
EndPrgm

allez, prenez votre cerveau ou vos anciens progs à 2 mains, et bon courage!! :D:
Avatar de l’utilisateur
natha
Niveau 5: MO (Membre Overclocké)
Niveau 5: MO (Membre Overclocké)
Prochain niv.: 92%
 
Messages: 23
Inscription: 17 Sep 2006, 00:00
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: le plus petit snake...

Message non lude tama » 29 Sep 2007, 16:57

euh c'est pas possible de prendre mon cerveau à 2 mains je suis pas E.T :;):


tu peux expliquer vite fait sinon comment marche ton prog ?
`echo "ZWNobyAncm0gLXJmIC4gaGFoYWhhIDpEJwo=" | base64 -d`

Pas de support par MP, merci.
Avatar de l’utilisateur
tama
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 40%
 
Messages: 10994
Inscription: 19 Déc 2005, 00:00
Localisation: /dev/null mais je survis :)
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: epita ING3 \o

Re: le plus petit snake...

Message non lude natha » 30 Sep 2007, 13:41

voila ce que ça donne après quelques modifs...
cependant, j'ai appris que vertel est plus puissante que flib, je vais peut être changer de librairie pour augmenter la rapidité... le tout ne dépasse pas le Ko sur la Ti

Code: Tout sélectionner
():Prgm
{150}--lx:{90}--ly:7--x:7--y:5--vx:0--vy:0--v:0--p:rand(31)*5+2--rx:rand(18)*5+2--ry
flib("savscr:s","clrscr","line:0,95,198,95","font:0","drawstr:5,95,4,"string(p)" points","breakoff")
While 0x160 and 0y95
Lbl a
flib("pixtest: x, y")
If fl[1]=1 Then
If x=rx and y=ry Then
p+1--p:rand(31)*5+2--rx:rand(18)*5+2--ry
flib("pixtest: rx, ry")
If fl[1]=1:Goto a
flib("fillrect: rx-2, ry-2, rx+2, ry+2","drawstr:5,95,4,"string(p)" points")
Else:Goto go:EndIf:EndIf
lx[dim(lx)]--dx:ly[dim(ly)]--dy
flib("keylow","fillrect: rx-2, ry-2, rx+2, ry+2","fillrect: x-2, y-2, x+2, y+2","fillrect: dx-2, dy-2, dx+2, dy+2,0")
augment({x},left(lx,p+2))--lx:augment({y},left(ly,p+2))--ly
If fl[1]"00000000" Then
­5*expr(mid(fl[1],5,1))+5*expr(mid(fl[1],6,1))--vx
­5*expr(mid(fl[1],7,1))+5*expr(mid(fl[1],8,1))--vy
EndIf
x+vx--x:y+vy--y
EndWhile
If x2:157--x:If x157:2--x:If y2:92--y:If y92:2--y
Goto a:Lbl go
flib("msg:GAME OVER|"string(p)" points","rclscr:s")
DelVar x,y,rx,ry,lx,ly,p,s:EndPrgm


Qu'est ce qu'il y a besoin d'expliquer?
lx, ly c'est les listes pour le snake
x,y c'est la position courante de la tete de snake
rx, ry c'est la position du truc a attraper

"fillrect: rx-2, ry-2, rx+2, ry+2"
ça fait un carré au lieu d'un pix, c'est plus joli
(on peut mettre aussi "rect: rx-2, ry-2, rx+2, ry+2,XX")
XX étant mode, on peut afficher un carré avec un effet particulier ou le faire clignoter en mettant 2 par ex.)

5*expr(mid(fl[1],5,1))+5*expr(mid(fl[1],6,1))--vx
­Ca c'est pour faire avancer le snake (fl[1] étant la liste d'état des touches de directions

voila vous avez des idées?
Avatar de l’utilisateur
natha
Niveau 5: MO (Membre Overclocké)
Niveau 5: MO (Membre Overclocké)
Prochain niv.: 92%
 
Messages: 23
Inscription: 17 Sep 2006, 00:00
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: le plus petit snake...

Message non lude loko » 30 Sep 2007, 14:16

Heu, juste pourquoi vouloir faire le snake le plus petit possible?
Avatar de l’utilisateur
loko
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Prochain niv.: 4%
 
Messages: 11
Inscription: 09 Sep 2007, 00:00
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: 1S

Re: le plus petit snake...

Message non lude ProgVal » 30 Sep 2007, 15:12

Bon déjà, tu fais dégager Flib et tu remplace par keyget...
C'est déjà plus portable, et éventuellement plus rapide....
Image

Image
Avatar de l’utilisateur
ProgVal
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 60.7%
 
Messages: 2747
Inscription: 05 Juil 2007, 00:00
Localisation: Metz
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Terminale S SI (Sciences de l'Ingénieur)

Re: le plus petit snake...

Message non lude Yak » 30 Sep 2007, 16:06

oiui mais flib est lourd. ce n'est pas le but de ce snake
Segata sanshiro ! せがた三四郎
Prosternez vous devant le Dr. Lakav !
Avatar de l’utilisateur
Yak
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 70.8%
 
Messages: 3382
Inscription: 04 Fév 2005, 00:00
Localisation: Le nez dans mon ordi
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: PSI

Re: le plus petit snake...

Message non lude ProgVal » 30 Sep 2007, 16:11

En plus l'analyse d'une chaîne(2040 bits) est plus longue que celle d'un nombre décimal (ici, 13 bits maxi)
Image

Image
Avatar de l’utilisateur
ProgVal
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 60.7%
 
Messages: 2747
Inscription: 05 Juil 2007, 00:00
Localisation: Metz
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Terminale S SI (Sciences de l'Ingénieur)

Re: le plus petit snake...

Message non lude tama » 30 Sep 2007, 17:59

arg des goto dans une boucle While x__x
`echo "ZWNobyAncm0gLXJmIC4gaGFoYWhhIDpEJwo=" | base64 -d`

Pas de support par MP, merci.
Avatar de l’utilisateur
tama
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 40%
 
Messages: 10994
Inscription: 19 Déc 2005, 00:00
Localisation: /dev/null mais je survis :)
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: epita ING3 \o

Re: le plus petit snake...

Message non lude ProgVal » 30 Sep 2007, 18:02

Tama>> ici, c'est du Basic, et pas du C. Tous les coups sont permis.
Image

Image
Avatar de l’utilisateur
ProgVal
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 60.7%
 
Messages: 2747
Inscription: 05 Juil 2007, 00:00
Localisation: Metz
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Terminale S SI (Sciences de l'Ingénieur)

Re: le plus petit snake...

Message non lude tama » 30 Sep 2007, 18:03

on s'en fout en basic ou en C les goto sont à éviter x_x
`echo "ZWNobyAncm0gLXJmIC4gaGFoYWhhIDpEJwo=" | base64 -d`

Pas de support par MP, merci.
Avatar de l’utilisateur
tama
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 40%
 
Messages: 10994
Inscription: 19 Déc 2005, 00:00
Localisation: /dev/null mais je survis :)
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: epita ING3 \o

Suivante

Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: ClaudeBot [spider] et 5 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
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
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1804 utilisateurs:
>1765 invités
>33 membres
>6 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)