π
<-

le plus petit snake...

Programmation et implémentation d'algorithmes.

le plus petit snake...

Unread postby 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: Select all
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:
User avatar
natha
Niveau 5: MO (Membre Overclocké)
Niveau 5: MO (Membre Overclocké)
Level up: 92%
 
Posts: 23
Joined: 17 Sep 2006, 00:00
Gender: Male
Calculator(s):
MyCalcs profile

Re: le plus petit snake...

Unread postby 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.
User avatar
tama
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 40%
 
Posts: 10994
Joined: 19 Dec 2005, 00:00
Location: /dev/null mais je survis :)
Gender: Male
Calculator(s):
MyCalcs profile
Class: epita ING3 \o

Re: le plus petit snake...

Unread postby 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: Select all
():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?
User avatar
natha
Niveau 5: MO (Membre Overclocké)
Niveau 5: MO (Membre Overclocké)
Level up: 92%
 
Posts: 23
Joined: 17 Sep 2006, 00:00
Gender: Male
Calculator(s):
MyCalcs profile

Re: le plus petit snake...

Unread postby loko » 30 Sep 2007, 14:16

Heu, juste pourquoi vouloir faire le snake le plus petit possible?
User avatar
loko
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Level up: 4%
 
Posts: 11
Joined: 09 Sep 2007, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: 1S

Re: le plus petit snake...

Unread postby 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
User avatar
ProgVal
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 60.7%
 
Posts: 2747
Joined: 05 Jul 2007, 00:00
Location: Metz
Gender: Male
Calculator(s):
MyCalcs profile
Class: Terminale S SI (Sciences de l'Ingénieur)

Re: le plus petit snake...

Unread postby 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 !
User avatar
Yak
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 70.8%
 
Posts: 3382
Joined: 04 Feb 2005, 00:00
Location: Le nez dans mon ordi
Gender: Male
Calculator(s):
MyCalcs profile
Class: PSI

Re: le plus petit snake...

Unread postby 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
User avatar
ProgVal
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 60.7%
 
Posts: 2747
Joined: 05 Jul 2007, 00:00
Location: Metz
Gender: Male
Calculator(s):
MyCalcs profile
Class: Terminale S SI (Sciences de l'Ingénieur)

Re: le plus petit snake...

Unread postby 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.
User avatar
tama
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 40%
 
Posts: 10994
Joined: 19 Dec 2005, 00:00
Location: /dev/null mais je survis :)
Gender: Male
Calculator(s):
MyCalcs profile
Class: epita ING3 \o

Re: le plus petit snake...

Unread postby ProgVal » 30 Sep 2007, 18:02

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

Image
User avatar
ProgVal
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 60.7%
 
Posts: 2747
Joined: 05 Jul 2007, 00:00
Location: Metz
Gender: Male
Calculator(s):
MyCalcs profile
Class: Terminale S SI (Sciences de l'Ingénieur)

Re: le plus petit snake...

Unread postby 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.
User avatar
tama
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 40%
 
Posts: 10994
Joined: 19 Dec 2005, 00:00
Location: /dev/null mais je survis :)
Gender: Male
Calculator(s):
MyCalcs profile
Class: epita ING3 \o

Next

Return to Programmation

Who is online

Users browsing this forum: ClaudeBot [spider] and 4 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.
2579 utilisateurs:
>2557 invités
>15 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)