π
<-

Manipulation objets graphiques dans les programmes HP-Prime

Re: Manipulation objets graphiques dans les programmes HP-Pr

Unread postby Gilles59 » 13 Aug 2013, 23:04

j'ai récupéré une Prime de pré-série :D
Ca va... vite ;)

Code: Select all
EXPORT Defender()
BEGIN
LOCAL xv:=10,yv:=20;
DIMGROB_P(G1,640, 48);
DIMGROB_P(G2,320,240);
Y:=32;
FOR X:=0 TO 640 DO
  Y:=MIN(MAX(Y-1+IP(RANDOM(3)),0),47);
  LINE_P(G1,X,48,X,48-Y);
END;
RECT();
FOR X:=0 TO (640-64) DO
  xv:=MIN(MAX(xv+5*(ISKEYDOWN(8)-ISKEYDOWN(7)),0),309);
  yv:=MAX(yv+5*(ISKEYDOWN(12)-ISKEYDOWN(2)),0);
  BLIT_P(G2,0,0,320,240,G1,X,0,X+64,48);
  IF GETPIX_P(G2,xv+10,yv+5)==0 THEN BREAK; END;
  RECT_P(G2,xv,yv,xv+10,yv+5,0,#20B2AAh);
  BLIT_P(G0,G2);
END;
FOR N:=1 TO 100 DO INVERT_P; END;
END;


Lien vers la video (désolé c'est pourri mais mon tel déteste la lumière artificielle- Mais ca donne une idée).
http://www.dailymotion.com/video/x132v9e_defender_tech

Edit : j'ajoute que le prog fait ... 1 ko
Last edited by Gilles59 on 14 Aug 2013, 07:04, edited 1 time in total.
User avatar
Gilles59
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Level up: 93.3%
 
Posts: 12
Joined: 09 Aug 2013, 09:32
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Ingénieur - y'a longtemps lol

Re: Manipulation objets graphiques dans les programmes HP-Pr

Unread postby Lionel Debroux » 14 Aug 2013, 06:45

Très bien ;)
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
User avatar
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 11.3%
 
Posts: 6865
Joined: 23 Dec 2009, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Class: -
GitHub: debrouxl

Re: Manipulation objets graphiques dans les programmes HP-Pr

Unread postby Gilles59 » 14 Aug 2013, 21:26

Une version avec un sprite de 45x22

C'est toujours aussi rapide :O

J'espère qu'il y aura d'autre façon de sauvegarder des images que des codes hex car c'est bien lourd, surout quand on voit la taille pour 1 sprite !..Mais çà marche :D

Code: Select all
EXPORT Defender2()
BEGIN
LOCAL xv:=10,yv:=20;
DIMGROB_P(G1,700, 48);
DIMGROB_P(G2,320,240);
Y:=32;
FOR X:=0 TO 700 DO
  Y:=MIN(MAX(Y-1+IP(RANDOM(3)),0),42);
  IF X>640 THEN Y:=48 END;       
  LINE_P(G1,X,48,X,48-Y);
END;
DIMGROB_P(G3,45,22,{ #849B849B849B849B:64, #849B849B849B849B:64, #849B849B849B849B:64, #849B849B849B849B:64, #849B849B849B849B:64, #849B849B849B849B:64, #849B849B849B849B:64, #849B849B849B849B:64, #849B849B849B849B:64, #849B849B849B849B:64, #849B849B849B849B:64, #849B849B849B849B:64, #849B849B849B849B:64, #849B849B849B849B:64, #73003100849B849B:64, #3100730071044100:64, #3100730031007300:64, #3100730031007300:64, #7300310073007104:64, #849B310073003100:64, #849B849B849B849B:64, #849B849B849B849B:64, #849B849B849B849B:64, #849B849B849B849B:64, #849B849B849B849B:64, #73006200849B849B:64, #7300740C72907104:64, #7300740C7300740C:64, #7300740C7300740C:64, #6200620041006200:64, #3100310031000100:64, #3100310031003100:64, #849B849B849B849B:64, #849B849B849B849B:64, #3100849B849B849B:64, #3100410031006200:64, #3100620031006200:64, #3100620031006200:64, #3100620031006200:64, #6200620031007300:64, #0100010001006200:64, #6200620062003100:64, #6200620062006200:64, #849B310031006200:64, #849B849B849B849B:64, #6200849B849B2210:64, #3100710431007300:64, #7300740C73007300:64, #7300740C7300740C:64, #7300740C7300740C:64, #730073007300740C:64, #0100221001003100:64, #6200730062006200:64, #6200730062007300:64, #6200620062007300:64, #849B849B849B3100:64, #620043184318849B:64, #72907290740C7300:64, #740C740C740C7300:64, #740C740C740C740C:64, #740C749C740C749C:64, #740C740C749C749C:64, #0100310062007300:64, #6200730062006200:64, #7300730073007300:64, #740C310062007300:64, #849B310062006200:64, #2210641C849B849B:64, #7104740C73006200:64, #7300730073007104:64, #7300730073007300:64, #7300730073007300:64, #73007300740C7300:64, #62000100740C740C:64, #4100410041004100:64, #740C730073007300:64, #010073007300740C:64, #4100730062003100:64, #4318849B849B4100:64, #7300620031002210:64, #7300620071044100:64, #7300620073006200:64, #7300620073006200:64, #7300740C73006200:64, #0100730073007300:64, #4100410041006200:64, #740C410041004100:64, #7300740C749C740C:64, #6200730062007300:64, #849B410041004100:64, #6200310001002210:64, #6200410041006200:64, #6200620062006200:64, #6200620062006200:64, #7300620062006200:64, #6200620062007300:64, #4100410031007300:64, #4100710471047104:64, #740C740C740C4100:64, #740C620073007300:64, #7290749C41004100:64, #849B849B0100849B:64, #4100310062003100:64, #6200310062003100:64, #6200310062003100:64, #6200310062003100:64, #6200310062006200:64, #4100410031003100:64, #7290729071047104:64, #740C740C41007104:64, #6200730073007300:64, #749C41000100740C:64, #849B849B4100749C:64, #31000100849B849B:64, #3100010041000100:64, #3100010031000100:64, #3100010031000100:64, #3100620031000100:64, #4100410031000100:64, #749C729071044100:64, #4100410071047290:64, #6200730073007300:64, #0100010073006200:64, #849B410041004100:64, #0100849B849B849B:64, #7290740C73003100:64, #749C740C740C7300:64, #730031007300740C:64, #7300730001000100:64, #4100410071043100:64, #7104710441004100:64, #4100710471047290:64, #6200730062004100:64, #0100730062007300:64, #410071044100749C:64, #849B849B849B849B:64, #4100310062003100:64, #6200310062003100:64, #6200310062003100:64, #6200310062003100:64, #6200310073003100:64, #4100410041004100:64, #4100710471047104:64, #6200730041004100:64, #7300620062007300:64, #7104410001000100:64, #0100849B22104100:64, #7104310073006200:64, #740C730073003100:64, #740C7300740C7300:64, #740C7300740C7300:64, #73007300740C7300:64, #4100410031007300:64, #4100410041004100:64, #6200730041004100:64, #6200620062007300:64, #4100410001006200:64, #4318431841007290:64, #7290740C73006200:64, #740C740C73007290:64, #740C740C740C740C:64, #749C740C749C740C:64, #740C749C749C740C:64, #310062007300740C:64, #4100410041004100:64, #6200410041004100:64, #6200620062006200:64, #4100410062006200:64, #641C849B71047104:64, #740C730062002210:64, #7300730071047104:64, #7300730073007300:64, #7300730073007300:64, #7300740C73007300:64, #0100740C740C7300:64, #4100410071046200:64, #6200710441004100:64, #6200620062006200:64, #6200620031006200:64, #849B410072907104:64, #6200310022104318:64, #6200710441007300:64, #6200730062007300:64, #6200730062007300:64, #740C730062007300:64, #7300730073007300:64, #7104729062000100:64, #3100620071047104:64, #6200620062006200:64, #3100010001006200:64, #849B410041006200:64, #310001002210849B:64, #4100410062006200:64, #6200620062006200:64, #6200620062006200:64, #6200620062006200:64, #6200620073007300:64, #0100310073006200:64, #3100620031003100:64, #3100620031006200:64, #7300010031006200:64, #849B010031006200:64, #849B0100849B849B:64, #310062003100849B:64, #3100620031004100:64, #3100620031006200:64, #3100620031006200:64, #3100620062006200:64, #0100310031006200:64, #3100310001002210:64, #3100620031003100:64, #3100620031006200:64, #849B010031003100:64, #849B849B849B849B:64, #0100849B849B849B:64, #0100410001003100:64, #0100310001003100:64, #0100310001003100:64, #6200310001003100:64, #6200310001003100:64, #0100010001006200:64, #3100310031000100:64, #3100310031003100:64, #849B010001003100:64, #849B849B849B849B:64, #849B849B849B849B:64, #849B849B849B849B:64, #849B849B849B849B:64, #7290710473006200:64, #7300740C7300740C:64, #7300740C7300740C:64, #410062007300740C:64, #0100010062006200:64, #0100010001000100:64, #849B849B01000100:64, #849B849B849B849B:64, #849B849B849B849B:64, #849B849B849B849B:64, #849B849B849B849B:64, #73003100849B849B:64, #3100730071044100:64, #3100730031007300:64, #3100730031007300:64, #7300310073007104:64, #849B310073003100:64, #849B849B849B849B:64, #849B849B849B849B:64, #849B849B:64 });

RECT();
FOR X:=0 TO 700 DO
  xv:=MIN(MAX(xv+5*(ISKEYDOWN(8)-ISKEYDOWN(7)),0),309);
  yv:=MAX(yv+5*(ISKEYDOWN(12)-ISKEYDOWN(2)),0);
  BLIT_P(G2,0,0,320,240,G1,X,0,X+64,48);
  IF GETPIX_P(G2,xv+45,yv+22)==0 THEN BREAK; END;
  BLIT_P(G2,xv,yv,G3);
  BLIT_P(G0,G2);
END;
FOR N:=1 TO 100 DO INVERT_P; END;
END;

END;


Trop rapide avec l'émulateur. On peut ajouter des WAIT mais le clavier répond moins bien.De plus le hdw gére bien les diagonales (fleche haut et droite en mêmetemps par ex. , l'émulateur non )
User avatar
Gilles59
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Level up: 93.3%
 
Posts: 12
Joined: 09 Aug 2013, 09:32
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Ingénieur - y'a longtemps lol

Re: Manipulation objets graphiques dans les programmes HP-Pr

Unread postby Lionel Debroux » 15 Aug 2013, 06:53

C'est sûr que ce n'est pas très lisible... mais c'est bien que le BASIC soit si rapide :)
A-t-on confirmation de l'utilisation de l'accélérateur 2D présent dans le S3C2416, d'après toutes les datasheets et tous les manuels utilisateur, par l'OS de la Prime ?
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
User avatar
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 11.3%
 
Posts: 6865
Joined: 23 Dec 2009, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Class: -
GitHub: debrouxl

Re: Manipulation objets graphiques dans les programmes HP-Pr

Unread postby Gilles59 » 15 Aug 2013, 10:20

Avec 640000 couleurs(3 octets par pixel), forcément les Sprites prennent de la place avec un codage hexa.On pourrait facilement réduire la taille des Sprite en utilisant une palette de couleur

2couleur => Taille 24 fois plus petites 1 bit = 1 pixel
16 couleur => 6 fois plus petit
256 couleur => 3 fois plus petite

Sans compter le zoom automatique pour réduire encore facilement par 4 sans que ca se voit vraiment (Un sprite 16 couleurs zoomx2 => 24 fois plus 'petit' que mon ex au dessus)

A la réflexion, il y tout ce qu'il faut integré même si pouvoir charger/sauvegarder des fichiers binaires serait top. Reste qu'avec le langage intégré des dev de type Pacman , Tetris, Space invader ... sont largement faisable avec une excellente vitesse (et facile vu le langage très souple)
User avatar
Gilles59
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Level up: 93.3%
 
Posts: 12
Joined: 09 Aug 2013, 09:32
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Ingénieur - y'a longtemps lol

Re: Manipulation objets graphiques dans les programmes HP-Pr

Unread postby Gilles59 » 19 Aug 2013, 14:42

Juste un rapide message. J'ai continué quelques tests qui montrent que la manipulation de graphiques sur la Prime est _très_ rapide même avec le langage intégré. Les copies de de grob (objets graphiques) les uns vers les autres, complétement ou partiellement sont presque instantanés. Ca permet de faire des Sprites et même des scrollings fluides, on peut même zoomer (et dézoomer) en X et Y, un bloc image vers un autre bloc !

Même la manip pixel par pixel est assez rapide.

Par exemple, faire une 'rotation' à 90° d'une image de 100x100 pixels avec un algo aussi bête que :
Pour X:1->100, Pour Y1->100, pixon_p(y,y,getpixel_p(X,Y)) en utilisant 2 grobs prend moins 0,6 sec ! Tout cela en 64000 couleurs

Pour calculer au 1/1000ieme de sec, vous pouvez utiliser TICKS
User avatar
Gilles59
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Level up: 93.3%
 
Posts: 12
Joined: 09 Aug 2013, 09:32
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Ingénieur - y'a longtemps lol

Previous

Return to News HP

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.
947 utilisateurs:
>894 invités
>47 membres
>6 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)