Adaptation prgm DEFI

Ici, on fait dans le petit, le LCD qui déchire sa race, on y cause même calculatrices quand on est en manque !

Modérateur : Politburo

Répondre
Avatar du membre
tyann
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 846
Enregistré le : 06 oct. 2012 14:37

Adaptation prgm DEFI

Message par tyann »

Bonjour
Le jeu que je vous propose est une adaptation pour Hp Prime d'un programme pour Hp 48 parût
dans HAUTE PERFORMANCE n°1 (1992) .
Le but du jeu : l'écran est divisé en 9 parties rectangulaires (3*3), chaque chiffre (1-9)
correspond à une combinaison aléatoire de rectangle qui seront noircis.
A partir d'un écran blanc, il faut noircir les 9 zones, difficulté si une ou plusieurs
zones de l'écran déjà noircies correspondent avec la combinaison du chiffre joué
celles-ci redeviennent blanches.

0 efface l'écran, on peut voir la combinaison d'un chiffre en pressant 'SHIFT' avant.
Pour jouer la combinaison d'un chiffre appuyez sur la touche correspondante.
La solution est en 4 combinaisons maximum.
Appuyez sur 'HELP' pour avoir la première combinaison de la solution, puis les 2 premières
et ainsi de suite : à la quatrième c'est perdu.

'ESC' pour quitter la partie.
Bon amusement.

Code : Tout sélectionner

//by Tyann
#pragma mode( separator(.,;) integer(h32) )
C_noir:=#0h;C_blanc:=#FFFFFF:32h;
C_gris:=#7D7D7D:32h;C_argent:=#CECECE:32h;

help(n,l)
BEGIN
 LOCAL s;
 n:=MIN(n+1,4);
 s:=l({1,n});
 BLIT_P(G2,G0);
 TEXTOUT_P(s,160-8*SIZE(s),116,5,C_gris);
 WAIT(2);
 BLIT_P(G0,G2);
 n;
END;
z_rect(n)
BEGIN
 CASE
  IF n==0 THEN INVERT_P(1,0,106,79); END;
  IF n==1 THEN INVERT_P(107,0,212,79); END;
  IF n==2 THEN INVERT_P(213,0,318,79); END;
  IF n==3 THEN INVERT_P(1,80,106,159); END;
  IF n==4 THEN INVERT_P(107,80,212,159); END;
  IF n==5 THEN INVERT_P(213,80,318,159); END;
  IF n==6 THEN INVERT_P(1,160,106,239); END;
  IF n==7 THEN INVERT_P(107,160,212,239); END;
  IF n==8 THEN INVERT_P(213,160,318,239); END;
 END;
END;
s_rect(n)
BEGIN
 LOCAL c:=C_gris;
 CASE
  IF n==0 THEN RECT_P(G1,0,0,19,19,c);END;
  IF n==1 THEN RECT_P(G1,20,0,39,19,c);END;
  IF n==2 THEN RECT_P(G1,40,0,59,19,c);END;
  IF n==3 THEN RECT_P(G1,0,20,19,39,c);END;
  IF n==4 THEN RECT_P(G1,20,20,39,39,c);END;
  IF n==5 THEN RECT_P(G1,40,20,59,39,c);END;
  IF n==6 THEN RECT_P(G1,0,40,19,59,c);END;
  IF n==7 THEN RECT_P(G1,20,40,39,59,c);END;
  IF n==8 THEN RECT_P(G1,40,40,59,59,c);END;
 END;
END;
c_rect(v,f)
BEGIN
 LOCAL i;
 RECT_P(G1,0,0,59,59,C_argent);
 FOR i FROM 0 TO 8 DO
  IF BITAND(v,2^i) THEN
   IF f THEN
    s_rect(i);
   ELSE
    z_rect(i);
   END; 
  END;
 END;//FOR
 IF f THEN
  BLIT_P(G2,G0);BLIT_P(G0,129,89,G1);
  WAIT(1);BLIT_P(G0,G2);
 END;
END;
combi()
BEGIN
 LOCAL i,n,m;
 LOCAL lc:={1,2,3,4,5,6,7,8,9},l:={{},{}};
 FOR i FROM 1 TO 9 DO 
  m:=IFTE(i==4,511,RANDINT(511));
  l(1,i):=BITXOR(n,m);n:=m;
  l(2,i):=lc(RANDINT(1,SIZE(lc)));
  lc:=remove(l(2,i),lc); 
 END;
 l;
END;
g_key()
BEGIN
 LOCAL k,p,l:={42,43,44,37,38,39,32,33,34,47,41,3,4};
 WHILE p==0 DO
  k:=GETKEY;p:=POS(l,k);
 END;
 p; 
END;

