HP Forums

Full Version: Adaptation prgm DEFI
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Bonjour

Le jeu que je vous propose est une adaptation 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.

Hello

The game that I propose to you is an adaptation of a program for Hp 48 par
In HIGH PERFORMANCE n ° 1 (1992).
The goal of the game: the screen is divided into 9 rectangular parts (3 * 3), each digit (1-9)
Corresponds to a random combination of rectangle that will be blacked out.
From a white screen, you have to blacken the 9 zones, difficulty if one or more
Areas of the screen already blackened match with the combination of the number played
They become white again.

0 clears the screen, you can see the combination of a digit by pressing 'SHIFT' before.
To play the combination of a number press the corresponding key.
The solution is in 4 combinations maximum.
Press 'HELP' to get the first combination of the solution, then the first 2
And so on: to the fourth is lost.

'ESC' to exit the game.
Good fun.

Code:
//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;
Reference URL's