home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 15 / CD_ASCQ_15_070894.iso / news / 2516 / syl7.doc < prev    next >
Text File  |  1993-11-21  |  8KB  |  205 lines

  1. Patrik Carpentier                                            Octobre 93
  2. 195, rue de Douai
  3. F59450        SIN
  4.  
  5.  
  6. INTRODUCTION
  7. ------------
  8.     Si vous lisez ce texte c'est donc que vous avez en main le pack
  9.     n°7 des Casses-Têtes de Sylvie, selon DP Tool Club puisque je
  10.     me contentais de mettre un SYL générique et de regrouper le tout
  11.     par paquet de 4 jeux.
  12.     Si vous comptez bien, il y a donc à ce jour, 28 jeux dans cette
  13.     série (7*4). Ces jeux sont libres de diffusion, du moment qu'on
  14.     ne les dénature pas par modification des textes, des images et
  15.     bien sur du fonctionnement. Ils sont de plus gratuits, je ne me
  16.     suis jamais fait d'illusion lucrative en ce qui concerne le
  17.     shareware made in France.
  18.  
  19. LISTE DES 28 JEUX
  20. -----------------
  21.                   ┌──────────────────────────────────────┐
  22.                   │ SYL***   par Patrik Carpentier 10/93 │
  23.                   ├──────────────────────────────────────┤
  24.                   │ 28 jeux dans la série SYL  (7 packs) │
  25.                   │   SYL1   -one -ouka -oulo -atche     │
  26.                   │   SYL2   -aby -aji -erson -ouye      │
  27.                   │   SYL3   -inda -ade -ite -ojiq       │
  28.                   │   SYL4   -oro -achel -eze -ilance    │
  29.                   │   SYL5   -epa -iswa -ube -ama        │
  30.                   │   SYL6   -emin -etro -oook -aison    │
  31.                   │   SYL7   -iulia -atre -orne eere     │
  32.                   │ 4 jeux dans la série SYX             │
  33.                   │ plus divers autres trucs ci et là... │
  34.                   └──────────────────────────────────────┘
  35.  
  36. BRIC A BRAC
  37. -----------
  38.     Au début, j'ai tenté le principe de l'EchangeWare de programmes
  39.     afin de compléter ma collection de disquettes mais j'ai vite
  40.     récupéré un virus furtif qui est passé outre mes anti-virus
  41.     (pas gratuis) et qui m'a mis le disque dur dans un état impossible,
  42.     ce qui a été une bonne occasion de changer de machine !
  43.  
  44.     Maintenant, comme DP Tool Club (publicité) posséde un catalogue
  45.     de CD-Roms pas chers, avec en plus le CD mensuel (j'ai du n°0 au 8,
  46.     au fait, pas d'abonnement prévu ?), je suis tranquille de ce côté.
  47.  
  48. PROSPECTIVES
  49. ------------
  50.     Je pense que SYL8 et SYL9 verront le jour. Il faudra que je me
  51.     consacre un peu plus à la série SYX (pas pour les bébés) et que
  52.     je crée la série FLO pour les enfants. J'ai déjà écrit quelques
  53.     bricoles pour ma fille. Dans un coin, je posséde des routines de
  54.     sprites et autres amusements du type et au travail, mes programmes
  55.     sont écrits pour du 800*600*256 mais je trouve plus rigolo d'être
  56.     en 640*480*16 pour inventer sur un coup de tête un petit jeu.
  57.     Ces derniers sont écrits pour ma femme, bien qu'elle me déclare
  58.     souvent que c'est avec mon ordinateur que j'aurai du être marié...
  59.  
  60. BOUTS DE PROGRAMMES
  61. -------------------
  62.          Mes étudiants me demandent souvent quelques routines, en
  63.          voici quelques unes, çà peut toujours servir:
  64. -------------------
  65. -------------------
  66.          Function unetouche(maj:boolean):integer;
  67.          var c    :integer;
  68.          begin
  69.            if maj then c:=ord(upcase(readkey))
  70.                   else c:=ord(readkey);
  71.            if c=0 then c:=-ord(readkey);
  72.            unetouche:=c;
  73.          end;
  74.  
  75.          Cette fonction lit le clavier et retourne le code ascii.
  76.          Si nous appuyons sur une touche étendue, le code est négatif.
  77.  
  78.          UP     -72          PG UP   -73         INS   -82
  79.          DOWN   -80          PG Dn   -81         DEL   -83
  80.          LEFT   -75          HOME    -71         F1    -59
  81.          RIGHT  -77          END     -79         F2    -60 (etc..)
  82.  
  83.          TAB 9    BS 8     ENTER 13    ESC 27
  84. -------------------
  85. -------------------
  86. unit usouris;
  87. interface
  88. uses dos,crt;
  89. type
  90.    type_curseur      =array[0..33]of word;
  91.                       { 0..15:écran  16..31:masque  32:x  33:y }
  92. const
  93.    curseur_main      :type_curseur=
  94.                      ( 65535,65535,65287,65027,32768,0,32768,61440,
  95.                        63488,63488,64512,64512,65031,65535,65535,65535,
  96.                        0,0,0,248,28,32751,119,1983,
  97.                        127,959,124,440,0,0,0,0,  0,5);
  98.   curseur_fleche     :type_curseur=
  99.                      ( 16383,8191,4095,2047,1023,511,255,127,
  100.                        63,63,511,255,4351,63615,63615,64767,
  101.                        0,16384,24576,28672,30720,31744,32256,32512,
  102.                        32640,32256,31744,28160,1536,768,768,0,  0,0);
  103. var regs             :registers;                 { pour int 33H }
  104. function souris_init: word;
  105. procedure souris_affiche(ok:boolean);
  106. procedure souris_info(var x,y,b:integer);
  107. procedure souris_place(x,y:integer);
  108. procedure souris_zone(x,y,xb,yb:integer);
  109. procedure souris_curseur(var m:type_curseur);
  110.  
  111. implementation
  112.  
  113. function souris_init: word;        { rejette le nombre de boutons }
  114. begin                              { si 0 -> pas de souris        }
  115.   regs.ax:=0; intr($33,regs);
  116.   if regs.ax=0 then souris_init:=0 else souris_init:=regs.bx;
  117. end;
  118. procedure souris_affiche(ok:boolean);
  119. begin
  120.   if ok=true then regs.ax:=1 else regs.ax:=2;
  121.   intr($33,regs);
  122. end;
  123. procedure souris_info(var x,y,b:integer);     { B -> 1:gau 2:dr 3:deux }
  124. begin
  125.   regs.ax:=3; intr($33,regs); x:=regs.cx; y:=regs.dx; b:=regs.bl
  126. end;
  127. procedure souris_place(x,y:integer);
  128. begin
  129.   regs.cx:=x; regs.dx:=y; regs.ax:=4; intr($33,regs);
  130. end;
  131. procedure souris_zone(x,y,xb,yb:integer);
  132. begin
  133.   regs.ax:=7; regs.cx:=x; regs.dx:=xb; intr($33,regs);
  134.   regs.ax:=8; regs.cx:=y; regs.dx:=yb; intr($33,regs);
  135. end;
  136. procedure souris_curseur(var m:type_curseur);
  137. begin
  138.   regs.ax:=9; regs.bx:=m[32]; regs.cx:=m[33];
  139.   regs.es:=seg(m); regs.dx:=ofs(m);
  140.   intr($33,regs);
  141. end;
  142.  
  143. begin
  144. end.
  145.     Cette unité gère la souris. Je pense qu'elle est explicite.
  146.     Elle est minimale mais on peut déjà faire quelques bricoles avec.
  147. -------------------
  148. -------------------
  149.     Afficher quelque chose sur une image puis restituer l'image
  150.     d'origine. Attention à la taille de la zone (<64ko)
  151.     
  152.     var  p         :pointer;
  153.     var x,y,xx,yy  :integer;           {dimensions de la zone            }
  154.     ...
  155.     getmem(p, imagesize(x,y,xx,yy));
  156.     getimage(x,y,xx,yy,p^);            {n'oubliez pas le ^ sinon plantage}
  157.       (* mettre ici le recouvrement *)
  158.       (* ou d'autres choses         *)
  159.     putimage(x,y,p^, 0);               {n'oubliez pas le ^ sinon plantage}
  160.     dispose(p);                        {on libère le tas sinon...        }
  161. -------------------
  162. -------------------
  163.     Une procedure simple pour faire du relief, ce qui est très à la mode
  164.     de nos jours. Pourtant, c'est vraiment simple !
  165.  
  166.     procedure cadre(x,y,xx,yy,cf,c0,c1:integer);
  167.     begin
  168.       if cf>=0 then begin                      {couleur du fond       }
  169.         setfillstyle(1,cf); bar(x,y,xx,yy);    {négatif -> transparent}
  170.       end;
  171.       setcolor(c0);
  172.       line(x,y,x,yy); line(x,y,xx,y);
  173.       setcolor(c1);
  174.       line(xx,yy,xx,y); line(xx,yy,x,yy);
  175.     end;
  176.  
  177.     Exemple:
  178.          cadre(100,100,500,200, 7, 15,8);
  179.          cadre(110,110,490,190,-1, 8,15);
  180.     Cà vous rappellera quelque chose...
  181. -------------------
  182. -------------------
  183.     Un peu de langage C..
  184.  
  185.     function itoa(n,d:integer):string;
  186.     var t:string;
  187.     begin
  188.       str(n:d,t); itoa:=t;
  189.     end;
  190.  
  191.     Exemple:
  192.          for i:=1 to 20 do
  193.            Outtextxy(200,100+i*10, itoa(i,3));
  194.  
  195.     Simple mais pratique. C'est facilement adaptable au real.
  196. -----------------------------------------------------------------------
  197. -----------------------------------------------------------------------
  198.     C'est tout pour aujourd'hui. L'affichage de PCX prendrait trop de
  199.     place ici en raison du type d'image (2, 16, 256 couleurs).
  200.  
  201.  
  202.     Bonne informatique
  203.  
  204.           Patrik Carpentier.
  205.