EXPORT DEFI()
BEGIN
 LOCAL l,i,c,b,v,s,q,m;
 LOCAL h;
 DIMGROB_P(G1,60,60);
 DIMGROB_P(G2,320,240);
 RECT_P();
 l:=combi();
 REPEAT 
  c:=g_key();
  CASE
   IF c==10 THEN RECT_P();b:=0;s:=0;END;
   IF c==11 THEN s:=1;END;
   IF c==12 THEN h:=help(h,l(2));q:=(h=4);END;
   IF c==13 THEN 
    BLIT_P(G2,G0); 
    q:=MSGBOX("Quitter la partie ?",1);
    BLIT_P(G0,G2);
   END;
   DEFAULT
    v:=l(1,POS(l(2),c));c_rect(v,s);
    b:=IFTE(s,b,BITXOR(b,v));s:=0;
  END;
 UNTIL b==511  OR q;
 m:=IFTE(q,"PERDU","BRAVO"); 
 TEXTOUT_P(m,120,110,6,C_gris);
 WAIT(3);
 DIMGROB_P(G1,0,0);DIMGROB_P(G2,0,0);
END;
Ti(s) 60, 62 Galaxy, 66, 67 Galaxy, 68, 74 Basical 80, 81, 82, 83+, 83 CE, 84+SE, 85, 86, 89, 89 titanium, 92, 95 Procalc, v200, nSpire cx
Hp(s) 35s, 41CX, 28S, 48g, 50g, 39gII, Prime G1 et G2,
Casio(s) fx 602P, 702P, 4000P, 4500P, 6000G, 6900G, 7700G, 8500g, PB-700, CG-20, Graph 95 sd
Psion(s)II LZ64, siena, s3a, s3mx, s5mx.
Sharp(s) pc-1350, 1403, 1500A, E500, El 5120, 9200, 9600
Canon X-07
Avatar du membre
steste
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 551
Enregistré le : 18 sept. 2015 18:59

Re: Adaptation prgm DEFI

Message par steste »

Salut,

c'est du code quoi ?

aplus
Avatar du membre
badaze
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 8402
Enregistré le : 12 févr. 2007 18:36
Localisation : Pas très loin de Lyon
Contact :

Re: Adaptation prgm DEFI

Message par badaze »

Une partie du code peut-être factorisée en fonction de n sans avoir à faire de test :

Code : Tout sélectionner

 CASE
  IF n==0 THEN INVERT_P(1,0,106,79); END;
  IF n==1 THEN INVERT_P(107,0,212,79); END;
  IF n==2 THEN INVERT_P(213,0,318,79); END;
  IF n==3 THEN INVERT_P(1,80,106,159); END;
  IF n==4 THEN INVERT_P(107,80,212,159); END;
  IF n==5 THEN INVERT_P(213,80,318,159); END;
  IF n==6 THEN INVERT_P(1,160,106,239); END;
  IF n==7 THEN INVERT_P(107,160,212,239); END;
  IF n==8 THEN INVERT_P(213,160,318,239); END;
 END;  

Code : Tout sélectionner

%     = reste de la division
(int) = partie entière  

1er  paramètre : (1+(n%3)*106)
2ème paramètre : (((int)($n/3))*80)
3ème paramètre : (106+($n%3)*106) ou aussi 1er paramètre + 105
4ème paramètre : (79+((int)($n/3))*80) ou aussi 2ème paramètre + 79

INVERT_P(P1,P2,P3,P4);

Code : Tout sélectionner

 CASE
  IF n==0 THEN RECT_P(G1,0,0,19,19,c);END;
  IF n==1 THEN RECT_P(G1,20,0,39,19,c);END;
  IF n==2 THEN RECT_P(G1,40,0,59,19,c);END;
  IF n==3 THEN RECT_P(G1,0,20,19,39,c);END;
  IF n==4 THEN RECT_P(G1,20,20,39,39,c);END;
  IF n==5 THEN RECT_P(G1,40,20,59,39,c);END;
  IF n==6 THEN RECT_P(G1,0,40,19,59,c);END;
  IF n==7 THEN RECT_P(G1,20,40,39,59,c);END;
  IF n==8 THEN RECT_P(G1,40,40,59,59,c);END;
 END;

Code : Tout sélectionner

%     = reste de la division
(int) = partie entière

2ème paramètre : ((n%3)*20)
3ème paramètre : (((int)(n/3))*20)
4ème paramètre : (19+(n%3)*20) ou aussi 2ème paramètre + 19
5ème paramètre : (19+((int)(n/3))*20) ou aussi 3ème paramètre + 19

RECT_P(G1,P2,P3,P4,P5,c)
Tout est bon dans le pocket.
Moi j'aime tout.... Casio, HP, Sharp, TI et les autres sauf que les TI semblent ne pas m'aimer :(
http://www.emmella.fr
Mes Casio - HP - Sharp - TI
Homme invisible.
Avatar du membre
gege
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 7147
Enregistré le : 31 janv. 2008 14:24
Localisation : Banlieue Paârisienne
Contact :

Re: Adaptation prgm DEFI

Message par gege »

steste a écrit : 19 mai 2017 22:41c'est du code quoi ?
HP Prime
G.E.
Répondre

Retourner vers « Tous les Pockets »