Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
back2root:archives:jeu-de-role-en-gfa-basic:02-editez-vos-cartes-graphiques [2025/06/11 18:12] – créée frater | back2root:archives:jeu-de-role-en-gfa-basic:02-editez-vos-cartes-graphiques [2025/06/12 00:09] (Version actuelle) – [Programme Complet] frater | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== JEU DE ROLE EN GFA BASIC ====== | + | ===== 02 - Éditez vos cartes graphiques - WIP ===== |
- | <WRAP center round info> | + | ==== Editer vos cartes graphiques ==== |
- | Ce texte est une reproduction des articles parus dans le magazine **Atari Magazine** dans le Hors Série **Best of GFA Basic** De Janvier 1993 | + | |
- | Cet article est en cours de transfert depuis | + | La programmation d'un jeu de rôle façon Ultima passe par la réalisation d'un éditeur capable de définir la carte d'un monde médiéval fantastique. |
- | </ | + | |
- | ===== 02 - Editez vos cartes graphiques ===== | + | ==== Notions de base ==== |
- | La programmation d'un jeu de rôle facon Ultima passe par la | + | Dans les jeux de rôle de type Ultima |
- | réalisation d'un éditeur capable de définir la carte d'un monde | + | |
- | médiéval fantastique. | + | ==== Dessin de la carte ==== |
- | Notions de base ? | + | |
- | Dans les jeux de rôle de type Cfrimer-ou Aentarsy | + | L' |
- | le Joucur gére les actions d'uné équipe de personnages. Celle-ca | + | |
- | se déplace sur une grande carte réprésentant | + | ==== Dessin avec éléments graphiques de base ==== |
- | jeu. Seule une partie de la carte est affichée à l' | + | |
- | de fénêtre | + | Au lieu de stocker |
- | ilï_!!:i pPÉrsUnnages e ljl' | + | |
- | Dessin de la carte | + | Une carte est alors mémorisée sous la forme d' |
- | L' | + | |
- | l' | + | Avec des éléments de 16x16, une carte de 1600x800 |
- | fi': | + | |
- | de 3X0x220 | + | <code freebasic> |
- | 1600800 | + | OPTION |
- | une place mémoire de 640 Ko. C'est beaucoup trop pour un 520 5T | + | DIM carte|(100,50) |
- | et même pour un 1040 5T, en tenant | + | </ |
- | programme | + | |
- | Dessin avec éléments graphiques de base | + | L' |
- | YA l.' | + | |
- | ner avec des élements | + | Un élément graphique de 16x16 pixels stocké dans une variable alphanumérique grâce à l' |
- | 7 {.:'Ii'l: | + | |
- | de beaucoup d' | + | <code freebasic> |
- | dessine | + | |
- | avec un seul élément représentant la silhouerre | + | |
- | (st le procédé utilisé par bon nombre de logiciels de jeu du com- | + | |
- | FICFce, Pl" | + | |
- | mémoires vidéos, les elements | + | |
- | lôx16 pixels ou 32x32 piæels, | + | |
- | Une carte esr alors mémorisée sous la forme d' | + | |
- | Ë' | + | |
- | deux dimensions, dont le type dépend du nombre d' | + | |
- | Avec moins de 256 élements, ce qui est déjà énorme, on peur | + | |
- | utiliser un tableau de vvpe BYTE (svmbole | + | |
- | n' | + | |
- | Avec des éléments de 16x16, une carte de 1600x8C0 | + | |
- | stockée dans un tableau de 100x50 cléments, occupant une place | + | |
- | mémoire de 5000 octets. | + | |
- | OFTION | + | |
- | DIM carte|{100,50) | + | |
- | L' | + | |
- | à partir de l’indice 1 et non & Four calculer le gain de mémoire | + | |
- | les deux méthodes, il faur prendre en compre | + | |
- | prisé-par les éléments | + | |
- | Un élément graphique de 16x16 pixels stocké dans une variable alphanumérique | + | |
- | grâce à l' | + | |
- | ters, ce caloul | + | |
- | raille | + | |
GET 1, | GET 1, | ||
PRINT LEN(vars) | PRINT LEN(vars) | ||
- | L’expérience montre que l'on peut dessiner des cartes complètes avec | + | </ |
- | bien moins de 200 éléments différents. | + | |
- | accéptable | + | L’expérience montre que l'on peut dessiner des cartes complètes avec bien moins de 200 éléments différents. |
- | moins de 200 clements | + | |
- | histoire, les premiers jeux Ultima ont été dessinés avec seulement | + | <code freebasic> |
- | quelques dizaines d' | + | |
- | prend 26800 oététs. | + | |
DIM element$(200) | DIM element$(200) | ||
- | En additionnant la place prise par le codage de la carte t par 200 éle | + | </ |
- | ments graphique, on arrive à un total de 31800 ocrets | + | |
- | 26800), Dans notre cas particulier, | + | En additionnant la place prise par le codage de la carte t par 200 élements |
- | de la carte est de 20, maus saméliore | + | |
- | est plus grande que 100x50 cléments ou s1 le nombre d' | + | |
- | phique | + | Cette technique |
- | Cetté téchnique | + | |
- | logiciel: la carte est facile à dessiner une fois que les éléments de base | + | Même un non-graphiste peut réaliser une jolie carte à partir de beaux éléments de base. |
- | SONt CTÉES. | + | |
- | ATARI MAGAZINE m BEST OF GRA BASIC | + | ==== Dessin de la carte Ultima |
- | Même un non-graphiste peut réaliser une jolie carte à partir de beaux | + | |
- | éléments de hase. | + | La portion de carte affichée par les jeux //Ultima// a une dimension de 176x176 pixels, et se constitue |
- | Dessin de la carte Ultima | + | |
- | La portion de carte affichée par les jeux Ultima | + | Lors des déplacements, |
- | 176x176 pixels, et est constitué | + | |
- | La position de l' | + | ==== Programmation d’un système de déplacement style Ultima |
- | en noir affichee au milieu de l' | + | |
- | Lors des déplacements, | + | Pour réaliser un systéme de déplacement similaire à celui d'//Ultima// en //GFA Basic//, il faut résoudre un certain |
- | cé que l' | + | aussi bien sur un STF que sur un STE? Comment stocker les différentes |
- | Programmation d'un système | + | |
- | de déplacement style Ultima | + | Toutes ces questions sont trop difficiles à gérer dans un seul article, c'est pourquoi ce texte est séparé en deux parties: la première est consacrée |
- | Pour réaliser un systéme de déplacement similaire à celui d' | + | |
- | en GEA Basic, il faut résoudre un certain | + | ==== Définition des éléments graphiques |
- | Nous avons déjà vu que le codage de la carte peur être stocké | + | |
- | dans un tableam | + | On suppose |
- | un tabléau | + | |
- | Comment est-ce que les éléments graphiques sont stockes dans | + | La structure du fichier binaire est la suivante: 32 octets |
- | le tableau alphanumérique? | + | |
- | aussi bien sur un STF que sur un STE? Comment stocker les différéntes | + | <code freebasic> |
- | données sur disque? Comment gérer les déplacements de | + | ' ****************************** |
- | l' | + | ' |
- | Toutes ces questions sont trop difficiles à gérer dans un seul article, | + | ' * |
- | c'est pourquoi ce texte est séparé en deux parties: la première est consacrde | + | ' ****************************** |
- | à la créition | + | RESERVE |
- | pour gérer les déplacements de l' | + | DIM element$(200) |
- | Définition des éléments graphiques | + | nb_elements%=0 |
- | On suppese | + | palette$=SPACE$(32) |
- | un graphiste avec un logiciel de dessin type Degas Elite où equivalent. | + | ' |
- | Nos précieux | + | @load_dzgas(" |
- | image au format Degas, Le programme GENELEM, | + | |
- | ELEMENTS.P11 et stocke les éléments graphiques dans un fichier | + | |
- | binaire ELEMENTS . BIN réucilisable | + | |
- | La structure du fichier binaire est la suivante: 32 ocrets | + | |
- | palette de couleur des éléments graphiques, un oot unique | + | |
- | le nombre d' | + | |
- | oecupant | + | |
- | est définie dans une série de DATA à la fin du programme, la fin des | + | |
- | données étant signalé par la valeur -l | + | |
- | |l HRL NR S A RN | + | |
- | | * GENÉRATEUR FICHIER BINAIRE * | + | |
- | HM ELEMENTS GRAPHIQUES | + | |
- | LRNF RE RR E RE e e | + | |
- | RÉSERVE | + | |
- | DIM element${200) | + | |
- | nb elements“%=0 | + | |
- | palette$=SPACE4(32) | + | |
- | Bload dégas(" | + | |
@saisie_elements | @saisie_elements | ||
- | @sauve elements({" | + | @sauve_elements({" |
END | END | ||
- | e e 44 E RE W W E R W R R | + | ' |
- | * CHARGEMENT-IMAGE * | + | ' ****************************** |
- | = DEGAS ELITE 8 | + | ' |
- | E T T R P e e T o E E S | + | ' * |
- | FRAR N A r L AR ARk AR * | + | ' ****************************** |
- | * La palette est stockée dans la ” | + | ' |
- | * variable globale | + | ' ********************************** |
- | UR RIRF REN RN R Rk RE É RE | + | ' |
- | PROCEDURE | + | ' |
- | palettef=SPACE4(32) | + | ' ********************************** |
- | OPEN "T",# | + | PROCEDURE |
- | SEEK #1,2 . | + | |
- | BGET #1 VARPTR(palette$}),37 | + | OPEN "1",# |
- | VOID XE10S(6,L-VARPTR(palette*)) | + | SEEK #1,2 |
- | BGET #1,XB105{2},3#000 | + | BGET #1,VARPTR(palette$), |
- | CLOSE #l | + | VOID XBIOS(6,L:VARPTR(palette$)) |
- | RETURR | + | BGET #1,XBIOS(2),3#000 |
- | B o e E T e b É el RE | + | CLOSE #l |
- | * GENERATION FICHIER BINAIRE * | + | |
- | “ ELEMENTS GRAPHIQUES & | + | |
- | d e e N AI E R RE N A | + | |
- | PROCEDURE sauve elements{fichier$) | + | |
- | LOCAL 1% | + | |
- | OPEN " | + | |
- | BPUT # | + | |
- | OUT #1,nb elements® | + | |
- | FOR i%=1 TO nb elements“ | + | |
- | BPUT #1 , | + | |
- | MEXT i% | + | |
- | CLOSE #1 | + | |
RETURN | RETURN | ||
- | 1 | + | ' |
- | N T e RR E R P PR L TR R E o e R T | + | ' ********************************** |
- | i CHARGEMENT DES % | + | ' * GENERATION FICHIER BINAIRE |
- | * ELEMENTS GRAPHIQUES * | + | ' |
- | C e RE e dc d PE E E e E A R E R RS | + | ' ********************************** |
- | PROCEDURE | + | PROCEDURE |
- | LOCAL ns | + | LOCAL i% |
- | LOCAL px%, pyi | + | OPEN " |
- | LOCAL px2%,py2% | + | BPUT #1,VARPTR(palette$), |
- | nE=0 | + | OUT # |
- | RESTORE def elements | + | FOR i%=1 TO nb_elements% |
- | g | + | BPUT #1 ,VARPTR(element$(1%)},134 |
- | READ px% | + | NEXT i% |
- | EXIT IF pai==1 | + | CLOSE #1 |
- | READ pys . | + | |
- | INC n | + | |
- | pxé4a=px=+ls | + | |
- | pyess=pystis | + | |
- | GET px%, | + | |
- | LOOP | + | |
- | nb_élémentss=n | + | |
- | ATARI MAGAZIME m BEST OF GRA BASIC | + | |
RETURN | RETURN | ||
- | | HLJNE SREE | + | ' |
- | i POSITION | + | ' ********************************** |
- | ! * ÉLEMENTS GRAPHIQUES * | + | ' * CHARGEMENT |
- | | ETEN eE ol e o R E | + | ' * ELEMENTS GRAPHIQUES |
- | def elements: | + | ' ********************************** |
+ | PROCEDURE saisie__elements | ||
+ | LOCAL n% | ||
+ | LOCAL px%, py% | ||
+ | LOCAL px2%,py2% | ||
+ | ' | ||
+ | n%=0 | ||
+ | RESTORE def_elements | ||
+ | DO | ||
+ | READ px% | ||
+ | EXIT IF pa%=-1 | ||
+ | READ py% | ||
+ | INC n% | ||
+ | px2%=px%+15 | ||
+ | py2%=py%+15 | ||
+ | GET px%, | ||
+ | LOOP | ||
+ | nb_elements%=n% | ||
+ | RETURN | ||
+ | ' | ||
+ | ' ********************************* | ||
+ | ' * POSITION DES * | ||
+ | ' | ||
+ | ' ********************************* | ||
+ | def_elements: | ||
DATA 1,1 | DATA 1,1 | ||
DATA 18,1 | DATA 18,1 | ||
Ligne 192: | Ligne 149: | ||
DATA 52,1 | DATA 52,1 | ||
DATA 69,1 | DATA 69,1 | ||
- | DATA 66,1l | + | DATA 86,1 |
DATA 1,18 | DATA 1,18 | ||
DATA 18,18 | DATA 18,18 | ||
Ligne 199: | Ligne 156: | ||
DATA 69,18 | DATA 69,18 | ||
DATA -1 | DATA -1 | ||
- | Programme EDITCART | + | </ |
- | Le programime EDITCART est un éditeur de carte virtuelle écrit | + | |
- | en (FEA Basié: | + | ==== Programme EDITCART |
- | pouvant être relus et exploités par d' | + | |
- | Ses fontions | + | Le programime EDITCART est un éditeur de carte virtuelle écrit |
- | de la carte courante sur disque, déplacement sur la carte, modification | + | |
- | d'un élément quelconque de la carte, sélection d'un élément | + | Ses fonctions |
- | sraphique, affichage d'une boîte d' | + | |
- | lc programme. Le tout est entiérément | + | Attention: l' |
- | Attention: l' | + | |
- | foncrionner. Exéeutéz | + | ==== La simplicité n'est pas de ce monde ==== |
- | Le nom du fichier d' | + | |
- | par défaur, mais vous pourrez le modifier dans le code source | + | Initialement, |
- | d' | + | |
- | quel fichier d' | + | ==== Un système d’affichage simple |
- | La simplicité n'est pas de ce monde | + | |
- | Initialement, | + | La première méthode qui vient à l' |
- | -: | + | |
- | simples et performantes aussi bien sur STE que STF [dommage | + | La position |
- | que tous les ST ne soient pas dotés de blitter). Les routinés | + | |
- | d' | + | En mettant |
- | un peu complexes à comprendre pour un programmeur | + | |
- | debutant. | + | Pour déplacer |
- | Un système d’affichage simple | + | |
- | La première méthode qui vient à l' | + | Pour déplacer |
- | l' | + | |
- | codage de la carte est stucké | + | Remarque: la position (1, 1) correspond au premier indice du tableau |
- | graphiques de base dans le tableau | + | |
- | Gaff carte dessine la carté | + | Le morceau de carte visible est affiché à l' |
- | La pésition | + | |
- | cst contenu dans les variables | + | <code freebasic> |
- | En mettant | + | OPTION |
- | de la carte est affiche sur Pecran. | + | ' |
- | Pour déplacer | + | xcarte%=16 |
- | la variable | + | ycarte%=5 |
- | @aff carte. | + | ' |
- | Fnur_q:' | + | ligne carte%=30 |
- | ligne carte er exécuter | + | colonne_carte%=67 |
- | Remarque: la position (1, 1) correspond au premier indice du tableau | + | ' |
- | conténant | + | @aff_carte |
- | ci, le premier indice du tableau a la position (0,0). | + | |
- | Le morceau de carte visible est affiché à l' | + | |
- | par les variables xcarte* et ycarte*. Etant donnd là sccucture | + | |
- | de la mémoire vidéo et la manière dont fonctionnent les Instruetions | + | |
- | graphiques du GE4 Basic, il est préférable d' | + | |
- | d' | + | |
- | d' | + | |
- | OFTION | + | |
- | scartes=16 | + | |
- | vcarté%=5 | + | |
- | ligne cartes=30 | + | |
- | cn]unng_cart& | + | |
- | éaff carte | + | |
END | END | ||
- | PROCEDURE | + | |
- | LOCAL 1%,c0% | + | PROCEDURE |
- | LOCAL 1ignes | + | LOCAL l%,c% |
- | LOCAL colonne% | + | LOCAL ligne% |
- | LOCAL nums | + | LOCAL colonne% |
- | LOCAL posx | + | LOCAL num% |
- | LOCAL posy® | + | LOCAL posx% |
- | posyesycartes | + | LOCAL posy% |
- | ligne¥=ligne | + | ' |
- | FOR 1=1 TO 11 | + | posy%=ycarte% |
- | posx#=xcartes | + | |
- | colonne*=colonne carte* | + | FOR l%=1 TO 11 |
- | FOR c%=1 TO 11 | + | posx%=xcarte% |
- | numé“carte| (colonne®, ligne#) | + | colonne%=colonne_carte% |
- | PUT posx%,posy&,elements{(numé) | + | FOR c%=1 TO 11 |
- | INC colonnes | + | num%=carte|(colonne%, ligne%) |
- | ADD posx%,16 | + | PUT posx%,posy%,element${(num%) |
- | NEXT c& | + | INC colonne% |
- | INE ligne= | + | ADD posx%,16 |
- | ADD posyé,16 | + | NEXT c% |
- | NEXT 1% | + | |
+ | ADD posy%,16 | ||
+ | NEXT l% | ||
RETURN | RETURN | ||
- | Pour gérer les déplacements, | + | </ |
- | modifiant les variables de position en fonction de la direction de | + | |
- | déplacement. Pour des misons de sécurité, ces procédures doivent | + | Pour gérer les déplacements, |
- | controler | + | |
- | la carte. | + | <code freebasic> |
- | ATARI MAGAZINE H BEST OF GFA BASIC | + | PROCEDURE |
- | PROCEDURE | + | IF ligne_carte%<> |
- | IF ligne cartes==1 | + | DEC ligne_carte% |
- | DEC 1igne cartes | + | |
- | Baff carte | + | ENDIF |
- | ENDIF | + | |
RETURN | RETURN | ||
- | PROCEDURE | + | ' |
- | IF ligne cartese=ligne max® | + | PROCEDURE |
- | INC ligne carte% | + | IF ligne_carte%<> |
- | Baff carte | + | INC ligne_carte% |
- | ENDLF | + | |
+ | ENDIF | ||
RETURN | RETURN | ||
- | PROCEDURE | + | ' |
- | 1F colonne cartesss-1 | + | PROCEDURE |
- | DEC calonne cartes | + | IF colonne_carte%<> |
- | Baff carte | + | DEC colonne_carte% |
- | ENDIF | + | |
+ | ENDIF | ||
RETURN | RETURN | ||
- | PROCEDURE | + | ' |
- | IF colonne carte*=- | + | PROCEDURE |
- | INC colonne cartes | + | IF colonne_carte%<> |
- | Gaff carte | + | INC colonne_carte% |
- | ENDT F | + | |
+ | ENDIF | ||
RETURN | RETURN | ||
- | Ce système est parfait sur le papier, mais une fois mis en ceuvre, il se | + | </ |
- | révéle | + | |
- | en informartique, | + | Ce système est parfait sur le papier, mais une fois mis en oeuvre, il se révèle |
- | de base. | + | |
- | Un redessin partiel de la carte | + | ==== Un redessin partiel de la carte ==== |
- | On peut gagner du temps en ne redessinant qu'une partie de la carte. | + | |
- | Lors d'un déplacement vers la droite, la colonne 1 disparaît de | + | On peut gagner du temps en ne redessinant qu'une partie de la carte. Lors d'un déplacement vers la droite, la colonne 1 disparaît de l' |
- | l' | + | |
- | gauche, le programme ne dessine vraiment que la nouvelle | + | Cette technique fonctionne, mais présente |
- | 11, De la même manière, lors d' | + | C'est souvent un avantage, mais dans notre cas particulier, c’est |
- | seule la colonne 1 est nouvelle, Puisqu' | + | |
- | décalée, au licu de le redessiner, on peut la déplacer en une seulc | + | La seule manière d' |
- | opération graphique. L'une des solutions possible est de lire la portion | + | |
- | de carte avec l' | + | La fonction |
- | avec PUT, | + | |
- | Cette technique fonctionne, mais présente | + | <code freebasic> |
- | esthétique, | + | adr_tampon%=MALLDC(32255) |
- | d' | + | adr2%=(adr_tampon%+255) AND & |
- | C'est souvent un avantage, mais dans notre cas particuliér, c' | + | </ |
- | un inconvénient: | + | |
- | produit un effet graphique nuisible visible. Pour éviter cela, il faut | + | Les variables //adrl%// et //adr2%// contiennent l'adresse |
- | que l’affichage s' | + | //adr1%//, l' |
- | La seule manière d' | + | |
- | opérations graphiques en mémoire et de les recopier rapidement sur | + | Lorsque le programme a terminé de dessiner |
- | Pécran | + | |
- | encore meilleur, le programme | + | <code freebasic> |
- | technique: il dessine la carte däns un écran virtuel, puis change | + | VOID XBIOS(5) |
- | l’adresse de la mémoire écran par l' | + | |
- | on évité | + | |
- | La fonction | + | |
- | écran. Sur un STEE cette adresse peut être quelconque, alors que sur | + | |
- | un STE elle doit obligatoirement être un multiple de 256. L' | + | |
- | initiale de l’écran est multiple de 256. Il faut créer une zone de 32000 | + | |
- | Dclets | + | |
- | une zonc mémoure | + | |
- | à une adresse paire- Pour obtenir une adresse multiple | + | |
- | de 256, 1] faut déclarer avec MALLOC une zone de 32255 octets | + | |
- | masquer les deux derniers bits de l' | + | |
- | multiple de 256 qui ports sur une zoné mémoire de 32000 octers | + | |
- | contenus dans la zone mémoite | + | |
- | C'est un peu compliqué mais cela marche bien, | + | |
- | adr tampon#=MALLDC(32255) | + | |
- | adré#=(adr tampon%+255) AND KHFFFFFFO0 | + | |
- | Les vartables | + | |
- | La varable | + | |
- | adr?% contienr | + | |
- | se [ait en bascule. Lorsque l’adresse de la mémoire | + | |
- | tionnée | + | |
- | adr?% Lorsque l’adresse de la mémoire écran est positionnée sur | + | |
- | adrls, l' | + | |
- | Lorsque le programme a terminé de dessiner | + | |
- | l change | + | |
- | XB10S(5}. Artention: la fonction | + | |
- | moment par le programme, mais le gestionnaire d' | + | |
- | Padresse | + | |
- | dessinée, St vous urilisez | + | |
- | XBIOS(5}, seul le dernier changement de mémoire d' | + | |
- | én compré. Pour éviter ce probléme, aprés avoir wrilisé XBI0S(5), il | + | |
- | faut attendre que le gestionnaire d' | + | |
- | l' | + | |
- | bloque l' | + | |
- | l’image courante (il y à 50 images affichés par seconde). | + | |
- | vOID XBIOS(5) | + | |
VSYNC | VSYNC | ||
- | Format de sauvegarde des cartes | + | </ |
- | Les cartes | + | |
- | Four changer fa taille, 1l faut modifier les variables nb_colonnes | + | ==== Format de sauvegarde des cartes |
- | et nb Tignes | + | |
- | 700,75). | + | Les cartes |
- | Les cartes d' | + | |
- | chaîne | + | Les cartes d'' |
- | calonnes, un octet contenant le nombre de lignes et le codage de la | + | |
- | carte (là taille de cé codage est égal à nb colonnesxnb |îgnes ot | + | === Programme Complet === |
- | tets). La chaîne est un en-tête d' | + | |
- | un fichier n‘avant pas d' | + | <code freebasic> |
- | d'érreur. Le nom d'une carte doit impérativement avoir uné excenson | + | ' ****************************** |
- | .CAR, ne l' | + | ' * EDITEUR DE CARTE * |
- | (c'est l' | + | ' * POUR JEU DE RÔLE * |
- | ATAR| MAGAZINE m BEST OFGFA BASIC | + | ' * |
- | | HÉVÉENVÉATAETETETTTENNAETEREETAEE E | + | ' ****************************** |
- | 8 EDITEUR DE CARTE ñ | + | ' * (C) 1991 ATARI MAGAZINE |
- | r POUR JEU DE RÔLE = | + | ' |
- | st STYLE ULTIMA * | + | ' ****************************** |
- | L é d e e e 46 ok e e e e d d d e SE SE e ol e e e R | + | ' |
- | “ % - (C) 1991 -ATARI MAGAZINE * | + | |
- | * (C) 1991 PATRICK | + | |
- | RR B b R E RR RR E R RR RR RE EF E | + | |
RESERVE 100000 | RESERVE 100000 | ||
+ | ' | ||
OPTION BASE 1 | OPTION BASE 1 | ||
- | DIM element$ (200) | + | DIM element$(200) |
- | adr tampon&=MALLOC(32255) | + | ' |
- | ad?2%=[adr_tamflun%+255} AND SHFFFFFFOO | + | adr_tampon%=MALLOC(32255) |
- | adr1*=XB105{#) | + | adr2%=(adr_tampon%+255) AND & |
- | nb colonness=60 | + | adr1%=XBIOS{2) |
- | nb_lignes*=30 | + | nb colonnes%=60 |
+ | nb_lignes%=30 | ||
DIM carte|(200, | DIM carte|(200, | ||
- | Gmair | + | ' |
+ | @main | ||
VOID XBIOS(5, | VOID XBIOS(5, | ||
CLS | CLS | ||
VOID MFREE(adr tampon%) | VOID MFREE(adr tampon%) | ||
END | END | ||
- | PROCEDURE | + | ' |
- | VOID X810$(5,L:adr ecrans,L:-1,-1) | + | ' ----------------------------------- |
+ | PROCEDURE | ||
+ | VOID XBIOS(5,L:adr_ecran%,L:-1,-1) | ||
RETURN | RETURN | ||
- | PROCEDURE | + | ' |
- | VOID XBIOS(5, | + | PROCEDURE |
+ | VOID XBIOS(5, | ||
RETURN | RETURN | ||
- | — — ===" c=s cs — e ] e e e e e C | + | ' |
- | A 045446 GRR A UE UE É ÉÉ R AN RE E E S | + | ' ----------------------------------- |
- | ' | + | ' |
- | 1 el e e e o e e e e e e e d Sl et e e r ol | + | ' * |
- | PROCEDURE | + | ' *********************************** |
- | i) | + | PROCEDURE |
- | EXIT IF MOUSEK=0 | + | DO |
- | LOUP | + | EXIT IF MOUSEK=0 |
+ | LOOP | ||
RETURN | RETURN | ||
- | PROCEDURE | + | ' |
- | DEFMOUSE 0 | + | PROCEDURE |
+ | DEFMOUSE 0 | ||
RETURN | RETURN | ||
- | PROCEDURE | + | ' |
- | GEFMOQUSE Z | + | PROCEDURE |
+ | | ||
RETURN | RETURN | ||
- | | e e e ke o i E o o RE S R ok RR RN | + | ' |
- | ‘% TEST CLIC SUR ZONE ÉCRAN * | + | ' ************************************ |
- | A A A A r P e S S o d e m LT | + | ' * |
- | FUNCTION tstzone(x*,y%,px5, pyé, txs, tyf) | + | ' ************************************ |
- | LOCAL results | + | FUNCTION tstzone(x%,y%,px%, py%, tx%, ty%) |
- | result%=l | + | LOCAL result% |
- | IF xe<pxs — | + | ' |
- | resu]t*=0 | + | result%=l |
- | ENDIF | + | ' |
- | IF x4=px&ttx+-1 | + | |
- | result#0 | + | |
- | ENDIF | + | ENDIF |
- | LF yésepys | + | IF x%>px%+tx%-1 |
- | result#=0 | + | result%=0 |
- | ENDIF | + | ENDIF |
- | IF yve=pysitys-l | + | IF y%<py% |
- | result=eD | + | result%=0 |
- | ENDIF | + | ENDIF |
- | RETURN | + | IF y%=py%+ty%-l |
- | ERDFUNE | + | result%=0 |
- | I B o A S ARl e B e o be | + | ENDIF |
- | ' * EFFACEMENT ECRAN | + | RETURN |
- | | NAAAÉERERF REÉSEREE RTEN | + | ERDFUNC |
- | PROCEDURE | + | ' |
- | DEFFILL c% | + | ' ************************************ |
- | FBOX 0,0,319,199 | + | ' * EFFACEMENT ECRAN * |
+ | ' ************************************ | ||
+ | PROCEDURE | ||
+ | DEFFILL c% | ||
+ | FBOX 0,0,319,199 | ||
RETURN | RETURN | ||
- | # | + | ' |
- | Ah b o i i E É É e i e e e S A RR AT | + | ' ************************************ |
- | * # AFFICHAGE CADRE GRAPHIQUE | + | ' |
- | | RR L e R LR S E | + | ' ************************************ |
- | PROCEDURE cadre[px%, pys,tx%, tyd, f=,bé) | + | PROCEDURE cadre(px%,py%,tx%,ty%,f%,b%) |
- | LOCAL pxé%, pyes | + | LOCAL px2%, py2% |
- | pxés" | + | ' |
- | pyés=pyésttys-1 | + | px2%=px%+tx%-1 |
- | DEFFILL f # | + | py2%=py%+ty%-1 |
- | FEOX pxS,0V5, pad%s, pyas | + | DEFFILL f% |
- | COLOR bé | + | PBOX px%,py%,px2%,py2% |
- | BOX px%, | + | COLOR b% |
+ | BOX px%, | ||
RETURN | RETURN | ||
- | | ERRRREAA TR RR AN N EEFE | + | ' |
- | “ * AFFICHAGE MESSAGE | + | ' |
- | * * DANS ROITE DE CLIC | + | ' * AFFICHAGE MESSAGE |
- | 1 ETENESÉ É R | + | ' |
- | PROCEDURE | + | ' ************************************ |
- | LOCAL pxes, pyes | + | PROCEDURE |
- | LOCAL xaff=,yaff4 | + | LOCAL px2%, py1% |
- | pXx24=ox=+Lx==-1 | + | LOCAL xaff%,yaff% |
- | pyeés=pyt+tys-1 | + | ' |
- | xaffs=pxt+(tx5-LEN(m$}#8)/2 | + | px2%=px%+tx%-1 |
- | yaffa-pyetôt(tyt-7)/2 | + | py2%=py%+ty%-1 |
- | ATARI MAGAZIME H BEST-OF GRA BASIC | + | ' |
- | w | + | xaff%=px%+(tx%-LEN(m$}*8)/2 |
- | ¥ | + | |
- | DEFFILL | + | ' |
- | PEOX px%,pye, prés, pyés | + | DEFFILL |
- | COLOR b* | + | |
- | EOX px* pyt, pX24 , pyd=x | + | COLOR b% |
- | TEXT xa, fvafffä,*mf | + | |
+ | TEXT xaff%,yaff%,m$ | ||
RETURN | RETURN | ||
- | | IRRFN ENF F | + | ' |
- | ! * CHARGEMENT DU FICHIER BINAIRE | + | ' |
- | ! + CONTENANT LES ELEMENTS GRAPHIQUES * | + | ' * CHARGEMENT DU FICHIER BINAIRE |
- | I ORRÉÉÉÉTARARRE NN RR E E RRARERARA RE | + | ' * CONTENANT LES ELEMENTS GRAPHIQUES * |
- | PROCEDURE | + | ' ************************************* |
- | LOCAL n% | + | PROCEDURE |
- | LOCAL palettet ; | + | LOCAL n% |
- | palettet=SPACE$(32} | + | LOCAL palette$ |
- | OPEN " | + | ' |
- | BGET #1,VARPTK(palette$), | + | palette$=SPACE$(32) |
- | VOID XBIOS (6; | + | OPEN " |
- | nb elementsi=INP{#1) | + | BGET #1,VARPTR(palette$), |
- | FOR n%=1 TD nb_elements* | + | VOID XBIOS (6; |
- | element$(n%)=5PACE$ (134) | + | |
- | BGET # | + | FOR n%=1 TO nb_elements% |
- | MEXT n% | + | element$(n%)=SPACE$(134) |
- | CLOSE #1 | + | BGET # |
+ | | ||
+ | CLOSE #1 | ||
RETURN | RETURN | ||
- | L EACAAUARERE S R RR E RE RV e e d d d e | + | ' |
- | * * INITIALISATION DE LA CARTE * | + | ' |
- | | RE d e d e e e R e A E | + | ' |
- | PROCEDURE | + | ' |
- | ARRAYFILL carte[(),l | + | ' ************************************ |
+ | PROCEDURE | ||
+ | ARRAYFILL carte|(),l | ||
RETURN | RETURN | ||
+ | ' | ||
D R e b L e R S R o | D R e b L e R S R o | ||
' * AFFICHAGE IMAGE EDITEUR * | ' * AFFICHAGE IMAGE EDITEUR * | ||
Ligne 806: | Ligne 735: | ||
xcartes=6 | xcartes=6 | ||
vcartes=l= | vcartes=l= | ||
- | Gcharge elements | + | @charge_elements |
- | @init carte | + | ' |
- | HIDEM | + | |
- | GRAPHMODE 2 | + | HIDEM |
- | @aff ecran | + | GRAPHMODE 2 |
- | @aff carie | + | @aff_ecran |
- | BMOVE XBIOS(Z2), | + | @aff_carte |
- | @souris fleche | + | BMOVE XBIOS(2), |
- | SHOWM | + | ' |
- | etats=1 | + | |
- | @gestion eciteur | + | SHOWM |
+ | etat%=1 | ||
+ | @gestion_editeur | ||
RETURN | RETURN | ||
- | Pour finir | + | </ |
- | Nous verrons le mois prochain comment uriliser les cartes générées | + | |
- | par EDITCART pour gérer les déplacéments d'une équipe de personnagés | + | |
- | sur un monde virruel (affichage de l' | + | |
- | carte, gestion des rencontres, interdictions où Autorisation de deplacements | + | |
- | sur certaines cases, e'n:] Vous trouverez én E: | + | |
- | sur le 3615 ATARI les listings de l’article, | + | |
- | une image Degas contenant quelques éléments de dessin. | + | |
- | Patrick Leclereq | + | |
- | TOUS LES LISTINGS | + | |
- | ET IMAGES | + | |
- | DE CE | + | |
- | BEST OF | + | |
- | GFA BASIC | + | |
- | SONT | + | |
- | DISPONIBLES EN | + | |
- | TELECHARGEMENT | + | |
- | Ë | + | |
- | PROGRAMMATION | + | |
- | JEU DE ROLE (I | + | |
- | Un jeu de rôle fonctionnel | + | |
- | Voici un petit jeu de rôle type Ultima ou Fantaisy où le joueur se | + | |
- | déplace sur une carte de grande dimension et fait de | + | |
- | dangereuses rencontres. | + | |
- | - Présentation du jeu | + | |
- | Le joueur gére les déplacements d'un personnage dans un univers de | + | |
- | tvpe médiéval-lantastique Cet univers &l représenté sous la lorme | + | |
- | d'une carte de grande dimension dessine avec des éléments graphiques | + | |
- | de base (arbre, maison, montagnes, lacs, ete.) La carte est créce | + | |
- | avec lc programme EDITCART (voir jeu de rôle II). | + | |
- | La carte est trop grande pour être dessinée entière à l’écran. Le programme | + | |
- | en affiche juste une petité portion, représentant les environs | + | |
- | Ce dernier se trouve au milieu de l' | + | |
- | sont réalises en scrollant l' | + | |
- | L' | + | |
- | chacun 16<16 pixels. Elle mesure 176x176 pixels. | + | |
- | e S e et T el s e E + | + | |
- | | #mmmmmm e PE L e d l + | | + | |
- | | | | | | | + | |
- | | | I | | | + | |
- | | | Dessinde | [ Zone de | | | + | |
- | I'| la carte | | messages | | | + | |
- | | | (] | | | + | |
- | | | | | | | | + | |
- | | trmme m————m— F f-=snmmmmmmm e | + | |
- | i E n t RSP 0 r Bl e + | + | |
- | Les fleches du pave numérique servent à indiquer la direction du déplacement. | + | |
- | Le programme interdit le déplacement sur cercains types | + | |
- | de case (plans d'eau &c montagnes). | + | |
- | Lors d'un deplacement, | + | |
- | ci peuvent étre bénéfiques, | + | |
- | du cvpe de case sur laquelle se tient le personnage. La plaine est | + | |
- | bats entre le personnage et les créatures de rencontres. Voir l’article | + | |
- | jeu de rôle IV qui présente un systeme permettant de simuler un | + | |
- | combat entre le personnage et une créature quelconque Vous pours | + | |
- | rez fusionner GESCARTE er le syatème de combat pour obténir un | + | |
- | veritablé deplacernent avec rencontres ec combat, | + | |
- | Programmation de Gescarte | + | |
- | Ce logiciel à été programmé en GE4 Basic 3.5E, mais il est entièrement | + | |
- | compatible avec toutes les versions du GFÀ Basic à partir de la | + | |
- | version 3.0. Le code source fait plus de 1000 lignes de programme. | + | |
- | Ce programme urilise le graphisme, stocke des données sur disque et | + | |
- | lit des données à partir du clavier. Il n' | + | |
- | ' | + | |
- | Les données graphiques du programme | + | |
- | Le programme GESCARTE à besoin d'un certain nombre de données | + | |
- | praphiques. Comme elles ne peuvent être défimes dans le programme, | + | |
- | elles sont stockées dans des fichiers. Leur contenu est chargé en | + | |
- | mémoire au début du programme. Ces fichiers sont ELEMENTS. BIN, | + | |
- | CARTE.CAR et PERSO.HIN, | + | |
- | Le fichier graphique ELEMENTS.BIN | + | |
- | Ce fichier contient les elements graphiques de 16x16 pixels servant à | + | |
- | dessiner l' | + | |
- | partir d'une image Depas Elite. | + | |
- | La éréation se fait avec l’utilitaire GENELEM.GFA (voir jeu de rôle IT). | + | |
- | [a structure du fichier ELEMENT .BIN est la survante : 32 octets contenant | + | |
- | la palerte de couleur des éléments, 1 octet contenant le nombre | + | |
- | d' | + | |
- | éndroit assez calme ol la majeure parte des rencontres sont mént), La taille d'une variable alphanumérique contenant un bloc de | + | |
- | neutres. Par contre, la foret est un endroit dangereux où rodent tou- | 16x16 pixels est de 134 cetérs. Cetre taille peut être mesurée avec la | + | |
- | tes sortes de créatures ef de monstres. Le programme affiche les ren- | fonction LEN. | + | |
- | contres dans une fenêtre graphique située à droite de la carte. | + | |
- | [Jans la version actuéllé. de GESCARTE toutes les rencontres sont | GET 1, | + | |
- | PRINT LEN(bloc$) | + | |
- | ATART MAGAZINE H BEST OF GRA BASIC | + | |
- | UR SUR LE | 3615 ATARI | XEN AAAAAERESE | + | |
- | : # PROCEDURE PRINCIPALE * | + | |
- | | RE TR ETEN NTRAEREF | + | |
- | PROCEDURE main | + | |
- | neutres car la place manqu.alt pour écrire un systeme gerant les com- | + | |
- | | | + | |
- | ATAR| MAGATINE m BEST GF GFA BASIC j | + | |
- | La procédure @charge elements{fichier$) charge dans le cableau | + | |
- | alphanumérique element+{[) les dléments stockes dans le fichier fichierf. | + | |
- | Le nombre d’éléments changés est éerit dans la varable globale | + | |
- | nb elementss. | + | |
- | DIM element$(200) | + | |
- | PROCEDURE charge elements(Tichier§) | + | |
- | LOCAL n% | + | |
- | LOCAL palettes | + | |
- | palettef=SPACFS5(32) | + | |
- | OPEN “1" # | + | |
- | BGET # | + | |
- | VOID XBIOS(6, | + | |
- | nb élements®=INP{# | + | |
- | FOR n%=1 TO nb elementss | + | |
- | element$# | + | |
- | BGET é1, | + | |
- | NEXT n% | + | |
- | CLOSE #1l | + | |
- | RETURN | + | |
- | La palette de couleurs est chargée dans une chaîne aiphanumérique | + | |
- | de 32 caractères. L' | + | |
- | de taille quelconque. Les 32 ocrets de la palette sont chargés avec | + | |
- | l' | + | |
- | palettes=SPACE${3# | + | |
- | BGET # | + | |
- | La taillé de la chaîne de catacrères doit être obligatoirement égale ouù | + | |
- | supérieure au nombre d' | + | |
- | n' | + | |
- | Un miauvais chargement peut ééraser pu modifier des variables | + | |
- | importantes. Clest une excellente méthode pour créer un | + | |
- | ‘bue fuetif* très chfficile à crouver, | + | |
- | L' | + | |
- | systëme par la palette de couleur des éléments graphiques, | + | |
- | VOID XRIOS(6, | + | |
- | Le nombre d' | + | |
- | ci permer de lire la valeur d'un octet à partir d'un fichier. | + | |
- | b _elements*-INP(# | + | |
- | -y i F] ] Lec éléments sont charvés les uns aprés les autres, La zone mémoire | + | |
- | de 134 octers nécessaire au stockage d'un élement graphiqué est | + | |
- | réservéc avec l' | + | |
- | FOR n%=1 TO nb elementss | + | |
- | elements (n%) =SPACES {134} | + | |
- | BGET # | + | |
- | NEXT m | + | |
- | Les éléments graphiques ont été stockés en mémoiré avec l' | + | |
- | tion GET. Pour afficher un élément graphique sur l’écran, 1l faur atiliser | + | |
- | l' | + | |
- | du tablean element$(} à la position (10,10/. | + | |
- | PUT 10, | + | |
- | Le fichier CARTE.CAR | + | |
- | Le fichier CARTE.BIN contient la deseription de la carte. Il est gÊnEnË | + | |
- | par l' | + | |
- | La structure de ce fichier est la suivante un en-tête d' | + | |
- | de 19 caractères, | + | |
- | un octet contenant le nombre de lignes de la carte et le codage de | + | |
- | la carte proprement dit. Les éléments sont stockes ].Ïgn& 3 EgflE:. | + | |
- | l' | + | |
- | ATARI MAG* Cette chaîne peut servir à contrôler si le fichier lus | + | |
- | contient bien une cartée. | + | |
- | La carte est stockde &n mémoire dans le tableau carte|(). Ce tableau | + | |
- | est du type entier court {entier & bits). Etant donné qu'un entier | + | |
- | court ne peut prendre que 256 valeurs (de 0 à 255), il ne peut y | + | |
- | avoir que 256 éléments possibles. | + | |
- | DIM carte|(200, | + | |
- | Les dimensions du tableau carte|{) sont fixés arbitrairement à 200 | + | |
- | lignés de 75 éléments. 5i vous désirez avoir une carte plus grande, 1l | + | |
- | faut augtnenter les dimensions du tablean. | + | |
- | La procédure Bcharge carte[nomf) charge en mémoire la carte | + | |
- | stockée dans le fichier nom$. Les dimensions de la carte sont écrites | + | |
- | dans les variables globales nb Tignes®er nb_colonness. | + | |
- | PROCEDURE charger carte(nomt) | + | |
- | LOCAL entétet | + | |
- | LOCAL 1%,c% | + | |
- | OPEN " | + | |
- | entetef=SPACE4(19) | + | |
- | BGET # | + | |
- | nb colonness=INP{# | + | |
- | nb _ lignes& | + | |
- | FOR c%=1 TD nb colonnes% | + | |
- | FOR 1%=1 TO nb 1ignes% | + | |
- | carte|(c%, | + | |
- | NEXT 1% | + | |
- | NEXT c% | + | |
- | CLOSE #1l | + | |
- | RETURN | + | |
- | Cette routine charge Iidentificateur de fichier, mais ne le teste pas. Si | + | |
- | vous désirez le faire, la modification est smple à réaliser, comme le | + | |
- | montre l' | + | |
- | entétef=5FACE4(19} | + | |
- | BGET #1 , | + | |
- | IF entetes==" | + | |
- | PRINT "Ce fichier ne contient pas de carte” | + | |
- | ELSE | + | |
- | ATAR] MAGAZINE æ BEST OF GFA BASIC | + | |
- | - Cfargement carte | + | |
- | ENDIF | + | |
- | Le fichier graphique PERSO.BIN | + | |
- | Le fichier PERSO.BIN concient l' | + | |
- | Cette image ese affichée sur làa carte pour visualiser la position | + | |
- | du personnage. La procédure Bcharge perso(nom$} charge en mémoite | + | |
- | l’image stockée dans le fichier nomf, T' | + | |
- | dans la variable globale persof. | + | |
- | L' | + | |
- | graphique logique AND permet d' | + | |
- | sur un décor quelconque à condition que l‘image soit dessinéé en | + | |
- | couleur Q sur un fond de couleur 15, | + | |
- | PUT px, | + | |
- | Cette technique d' | + | |
- | Pour obtenir plus de détails sur les opérateurs graphiques logiques ct | + | |
- | leurs utilisations, | + | |
- | graphique logiquen, | + | |
- | L' | + | |
- | partir d’une image Degas contenant la silhouette du personnage | + | |
- | | ÉÉTEÉI ES EN RR | + | |
- | | # SAISIE IMAGE DU PERSONNAGE # | + | |
- | l MSFN SREE ETEe e E E e E | + | |
- | RESERVE 100000 | + | |
- | @load degas(" | + | |
- | GET 1, | + | |
- | OPEN “o",# | + | |
- | BPUT # | + | |
- | CLOSE #1l | + | |
- | END | + | |
- | | MEFe e e e | + | |
- | ! * CHARGEMENT IMAGE # | + | |
- | e DEGAS ELITE L | + | |
- | | RV RR R R LT BT | + | |
- | PROCEDURE load degas{nom$) | + | |
- | LOCAL palettet | + | |
- | palette$f=SPACE{(32} | + | |
- | OPEN " | + | |
- | SEEK #1,7 | + | |
- | BGET # | + | |
- | VOID XBIOS(6, | + | |
- | 8GET # | + | |
- | CLOSE #1 | + | |
- | RETURN | + | |
- | Structure de Gescarte | + | |
- | Le programme GESCARTE est constitué d'un dértain nombre de modules. | + | |
- | Un module est un ensemble de routines qui traite un problème | + | |
- | donné. Par exemple, le module de-déplacement s' | + | |
- | gérer entièrement le déplacement sur la carte (affichage de l' | + | |
- | la carté, mise à jour des variables internes, tests des déplacements | + | |
- | possibles, appel du module de rencontre, etc.) Un module est composé | + | |
- | d'une où plusiéurs routines principales er de sous-routines | + | |
- | dépendant des routines principales, | + | |
- | Les modules de-GESCARTE sont: initialisation, | + | |
- | utilisateur, | + | |
- | gestion de la fenêtre graphique. Il ¥ a aussi un module de foncuions | + | |
- | systèmes. Les foncrions systémes sont des procedures de base qui | + | |
- | peuvent être réutilisées dans n' | + | |
- | Module d' | + | |
- | [ est constitué par la procédure @main, qui initialise les variables du | + | |
- | programme, charge en mémoire les données du jeu ec affiche l' | + | |
- | de la carte. | + | |
- | Les données graphiques sont stockées sur disque et les données | + | |
- | numériques sont définis dans des lignes de DATA, l' | + | |
- | chaque type de données est réalisé par une procédure particulière appartenant | + | |
- | à divers modules. Par exemple, la prôcédure Cinit rencontres | + | |
- | appartient au module de gestion des réncontres. | + | |
- | Une fois l' | + | |
- | procédure Égestion programme. Cette procédure est la roulne | + | |
- | principale du module prncipalé de GESCARTE | + | |
- | Module interface utilisateur | + | |
- | L' | + | |
- | entre lé joueur et le programme. l est trés important. Une bonne | + | |
- | interface utilisatéur peur faire la différence entre un bon programme | + | |
- | agréable à utiliser cù un mauvais programme peu pratique à utl | + | |
- | ser. Plusieurs logiciels trés performants sur le plan technique ont éré | + | |
- | des échecs commerciaux à cause d'une mauvaise interface ucilisateur, | + | |
- | L' | + | |
- | Batt ev, Bguitter programme et le module de gestion de là fenètre | + | |
- | graphique, : | + | |
- | La fonction Batt ev attend que l' | + | |
- | pavé numérique ou.sur la touche [Esc] pour rénvoyer un code de | + | |
- | fonctions spécilique au progranime, | + | |
- | : Flêche haute | + | |
- | : Flêche bas | + | |
- | : Fléche droite | + | |
- | : Flêche gauche | + | |
- | : Touche [Esc] | + | |
- | An 5 0 9 — | + | |
- | Si vous décidez de modifier l' | + | |
- | de moditier Batetv sans changer lc reste du programme, Clest | + | |
- | l' | + | |
- | Pour rajouter de nouvellés fonctions au programme (examer | + | |
- | des possessions du personnage, sommeil, ete.), il faur définir l' | + | |
- | correspondant à la nouvellé fonction (touche du clavier, clic souris, | + | |
- | été.) ec lui donner un code. Tous les codes supérieurs à 6 sont dispomibles, | + | |
- | La procédure @quitter programme démande à l' | + | |
- | de sa décision de quittér e programme, Elle affiche une | + | |
- | ATARI MAGAZINE a BEST OF GPA BASIC | + | |
- | boîte d' | + | |
- | ce pra?” Si le joueur confirme sa décision, la variable globale sortie% | + | |
- | est miscal. | + | |
- | Module principal | + | |
- | Le module principal gère l' | + | |
- | Il est constitué de la procédure @gestion programme et de la procédure | + | |
- | Gexec fonction. | + | |
- | PROCEDURE gestion programme | + | |
- | LOCAL evs | + | |
- | DO | + | |
- | ev“=Cait ev | + | |
- | Bexec fonction(ev®) | + | |
- | EXAIT IF sorties=l | + | |
- | LOOP | + | |
- | RETURN | + | |
- | Lä procédure Pgestion_programme contient la boucle principale du | + | |
- | programme. Cette boucle s' | + | |
- | ne contient pas 1. La fonction @att_ev lui donne le code de la | + | |
- | commande sélectionnée par le joueur. | + | |
- | PROCEDURE exec fonction(ff) | + | |
- | SELECT 1% | + | |
- | CASE 1,2,3.4 | + | |
- | Bgestion deplacement(f%) | + | |
- | CASE 5 | + | |
- | Bquitter programme | + | |
- | ENDSELECT | + | |
- | RETURN | + | |
- | La fonction @exec fonction(evi) cxécure la routine associée à la | + | |
- | fonction utilisateur % C'est un système d' | + | |
- | déroulement du programme vers les routines de déplacement ou | + | |
- | vers là routine gérant la sortie du programme. Si vous rajoutez des | + | |
- | fonctions à votre programme, c'est ici qu’il faut implanter les appels | + | |
- | des nouvelles procédures. | + | |
- | Par exemple, une fonction permettant d' | + | |
- | pérsonnage (numéro 6} ou une fonetion permettant de changer l' | + | |
- | du personnage (numéro 7), ou de boire une potion (numero §), | + | |
- | etc. | + | |
- | SELECT 1% | + | |
- | CASE 1.2,3.4 | + | |
- | Ggestion deplacement (f#) | + | |
- | CASE 5 | + | |
- | Bguitter programme | + | |
- | CASE 6 | + | |
- | Bexamen possessions | + | |
- | CASE 7 | + | |
- | Bchanger arme | + | |
- | CASE 8 | + | |
- | Éboire potion | + | |
- | ENDSELECT | + | |
- | Module de déplacement sur la carte | + | |
- | Il gêre les déplacements sur la carte. Clest le module le plus complexe | + | |
- | du programme. | + | |
- | Les fonctions apparténant à ce module sont; Pgestion_deplacement, | + | |
- | Cinit evenements, Cexéc deplacement Caller droite, | + | |
- | Galler gauche, Galler haut Baller bas, @preparation ecr_- | + | |
- | travail er @visualisation ecr travail. | + | |
- | Avant de plonger dans les détails techniques, voyons comment 5 et | + | |
- | fectuent les déplacements. Théoriquement, | + | |
- | de case en case. Ce serait simple À pérer si voutes les cases était les mémes, | + | |
- | ce qui n’est pas le cas, Le déplacement est possible sur la plupart | + | |
- | dés cases, mais pas toutes (plan d'eau par exemple). Le personnage | + | |
- | peut aussi rencontrer des créatures sur ceftaines cases. | + | |
- | Le progranime associe un numéro à -:;h:lqufi type de traitement. Le | + | |
- | numéro 0 correspond 4 une impossibilité de déplacement. Le numeto | + | |
- | 1 correspond à un déplacement simple, Le numéro 2 correspond | + | |
- | à un déplacement sur une plaine. le numére 3 correspond à un | + | |
- | déplacement en forft er le numére 4 à un déplacement sur des | + | |
- | ruines. Le tableau dev_ev& | + | |
- | traitement associé à l' | + | |
- | entre les numéros d' | + | |
- | définies dans des lignes de DATA La procédure @init_evenements | + | |
- | initialise le tableau dev ev&() avec les données des DATA | + | |
- | def evenements: | + | |
- | DATA 1,0 | + | |
- | DATA 2,0 | + | |
- | DATA 3,2 | + | |
- | DATA 4,72 | + | |
- | DATA 5,0 | + | |
- | DATA 6,0 | + | |
- | DATA 7,0 | + | |
- | DATA 8,0 | + | |
- | DÂTA 9,4 | + | |
- | DATA 10,0 | + | |
- | DATA 13,3 | + | |
- | DATA =1 | + | |
- | Les éléments graphiques 1,2,5,6,7,8 et 9 (plan d'eau, montagne, malsons, | + | |
- | villages et château) ont le numéro de traitement Q, c' | + | |
- | que le personnage ne peut se déplacer sur une case de la carte occupé | + | |
- | par l’un de ces éléments. | + | |
- | Le traitement 2 (déplacement sur plaine avec possibilité de rencontre) | + | |
- | correspond aux éléments graphiques 3 er 4 (dessins de plaines). | + | |
- | Lorsque le programme déplace le personnage sur une case de la carte | + | |
- | vécupée par un élément de plaine, il appelle |z routine gerant les rencontres | + | |
- | en plaine (procédure Brencontre_plaine). | + | |
- | Le traitement 3 (déplacement en forét avec possibilité de rencontre; | + | |
- | correspond à l’élément graphique 13 (dessin de forét). Le traitement | + | |
- | 4 [déplacement sur ruines avec possibilité de rencontre} correspond | + | |
- | À Pélément graphique 9 (dessin de ruines/. | + | |
- | Routine @gestion__deplacement | + | |
- | La procédure @gestion deplacement{direction) sélcetionne le | + | |
- | type de déplacement en fonction du type d' | + | |
- | MAGAZINE m BEST OF GFA BASIC | + | |
- | sonnage vas se déplacer. Une structure SELECT-EMOSELECT sélectionne | + | |
- | les routines à appeler en fonetion du eype de trairement. | + | |
- | * La case od veut se rendre d | + | |
- | * le personnage est définis | + | |
- | " par la position [c%,1%). | + | |
- | né=dev ev4{carte\(c*, | + | |
- | SELECT n% | + | |
- | CASE 1 | + | |
- | Bexec deplacement (direction®) | + | |
- | CASE 2 | + | |
- | Gexec deplacement (direction# | + | |
- | Érencontré plaine | + | |
- | CASE 3 | + | |
- | Bexec deplacement (direction®) | + | |
- | @rencontre foret | + | |
- | CASE à i | + | |
- | Bexec deplacement (direction*) | + | |
- | Erencontres ruines | + | |
- | ENDSELECT | + | |
- | Limitations aux bords de la carte | + | |
- | Le programme ne gère pas les déplacements sur les bords de l' | + | |
- | Rien n' | + | |
- | Pour éviter cela, 1l faut placer une barrière d' | + | |
- | sables aux limites de la carte. Ce peut etre de l'eau où des montagnes. | + | |
- | De toute façon, les bords de la carte dorvent être visualisés d'une mamièré | + | |
- | logique pour le jouëur. De nombreux programmes du commerce | + | |
- | sont limités par la mer, La carte lournie en télechargement sur | + | |
- | le serveur 3615 ATARI avec les programmes EDITCART et GESCARTE | + | |
- | (sous le nom de JEUGFAZ4.T05) est limitéé par une vasté érendue | + | |
- | d'eau sur laquelle le joueur ne peut se déplacer. | + | |
- | Routine @exec_ deplacement | + | |
- | La routine Gexec deplacement (direction*) exécute un déplace | + | |
- | ment simple dans la direction direction® C'est une fonction d' | + | |
- | qui sélectionne la rourine de déplacement à wtiliser pour | + | |
- | gérer le déplacement dans la direction désiré | + | |
- | PROCEDURE exec deplacement (direction*) | + | |
- | SELECT direction® | + | |
- | CASE 1 | + | |
- | Paller haut | + | |
- | CASE Z | + | |
- | Baller bas | + | |
- | CASE 3 | + | |
- | Galler droite | + | |
- | CASE 4 | + | |
- | Baller gauche | + | |
- | ENDSELECT | + | |
- | RETURN | + | |
- | Les procédures Galler haut Galler bas, Galler droite er Baller | + | |
- | gauche déplacent l' | + | |
- | Leurs scructures est assez complexe car redessimér rapidement l' | + | |
- | de [a carte avec des routines écnites entièrement en GÉA Basic n°est | + | |
- | pas simplé. | + | |
- | 1l 'est impossible de redessiner Pimage de la carte sur l' | + | |
- | ment rapidement pour que le jouéur ne voie pas l’opération s' | + | |
- | Ce serait possible en Assemblezr, mais pas en GE4 Basic, Pour | + | |
- | éviter cet effet graphique désagréable à l' | + | |
- | efféctuent les opérations graphiques dans ün ééran virtuel s» | + | |
- | tuë en mémoire | + | |
- | Une fois les opérations praphiques terminés, le programme devrait | + | |
- | recopier l' | + | |
- | cetré technique n'est pas assez rapide pour obrénir un affichage de | + | |
- | bonne qualigé L' | + | |
- | ne recopié pas l' | + | |
- | change l' | + | |
- | L' | + | |
- | Le programme travaille sur deux zones mémoires qui sont alternativémént | + | |
- | utilisés comme mémoire écran ct ééran victuel. Leurs rôles | + | |
- | sont inversés à chaque affichage. Les adresses de ces zones mémoire | + | |
- | sont stockérs dans les variables adri% er adr2%, L' | + | |
- | visible à l' | + | |
- | de l' | + | |
- | Lä position de la portion de carte visible par rapport 2 la carte totale | + | |
- | est stockée dans les variables 1igne carte% et colonne_cartef Les | + | |
- | routines de déplacement modifient ces variables en fonction du sens | + | |
- | de déplacement, | + | |
- | La routine @aller_ bas | + | |
- | Pour comprendre comment fonctionnent ces routinés, la meilleure | + | |
- | méthode est encore dé prendre un exemple. | + | |
- | Ce sera la routine Baller bas qui déplace Pimage de la carte vers le | + | |
- | bas. L' | + | |
- | ments graphiques, c' | + | |
- | éléments graphiques. L' | + | |
- | située au mifeu dé la carte (sitième ligne, sixieme colonne). | + | |
- | Le déplacement ne s' | + | |
- | de l' | + | |
- | sur l' | + | |
- | retrouve à |a place de la ligne 1. | + | |
- | La ligne 3 se retrouve à la place de la ligne 2, ete, Senle la ligne 11 | + | |
- | doit être redessinée par le programme. Cèrte rechnique de rélfichage | + | |
- | partiel permet de gagner béaucoup de temps par rapport à un reaffir | + | |
- | chage complet. | + | |
- | La procédure @aller bas recopie dans l' | + | |
- | 11 à la position des lignes 1 à 10. Ensuite, elle redessine l' | + | |
- | miligu de la carte qui avait été altéré par l' | + | |
- | Elle dessine ensute la nouvelle ligne, puis affiche l' | + | |
- | dù personnage au milieu de la carte. Une fois la carre cerminée, le | + | |
- | programmé change l' | + | |
- | Péeran virtuel. Le changement de Padresse écran est effectué par la | + | |
- | procédure @visualisation ecr travail. | + | |
- | Etant donné que les adresses de la mémoire écran ec de Pécran virtuel | + | |
- | sont inversés lors des déplacements, | + | |
- | dans la fénêtre graphique disparaissent à chaque déplacement | + | |
- | pour réapparaître au suivant. Pour éviter cela, la procédure Bco- | + | |
- | ATARI MAGAZINME E BEST OF GFA BASIC | + | |
- | nie fenetre recopie le contenu de la fénêtre graphique dans l' | + | |
- | virtuel juste avant l' | + | |
- | Remarque: La procédure @visualisation ecr travail change l' | + | |
- | de la mémoire écran par l' | + | |
- | vai15), Ceue procédure utilise la procédure @set_pcr_phys qui vt | + | |
- | lise elle-même la fonction XBI0S(5). Cette instruction systéme na | + | |
- | pas umne action instantanée : elle attend que le spot vidéo ait finit de | + | |
- | dessiner l’image pour changer l' | + | |
- | VSYNC bloque le déroulement du programme tant que le | + | |
- | spot vidéo dessine l’écran, et donc tant que la fonction XBIUS (h) ma | + | |
- | pas changée l’adresse de la mémoire écran. Cela permet d' | + | |
- | *havures vidéo” desagréables à l' | + | |
- | PROCEDURE visualisation ecr travail | + | |
- | êset ecr phys(ecr travail#) | + | |
- | VSYNC | + | |
- | RETURN | + | |
- | Module de rencontres | + | |
- | Le module de rencontré gére les rencontres er les découvertes que | + | |
- | peut faire le joueur en se déplaçane sur la carté. | + | |
- | Il est constitué des routines @rencontre plaine, érencon bre-t0- | + | |
- | ret, Arencontre ruines, Btst probabilite, | + | |
- | Binit rencontres, @tirage decouverte, @init_decouvertes | + | |
- | et @init tables découvertes. | + | |
- | Toutes les cases où peuvent apparaîcre des créatures onr une probabilité | + | |
- | de rencontre. Lorsque le personnage entré dans l’une de ces | + | |
- | cases, le programmie effectue un tirage de probabilité pour déterminer | + | |
- | s’il se produit effectivement une rencontre. | + | |
- | La fonction @tst probabilite(prob®) permer de savear s1 un | + | |
- | événement de probabilité prob se produit effectivement. Elle ren | + | |
- | voic la valéur logique vraie (TRUE) si l' | + | |
- | logique fausse (FALSE) si l’événement ne se produit pas. Le tire | + | |
- | g d'une probabilité comprise entre 1 et 100 se fait avec l' | + | |
- | RARDOM | + | |
- | Une fois que le programme sait qu'il se produit une rencontre, il | + | |
- | détermine la nature de la créature en utilisant une table de rencontre, | + | |
- | Une table de rencontre est une liste de créatures possédant chacune | + | |
- | une probabilité d' | + | |
- | La fonction @tirage creature(tables) tire une créature de la | + | |
- | table dé rencontre tableï, Il existe une table de rencontre pour la | + | |
- | plaine, une pour la forêt et une pour les ruines. | + | |
- | Les routinés Érencontre plaine, @rencontre foret ec Brencontre | + | |
- | ruines gérent les 3 types de rencontres qui peuvent se produire | + | |
- | dans GESCARTE Pour comprendre comment fonctionnent ces | + | |
- | rautines, prénons l' | + | |
- | gère les rencontres que 12 personnage peut faire dans un environsnement | + | |
- | de plaine. | + | |
- | La probabilité de rencontre est de 10%. 5 la rencontre se produit, la | + | |
- | fénetion @tirage créature permet de déterminer le type de | + | |
- | créature rencontrée, | + | |
- | dans la fenêtre graphique. Lalfichage se fair avec la procédure | + | |
- | éaff Teneire, | + | |
- | PROCEDURE rencontre plaine | + | |
- | LOCAL creature% | + | |
- | LOCAL m3 | + | |
- | i | + | |
- | IF @tst_probabilite(10) | + | |
- | creaturet-@tirage creature(1) | + | |
- | mb=" | + | |
- | Gaff fenetre(m5) | + | |
- | ENDIF | + | |
- | RETURN | + | |
- | La routinc @rencontre ruines gère les rencontres, mais ausés la | + | |
- | découverte d’un trésor. La gestion d'une découverte se fair de la | + | |
- | mème manière que la gestion d'une rencontre tésr de probabilité et | + | |
- | rable de découverte, | + | |
- | Initialisation des tables de rencontres | + | |
- | Une table de rencontre et une liste de créatures avec une probabilité | + | |
- | de rencontre. La sonime des prôbabilités d'une table doir être de | + | |
- | 035, Le tableau table rencontre®() contient les différentes tables | + | |
- | de rencontre du programme. | + | |
- | [l peur mémoriser 20 tables pouvant contenir chacune jusqu' | + | |
- | prubabilités de rencontre, | + | |
- | DIM table rencontref [EÜ.ËÜgË_Ï' | + | |
- | Le tableau table rencontre%(t%, | + | |
- | rencontre avec [a creatare ' | + | |
- | Les tables sont définies dans des lignes de DATA sous la forme | + | |
- | numéro créature/ | + | |
- | v à encore une table après la table courante, Ja valeur 1 est l' | + | |
- | de fin de données. La table 1 est la table de rencontre en plainé | + | |
- | la table 2 est la table de rencontre en forët et la table 3 est la table de | + | |
- | rencontre des ruines, | + | |
- | 1T RUTRa RR T A RR s | + | |
- | # TABLE 1 * | + | |
- | , PLAINE * | + | |
- | | RE RÉRÉRRAURE ETE AL S | + | |
- | ! * Paysans = g | + | |
- | ' * Colporteur = 105 * | + | |
- | | # Voleurs 204 * | + | |
- | # Chiens L # | + | |
- | c2 rrs cd 5 | + | |
- | i d e e A A e e = o s b E | + | |
- | DATA 21,50 | + | |
- | DATA 22,10 | + | |
- | DATA 20,20 | + | |
- | DATA 2,10 | + | |
- | DATA 50,10 | + | |
- | DATA -2 | + | |
- | Définition des découvertes | + | |
- | Les objers que le personnage peur découvrir sont définis par une description | + | |
- | stockée dans lc tableau alphanumérique dec ouverte$(). | + | |
- | La description de ces objets est définis dans des lignes de DATA: | + | |
- | La procédure @init decouvertes initialise le rableau decouverteS(). | + | |
- | ATARI MAGAZINE m BEST-OFGFA BASIC | + | |
- | Définition des créatures | + | |
- | Les créatures que le personnage peut rencontrer sont définies uniquement | + | |
- | par leurs noms. Ceux-i sont stogkés dans le cableau creature$(). | + | |
- | Les créatures sont définies dans des hgnes de DATA. La | + | |
- | procédure Einit creatures initialise le tableau creatured () avec | + | |
- | les données stockdes en DATA Les éréatures sont définies de manière | + | |
- | “minimale”, | + | |
- | faut rajouter d' | + | |
- | Module de gestion de la fenêtre graphique | + | |
- | La fenêtre graphique est une zone située à la droire de la carte où le | + | |
- | programme peut athicher des messages. Le programme GESCARTE | + | |
- | l' | + | |
- | Elle est situde à la position (194,12) ec mesure 118 pixels de large ct | + | |
- | 178 pixels de haur. Elle peur contenir 20 lignes de 14 caractères, | + | |
- | variable globale ligne courante¥ conmtient la position courante | + | |
- | d’athchage, | + | |
- | La procédure Bcls fenetre dessiné Pimage de la fenêtre vide. Flle | + | |
- | sert à afficher la fenêtre graphique au début du programme et à l' | + | |
- | en cours de route, | + | |
- | La procédure @init fenetre affiche l' | + | |
- | variable Tigne courante=A0, | + | |
- | La procédure Gaff fenetre(message5) affiche le textc messaged | + | |
- | dans la fenêtre graphique. Le texte est mis en forme par la routine | + | |
- | @format pour ne pas dépasser les limites de la fenêtre. Chaque ligne | + | |
- | formatée est affichée par la fonction Cafft ligne, | + | |
- | La routine Baff ligne(Tigne$) affiche la ligne Tigne$ à la posr | + | |
- | tion courante de la fenêtre. La ligne est affichée à la position stockée | + | |
- | dans la variable 1igne courantes: S1 celleci contient une valéur | + | |
- | supérieuré à 19, il ne reste plus de place libre dans la lénêtre car les | + | |
- | numéros de lignes sont comprises entre 0 ec 19, Le progratume scrolle | + | |
- | alors la fenêtre graphique d’une ligne vers le haux. | + | |
- | La procédure @scro!1 fenetre scrolle le contenu de la fénêtre graphique | + | |
- | d'une ligne vers le haut. Le scrolling est réalisé en copiant les | + | |
- | lignes 1 à 19 à l' | + | |
- | les instructions graphiques GET et PUT. Une fois le scrolling effecruc, | + | |
- | la dernière ligne esr effacee. | + | |
- | La procédure @copie fenetre recopie le conrenu de la fenêtré gra | + | |
- | phique de l’écran physique vers l' | + | |
- | écran de travail). Certe procéduré est utilisée par le système d' | + | |
- | de la carte qui travaille en permutant les écrans physique ec logique, | + | |
- | Les fonctions systémes | + | |
- | Les fonctions systémes sont des fonctions multi-usages qui remplissent | + | |
- | des thches classiques dans toutes sortes de programmes. s ne | + | |
- | dépendent pas de GESCARTE et peuvent étre réutilisés dans toutes | + | |
- | sortes de programmies, | + | |
- | Les fonctions systèmes sont Bwaitclavien @vider clavier, | + | |
- | Bcls ecran, Bocadre, Oset ecr log, éset ecr phys et Bformat | + | |
- | La procédure Bwaitclavier amend que l' | + | |
- | touche. Elle ne renvoie pas le code de la touche pressée, C'est l' | + | |
- | de l' | + | |
- | de trouver Éwai tclavier dans un listing que VOID INP(2). | + | |
- | La procédure Evider clavier efface tous les caractères stockés dans | + | |
- | le tampon clavier, Elle permet d' | + | |
- | répétition du clavier ST, Céla peut être ntile dans certains cas. | + | |
- | La routine Pcls ecran(c*) cfface Pécran en le remplissant avec la | + | |
- | couleur 6* Cette routine est plus pratique que l’instruction CLS qui | + | |
- | remplis uniquement l' | + | |
- | un fond d' | + | |
- | La procélure Écadre(px%, | + | |
- | sraphique de dimensions (tx%,ty#) à la position (px*,pys). Le | + | |
- | fond du cadre est de la couleur % alors que les bords sont dans la | + | |
- | couléur DR Clest une sorte d’instruction PBOX amélioré | + | |
- | La rourine @set ecr log(adr ecrans) permet de changer l' | + | |
- | de Pécran logique, c' | + | |
- | fonctions graphiques du GFA Basic Le nouvel écran de travail doit | + | |
- | faire 32000 ocrets pour éviter les plantages systèmes. Cette routiné | + | |
- | pérmét de réaliser des opérations graphiques en mémoire sans que | + | |
- | en n' | + | |
- | La procédure @set ecr phys (adr ecran%) permet de changer l' | + | |
- | dé l’écran physique, c' | + | |
- | C' | + | |
- | nouvelle mémoire écran doit faire 32000 octets et commencer à une | + | |
- | adresse multiplé de 256 (certe limitation n’existe pas sur le STE où | + | |
- | Padresse de la mémoire écran peur être fixée à n' | + | |
- | paire), En utilisant cete fonction avec Bset ecr log, on peut | + | |
- | réaliser des affichages très rapides, mais assez complexes, | + | |
- | La routine @format{m$, | + | |
- | texte m en lignes ne dépassant pas taille® caractères, | + | |
- | formaté de manière 4 ne pas couper les mots, Te texte formate est | + | |
- | stocké dans le tableau alphanumériqué lignes$(). La variable giobale | + | |
- | nb_lignes® contient le nombre de lignes lormatées présentes | + | |
- | dans le tableau Tignesi (). | + | |
- | Améliorations du programme | + | |
- | Le programme GESCARTE peut éure ameélioré de nombreuses manieres, | + | |
- | Vous pouvez ajouter de nouveaux éléments eraphiques et de | + | |
- | nouvelles rables de rencontres. Un systéme de sous-cartes peut permétire | + | |
- | au personnage d’entrer dans les maisons et d' | + | |
- | châteaux: | + | |
- | l’interface utilisateur peut être modifiés pour fonctionner entierement | + | |
- | à la souris. Des icônes peuvent réprésenter les différents options | + | |
- | du programme (déplacement, | + | |
- | manipulations des objets possédés par le personnage, sauvegarde | + | |
- | de la partie, chargement d'une ancienne partie, etc.) | + | |
- | Vous pouvez prévoir une passibilité de dialogues entre le personnage | + | |
- | et les créatures qu'il rencontre pendant ses deplacéménts, | + | |
- | Pour transformer cé logiciel en véritable jeu de rôle micro, 1l faut | + | |
- | prévoir un but et des sous-buts. En général, ce but est la destruction | + | |
- | d'un puissant sorcier. Les sous-burs peuvent être la recherche d' | + | |
- | d' | + | |
- | divers) et éventuellément de sorts. Certains endroits de la carte péuventêtre | + | |
- | extrémemert n:: | + | |
- | expérience ec sans équipément particulier. | + | |
- | Téléchargement | + | |
- | Vous pouvez obtenir les listings de EOITCART et de GESCARTE sur le | + | |
- | ATARI MAGAZINE WAl BEST OF G4 BASIC | + | |
- | 3615 ATARI Ces programmes sont accompagnées d' | + | |
- | Elite contenant des exemples d' | + | |
- | ët un exemple de carte, | + | |
- | e e e d e e e Al e T d e R n e e S R | + | |
- | 5 JEU DE ROLE STYLE EULTIMA * | + | |
- | e GFA BASIC 3.xx , | + | |
- | i: | + | |
- | « (C) 1991 ATARI MAGAZINE #. | + | |
- | * (£} 1991 PATRICK LECLERCO = | + | |
- | D RSSIE E ok e A o Fi RR R | + | |
- | i | + | |
- | RESERVE 100000 | + | |
- | ' OPTION BASE 1 | + | |
- | DIM element$ (200) | + | |
- | OIM creature$(200) | + | |
- | DIM decouvertet(700) | + | |
- | DIM lignes$(20) | + | |
- | DIM table rencontre=(20, | + | |
- | DIM table decouvertes(20, | + | |
- | DIM def ev*(200) | + | |
- | adr Lampon# | + | |
- | adr2%={adr tampon*+255) AND & | + | |
- | adrl& | + | |
- | nb colonness=-1 | + | |
- | nb _ ligness=—1 | + | |
- | OIM carte/ | + | |
- | gmain | + | |
- | 1l u ke r r o e el e e e v e e e e e o e o e e o e e W | + | |
- | ' % RETOUR AUX CONDITIONS DE DEBUT * | + | |
- | | XX EAAR bd bW AdbErETTdtbridzetat | + | |
- | @set ecr log(adrl%) | + | |
- | Bset ecr phys(adrl& | + | |
- | CLS | + | |
- | VOID MFREE(adr tampons) | + | |
- | END | + | |
- | R O R R O R E T I d e e É R RE E AN | + | |
- | ! * ATTENTE PRESSION SUR UNE TOUCHE * | + | |
- | | RE E RERRRE SR E R RR Rk R de d d e | + | |
- | | * (Cette fonction ne renvoie pas 5 | + | |
- | !* Tle numëro de touche. C'est = | + | |
- | # l' | + | |
- | * VOID INP(Z) ; | + | |
- | D É IATERE ETE o o RR I R E CRN R R E R | + | |
- | FROCEDURE waitclavier | + | |
- | CO | + | |
- | EXIT IF INKEY§<>"" | + | |
- | LOOP | + | |
- | RETURN | + | |
- | i | + | |
- | | *mEaxxdtritdtdhdrdhdarrredttdbhhhdw | + | |
- | : F YIDER TAMPON CLAVIER * | + | |
- | Le Ro e R o S R e E | + | |
- | PROCEDURE vîder_; | + | |
- | B0 | + | |
- | EXIT 1F INKEYS="" | + | |
- | LOOP : | + | |
- | RETURN | + | |
- | PROCEDURE set ecr Togladr ecran®) | + | |
- | VOID XBIOS(5, | + | |
- | RETURN | + | |
- | PROCEDURE set ecr phys(adr ecranf) | + | |
- | VOID X8105(5, | + | |
- | RETURN | + | |
- | | ÉXTÉTTVLETTEITEFÉETEEXF | + | |
- | | # EFFACEMENT ECRAN * | + | |
- | I ETE RTAREES RE AANNA RE | + | |
- | 1 A AAaaAÉÉR RR R RR R A R d R RR RE R | + | |
- | * * C% : couleur de remplissage de 1' | + | |
- | | p e e R e e e e e e é e e E | + | |
- | PROCEDURE cls ecran(c%) | + | |
- | DEFFILL % | + | |
- | PBOX 0, | + | |
- | RETLRN | + | |
- | I | + | |
- | I kA AR EARNFAAAA A A Ak bkt | + | |
- | | * AFFICHAGE CADRE GRAPHIQUE * | + | |
- | | E e e e e e e b o e e S o A A R E E E E | + | |
- | PROCEDURE cadre(pExx, | + | |
- | LOCAL px2%,pyd% | + | |
- | i | + | |
- | pxcés=pxsrlxé—] | + | |
- | pvésepysttysl | + | |
- | DEFFILL % | + | |
- | PROK px%,pys, px2%, pyès | + | |
- | COLOR b% | + | |
- | BOX pxb, | + | |
- | RETURN | + | |
- | TT E e i st ok o ol e e e E A o S | + | |
- | T # | + | |
- | ! *. ROUTINES DE GESTION DE * | + | |
- | ! % LA FENTRE DES MESSAGES * | + | |
- | 1E - | + | |
- | | de sk E R E R E E AR RESRE RE | + | |
- | ATAR| MAGÈAZINE m BEST OFGFA BASIC | + | |
- | k | + | |
- | F R n d e e e d e e e e e e é L r r e e SE | + | |
- | * FORMATAGE D'UN TEXTE * | + | |
- | SS É UE E RE RE RE E E RE S ! | + | |
- | RH HR E E d d e e RE R R N d E | + | |
- | * Cette routine découpé un texte en plusieurs lignes” | + | |
- | pour un affichage propre. le découpage se fait au * Ÿ | + | |
- | * niveau des mots. | + | |
- | * PARAMETRES ROUTINE : | + | |
- | #* | + | |
- | * mh : texte à formater | + | |
- | * taille® : nombre maximum de lettres par ligne | + | |
- | b, 1] | + | |
- | SORTIE ROUTINE : | + | |
- | # + | + | |
- | * tableau lignest(). | + | |
- | éc e ec e e e e e e e e e e d S e e e é e d e d e e e e e e É R RE E | + | |
- | # | + | |
- | PROCEDURE format(m# | + | |
- | LOCAL Lampon$ | + | |
- | LOCAL p* | + | |
- | LOCAL €$ | + | |
- | LOCAL lignet | + | |
- | nb l{gnes*=0 | + | |
- | tamnont="" | + | |
- | lignet="" | + | |
- | FOR p&=1 T0 20 | + | |
- | lignes$(p=}="" | + | |
- | NEXT p% | + | |
- | I ÉÉ T ETE REN P AR E | + | |
- | ' * BOUCLE DE DECOUPAGE * | + | |
- | | RESREsN | + | |
- | FOR p%=1 TO LEN(m$) | + | |
- | c3=MID$ (m$,p%.1) | + | |
- | IF ES{?" lï | + | |
- | tampon$=tamponitet | + | |
- | ENDIF | + | |
- | IF c3=" " | + | |
- | 1F LEN(Tigne$)+1+LEN(tampon$)< | + | |
- | IF lignet="" | + | |
- | l igne$=tampons | + | |
- | tamponhe"" | + | |
- | ELSE | + | |
- | lignef=ligne{+" | + | |
- | tampon$="" | + | |
- | ENDTF | + | |
- | ELSE | + | |
- | INC nb Tignes% | + | |
- | lignes${nb lignes# | + | |
- | lignes="" | + | |
- | IF tamponfe="" | + | |
- | Les lignes sont stockées dans le tableau lignes$(})* | + | |
- | La variable nb Tignes% contient le nb de lignes du* | + | |
- | tampon$=tampon$+" | + | |
- | ERDIF | + | |
- | ENOIF | + | |
- | ENDIF | + | |
- | NEXT p% | + | |
- | [ *wwjitt*; | + | |
- | ' * FIN DU DECOUPAGE # | + | |
- | E e o o o o e | + | |
- | IF {ligne$="" | + | |
- | INC nb 1igness | + | |
- | lignes$(nb 1ignesk)=tampon} | + | |
- | tflmpflHE’"" | + | |
- | ENDIF | + | |
- | IF (tampond< | + | |
- | IF LEN(ligneS)+1+LEM (tamponi}< | + | |
- | INC nb ligness | + | |
- | lignes%{nb lignes# | + | |
- | lignes="" | + | |
- | tampon$f="" | + | |
- | ELSE | + | |
- | INC nb_lignes*# | + | |
- | lignes${nb lignes%)=lignes | + | |
- | ligne$="" | + | |
- | INC nb lignes* | + | |
- | lignes$(nb lignes*)=tampons | + | |
- | tamponf="" | + | |
- | ERDIF | + | |
- | ENDIF | + | |
- | RETURN | + | |
- | D = o o b e R R T e b R R | + | |
- | " % EFFACEMENT FEMETRE MESSAGES * | + | |
- | ï fi*fiïÿfi*%i11******## | + | |
- | PROCEDURE cls fenetre | + | |
- | Écadre(194, | + | |
- | RETURN | + | |
- | | ok g ol o o e A e e e e e e e e e e R | + | |
- | " % SCROLLING VERS LE HAUT * | + | |
- | | ÉÉÉ RA REN T e ek ke | + | |
- | PROCEDURE scroll fenetre | + | |
- | LOCAL scroll$ | + | |
- | GET 196, | + | |
- | PUT 196, | + | |
- | cadre(196, | + | |
- | ! Effacement derniére ligne | + | |
- | RETURN P | + | |
- | D éh BTN Sy W é RR R RR A E N E e e e e S R R A A r d d e e | + | |
- | “ AFFICHAGE D'UNE LIGNE DANS LA FENETRE * | + | |
- | 1 rr e r d d e e d o e r i i e E e d e o o e e e RE E | + | |
- | PROCEDURE aff ligne(lignes) | + | |
- | ATARI MAGAZINE Ë BEST OF GFA BASIC | + | |
- | LOCAL pxé,pys | + | |
- | IF ligne courantes=19 | + | |
- | @scroll fenetre | + | |
- | ligne courantes=19 | + | |
- | ENDIF | + | |
- | px*=196 | + | |
- | py& | + | |
- | TEXT px%, | + | |
- | RETURN | + | |
- | I dh hN e e e d e c é e d d d e R R R E E | + | |
- | ! * AFFICHAGE D'UN MESSAGE DANS LA FENETRE 7 | + | |
- | D R e e R e AN E R E E | + | |
- | PROCEDURE aff fenetre(message}) | + | |
- | LOCAL 1% | + | |
- | Pformat{messaged, | + | |
- | FOR 1=1 T0 nb_lignes% | + | |
- | INC ligne courantes | + | |
- | @aff ligne(lignes${1)) | + | |
- | NEXT 1% | + | |
- | RETURN | + | |
- | Î **; | + | |
- | V% INITIALISATION FENETRE TEXTE * | + | |
- | P éh d e A R R e é r é é d P d d d e T | + | |
- | PROCEDURE init fenetre | + | |
- | Bcls fenetre | + | |
- | ligne courante*=0 | + | |
- | RETURM | + | |
- | BT kL T e R R A d LR e d e d | + | |
- | ! = COPIE FENETRE DE TEXTES DANS ECRAN DE TRAVAIL- * | + | |
- | Ë “***fiwwÿ*tflttt***: | + | |
- | PROCEDURE copie fenetre | + | |
- | RC _ COPY ecr visible*, | + | |
- | TD ecr travail®%, | + | |
- | RETURN | + | |
- | 1 ook ok ok e e o RRN N R R E É EN d É e e W | + | |
- | 1" % | + | |
- | ' % CHARGEMENT DE FICHIERS DISQUE * | + | |
- | | xx* RR b e e e E E A e TR S E E E | + | |
- | L RE e E R E e R r S é A A A E | + | |
- | " * CHARGEMENT IMAGE DU PERSONNAGE SUR: LA CARTE = | + | |
- | S L LR e Rl ek 2t b b i N e | + | |
- | PROCEDURE charge perso(nom$) | + | |
- | perso$=# | + | |
- | OPEN " | + | |
- | BGET #1 , | + | |
- | CLOSE #1 | + | |
- | RETUEN | + | |
- | | LR S B R e e e e R | + | |
- | ' = [CHARGEMENT DU FICHIER BINAIRE B | + | |
- | * # CONTENANT LES ELEMENTS GRAPHIQUES * | + | |
- | T o ST e A R A S RE I SE E RRN | + | |
- | PROCEDURE charge elements{fichier}) | + | |
- | LOCAL n | + | |
- | LOCAL palettet | + | |
- | palettek=eS5PACE%(32) | + | |
- | OPEN " | + | |
- | BGET #1 , | + | |
- | VOID XBIOS(6: | + | |
- | nb elements“=INP{(# | + | |
- | FOR n%=1 TU nb elements* | + | |
- | element${n%)-SPACE$(134) | + | |
- | BGET # | + | |
- | NEXT n* | + | |
- | CLOSE #1 | + | |
- | RETURN | + | |
- | LR S S L Ak ko 2 ÉÉ NA RR RE RE | + | |
- | ' * ÉHARGER CARTE A PARTIR DU DISQUE * | + | |
- | | 4h E d e e m r A r A P d e d e E É A RN iyt | + | |
- | PROCEDURE charger carte(nom$) | + | |
- | LOCAL entetes à | + | |
- | LOCAL 1%,c% | + | |
- | DPEN " | + | |
- | entete$-SPACES (19) | + | |
- | BGET # | + | |
- | nb colonness=INP(# | + | |
- | nb_lignes*=INP(# | + | |
- | FOR c*=1 TÜ nb colonnes= | + | |
- | FOR 1=1 1C nb lignes= | + | |
- | carte| (c%, 1%)=INF(# | + | |
- | NEXT 1% | + | |
- | NEXT c% | + | |
- | CLOSE #1 | + | |
- | RETURN | + | |
- | L d d e e d c E É | + | |
- | * OPTION ' | + | |
- | | AI E RE TR TRN REN RS | + | |
- | | NRAEXERRÉRÉAR RRN RR E ÉÉ R RR E E | + | |
- | ! « sortie#0 ==> continuer programme # | + | |
- | | = Sorties=] ==> quitter programe i | + | |
- | I ek AARAARFERESE A d d e d d e e e RN A | + | |
- | PROCEDURE guitter programme | + | |
- | LOCAL m$,t#, b5 | + | |
- | | | + | |
- | 5ürL1& | + | |
- | m$=" | + | |
- | choix$=" | + | |
- | SH | + | |
- | ATAR| MAGAZIME m BEST OF GFA BASIC | + | |
- | ALERT O, | + | |
- | HIDEM | + | |
- | 1F b%=1 | + | |
- | sorties=l — | + | |
- | ENDIF | + | |
- | RETURN | + | |
- | EITE T PR TR RS L LR a2 bt b b d b | + | |
- | i + # | + | |
- | * * GESTIONNAIRE DE KENCONTRES * | + | |
- | 1w * | + | |
- | d e é é e e e E E n E n e E E V é É OE A E | + | |
- | se m d r r r e e e e r r r e e r e e e e E N e é e e e d e e | + | |
- | * INITIALISATION DES TABLES DE RENCONTRES * | + | |
- | d d kAR e e e e e e e T e ce d e e RR RE R T D A E | + | |
- | PROCEDURE init rencontres | + | |
- | LOCAL table*, | + | |
- | LOCAL prob%, | + | |
- | LOCAL valeur# | + | |
- | ARRAYFILL table rencontre%(), | + | |
- | table*=l | + | |
- | rencontre®=l | + | |
- | RESTORE def rencontres | + | |
- | Do | + | |
- | D0 | + | |
- | READ valeur* | + | |
- | EXIT IF valeurfs-1 | + | |
- | EXIT IF valeur*-— | + | |
- | creatureé%=valeurs | + | |
- | READ probé | + | |
- | table rencontre+(tables, | + | |
- | table rencontret(table%, | + | |
- | IRC rencontres | + | |
- | LOap | + | |
- | EXIT IF valeurs=—1 | + | |
- | INC table* | + | |
- | rencontre%=1 | + | |
- | LOOF | + | |
- | RETURN | + | |
- | I ool i o R E o i e v e ook o o R e R e R o d | + | |
- | * TEST DE PROBABILITE * | + | |
- | FHREFFYARFEERTF LIRS | + | |
- | ' % Cette fonction sert à tester si un évënement A | + | |
- | ' % de probabilité prob% s'est produit. La routine * | + | |
- | ! # ‘renvoie TRUE si | ' | + | |
- | | * FALSE dans le cas contraire. = | + | |
- | I RAARAARRRRRRA AN e e R RR E E e d e | + | |
- | FUNCTION tst probabilite(prob%) | + | |
- | LOCAL rep% | + | |
- | 1F RANDOM(100)+1< | + | |
- | reps=TRUE | + | |
- | ELSE | + | |
- | dh d de d EEEAAEANN A AT T d ANARERRAAAAA N É | + | |
- | reps=FALSE | + | |
- | ENDIF | + | |
- | RETURN reps | + | |
- | ENDFUNC | + | |
- | 26e d e e e RR MRN d DE d e E | + | |
- | « TIRAGE-D' | + | |
- | R rr e e e e e E AI | + | |
- | LR RRN ATk kAR RR d RR E S E R NNN IERE | + | |
- | * Cette routine détérminé aléatoirément un numéro de | + | |
- | * créature à partir de la table de rencontré tables. | + | |
- | e A A A E T E E E CO E E E A e E CR CR d A A E E E E S | + | |
- | FUNCTION tirage rencontre(table*) | + | |
- | LOCAL tirage*, | + | |
- | LOCAL prob%, | + | |
- | LOCAL total prob% | + | |
- | “tirage==RANDOM(1001+1 | + | |
- | creatures=—l | + | |
- | total prob%=D | + | |
- | FOR rencontre*=1 TO 30 | + | |
- | probs=table rencontre%(table%, | + | |
- | IF probi==-1 | + | |
- | ADD total prob', | + | |
- | IF (tirage*< | + | |
- | creatureE=table réencontte*(table%, | + | |
- | rencontre%=30 ! Sortie de la boucle | + | |
- | ERDIF | + | |
- | ENDIF | + | |
- | NEXT rencontres | + | |
- | IF creature=l | + | |
- | PRINT " | + | |
- | FRINT " | + | |
- | ENDTF | + | |
- | RETURN creatures | + | |
- | ENDFUNC | + | |
- | — | + | |
- | ds d d r d u R E e r e d m e r e e t e m c A r e e | + | |
- | * Æ | + | |
- | * GESTIONNAIRE DES DECOUVERTES * | + | |
- | * x | + | |
- | rrrh e e é e d e d d e é A e e d E | + | |
- | d R R e PI d RR R E E A T é e P e e RE | + | |
- | * INITIALISATION DES TABLES DE DECOUVERTES * | + | |
- | I T dh h AT T TN POV TN T EMN RR E A ÉÉ E | + | |
- | PROCEDURE init tables decouvertes | + | |
- | LOCAL table*, | + | |
- | LOCAL prob%, | + | |
- | LOCAL info% | + | |
- | ARRAYFILL tahÎE_dEEüuvertEÊ[J, | + | |
- | table%=1 | + | |
- | decouvertes=1 | + | |
- | RESTORE tables decouvertes | + | |
- | ATARI MAGA£INE m BEST OF GFA BASIC | + | |
- | D | + | |
- | [0 | + | |
- | READ info% | + | |
- | EXIT IF infof%=—1 | + | |
- | EXIT IF info%=—2Z | + | |
- | tresor*-into® | + | |
- | READ prob# | + | |
- | tabled ecouverte*(table*, | + | |
- | table decouverte“(table%, | + | |
- | INC decouvertes | + | |
- | LOOP | + | |
- | EXIT IF info%=—I1 | + | |
- | INC tabie* | + | |
- | découverte%=l | + | |
- | LOOP | + | |
- | RETURN | + | |
- | Emm R d R d d e E | + | |
- | * TIRAGE D'UNE DECOUVERTE = | + | |
- | e e h e e e e e e e d d | + | |
- | A FT AR R R AR R RR E NNN e e A RR r E A d d d | + | |
- | *Cette routine détermine aléatoirement un numéro de* | + | |
- | * trésor à partir de la table de découverté tables.” | + | |
- | e d e d p e A A A r e d d e d d e e R R R B e r e e e e ok r o ol e e e SE DE | + | |
- | I ÉÉTÉTERTTNÈTE EÉ TEVRÉE | + | |
- | * * AFFICHAGE DE L& * | + | |
- | "4 CARTE VISIBLE * | + | |
- | I AW W AREF S AR A EE | + | |
- | PROCEDURE aff carte | + | |
- | LOCAL 1%,c% | + | |
- | LOCAL Tigne* | + | |
- | LOCAL colonnes | + | |
- | LOCAL rrs | + | |
- | LOCAL posx® | + | |
- | LOCAL posys | + | |
- | posyg=ycartes | + | |
- | lignes=ligne carte% | + | |
- | FOR 1%=1 TO 11 | + | |
- | posx*=xcarte* | + | |
- | colonne%=colonné cartes | + | |
- | FOR c=1 TU 11 | + | |
- | num#| -{coclonaner%.ltignee) | + | |
- | PUT posx%, | + | |
- | INC colonnes | + | |
- | ADD posx%1,6 | + | |
- | LOCAL ecr2%, x%.ve% | + | |
- | LOCAL pxés,pys | + | |
- | LOCAL c&, | + | |
- | LOCAL r% ‘ | + | |
- | LOCAL old elements | + | |
- | old element# | + | |
- | DEC ligne carte% | + | |
- | @prepareacrt tiraovanil | + | |
- | écri*-=ecr visiblex | + | |
- | xl==xcarte% | + | |
- | vl%# | + | |
- | ecr2%“secr travail% | + | |
- | x2%=xcartes | + | |
- | véds=ycartes+16 | + | |
- | RC COPY ecrl%, | + | |
- | PUT xcarte*+80, | + | |
- | cn!unne%=cu1unne_carte% | + | |
- | px*=xcartes P | + | |
- | pyv& | + | |
- | FOR c%=1 TO 11 | + | |
- | nw=carté| (colonne*, | + | |
- | FUNCTION tirage decouverte(table%) | + | |
- | LOCAL tirage%, decouvertes | + | |
- | LOCAL probs, | + | |
- | LOCAL total probs | + | |
- | tirages=RANDOM(100)+1 | + | |
- | tresorfs=—1 | + | |
- | total_probs=0 | + | |
- | “ FOR decouverte*=1 TO 30 | + | |
- | pruh%itahïe_üücüuverteä[tablaä, | + | |
- | IF probfe=-l | + | |
- | ADD total prob%, | + | |
- | 1F (tiragek< | + | |
- | tresur%=tdh1e_decüuvfirteä{tahîE%.decüuverteä, | + | |
- | NEXT c* PUT px*, | + | |
- | INC ligne* INC caolonne* | + | |
- | ADD posys,lb ADD px*,16 | + | |
- | NEXT 1% NEXT c% | + | |
- | PUT xcarteS+H0, | + | |
- | RETURN % Bcopie fenetre | + | |
- | ) Bvisualisation ecr travail | + | |
- | | ÆxN R R T E E E FEETUËH | + | |
- | * * GESTION PERMUTATION DES ECRANS * | | + | |
- | L REN ok ek s ook e o e d E R B E RN L s | + | |
- | PROCEDURE preparation ecr travail ' * DEPLACEMENT VERS LE BAS * | + | |
- | lF Eta‘t-;' | + | |
- | ecr visibles=adrls PROCEDURE aller bas | + | |
- | Ecr:; | + | |
- | ELSE LOCAL ecr%, | + | |
- | ecr visible¥=adri% LOCAL pxs,pys | + | |
- | ecr travaii*radr1% LOCAL c&, | + | |
- | decouvertés*=30 ! Sortie de la boucle ENDIF LOCAL n% ; | + | |
- | ENDIF etati=—etals LOCAL old elements | + | |
- | ENDIF Bset ecr log(ecr travail®) ' | + | |
- | NEXT decouvertes RETURN ntd_e!ementä=carte|{cüîünne_carte%+5, | + | |
- | IF tresor*=—l | + | |
- | PRINT “ERREUR DE FORMAT DANS LES DECOUVERTES® * * \ISUALISATION DE LA CARTE * | + | |
- | PRINT " | + | |
- | ENDIF | + | |
- | RETURN tresors | + | |
- | ENDFUNC | + | |
- | I AAAAAASÉÉ A RE R ÉÉÉ RR RR R AN | + | |
- | I W | + | |
- | ! * ROUTINES D' | + | |
- | Lo | + | |
- | R o o o ot o b e E g E RESRE R R A RE Tk ok ke kAo | + | |
- | INC lîgne carte* | + | |
- | Épreparation ecr travail | + | |
- | ecrl& | + | |
- | x1# | + | |
- | PROCEDURE visualisation ecr travail yl& | + | |
- | Bset ecr phys{eer travail¥) ecr2f=ecr travail% | + | |
- | VEYNC Xx24=xcarte# | + | |
- | RETURN | + | |
- | y2x=ycarLer | + | |
- | ' ' - RC COPY ecrl%.x1%.y15%5.176, | + | |
- | | e e rr dl d e e e e r e e 0 u d d d d d6 6 06 MRE Pu; : | + | |
- | w ! = DEPLACEMENT VERS LE HAUT * celonnes=colonne cartes | + | |
- | | RR RRN RE N R A c E päâ=äÛüFLE% | + | |
- | py==ycarte++160 | + | |
- | FOR ci=1 TD 11 | + | |
- | I A e 6 R E E E e E A A dn d d d e n S | + | |
- | 1 UEE R el ol NE NN A | + | |
- | - PROCEDURE aller haut | + | |
- | LOCAL ecrl%, | + | |
- | ATARI MAGAZINE E BEST OF GRA BASIC | + | |
- | né-carté|(colonne&, | + | |
- | PUT px%, | + | |
- | INC colonne* | + | |
- | ADD px=,16 | + | |
- | NEXT €* | + | |
- | PUT xcarte*+R0, | + | |
- | Bcopie fenétré | + | |
- | @visualisecar ttriavoainl | + | |
- | RETUEN | + | |
- | i | + | |
- | | d RN Ee E L | + | |
- | ! * DÉPLACEMENT VERS LA GAUCHE # | + | |
- | | ORRÉEIATAARaaR RR RRN A A A E | + | |
- | PROCEDURE aller gauche | + | |
- | LOCAL ecr1l5, | + | |
- | LOCAL ecr?% %, v2% | + | |
- | LOCAL px,pyf | + | |
- | LOCAL 1%,11gne% | + | |
- | LOCAL n% ï | + | |
- | LOCAL old elements | + | |
- | nld_elEmEnt%=carte|{Çùlünne_carte%+5, | + | |
- | DEC colonne cartes | + | |
- | Bpreparation ecr travail | + | |
- | ecrlf=ecr visioled | + | |
- | xl%=xcarte* | + | |
- | yl& | + | |
- | ecrZ“secr travail# | + | |
- | xPAexcartes+ib | + | |
- | veg=ycartek | + | |
- | RC COPY ecrl%, | + | |
- | EUT xcarte*+06, | + | |
- | lignes=ligné cartes | + | |
- | px4=xcartes | + | |
- | pys=ycartes | + | |
- | FOR 1%=1 TO 11 | + | |
- | nk=(ccoloanne rcartte*, | + | |
- | PUT px#, | + | |
- | INC ligne% | + | |
- | ADD pys1,6 | + | |
- | MEXT 1% | + | |
- | PUT xcartes+80, | + | |
- | Écopie fenetre | + | |
- | @visualisecar ttriavoainl | + | |
- | RETURN | + | |
- | Ï | + | |
- | I TR RRAARES E RR NNN TR RAARÉ EN | + | |
- | ! # DEPLACEMENT VERS LA DROITE * | + | |
- | D A e r e e e e R c e | + | |
- | PROCEDURE a]]nr_drüîte | + | |
- | LOCAL ecrlF, | + | |
- | LOCAL ecr2% , néw,yves | + | |
- | LOCAL px=,pys | + | |
- | LOCAL 1&, | + | |
- | LOCAL n | + | |
- | LOCAL old elements | + | |
- | ATARI MAGALIME Ë BEST-OF GFA BASIC | + | |
- | uîd_fllementä=carte|[cüïünne_EartE%+fi, | + | |
- | INC colonne cartés | + | |
- | Epreparation ecr travail | + | |
- | ecrl®-ecr visibles | + | |
- | xl# | + | |
- | vl& | + | |
- | ecrŸ& | + | |
- | x7*=-xcartes | + | |
- | yvék=eycartes | + | |
- | RC COPY ecrl®, | + | |
- | PUT xcarte*+h4, ycartes+80, | + | |
- | ligne& | + | |
- | px5=xcarte*+160 | + | |
- | pys=ycartes | + | |
- | FOR 1%=1 TO 11 | + | |
- | n& | + | |
- | PUT px*, | + | |
- | INC lîigne* | + | |
- | ADD py&, | + | |
- | NEXT 1% | + | |
- | PUT xcartes+80, | + | |
- | Gropie fenetre | + | |
- | @visualisation ecr travail | + | |
- | RETURN | + | |
- | | RRN E RR RR RR E RRN ARÉEE L ket ddddd | + | |
- | * # FONCTIONS DE GESTIDN DES EVENEMENTS DU JEU * | + | |
- | e e e e e e A “ e e e e r o e e r A e e e e e e e o e e t e S e TE | + | |
- | [ | + | |
- | XE e e R R R SRR e e e e | + | |
- | * LE JOUEUR SE DEPLACE SUR LA PLAINE * | + | |
- | e e e e i i i ok o d i e d e e ok o e e e e e i ok W W R E R | + | |
- | PROCEDURE rencontre plaine | + | |
- | LOCAL éréatures | + | |
- | LOCAL messages | + | |
- | IF @tst probabilite(10) | + | |
- | creature%=@tirage rencontre(1) | + | |
- | message®=" | + | |
- | Baff fenetre(messaged) ‘ | + | |
- | ENDIF | + | |
- | RETURN | + | |
- | P omdkkh ke RE E RE R RR A A RR d d d dede de | + | |
- | * * LÉ JOUEUR SE DEPLACE SUR LA FORET * | + | |
- | D TRIH E R d r e d e E T A e d E | + | |
- | PROCEDURE rencuntre_fflr& | + | |
- | LOCAL creatures | + | |
- | LOCAL messaget | + | |
- | 1F Ptst probabilite(15) | + | |
- | creaturet=@tirage rencontre(2) | + | |
- | méssagef=" | + | |
- | Gaff fenetre(message$) | + | |
- | ENDIF | + | |
- | RETURN | + | |
- | I AR A ARtk mdd é r d e d e e E | + | |
- | ! * LE JOUEUR EXPLORE DES RUINES * | + | |
- | | L b L E S = NNN NN R S S E R RR E E | + | |
- | R . i o A A E e T R SRR E Rk S e b e b e R e E | + | |
- | w* r Il peut rencontrer des créaturés, | + | |
- | * ou trouver divers objets anciens. * | + | |
- | e R d d d d d d e d R R E b ke À | + | |
- | PROCEDURE rencontre ruines | + | |
- | LOCAL creature* | + | |
- | LOCAL decouverte* | + | |
- | LOCAL ms | + | |
- | 1F @tst probabilite(16) | + | |
- | creature*=Etirage rencontre(3) | + | |
- | mé=" | + | |
- | Baff fenetre(mi) | + | |
- | ENDIF | + | |
- | I | + | |
- | IF êtst probabilite(5) | + | |
- | decouverte%-@tirage decouverte(i) | + | |
- | mé=" | + | |
- | Gaff fenetre(mb) | + | |
- | ENDIF | + | |
- | RETURN | + | |
- | L3 | + | |
- | E ed d d e d d E E E RR R e E | + | |
- | sé VISUALTSATION DU DEPLACEMENT * | + | |
- | " # SUR LA CARTE AFFICHEE A L' | + | |
- | I e d ds ds dh d d d S e 610 A A R OR R E e r e E | + | |
- | PROCEDURE exec deplacement(direction%) | + | |
- | SELECT directions | + | |
- | CASE 1 | + | |
- | Baller haut | + | |
- | CASE 2 | + | |
- | Galler bas | + | |
- | CASE 3 | + | |
- | Baller droite | + | |
- | CASE 4 | + | |
- | Baller gauche | + | |
- | ENDSELECT | + | |
- | RETURN | + | |
- | ï # | + | |
- | ' * ROUTINE DE DEPLACEMENT * - | + | |
- | | ENARTAETE RRR TERSISTE ERRERR E | + | |
- | PROCEDURE gestion deplacement (direction# | + | |
- | LOCAL c%,1%.n% | + | |
- | SELECT direction® | + | |
- | CASE 1 | + | |
- | ck=colonne cartests | + | |
- | 1%=11gne carte=t4 | + | |
- | CASE 2 | + | |
- | ATAR] MAGAZINE m BEST OF GFA BASIC | + | |
- | (4=colonne cärte$+5 | + | |
- | 14=ligne cartestb | + | |
- | CASE 3 | + | |
- | c4=colonné cartes+b P | + | |
- | 1%=11gne carteï+5 | + | |
- | CASE 4 | + | |
- | c*-colonne cartes+4 | + | |
- | 1%=ligñe cartes+5 | + | |
- | ENDSELECT | + | |
- | n4=def evi(carte|(c%.1%)) | + | |
- | D e e e i o A e e d e e es e e e o ol o A AN E R S O R R | + | |
- | ! * EXECUTION DES EVENEMENTS DE DEPLACEMENT * | + | |
- | | ÉÉFN A | + | |
- | SELECT n= | + | |
- | CASE 1 | + | |
- | Gexec deplacement(directions) | + | |
- | CASE 2 - | + | |
- | @Exec_dep1acement(dir& | + | |
- | érencontre plaine | + | |
- | CASE 3 | + | |
- | gexer deplacement(direction) | + | |
- | Brencontre foret | + | |
- | CASE 4 | + | |
- | Bexec deplacement (direction# | + | |
- | Érencontre ruines | + | |
- | ENMDSELECT | + | |
- | RETURMN | + | |
- | e A e T E Wkl e R T E | + | |
- | * EXECUTION DES FONCTIONS * | + | |
- | PE e k e d d E E E E r d d d d E E E S | + | |
- | PROCEDURE exec fonction(f# | + | |
- | SELECT 1# | + | |
- | CASE 1,2.3.4 | + | |
- | Ggestion deplacement (f*) | + | |
- | CASE 5 | + | |
- | @quitter programme | + | |
- | ENDSELECT | + | |
- | RETURN | + | |
- | b B R R R L e e e d E E E E S | + | |
- | * ATTENTE EVENEMENTS CLAVIER #* | + | |
- | e e e e e e e o o o o e e i o o e e A e i i eA | + | |
- | 1 : aller haut | + | |
- | 2+ Aller bas | + | |
- | 3 : Allér droite | + | |
- | 4 : Aller gauche | + | |
- | 5 : Quitler le programme | + | |
- | FUNCTION att ev | + | |
- | LOCAL c$,num ev | + | |
- | num_ev==0 | + | |
- | @vider clavier | + | |
- | D0 | + | |
- | DÉsINKEYS | + | |
- | IF chæ>"" | + | |
- | IF c§=CHR5{27] | + | |
- | rum ev*=s | + | |
- | ENDTF | + | |
- | IF LEN(eS)=2 | + | |
- | tS< | + | |
- | IF t& | + | |
- | num evi=] | + | |
- | ENDIF | + | |
- | 1F t%=80 | + | |
- | num evi=Z | + | |
- | ENDIF | + | |
- | [F tre/77 | + | |
- | num _evés=3 | + | |
- | ENDIF — | + | |
- | 1F t%=75 | + | |
- | num_ev& | + | |
- | EMDIF | + | |
- | ENOTF | + | |
- | ENDIF | + | |
- | EXIT lF num evi< | + | |
- | LODP | + | |
- | RETURN num av® | + | |
- | ENDFLNC | + | |
- | i | + | |
- | R e E R R E RE o e L SR | + | |
- | | * GESTION DES ORDRES DU JOUEUR * | + | |
- | | RRRRERTT TVREUTERI3TEEX | + | |
- | PROCEDURE gestion programme | + | |
- | LOCAL eyv* | + | |
- | i | + | |
- | cH | + | |
- | évs-Batetv | + | |
- | exec fonction(ev®) | + | |
- | EXIT IF sortie=-l | + | |
- | LUOF | + | |
- | RETURN | + | |
- | 1 | + | |
- | =” | + | |
- | DR RRIRARR ÉÉÉ RR RRE E E R AN AN AESTERNF | + | |
- | - * LECTURE DES MUMEROS D' | + | |
- | | * ASSOCIES AUX ELEMENTS DE LA CARTE * | + | |
- | lFNE R | + | |
- | PROCEDURE init evenements | + | |
- | LOCAL nums, vals | + | |
- | ARRAYFILL def ev=(),0 | + | |
- | RESTORE def evenements | + | |
- | Do | + | |
- | READ numé | + | |
- | EXIT IF num¥=—1 | + | |
- | READ val* | + | |
- | def ev& | + | |
- | OGP | + | |
- | RETURN | + | |
- | ï | + | |
- | B S o e e R A E C R V o i E E | + | |
- | * * DEFINITION DES CREATURES * | + | |
- | STARI MAGAZINE Ë BEST OFGFA BASIC | + | |
- | e o R e Rk E R S | + | |
- | FROCEQURE init_creaturE£ | + | |
- | LOCAL rnumé, nomb | + | |
- | @aff_carte | + | |
- | EMOVE XBI05(21 ,adr2%, 32000 | + | |
- | etati=1 | + | |
- | DATA 22,"UN COLPORTEUR" | + | |
- | DATA 23," | + | |
- | DATA 24," | + | |
- | DATA 25," | + | |
- | ! * Gobelins : 10% * | + | |
- | - # Esprit % | + | |
- | | * des bois : 10% * | + | |
- | I HÉFETÉTTTHATTETEERN4TETR | + | |
- | ns=0 gestion programme ' DATA 1,30 | + | |
- | RESTORE def creatures ‘ DATA 50," | + | |
- | Do SHOWM DATA 51," | + | |
- | READ numé RETURN DATA 52,“UN ELFE NOIR" DATA 50,25 | + | |
- | EXIT FF fumé==1 ; DATA 53, “UN NECROMAN" | + | |
- | READ noms ' i DATA 102,10 | + | |
- | ETEEtuTEE{flHm%}=flflm5 l T X e e R RN ON R ek DATA ?Ü.“UËE ARAICNEE EEÊHÎE" | + | |
- | LOOP ik | ; DATA 71,"UN SERPENT GEANT® | | + | |
- | RETURN ! * DEFINITION DES DONNEES DU JEU * l | RRRRREREAAAEARARNÉRHÉÉ RESRE | + | |
- | | e Ë DATA 100, "UN DEMON* x TABLE 3 — RUINES * | + | |
- | | HS DL s f o h et gkt ek V OHHTEAAAAAAANRRA RRN vAFER ÉÉ RRN RE DATA IÜl," | + | |
- | * = DEFINITION DES DECOUVERTES * e rr é DATA 102, "UN ESPRIT DES BOIS" ! # Drcs : 30 # | + | |
- | D dh e e e e e e E R RI É E E " # DEFINITION DES EVENEMENTS 7* DATA 103," | + | |
- | PROCEDURE init decouvertes e e p tc e e DATA 104," | + | |
- | LOCAL num%, nom$ ' % DATA element, | + | |
- | ' “ * DATA -1 : fin evenements " DATA 106," | + | |
- | ns | s Ll T R NNN e DHTH IÜ?,“UH ÜHËEÜH HÜEH— " * Fantome ; ÜE% * | + | |
- | RESTORE def decouvertes \ * Codages eveneéments : u DATA 108, "UN DRAGON ROUGE™ ! * Démon - 055 * | + | |
- | Do ! * 0 : déplacement impossible * DATA 109, "UN DRAGON DES ÉAUX" | RRRRRRR RRN EN E d sk hok | + | |
- | READ numré: S 1 0 déplacflment PDÉËÎÜ]Ë ; DATA —1 DATA EÜ,ËÜ | + | |
- | EXIT IF numée=l ( * 2 : Appel fonetion 2 ® | DATA 51,20 | + | |
- | READ noms OE (déplacement plaine) * LRn é RR e e R R R A d E DATA 5,20 | + | |
- | decouverte${num%)=nomt ' % 3 : Appel fonétion 3 ä ! * DEFINITION DES TAËLES DE RENCONTRE * DATA 70,10 | + | |
- | LODP # ËÜËPÏEEEMEHË fürët] = DR d c e e e e d e e e e e e E e E S ) DATA ËE.lÜ | + | |
- | RETLURN ' # 4 : Appel fonction 4 ÿ " # DATA créature, probabilité rencontre * DATA 101,5 | + | |
- | ' “E (déplacement ruines} * ' * DATA —Z : passage table suivante - DATA 100,5 | + | |
- | | = = = L S e R e e E E I kdkgkkhkkdkdh RS EEEEE kA h ki dk i ÜËTÂ _1 : F1fl ÉES tflh1E5 i DHTA 4 | + | |
- | ' * PROCEDURE PRINCIPALE * def_evenements: | + | |
- | e T R ANE DATA 1,0 ! % doit faire absolument 100%. * I khn R RR R d e e e e e e e É E | + | |
- | FROCEDURE main DATA 2.0 I c d d dn d b e d e d rr e d e e e e e d d RE ‘ * DEFINITION DES DECOUVERTES * | + | |
- | nb_eîement5ä=ü DATA 3,2 dEf_FEflEflntrES: | + | |
- | ligne carte%=l DATA 4,2 E e e oo o e ETE def decouvertes: | + | |
- | colonne carte*=1 DATA 5.0 tx TABLE 1 — PLAINE * DATA 1,"UNE PIECE D' | + | |
- | e1ëmenfutüurantä=1 DATA 6.0 B d d L L L d DATA 2,"UNE PIECE D' | + | |
- | ' i DATA 7.0 ! & Paysans @ 50% * DATA 3,"UNE PIECE DE CUTVRE" | + | |
- | xcarles=E DATA 8,0 ' = Colporteur = 10% * DATA 4,"DES PIECES D' | + | |
- | ycartes=12 DATA 3.4 ' * Voieurs. = 20% * DATA 5,"DES PIECES D' | + | |
- | @init creatures DATA 10,0 ! * Chiens = 10% * DATA 6,"DES PIECES DE CUIVRE" | + | |
- | Bcharge perso(" | + | |
- | Bcharge elements(" | + | |
- | Bcharger carte(“carte.car”) ' DATA 21,50 DATA Z21," | + | |
- | @în1t_fiï& | + | |
- | Ginit_rencontres " % DEFINITION DES CREATURES ? DATA 20,70 DATA 50," | + | |
- | @inît: | + | |
- | Ginit tables decouvertes def creatures: DATA 50,10 ' | + | |
- | i DATA 1,"DES LOUPS" DATA — DATA 90, "UNE CHAUSSURE" | + | |
- | HIDEM DATA 2,"DES CHIENS SAUVAGES" | + | |
- | GRAPHMODE £ DATA 3,"UN OURS" “ æ TABLE 7 — FORET # ' | + | |
- | DEFTEIT ü DflTh 4.IUH HEHAHD"' | + | |
- | DATA 5, SERPENT" | + | |
- | DATA 100," | + | |
- | “ # Loups : 305 * DATA —1 | + | |
- | @c]ls ecran(1) | -* furs “ 15> = 3 | + | |
- | Ocadre(xcarte*l, | + | |
- | @init fenetre DATA 21, DE3 PAYSANS * (rcs . 0ra À ! # DEFINITION TAELE DE TIRAGE DES TRESORS * | + | |
- | ATARE MAGAZIME Ë BEST OF GFÀ BASIC | + | |
- | ATARI MAGAZIME fl BEST OF GFA BASIC | + | |
- | E S A E A E S RR M E 1E E d e e E cIRc dc E CR E E d A E E CR E it | + | |
- | tables decouverites: | + | |
- | L | + | |
- | E E E E e A ds | + | |
- | TABLE I — RUINES * | + | |
- | i **# | + | |
- | | RE NAMIR EN LA kAR Tk & | + | |
- | % | + | |
- | Une piêce de cuivre : 305 ” | + | |
- | Des piéces de cuivre : 154 * | + | |
- | Une piéce d' | + | |
- | bes pièces d' | + | |
- | Une pièce d'or L * | + | |
- | Des piéces d'or I s | + | |
- | Une pierre précieuse @ 03% * | + | |
- | Des pierres précieuses : (2% * | + | |
- | Une &pée 065 * | + | |
- | Un couteau 0655 # | + | |
- | Une chaussure s2L e TR | + | |
- | Une poupée * DA% # | + | |
- | Une arme magique 0l* * | + | |
- | Rt N E e e dc d d d d e e e A E E S | + | |
- | DATA 3,30 | + | |
- | DATA 6,15 | + | |
- | DATA 2,15 | + | |
- | DATA b, O | + | |
- | DATA 1,05 | + | |
- | DATA 4,03 | + | |
- | DATA 20,03 | + | |
- | DATA 21,02 | + | |
- | DATA 50,06 | + | |
- | DATA 51,05 | + | |
- | DATA 90,04 | + | |
- | DATA 91,04 | + | |
- | DATA 1000,1 | + | |
- | DATA =1 | + | |
- | TELECHARGEZ | + | |
- | DES CEÈITTAINES | + | |
- | DES CENTAINES | + | |
- | DE LOGICIELS | + | |
- | SUR LE | + | |
- | 3615 ATARI | + | |
- | ----———----" | + | |
- | . = | + | |
- | # DE L' | + | |
- | A LA CRÉATION | + | |
- | MUSICALE | + | |
- | Vous avez un 1040 STE | + | |
- | Vous êtes un fan de musique... | + | |
- | Equipez-vous à prix réduit | + | |
- | Le clavier BONTEMPI AZ 7500 | + | |
- | Dernier-né de la gamme BOMTEMP, il e de loin le plus performant, | soura vous | + | |
- | sofidoire grôce à ses mulfiples qualités: Clender MIDI ssplitalslen « 61 g.rfindaah.n: | + | |
- | sons «POM Digitols « 24 rythmes POM fechnologie numérique « / vois | + | |
- | d' | + | |
- | idéalement ervec be 1040 STE en exploitand toules ses performances sur e plen musicol. Le | + | |
- | BONTEMPL AZ 7500 est l' | + | |
- | T PR . | + | |
- | Le logiciel BIG BOSS Piano | + | |
- | Cermier-né de la sacété RYTHM' | + | |
- | logiciels musicaux: Cours de piano clossique et modeme * clavier guide = défilement des | + | |
- | parfifions en temps réel * impression des parfifions * quanisafion * c'est oussl un | + | |
- | céquenceur de 75 pistes permeftant le chargement dmuffoné de 10 morceaux, Le logicel | + | |
- | BIG BOSS Piono e une mélhade éducative smple (assistonce permanente] et rapice {10 | + | |
- | lecons pragressives] pour que le solfège ne soit plus une contreinte insurmontoible. Laissez | + | |
- | libre cours à votre inspiration &t réveiller le musicien qui somineille en vous. | + | |
- | Pour commander, remplissez lisiblement ce bon (ou une copie) et envoyez-le | + | |
- | accompagné du règlement à : | + | |
- | ARTIPRESSE - 79, avenue Louis Roche - 92230 Gennevilliers | + | |
- | [1 Je commande le clovier BONTEMP| ÀZ 7500 + le logiciel BIG 8055 Fiano | + | |
- | au prix exentionnel de 1 990 F + frais d' | + | |
- | 2100 F en règiement. | + | |
- | MNom pet eq p | i = f e oy T TN B R SR | + | |
- | Prénam Lt el IR ey e % ST R 1E ) D L e el B s PE | | + | |
- | Adresse e C B AR e e t ue | Sl VT LRI SR T X B SR | + | |
- | | | |y e [0S R ) el AF P [ U EN E E | + | |
- | Codepostal L1 1 | ¢ | } L L L 1 | 1 ¢ | | | + | |
- | Ville ot L Pl ( E e [ ] OO S S ) L | + | |
- | (9IRS LY |.' | + | |
- | lireetu vlus-si | + | |
- | — — =- — ——" | + | |
- | EU DE ROLE EN GFA BASIC | + | |
- | Moi vois, moi tue | + | |
- | Nous vous présentons maintenant un programme permettant | + | |
- | de simuler le déroulement d'un combat entre un personnage | + | |
- | et une créature quelconque. | + | |
- | Combat, échange de coups | + | |
- | Le résultat ou l' | + | |
- | caractéristiques des adversaires. Pour écrire un programme performant, | + | |
- | il faut analyser tout ce qui se passe pendant un combar et définir | + | |
- | lés caractéristiques des combattants nécéssaires à une bonne simulation: | + | |
- | Cet article vous propose deux systèmes de combat, Le premier est | + | |
- | un systéme simple, fourni à titre d' | + | |
- | de combac plus complexe ec plus réaliste Il est accompagné | + | |
- | d'une Inbliothèque d' | + | |
- | [anfifilwngfiwnnufiifirnxfi, | + | |
- | Systéme de combat de base | + | |
- | Le combat s' | + | |
- | : | + | |
- | coups gt un certain nombre de potnts de vie, | + | |
- | La capacité de combat est le pourcentage de chance que possede une | + | |
- | créature de toucher son adversaire Un combattant de bas niveau | + | |
- | péut avoir un pourcentage faible (entre 5% et 15%) alors qu’un combattant | + | |
- | de haut niveau ou une créaturé trés purssanté peuvent avoir | + | |
- | un pourcentage trés cleve (entre 70% et 90%). Pour savoir s1 uné | + | |
- | créature touche son ennemi, il faut tirer un nombre alcatoire compris | + | |
- | entre 1 et 100 (avec l' | + | |
- | inférieur ou épal à la capacité de combat, l' | + | |
- | La capacité de coups est le nombre de points de dépâts qu’unée | + | |
- | créature peut causer à une autre Un éléphant fait néttement plus de | + | |
- | dommages qu'un écureuil, | + | |
- | Le nombre de points de vie représente la vigueur d'une créacure et sa | + | |
- | capacité à encaisser des coups. Les points de vie diminuent lorsque la | + | |
- | OE{rîafi_]]_' | + | |
- | nombre de pounts de vie tombe à 0, la creature est morte. | + | |
- | “ vie perso* | + | |
- | Combat perso® | + | |
- | * coups persos | + | |
- | “ vie creatures | + | |
- | : points de vie Perso | + | |
- | : capacité de combat Perso | + | |
- | : Capacité de coups Perso | + | |
- | : Points de vie Créature | + | |
- | ' combat creature% : Capacité de combat Créature | + | |
- | - coups creature* : Capacite de coups Creatare | + | |
- | o0 | + | |
- | I & | + | |
- | * * Ferso attaque Créature * | + | |
- | L o e e i e e e ol e e ool R o E E | + | |
- | IF RANDOM(100)< | + | |
- | SUB vie creatcuouprs épesrs, | + | |
- | ENDIF | + | |
- | EXIT 1F vie creaturess=( | + | |
- | L o e ol sl e E o o e o e o e R O Y R | + | |
- | | # Créature attaque Perso * | + | |
- | E E e e d e e rrr d de d e SE e SE d d E E E « | + | |
- | IF RANDOM(100)< | + | |
- | SUB vie pèrso%, | + | |
- | ENDIF | + | |
- | EXIT IF vie persove=0 | + | |
- | LOOP | + | |
- | i | + | |
- | | o T T B N - o o b e e e e e d d E | + | |
- | | # Affichage résultat du combat * | + | |
- | DRRE E S e o REN RR RR RE e | + | |
- | IF vie_persoi==0 | + | |
- | PRINT “PERSD est mort™ | + | |
- | ELSE | + | |
- | PRINT " | + | |
- | ENDTF | + | |
- | Système de combat plus évolué | + | |
- | Le svstème de combat de base est simple à mettre en céuvré, mais | + | |
- | peu performant. Mous vous présentons maintenant un système de | + | |
- | combat sophistiqué qui permet de réaliser des combars plus réalistes. | + | |
- | Les créatures sont defimes par les caractéristiques suivantes: Porce, | + | |
- | Points de vie, Capacité de combat, Nombre d' | + | |
- | combat, Compétence de defense, Arme et Protection. | + | |
- | ATARI MAGAZINE E BEST OF GRA BASIC | + | |
- | Les caractéristiques Points de vie et Capacité de combat ont la même | + | |
- | signification que dans le système de combat de base. | + | |
- | Le Nombre d' | + | |
- | attaquer dans le laps de temps d'un round de combat. Une créature | + | |
- | faible ne peut attaquer qu‘une fois alors qu'une créature trés puissante | + | |
- | peut attaquer de nombreuses fois par tour. Cela dépend de l' | + | |
- | ct de la vitesse de réaction d'un combattant, voire méme | + | |
- | de sa structure physique (une pieuvre avec plusieurs beas peut exécuter | + | |
- | plusieurs attaques en même remps). | + | |
- | La Capacité de défense représente la possibilicé d' | + | |
- | Cela peut Être dû à une grande agilité, à une petite raille ou à une | + | |
- | structure physique particulière (une créaturé faice de brume qui devient | + | |
- | solide uniquement au moment de frapper est três difficrle à | + | |
- | toucher). | + | |
- | Cela peur aussi être le résultat d'un entraînement spécifique : un | + | |
- | combattant ayant appris à esquiver ou à parer une attaque peut avoir | + | |
- | une honne capacité de défense, | + | |
- | La Capacité de coups du système de base est remplacée par les caractéristiques | + | |
- | Force et Arme Le programme caleule les points de | + | |
- | dommages en tenant compte du type d'arme utilisé et de la force de | + | |
- | la créature | + | |
- | La caractéristique Protection correspond à uné éventuelle protection | + | |
- | corporelle (vêtement solide, armure, écailles, peau épaisse, ete.) Cette | + | |
- | protection diminue les dommages reçus en combat, Elle peur même | + | |
- | les annuler totalement dans certains cas. | + | |
- | Déroulement d'un combat | + | |
- | Le combar est divisé en rounds de combat. Pendant un round de | + | |
- | combat, les deux combartants frappent l'un après l' | + | |
- | épuisement de léur nombre d' | + | |
- | est touché, le programme calcule le nombre de points de dégâts en | + | |
- | tenant compre de la force et de l’arme de l' | + | |
- | protection portée par la cible. ‘ | + | |
- | Le pourcentage de roucher une cible est csleulé en prenant la capacité | + | |
- | de combat de l' | + | |
- | de la cible, | + | |
- | Les désäts sont retirés aux points de vie du combattant touché, Le | + | |
- | combar cesse lorsque l'un des deux adversaires est tué c' | + | |
- | lorsque son nombre de points de vie est égal ou intérieur a0, | + | |
- | Conclusion d'un combat | + | |
- | À la fin d'un combat, le programme affiche le résulrat. 51 le personnage | + | |
- | a gagné, il reçoit le trésor éventuellement possédé par la créature | + | |
- | et des points d' | + | |
- | Les points d' | + | |
- | Un personnage qui vit de nombreuses aventures acquiert de | + | |
- | l’expérience et augmente ses compétences. Pour simuler cela, un personnage | + | |
- | victorieux réçoit uñ certain nombre de points d' | + | |
- | Lorsque son total de points dépasse une certaine limite, ses compétences | + | |
- | auementent. Le nombre de points réçu dépend de la créature. | + | |
- | Vaincre un lapin rapporte peu d' | + | |
- | rapporte énormément de points, à condition que le personnage | + | |
- | SUFVIVÉ; | + | |
- | Programmation du système de combat | + | |
- | La première chose à faire avant d' | + | |
- | struéturé des objets stockés en mémoire et de décider de la méthode | + | |
- | utilisér pour definir cé ni: | + | |
- | moyens de protection, les trésors, les créatures et le personnage, | + | |
- | 1l est très difficile de déterminer les valeurs numériques définissant | + | |
- | un objer. La tiche est simplifiée s l'on considère qu'un homme | + | |
- | moven posside une base de 10 à toute ces caractéristiques (Force de | + | |
- | 10, Intelligence de 10, Vitésse de réaction de 10, 10 Ponts de vie, | + | |
- | E!l;' | + | |
- | compre de certe base, Par exemple, un chat est nettement moins tort | + | |
- | qu’un homme, mais plus qu’un lapin. On dennera 1 de force au lapin | + | |
- | et 3 de force au chat. Par contre, un lion est plus fort qu' | + | |
- | hômme On péut ot donner une force de 14, | + | |
- | Définition des armes | + | |
- | Les armes sont des objets qui servent à causer des dégâts physiques | + | |
- | sur une cible quelconque (un être vivant le plus souvent). Les dommages | + | |
- | causés dans un combat comportent un élément aléatoire, Une | + | |
- | épée peut tout aussi bien prévoquér une blessure mineure qu' | + | |
- | blessure grave én frappant un organe vital. Pour simuler cela, 1l faut | + | |
- | faire la distinction entre les dommages constants et les dommages varaibles, | + | |
- | Une arme est définie par un nom, un dommage constant et un dommage | + | |
- | variable, Par exemple, une épée cause 2 points de dommage | + | |
- | constant et 3 points de dommage variable Un coup d' | + | |
- | donc causer entre 2 (2+1) er 5 (2+3) points de dommage. Cela donne | + | |
- | une moyenne de 4 points de dommage. La valeur des points de | + | |
- | dommage a été définie en tenant compte qu'un homme moyen | + | |
- | possède 10 points de vie, | + | |
- | Les noms des armes sont stockés dans le tableau nom arme${(n# | + | |
- | Les dommages constants sont mémorisés dans le rableau def_arme%{ | + | |
- | n%,1} et les variables dans le rableau def armes(n5, | + | |
- | DIM nom arme$(100) | + | |
- | DIM def arme*(100, | + | |
- | ' def arme%(n,l) = dégât constant arme n | + | |
- | ' def arme%{n,2) = dégät variable arme n | + | |
- | La définition des armes est faite dans des lignes de DATA. Elles sont | + | |
- | définies sous la forme numéro, " | + | |
- | variable. La donnée numéro est le numéro de référence de | + | |
- | l' | + | |
- | nom arme$(12), le dommage constant dans def arme“(12, | + | |
- | démiage variable dans def arme=(12, | + | |
- | I E E e e e e e d de d de d d e é u cd d e d d E | + | |
- | * * DEFINITION DES ARMES # | + | |
- | i RU LUE ÉTETÉETTETANÉTEÉEFETTE | + | |
- | ‘DATA numéro, *nom", dommage constant, dommage variable | + | |
- | armes_data: | + | |
- | DATA 1," | + | |
- | DATA 2," | + | |
- | DATA 3," | + | |
- | DATA 3," | + | |
- | ATARI MAGAZINE m BEST OF GFA RASIC | + | |
- | | | + | |
- | ‘ | + | |
- | i | + | |
- | | | + | |
- | DATA 4, SOUFFLE DE FEU*, | + | |
- | 1 | + | |
- | BATA 10," | + | |
- | BATA: 11, " | + | |
- | BATA 12, "EPEE LONGUE", | + | |
- | DATA 13, " | + | |
- | DATA 14, " | + | |
- | DATA 15," | + | |
- | DATA 16, " | + | |
- | DATA 17," | + | |
- | DATA 18, " | + | |
- | L | + | |
- | DATA -1 | + | |
- | Ces lignes contiennent quélques exemples d' | + | |
- | un environnement médiéval-fantéstique, | + | |
- | naturelles utilisées par deverses creatures. Les suivantes sont des | + | |
- | armes manufacturées utilisées par des êtres Intelligents comme les | + | |
- | humains et les créatures plus où moins exotiques habitant les univers | + | |
- | fantastiques forques, elfes, nains, gobeling, évc.) | + | |
- | La procédure @init armes lit les informations stockées dans les | + | |
- | lignes de DATA et les accumule dans les tableaux nom arme${) ct | + | |
- | def arme=(). Elle doir être appelée en début de programme. | + | |
- | PROCEDURE init armes | + | |
- | LOCAL noms | + | |
- | LOCAL degat constants | + | |
- | LOCAL degat variable* | + | |
- | LOCAL n= | + | |
- | RESTORE armes data | + | |
- | ARRAYFILL def arme%().0 | + | |
- | 0 | + | |
- | READ n= | + | |
- | EXIT IF m===l | + | |
- | READ nom$ | + | |
- | READ degat constants | + | |
- | READ degat variabiés | + | |
- | nom_a(rn%)m =enosm$ | + | |
- | def arme%(n%, | + | |
- | def arme%(n#, | + | |
- | LOOP | + | |
- | RETURN | + | |
- | La procédure Odommagea rme(num arme=) calculé le dommage causé | + | |
- | par l'arme num_armes, Les dommages variables sont calculés par | + | |
- | la formule RANDOM{(prob degat%+1). Fourquat cette formule? Parce | + | |
- | qué RANDO(nM) fournit un nombre aléatoire compris encre D' | + | |
- | Pour cbtenir un nombre aléatoire compris entre O ec n, il faut utiliser | + | |
- | la formule RANOOM(n# | + | |
- | L gk ok e o e RE A É R E E A E N O e e u e R V PR RE | + | |
- | * # CALCUL DOMMAGE ARME num armet * | + | |
- | 1 ' | + | |
- | FUNCTION dommage arme{num armes) | + | |
- | LOCAL dégat constants | + | |
- | LOCAL prob degat* | + | |
- | LOCAL degat variables | + | |
- | degat constaanrmte%(%nu=m adrmee&, | + | |
- | prob degati=def arme“(num arme#,2) | + | |
- | degat variable%*=RANDOdMe(gpatrio+1b) | + | |
- | RETURN degat constant%+degat variable* | + | |
- | ENOFUNC | + | |
- | Les protections | + | |
- | Les protections sont des vêtements ou des armures portés par les | + | |
- | créatures du jen, Elles assurent une foncrion défénsive. En terme de | + | |
- | jeu, elles diminuenc les dommages reçus par leurs utilisaléurs. | + | |
- | Une protection est définié par un nom et une valeur de protection. | + | |
- | Pour simplifier la programmation, | + | |
- | lante Toutefois, vous pouvez modifiér lé programme pour obtenir | + | |
- | uné protection variable, | + | |
- | DIM nom protection$(100) | + | |
- | DIM def protection%(100) | + | |
- | ! def protections(n# | + | |
- | ' def protection%{n%) = valeur protection n% | + | |
- | Les protections sont définies dans des lignes de DATA. La liste suivante | + | |
- | comprénd de nombreux exemplés de protection. La valeur -l ést | + | |
- | l' | + | |
- | | OUR ETEN ATATANAEER | + | |
- | ' # DEFINITION DES PROTECTIONS * | + | |
- | U e ol e i rr e e v de o e rrr d de e e v ok oy e i e r ce | + | |
- | protections data: | + | |
- | DATA 1," | + | |
- | DATA 2," | + | |
- | DATA 3," | + | |
- | DATA 4," | + | |
- | DATA 5," | + | |
- | DATA 6, PEAU DE DEMONT1,0 | + | |
- | DATA 20," | + | |
- | DATA 21," | + | |
- | DATA 22," | + | |
- | DATA 23," | + | |
- | DATA 24," | + | |
- | DATA 25," | + | |
- | DATA 26, " | + | |
- | UATA 27, "ROBE MAGIQU,E4 | + | |
- | DATA 40, " | + | |
- | DATA 41," | + | |
- | DATA 42," | + | |
- | DATA 43, " | + | |
- | DATA 44, " | + | |
- | DATA -1 | + | |
- | La procédure @init protections change les données scockées en | + | |
- | DATA dans les tableaux nom protection$() ct def protectiont(). | + | |
- | ATARI MAGAZINME m BEST OF GFA BASIC | + | |
- | PROCEDURE init protections | + | |
- | LOCAL nomé | + | |
- | LOCAL protects | + | |
- | LOCAL n% | + | |
- | RESTORE protections data | + | |
- | ARRAYFILL def protecti on=(),0 | + | |
- | DO | + | |
- | READ n | + | |
- | EXIT 1F m==l | + | |
- | READ nom$ | + | |
- | READ protect= | + | |
- | nom protect ion${n)=nom$ | + | |
- | def protéctiont(n& | + | |
- | OGP | + | |
- | RETURN | + | |
- | La fonction Evaleur protection(objet®) fournit le nombre de | + | |
- | points de protection fournis par l' | + | |
- | E E ETE E R A NN W Rc t e e de dn d 4 E E E E E E RE E E E | + | |
- | ' % VALEUR DE FROTECTION D'UN OBJET = | + | |
- | |' | + | |
- | FUNCTION valeur protection{objet*) | + | |
- | RETURN üüf_prutüctiünë{nbjetäj | + | |
- | ENDFUNC | + | |
- | Au niveau rechnique, elle se contente de renvoyer la valeur de la variable | + | |
- | def protection& | + | |
- | une fonction pour une opération aussi simple, mais cela permet | + | |
- | d' | + | |
- | de la technique urilisée pour stocker les données. 5i vous modifiez | + | |
- | la structure de stockage’ des protections, | + | |
- | la fonction @valeur protection sans toucher au reste du programme | + | |
- | pour que tout continue de fonétionner normalement. | + | |
- | Les trésors | + | |
- | Certaines créatures intelligentes peuvent posséder des objets pré | + | |
- | cieux, 5i le personnage les tie, 1l récupère cès objets, Dans un but de | + | |
- | simplification, | + | |
- | Elles sont stockées dans le tableau nom tresor$(). | + | |
- | DIM nom tresor$(1060) | + | |
- | Les descriprions des trésors sont définies dans des lignes de DATA | + | |
- | Elles sont stockees sous la forme numéro trésor, " | + | |
- | Le numéro -1 correspond 4 la [in de donnges. | + | |
- | D AR AR AR A EE LA A AT LT TR A h T, | + | |
- | “ * DEFINITIONS DES TRESORS ” | + | |
- | | ETAAREEAAAERUR e Re NE | + | |
- | | DATA type trésor, “description" | + | |
- | ' DATA =1 = fin des trésors | + | |
- | treanraudata: | + | |
- | DATA 1," | + | |
- | DATA 2," | + | |
- | DATA 3,"DES CENTAINES DE PIECES D' | + | |
- | DATA 4,"UN TRESOR FABULEUX" | + | |
- | DATA -1 | + | |
- | La procédure Binit tresors initialise le tabléau nom tresor$() | + | |
- | avec la description des trésors stoclcéés en DATA. | + | |
- | PROCEQURE init tresers | + | |
- | LOCAL nfl-:, | + | |
- | RESTORE tresors data | + | |
- | [0 | + | |
- | READ MUNF | + | |
- | EXIT 1F nums==1 | + | |
- | READ tresor$ | + | |
- | dom tresor$ (num# | + | |
- | OGP | + | |
- | RETURN | + | |
- | Il est ' | + | |
- | renvoyant la description du trésor tresor® car le GFA Base | + | |
- | n' | + | |
- | FUNCTION description tresor(tresor) | + | |
- | RETURM nom tresor$(tresor*) | + | |
- | ENCIFUNEC | + | |
- | Certe fonction provoque l' | + | |
- | sans PROCEDURE La raison pour laquelle le système affiche un pareil | + | |
- | message d' | + | |
- | que la syntaxe du GEA Basic ne comprend pas l' | + | |
- | suivie d'une variable alphanumérique, | + | |
- | RETURN est la fin d'une procédure, Et comme i1l ne trouve pas l' | + | |
- | PROCEDURE correspondant à RETURN {puisque c'est une | + | |
- | FUNCTTON), il affiche un message d' | + | |
- | renvoyant la description d'un trésor, 1 faut utiliser l' | + | |
- | qui permet de modifier la valeur d'un paramétré d’une procédure. | + | |
- | PROCEDURE d& | + | |
- | tresor$=nom tresor$(tresor*) | + | |
- | RETURN | + | |
- | Pour écrire la descriprion du trésor numéro 2 dans là variable d$, 1l | + | |
- | faut utiliser la formule Gdescription tresor(Z, | + | |
- | 1R T R E TIR D R E TR | + | |
- | -* \AFFICHAGE- TRESOR 2 * | + | |
- | OURUR RERFEER RR A | + | |
- | @descri ptiun_’_cr& | + | |
- | FRINT d$ | + | |
- | Définition des créatures | + | |
- | Les créatures sont définies par un nom, une Force, un nombre de | + | |
- | Points de vie, une Capacité de combat, un Nembre d' | + | |
- | ATART MAGAZIME m BEST OF GFA BASIC | + | |
- | Capacité de défense, un numéro d' | + | |
- | un nombré dé-points d' | + | |
- | dés. créatures est stocké dans le tablean nom creatured() et les caractéristiques | + | |
- | dans le tableau def creature*(). | + | |
- | DIM nom creature$(100) | + | |
- | DIM def creature=(100, | + | |
- | I | + | |
- | ‘ def créatures(n#, | + | |
- | ‘ def creature%(n#, | + | |
- | & | + | |
- | def creature=(n*, | + | |
- | def creature%(n*, | + | |
- | def creature%(n%, | + | |
- | def creature“(n&, | + | |
- | def creature%(n#, | + | |
- | ‘ def creature%{n*, | + | |
- | Les caractéristiques des créatures sont stockees dans des lignes de DATA | + | |
- | Chaque créature possède un numéro de référence. Les créacures 1 | + | |
- | a 19 sont des animaux. Les créatures 20 à 49 sont des créatures intelli | + | |
- | gentes. Les créarures 30 a 100 sont des créatures surnaturelles ou | + | |
- | extrémemeént puissantes. Tous les numeéros de référence ne sont pas | + | |
- | arrcibués, Il reste de le place pour vos propres monstres. Remarque, | + | |
- | s1 une créature ne possède pas de trésor, sa caractéristique trésor contient | + | |
- | la valeur 0. | + | |
- | RR e e o o b e o e e e b R NN SE | + | |
- | " * DEFINITION DES CHEATURES * | + | |
- | 1 B g e B s B B - B i i 3 e e e i R | + | |
- | DATA Numéro, " | + | |
- | DATA Combat (%), Nb attaques, Défense (%) | + | |
- | DATA Arme, Pratecltion | + | |
- | DATA Points d' | + | |
- | " DATA -1 = fin des créaturés | + | |
- | creaturés data: | + | |
- | I NHVÉREEEAAAAE | + | |
- | c18 (B | L | + | |
- | | g o ke ol ol o T ol | + | |
- | * FORCE:18; VIE:30 | + | |
- | * COMBAT:68%; — ATTAQUE:2; DEFENSE: | + | |
- | ARME-Griffes: | + | |
- | EXP:1000; TRESOR: | + | |
- | DATA 1," | + | |
- | DATA 68,2,50 | + | |
- | DATA 1,7 | + | |
- | DATA 1000, 0 | + | |
- | | kNOR | + | |
- | L % 9. LOUP CRIS * | + | |
- | | gtk kB E et RS | + | |
- | FORCE:13; \ VIEz12 | + | |
- | * COMBAT:B0%: ATTAQUE:1l; DEFENSE: | + | |
- | ARME:Crocs: PROTECTION: | + | |
- | EXP-Z00; TRESOR: | + | |
- | DATA Z, 'LOUP GRIS*, | + | |
- | DATA 80,1,40 | + | |
- | DATA 2,7 | + | |
- | DATA 200,0 | + | |
- | LR b Lok o g | + | |
- | * 335ERPENT -* | + | |
- | TIR e e e | + | |
- | FORCE+10: YIE:1B | + | |
- | COMBAT:60%; ATTAQUE:1; DEFENSE: | + | |
- | ARME :Morsure; PROTECTION: | + | |
- | * EXP-400: TRESOR: | + | |
- | DATA 3," | + | |
- | DATA 60,1,30 | + | |
- | DATA 3.3 | + | |
- | DATA 400, 0 | + | |
- | L o o b o T R T T b Ak R R e o e e i B | + | |
- | * * 20 : BARBARE DU DESERT * | + | |
- | D p e d R e d r d E | + | |
- | FORCE:14; FOINTS DE VIE:13 | + | |
- | ! COMBAT - 603 ATTAQUE+2+ DEFENSE: | + | |
- | ARME: | + | |
- | * EXP:800; TRESOR: | + | |
- | DATA 20," | + | |
- | DATA 60,2,35 | + | |
- | DATA 18,40 | + | |
- | DATA B0Û, 2 | + | |
- | L p E | + | |
- | # 215 QROUE” | + | |
- | o dede ke de ok & NN N W | + | |
- | FORCE:13; POINTS DE VIE:14 | + | |
- | COMBAT:62; ATTAQUE:1; DEFENSE: | + | |
- | ARME :Masse; PRflTEETIDH: | + | |
- | * EXP:150; TRESOR: | + | |
- | DATA 21," | + | |
- | DATA 62,1,50 | + | |
- | DATA 13,40 | + | |
- | DATA 150,1 | + | |
- | I gktttRR | + | |
- | ' Æ 22: ELFE NDIR * | + | |
- | l gl ol ol e e e ey R R o | + | |
- | FORCE:12: POINTS DE VIE:16 | + | |
- | COMBAT:90% ATTAQUE:3; DEFENSE: | + | |
- | * ARME:Epée longue; PROTECTION: | + | |
- | " EXP:2000; TRESOR: | + | |
- | DATA # | + | |
- | DATA 90,3,50 | + | |
- | DATA 12,42 | + | |
- | DATA 2000,2 | + | |
- | I ko g ok o S E o A R W W | + | |
- | ATAR| MAGAZIME E BEST OF GFA BASIC | + | |
- | "* 50: DEMON * | + | |
- | RU ÉT R AN A | + | |
- | FORCE:20:; POINTS DE VIE:50 | + | |
- | COMBAT:90; ATTAQUE:5; DEFENSE: | + | |
- | ARME-Griffes; | + | |
- | ! EXP-10000; TRESOR: | + | |
- | DATA 50," | + | |
- | DATA 90,5,80 | + | |
- | DATA 1,6 | + | |
- | DATA 10000,0 | + | |
- | I Fdxxdttithraextihl | + | |
- | | * 51: CRAGON 7* | + | |
- | ÉURRRERAEÉTERERRX | + | |
- | FORCE: 30 POINTS DE VIE:500 | + | |
- | COMBAT:100 ATTAQUE:10 DEFENSE: | + | |
- | ARME: | + | |
- | PROTECTION: Feau de Dragon | + | |
- | ' EXP:90000; TRESOR: Fabuleux | + | |
- | - c | + | |
- | DATA 51, " | + | |
- | DATA 100,10,90 | + | |
- | DATA 4,5 | + | |
- | DATA 90000,4 | + | |
- | DATA -1 | + | |
- | La procédure Cinit creatures remplit le tableau def creaturek | + | |
- | () avec les créatures définies dans les lignes de DATA, | + | |
- | PROCEDURE init crealures | + | |
- | LOCAL n%,nom$, force*, | + | |
- | LOCAL combat®,nb attaques“, | + | |
- | LOCAL arme%, | + | |
- | LOCAL experiences, | + | |
- | RESTORE creatures data | + | |
- | D | + | |
- | READ n | + | |
- | EXIT IF n%=-1 | + | |
- | READ nomt | + | |
- | READ force* | + | |
- | READ points vie* | + | |
- | READ combat* | + | |
- | READ nb attaquess | + | |
- | READ defenses | + | |
- | READ armes | + | |
- | READ protéction= | + | |
- | READ experiance | + | |
- | READ tresors | + | |
- | num_; | + | |
- | def creature%(n%, | + | |
- | def creature=(n%, | + | |
- | def creature“(n‘, | + | |
- | def creature“{n&, | + | |
- | def creature%(n%, | + | |
- | def creature%(n*, | + | |
- | def creature%(n#, | + | |
- | def creature*%(n#, | + | |
- | def creature=(n%, | + | |
- | LOOP | + | |
- | RETURN | + | |
- | Les fonctions suivantes permettent au programme d' | + | |
- | sur vne créature sans s' | + | |
- | des données, Elles simplifient la programmation éc augmentent la | + | |
- | FUNCTION force creature({creatures) | + | |
- | RETURN def creature%(creature*, | + | |
- | ENDFUNC | + | |
- | FUNCT ION vîe_cre& | + | |
- | , RETURN def creature%{creaturey,? | + | |
- | ENDFUNC | + | |
- | FUNCTION combat creature(creature*) | + | |
- | RETURN def creatures(creatures3, | + | |
- | ENCEUNC | + | |
- | FUNCTION nb attaques creature(creature*) | + | |
- | RETURN def creature*(creature%, | + | |
- | ENDFUNC | + | |
- | FUNCTION defense creature{creature*) | + | |
- | RETURN def creature%(creature*, | + | |
- | ENDFUMNC | + | |
- | FUNCTION arme creature(creatured) | + | |
- | RETURN def creature%(creature=, | + | |
- | ENDFUNC | + | |
- | FUNCTION protection creature(creature%) | + | |
- | RETURN OEef_; | + | |
- | ‘ ENDFUNC | + | |
- | ä | + | |
- | FUNCTION experience creature(creature®) | + | |
- | RETURN def creatureX(creature%, | + | |
- | ENDFUNC = | + | |
- | FUNCTION tresor creature(creature*) | + | |
- | RETURN def creature%(creature%, | + | |
- | ENDFUNT | + | |
- | Définition du personnage | + | |
- | Le personnage est péré d'uné manière lépérement différente de celle | + | |
- | des créatures, Î possède une donné supplémentaire: | + | |
- | points de vie temporaire, Ces points de vie diminuent lorsque le personnage | + | |
- | reçoit un coup dans un combat. 5i le nombre de points de | + | |
- | vic temporaire tombe 4 0, le personnage est mort. | + | |
- | Les créatures ne possédent pas de points de vie temporaires car leurs | + | |
- | caractéristiques sont informatives, | + | |
- | un combar entre le personnage et une créaturé, il récopie dans une | + | |
- | ATAR| MAGAZINE m BEST OF GFA BASIC | + | |
- | variable spéciale le nombre de points de vie de la créatute et décrémente | + | |
- | cette variable lorsque la créiture reçoit un coup. Ce système | + | |
- | évite de modifier la valeur des caractéristiques stockées en mémoire, | + | |
- | Si le personnage rencontre un loup peu de remps après avoir tué Un | + | |
- | premier loup, les caractéristiques du second doivent être identiques à | + | |
- | celles du premier (et tout particulièrement le nombre de points de | + | |
- | vie). | + | |
- | Le nom du personnage est stocké dans la variable nom persob. Les | + | |
- | caractéristiques sont stockées dans le tableau def perso¥(). La caractéristique | + | |
- | Expérience correspond au nombre de points d' | + | |
- | rence accumulé par le personnage lors de ses affrontements. Elle | + | |
- | vaut C au débue du programme. | + | |
- | nom perso$="" | + | |
- | DIM def perso=(9) | + | |
- | ‘ def perso%(1) = Force | + | |
- | def perso%(2} = Points de vie max | + | |
- | def perso%(3) = Points de vie temporaire | + | |
- | def perso%(4) = Compétence de combat (%) | + | |
- | def perso®(5) = Nb attagues | + | |
- | def persot(6) - Compétence de défense (%) | + | |
- | def perso%(7) = Expérience » | + | |
- | def perso%(8) = Arme | + | |
- | def perso& | + | |
- | - | + | |
- | Les statistiques du personnage sont définies dans des lignes de DATA. | + | |
- | Etant donné le peric nombre de caractéristiques, | + | |
- | être écrites directement dans les variables concernées, | + | |
- | métheode de programmation à éviter. | + | |
- | ! DATA Nom, Force, Foints de vié | + | |
- | DATA Combat (%), Nb' | + | |
- | DATA Arme, Protection | + | |
- | nom: KURT BRISE-CRANE | + | |
- | FORCE:13; VIE:15; | + | |
- | COMBAT:70%; ATTAQUE:1; DEFENSE: | + | |
- | ARME-EPEE LONGUE; Protection: COTTE DE MAILLES | + | |
- | - | + | |
- | perso data: | + | |
- | DATA "KURT BRESE-CRANE" | + | |
- | DATA 701,60 | + | |
- | DATA 12,41 | + | |
- | La procédure @init_perso initialise la variable nom_perso} et le tableau | + | |
- | def perso®() avec les informations définissant le personnage. | + | |
- | PROCEDURE init perso | + | |
- | LOCAL nomt, force*, | + | |
- | LOCAL combat&, | + | |
- | LOCAL armes, | + | |
- | RESTORE perso data | + | |
- | 1 | + | |
- | READ nom$ | + | |
- | READ forces | + | |
- | READ poînts vies | + | |
- | READ combat* | + | |
- | READ nb attaques= | + | |
- | READ defenses | + | |
- | READ arme* | + | |
- | READ protéctions | + | |
- | nom pérsos=nom$ | + | |
- | def persos(1)“force* | + | |
- | def perso®%(2)=points vieq | + | |
- | def perso%(3)=points_vie% | + | |
- | def perso=(4)=combat® | + | |
- | def perso®(5)=nb_attaques* | + | |
- | def perso%{6)=defenses | + | |
- | def perso(7)=0 | + | |
- | def perso%(8)=arme% | + | |
- | def perso# | + | |
- | RETURN | + | |
- | Les fonctions suivantes permettent au programme d' | + | |
- | aux données définissant le personnage. De la même manière | + | |
- | que les foncrions d' | + | |
- | d' | + | |
- | léurs structures de stockape. | + | |
- | FUNCTION force perso | + | |
- | RETURN def persox(1) ! | + | |
- | ENDFLUNC | + | |
- | FUNCTION vie max perso | + | |
- | RETURN def perso%(2) | + | |
- | ENDFUNG | + | |
- | FUNCTION vie perso | + | |
- | RETURN def perso%(3) | + | |
- | ENDEUNL | + | |
- | FUNCTION Combat persa | + | |
- | RETURN def persos(4) | + | |
- | ENDFUNE | + | |
- | FUMÉTION nb attaques perso | + | |
- | RETURN def perso%(5) | + | |
- | ENDFUNEC | + | |
- | FUNCTION defense perso | + | |
- | RETURN üeî_perâü%[fi} | + | |
- | ENDFUNC | + | |
- | FUNCTION experience perso | + | |
- | RETURN def persoë(7) | + | |
- | ENDFUNE | + | |
- | FURCTION arme perso | + | |
- | RETURN def perso%(8) | + | |
- | ENDFLINC | + | |
- | FUNCTION protection perso | + | |
- | ATARI MAGAZINE H BEST OF GFA BASIC | + | |
- | RETURN def perso%(9) | + | |
- | ENDFUNC | + | |
- | Bonus aux dommages | + | |
- | Un homme fort fait plus de dégâts avéc une épée qu'un fréle garçon | + | |
- | utilisant la même arme. Les dégâts supplémentaires viennent de la | + | |
- | différence de force entre l' | + | |
- | de la force sur les dommages, le programme calcule le dommage d' | + | |
- | attaque en additionnant le dommage de l'arme et une valeur | + | |
- | appelé «bonus de forces. Le bonus de force dépend de la force de l' | + | |
- | Plus un personnage est fort, plus son bonus de dommage | + | |
- | est important. De la même manière, plus un personnage est faible, | + | |
- | moins son bonus de Force est élevé. Une créature vraiment faible | + | |
- | peut même avoir un bonus de dommage négatf, La mamere la plus | + | |
- | simple de gérer les bonus de force est de les stocker dans le tableau | + | |
- | bonus dommage%{}. Pour connaître le bonus de force de la Torce | + | |
- | f%, il suffir de lire la valeur de bonus dommage={f# | + | |
- | DIM bonus dommages{30) | + | |
- | La valeur des bonus est stockée dans des liemes de DATA. Les bonus | + | |
- | ont été établis en tenant compte qu'un homme avéc une foice de 10 | + | |
- | tl'a aucun bonus, Is sont définis sous la forme «Force/ | + | |
- | valeur -1 est l' | + | |
- | table de bonus au-delà de 30, i1 faut augmenter la taille du tableau | + | |
- | bonus donmage*(). | + | |
- | bonus dommages data: | + | |
- | DATA 1,=6, 2,-4, 3,=-3, 42 51 | + | |
- | DAEN 61 i By 8L / 1F0 | + | |
- | DATA EE.0x - 2. B3, 18474 1655 | + | |
- | DATA 16,4, 17,5, 18,6, 19,7, 206 | + | |
- | DATA: 2105 22 dd, 2311, C les 79577 | + | |
- | DATA 26,14, 27,15, 28,1k, 29,17, 30,19 | + | |
- | DATA =1 | + | |
- | Binit bonus charge les bonus dans le tableau bonus dommages (). | + | |
- | PROCEDURE init bonus | + | |
- | LOCAL n%, bonus% | + | |
- | ARRAYFILL bonus dommage# | + | |
- | RESTORE bonus dommages data | + | |
- | DD | + | |
- | READ n* | + | |
- | EXIT IF n%==1 | + | |
- | READ bonuss | + | |
- | bonus dommage* (n# | + | |
- | LODP | + | |
- | RETURN | + | |
- | La lonction @bonus force(force®) fournit le bonus de force cor | + | |
- | respondant à la force force*, | + | |
- | ( E d e RE É E e e ETE e e e e e e e e e e E S | + | |
- | - % MALEUR DU BONUS DE FORCE * | + | |
- | I UTVARINÉTÉEETTEEÉTÉÉA TR TUR RRÉE | + | |
- | FUNCTION bonus force(force*) | + | |
- | RETURM bonus dommage*(force=) | + | |
- | ENDFUNC | + | |
- | Initialisation des données du programme | + | |
- | La procédure Ginit datas inittalise les rableaux de données avec la | + | |
- | définition des différents objers du jou (armes, protéctions, | + | |
- | etc.) Elle doit impérativement être appelée en debut de programme. | + | |
- | PROCEDURE init datas | + | |
- | Pinit armes | + | |
- | Binit protections | + | |
- | Binit trésors | + | |
- | Binit bonus | + | |
- | Vinit perso | + | |
- | GInit creatures | + | |
- | RETURN | + | |
- | Exécution d'un combat | + | |
- | Pour exécuter un combat, le programme a bésoin de connaître le | + | |
- | type de la créature affrontant le personnage et son nombre de points | + | |
- | dé vie La procédure @exec combat{creatures) simule un combar | + | |
- | entre le personnage et une créature de type creature. Le type de | + | |
- | créature est stocke dans la variable gluh;ale typ ennemis et son | + | |
- | nembre de points de vic dans la vartable globale vie ennemi%, | + | |
- | Dés que l'un des combattants est mort, la routine Gexec combat aifiche | + | |
- | le résultat du combar, Si le personnage est vivant, elle affiche le | + | |
- | nombre de points de vie rescant, le nombre de points d' | + | |
- | gagnés ot le type de trésor éventuellement possédé par la créature. | + | |
- | PROCEDURE exec combat(creature*) | + | |
- | LOCAL m£ | + | |
- | LOCAL tresors | + | |
- | LOCAL tresorf | + | |
- | LOCAL exp# | + | |
- | typ ennemi%=creatures | + | |
- | vie ennemis=@vie creature(creature*) | + | |
- | Ecombat | + | |
- | ÎF @mort ennemi=l | + | |
- | m$=nom créature${typ ennemi#) | + | |
- | m$=m$+" | + | |
- | FRINT | + | |
- | PRINT m£ _ | + | |
- | tresor*=-Étresor creature(typ ennemi*) | + | |
- | exp4+-Hexperience creature(typ ennemi*) | + | |
- | IF trésor& | + | |
- | @Éeacriutiün_treaur{treaurä, | + | |
- | PRINT " | + | |
- | ENDIF | + | |
- | PRINT " | + | |
- | PRINT “Points de vie perso : "; | + | |
- | ATAR| MAGAZIME W BEST OF GFRA BASIC | + | |
- | == | + | |
- | —_d' i | + | |
- | PRINT @vie perso: "Ry é Mmax perso | + | |
- | + | ||
- | ENDIF | + | |
- | IF @mort perso=l | + | |
- | + | ||
- | PRINT nom persof+" | + | |
- | ENDIF | + | |
- | RETURN | + | |
- | La fonction @morl ennemi reste st l' | + | |
- | mort en regardant la valeur contenue dans la variable vie _ ennemi*, | + | |
- | Elle renvoie 1 si l' | + | |
- | | HEF s L L PR S LR E R A R R IERE | + | |
- | " % TEST SI L' | + | |
- | I kR R E R AN e R Ry ARtk d e e e e e RE AW | + | |
- | FUNCTION mort ennemi | + | |
- | LOCAL resul t® | + | |
- | LF vie ennemiz< | + | |
- | result#=] | + | |
- | ELSE | + | |
- | result==0 | + | |
- | ENDIF | + | |
- | RETURN results | + | |
- | ENDFUNC | + | |
- | La fonétion émort_perso teste si le personnage est mort. Elle utilise | + | |
- | la routine @vie perso pour connaître le nombre de points de vié| | + | |
- | restant du personnage. Elle retourne 1 si le personnage est mort et 0 | + | |
- | dans le cas contraire. | + | |
- | Vg g o v e o e or oo o ok o ok e e e i R RRN e RR | + | |
- | " % TEST SI LE PERSONNAGE EST MORT * | + | |
- | L T E B 1 I i o be r e e e " e r e e d | + | |
- | FUNCTION mort perso | + | |
- | LOCAL résult* | + | |
- | IF @vie perso< | + | |
- | result#=1 | + | |
- | ELSE | + | |
- | resull#=[ | + | |
- | ENDIF | + | |
- | RETURN resutl% | + | |
- | ENDEUNEC | + | |
- | Gestion du combat | + | |
- | La procédure @combät gére l’enchaïnement des rounds de combat. | + | |
- | La procédure @round combat simule Pexécution d'un round. Le | + | |
- | combar ne s’arrête que lorsque l’un des combattants est mort. | + | |
- | L dc d é d E R E A P R RESRE SE t | + | |
- | ! # o GESTION DU COMBAT #* | + | |
- | L E E E e E E R R E e dc d uE | + | |
- | PROCEDURE combat | + | |
- | DD | + | |
- | @round combat | + | |
- | CAIT IF Émort perso=1 | + | |
- | EXIT IF @mort ennemi=l | + | |
- | LGOP | + | |
- | RETURN | + | |
- | Exécution d'un round de combat | + | |
- | La procédure Oround combat gère l' | + | |
- | Les adversaires frappent les uns apris les aucres jusqu' | + | |
- | de leur nombre d' | + | |
- | l'un des combattants meurt. | + | |
- | La routine lit le nombre d' | + | |
- | exécute à la suite, La variable nb_att perso® contient le nombre | + | |
- | d' | + | |
- | stocké dans la variable nb att ennemi*% Le conrenu de ces variables | + | |
- | est cdécrémenté après chaque artaque. | + | |
- | |l o o e e b e S ol E E RR SE RE | + | |
- | ! * EXECUTION D'UN ROUND DE COMBAT * | + | |
- | P REREÉÉPERRERERR RRN E A A E E | + | |
- | PROCEDURE round combat | + | |
- | LOCAL nb att persox | + | |
- | LOCAL nb att ennemi% | + | |
- | nb att perso%=Enb attaques perso | + | |
- | nb att ennemi$=@nb attaques creature(typ ennemi%) | + | |
- | REFPEAT | + | |
- | IF nb att persos< | + | |
- | Gattaque ennemi | + | |
- | DEC nb att persos | + | |
- | ENDIF | + | |
- | EXIT IF @mort ennemi=l | + | |
- | IF nb att_ennemis==0 | + | |
- | Pattaque perso | + | |
- | DEC mo att ennemi= | + | |
- | ENDIF | + | |
- | EXIT IF Bmort perso=l | + | |
- | UNTIL (nb att perso%=0} AND (nb_att ennemi%=0) | + | |
- | RETURN | + | |
- | La routine Ground combat utilisé la fonction @nb attaque perso | + | |
- | pour connaître le nombre d' | + | |
- | assuré l' | + | |
- | lé pérsonnagé, | + | |
- | La routine Qattaque ennemi simule une attraqué du joueur contre | + | |
- | son adversaire, La routine daitaque perso simule une attaque de | + | |
- | l' | + | |
- | Le personnage attaque son adversaire | + | |
- | La procédure @attaque ennemi gére l' | + | |
- | son ennemi, La probabilité que le personnage couche son adversaire | + | |
- | est la compétence de combat du personnage diminuée de la | + | |
- | compétence de défense de l' | + | |
- | ATARI MAGAZINE D0 BESTOFGFA BASIC | + | |
- | trop faible, elle est ajustée à 5% afin qu’un combattant trop faible aie | + | |
- | quand même une chance de roucher son adversaire (même si célui< | + | |
- | est une créature fabuleusément puissante). | + | |
- | D B I e 0 o U S e e d d E | + | |
- | ! * LE PERSONNAGE ATTAQUE #* | + | |
- | b SÛN ENNEMI % | + | |
- | I WA E ik s & o o RR R TR | + | |
- | PROCEDURE attaque ennemi | + | |
- | LOCAL combat perso% | + | |
- | LOCAL defense creatures | + | |
- | LOCAL pourcentages | + | |
- | LOCAL mb | + | |
- | | | + | |
- | combat perso%=@combat perso | + | |
- | defenae_treature%-@defenae_creature{typ_ennemi%] | + | |
- | pourcentage%*=combat perso%-defense creature* | + | |
- | IF pourcentage*=< | + | |
- | pourcentage*%=5 | + | |
- | ENDIF | + | |
- | IF (RANDOM(100)+1)< | + | |
- | dommage“=Édommage creature(num _ ennemi#) | + | |
- | IF dommagete=0 | + | |
- | SUE vie ennemi®, dommage* | + | |
- | mÿ=nom creaturet(typ_ennemi %) | + | |
- | mé=m$+" | + | |
- | mi=mi+" | + | |
- | PRINT m | + | |
- | ENDIF | + | |
- | ENDIF | + | |
- | RETURN | + | |
- | Si l’ennemi est touché, le programme affiche le nombre de points de | + | |
- | dégâts. Le programme teste la valeur des dommages pour éviter d' | + | |
- | un dommage de 0 point de décâr. | + | |
- | Cela peut arriver s une créature dotéé d'une forte protection reçoit | + | |
- | un coup faible (par exemple un coup de canif contre une armure de | + | |
- | plagues). | + | |
- | Calcul des dommages causés | + | |
- | par le personnage | + | |
- | La fonction @dommage creature calcule les dégâts fait par le jouèur | + | |
- | à son ennemi. Ils sont égaux aux dommages causés par l'arme du | + | |
- | personnage, plus le bonus de force du personnage, moins la protect- | + | |
- | lfll' | + | |
- | Dans certains cas de figure, le dommage peut être négatif, Cela peut | + | |
- | notament arriver avec une arme faible et une grosse valeur dé protecton. | + | |
- | Pour éviter cela, les dépâts négatits sont automatiquement | + | |
- | ajustés à 0. | + | |
- | FUNCTION dommage creature(creatures} | + | |
- | LOCAL force* | + | |
- | LOCAL arme | + | |
- | LOCAL dommages: | + | |
- | LOCAL protections | + | |
- | force*=Pforce perso | + | |
- | arme*=Carme perso | + | |
- | protect{on%=@protection creature(creatures) | + | |
- | dommage%-Édommaargmee [armes) | + | |
- | ADD dommage%, | + | |
- | SUB dommage%, | + | |
- | IF dommage*=< | + | |
- | dommage*=û | + | |
- | ENOIF | + | |
- | RETURN dommage* | + | |
- | ENDFUNC | + | |
- | L' | + | |
- | le personnage | + | |
- | La procédure Pattaque perso gère l' | + | |
- | personnage. Elle fonctionne de la même manière que la procédure | + | |
- | Battague ennemi & céci que l' | + | |
- | F | + | |
- | VErSCS | + | |
- | | A A R E E U E S É RR R A A E E E A A RIR E S | + | |
- | °* L' | + | |
- | " * ATTAQUE LE PERSONNAGE ™ | + | |
- | | HEN ETÉEETATEREENAN | + | |
- | PROCEDURE attaque perso | + | |
- | LOCAL combat ennemis | + | |
- | LOCAL defense perso® | + | |
- | LOCAL pourcentage* | + | |
- | combat ennemi*=Éécombat creature(typ_ennemi*) | + | |
- | defense perso*-Édefense creature(typ_ennemi*) | + | |
- | pourcentage%=combat ennemi%-defense persos | + | |
- | L} | + | |
- | 1F pourcentages< | + | |
- | pourcentage*=5 | + | |
- | ENDIF | + | |
- | 1F (RANDOM(100)+1)< | + | |
- | dommage*=Édommage perso{typ ennemi=} | + | |
- | IF dommages==0 | + | |
- | @Eec_vie_persn[duwwmge%} | + | |
- | m$=nom perso$+" | + | |
- | m£=m{+" | + | |
- | PRINT mi | + | |
- | ENDIF | + | |
- | ENDIF | + | |
- | RETURN | + | |
- | Certe routine affiche le nombre de points de dégats encaissés par le | + | |
- | persontage quand i1l ést touché Un test sur cette valeur evite d' | + | |
- | un dommage de 0 point. | + | |
- | La procédure @dec vie perso(dommage& | + | |
- | ment la perte de poinrs de vie du personnage. | + | |
- | ÉATAR| MAGAZINE W BEST OF GFA BASIC | + | |
- | Calcul des dommages recus | + | |
- | par le personnage | + | |
- | La fonction @dommage perso(creatures) calcule les dommages | + | |
- | causés par la créature crealuret contré le personnage. Leur valeur | + | |
- | est calculée en fonetion de l'arme et du bonus de force de la créature | + | |
- | Le dommage est diminué de la valeur de prorection du personnage. | + | |
- | Le principe de fonctionnement est le même que celui de la procédure | + | |
- | dommage crealure(creatures). | + | |
- | | T SRR I RE É RR R e e T EARRR E PO B o RE | + | |
- | ' * CALCUL DU DOMMAGE FAIT PAR LA CREATURE o | + | |
- | ! * creatureñ AU PERSONNAGE s | + | |
- | | hhh e d e e AR AR T A d e P | + | |
- | FUNCTION dommage perso(creature) | + | |
- | LOCAL forces | + | |
- | LOCAL armet | + | |
- | LOCAL dommages | + | |
- | LOCAL protections * | + | |
- | forcet=Gforce creature(creature*) | + | |
- | armes=Garme creature(creature) | + | |
- | protections=Cprotection perso | + | |
- | doimage*=Bdommage arme(arme*) | + | |
- | ADD dommage&, | + | |
- | SUB dommages @valeur protection(protections) | + | |
- | IF dommage=< | + | |
- | dommage*%=0 | + | |
- | ENDIF | + | |
- | RETURN dommages | + | |
- | ENDFUNC | + | |
- | Certe routine utilise la fonction Évaleur protection(protection%) | + | |
- | qui permer de connaître le nombre de points de protection | + | |
- | assuré par l' | + | |
- | sont autômatiquement remis à 0. ' | + | |
- | Perte des points de vie du personnage | + | |
- | Ia fonction êdec vie perso(n#) diminue les points de vie temporaires | + | |
- | du personnage, Le nombre de points de vie temporaire ne peuvent | + | |
- | descendre en-dessous de 0. | + | |
- | PROCEDURE dec vie perso(n*) | + | |
- | SUB def persof(3), | + | |
- | IF def perso%{3)=< | + | |
- | def perso%{3)-0 | + | |
- | ENDIF | + | |
- | RETURN | + | |
- | Augmentation des points de vie | + | |
- | du personnage | + | |
- | Là procédure inc vie perso(n%) augmente le nombre de pounrs | + | |
- | de vie temporaire de n& points. Elle effectue un test pour s' | + | |
- | que le nombre de points ne dépassé pas le nombre de points maximum | + | |
- | du personnage. | + | |
- | PROCEDURE inc vie perso{n%) | + | |
- | ADD def perso%(3), | + | |
- | IF def perso%(3)> | + | |
- | def perso%(3)=@vie max perso | + | |
- | ENDIF | + | |
- | RETURN | + | |
- | Soins médicoux | + | |
- | Après avoir perdu des points de vie dans un combat, le personnage | + | |
- | peut se rendre chez un soigneur pour reprendre des forces. Afin de | + | |
- | simuler les aléas de la réalité le personnage ne récupère pas un | + | |
- | nombre fixe de points de vie, mais vn nombre déterminé avec une | + | |
- | formule aléatoire. Un soin permer de récupérer 3 points de vie au | + | |
- | minimum & 6 points au maximuni. Le titage se fait avec l' | + | |
- | RANCOM(4)+3. La formule RANDOM(4) fournit un nombre | + | |
- | aléatoire compris entre Ü et 3, | + | |
- | PROCEDURE soins perso | + | |
- | LOCAL soins% | + | |
- | [F @vie perso=Ëvie max perso | + | |
- | PRINT "Pas bésoin de soins” | + | |
- | ELSE | + | |
- | soins*=RANDOM(4]+3 | + | |
- | IF (Bvie perso+soinsk)=@vie max perso | + | |
- | s0ins%=0vie max pérso-évie perso | + | |
- | ENDIF | + | |
- | @inc_vie perso(soins®) | + | |
- | PRINT "Le personnage récupére ; | + | |
- | PRINT STRÿ(soïns*); | + | |
- | PRINT " points de vie." | + | |
- | PRINT “Points de vie perso : "; | + | |
- | PRINT @viep erso;"/": | + | |
- | ENDEF | + | |
- | FRINT | + | |
- | RETLIRN | + | |
- | La procédure Bsoins perso soigne le personnage et affiche le résultat | + | |
- | des soins. Le programme ajuste le nombre de points de soins de | + | |
- | manière à ne pas dépasser le nombre de points de vie maximal. | + | |
- | Les jeux de rôle micro offrent divers méthodes de soins : sorts de | + | |
- | guérison, potions magiques de soins, guérisseurs, | + | |
- | ete, Ces méthodes fonctionnent toute de la même manière, c' | + | |
- | re en augmentant lé nombre de points de vie, Mais ils peuvent varier | + | |
- | au niveau de Pefficacité, | + | |
- | Pour varier les plaisirs, vous pouvez introduire dans votre jeu des | + | |
- | soins particuliers permettant de guérir des maux spécifiques (por | + | |
- | sons, maladies, malédictions, | + | |
- | ATARI MAGAZIME H BEST OF GFA BASIC | + | |
- | Structure du programme complet | + | |
- | La srrucrure du programme complet est la suivante : | + | |
- | RESERVE 100000 | + | |
- | * Déclaration des tableaux | + | |
- | Binit datas | + | |
- | Emain | + | |
- | END | + | |
- | ' Code procédure main | + | |
- | ' Codes des procédures du programme | + | |
- | ' Definition des données en DATA | + | |
- | La procédure principale | + | |
- | La procédure @maîn est une procédure de test qui vous permet de | + | |
- | tester le système de combat. C’est une routine ' | + | |
- | le programme de jeu de rôle appelant le gestionnaire de combat. | + | |
- | PROCEQURE main | + | |
- | LOCAL c$,creat% | + | |
- | D | + | |
- | PRINT " | + | |
- | PRINT " | + | |
- | PRINT "F)in combat” | + | |
- | LY | + | |
- | cH=INKEYS | + | |
- | ch=lPPER${(ch}) | + | |
- | EXIT IF (c$=" | + | |
- | LODP | + | |
- | SELECT cf | + | |
- | CASE "CM, "c* | + | |
- | INEUT " | + | |
- | + | ||
- | Bexec combat(creat*) | + | |
- | CASE ||--5l.' | + | |
- | @soins perso | + | |
- | ENDSELECT | + | |
- | EXIT IF (c$=" | + | |
- | EXIT IF Émort perso | + | |
- | LOOF | + | |
- | RETURN | + | |
- | Améliorations du programme | + | |
- | Le système de combat peut être amélioré de nombreuses manières. | + | |
- | -Vous pouvez rajouter une caracteristique D' | + | |
- | que la créature ayant la plus forte dextérité frappe en premier. | + | |
- | Le personnage peéur affronter plusieurs ennemis à la fois. Les modifi- | + | |
- | La psychologie des creatures du jeu est trés sumple puisqu' | + | |
- | jusqu' | + | |
- | avoir la possibilité de fuir lorsqu' | + | |
- | ATARI MAGAZINE Ë BEST OF GFA BASIC | + | |
- | l---' | + | |
- | - à ue E à u H à H R u H N S EN E S O S B S rs e S r S S S S B B B S S OB E S S S S S CO E S S C C r E | + | |
- | possibilité de rompre le combat. La visualisation des combars est | + | |
- | sommaire, Îl est possible d' | + | |
- | de rendre les combats plus réalistes. Aver bmaucoup de travail, vous | + | |
- | pouvez réaliser une visualisation graphique des combats. | + | |
- | Les listes d' | + | |
- | pas longues. Il peut être amusant de définir de nouvelles armes et de | + | |
- | riouvelles créatures, 51 vous nous cnvoyez des listes incéressantes, | + | |
- | nous les mettrons en téléchargement sur le serveur 3615 ATARL | + | |
- | PLUS DE 1 500 LOGICIELS GRATUITS! | + | |
- | TELECHARGEZ | + | |
- | [ le commande le KIT DE TELECHARGEMENT (câble de | + | |
- | loison Atori STminitel + une disquette confenont des | + | |
- | utilitaires de iéléchorgemenmte) permettant de | + | |
- | télécharger grruitement des centoines de progrommes, | + | |
- | De plus 6 disquétte contient e jau PMAVYIEL, pour jouer | + | |
- | contre des centaines d' | + | |
- | France grâce au réseau minitel. | + | |
- | Prix excaptionnel: | + | |
- | 95 F + & de frais d' | + | |
- | O Je commande uniguement la disquetie du | + | |
- | léchormement, | + | |
- | 15 F + 6 F de porticipation oux frais d' | + | |
- | 16F pour l' | + | |
- | [] le commande vniquement la disquette du | + | |
- | téléchargement, | + | |
- | + & F de participation aux frois d' | + | |
- | 116 F pour l' | + | |
- | NE TAPEZ PLUS LES LISTING! | + | |
- | CHARGEZ-LES | + | |
- | [] e commande la disquette BEST OF GRA BASIC avec les | + | |
- | images ou prix de 70 F | + | |
- | Sl es écoipé d'in MAFGAeS To Eo BT e cébidse boson deilête complétpso | + | |
- | v cdc péateur SS brocres (non louri por Futicresset. | + | |
- | Ci-joint mon réglement da _ il F | + | |
- | par chèque bancaire ou postal (les mandats ne peuvent | + | |
- | être acceptés sauf pour les DOM/TOM =t étangers en FF] | + | |
- | à l' | + | |
- | MNom 1 T ey E TG [0 . N o T bL e ) | + | |
- | Prénom e e [ el o S d r o B | | + | |
- | Adresse Éi e Pt el Él T e o | | + | |
- | | | | | | | | | | | | + | |
- | Code postal LS d b iy PE O C z vl Ps | + | |
- | Ville 0 P, RR HE R 2 Py RN Cm 0 SE ME | + | |
- | Pays [0 e e L S oy ool PE E 1S 1 E | + | |
- | Date decde L | 1+ | 1 99| | + | |
- | IMPORTANT : |l n'est pas accusé récepton des | + | |
- | commandes. l' | + | |
- | volre ordr& à élé enregistré dans le fichier informatique. | + | |
- | Délai d' | + | |
- | (ENTURE A LA SOURIS | + | |
- | réer un vrai jeu | + | |
- | JEU D' | + | |
- | Voici un petit jeu d' | + | |
- | fonctionnant entièrement à la souris que vous pourrez modifier et | + | |
- | compléter pour obtenir votre propre jeu. | + | |
- | Description du jeu ; | + | |
- | Un jeu d' | + | |
- | d’un lieu à un autre, ct accomplir diverses actions. Dans ce programme, | + | |
- | à chaque lieu est associé une liste de zones d' | + | |
- | que la souris est placée sur l’une de ces zones, sa farme change, Ceree | + | |
- | nouvelle forme indique le type d' | + | |
- | de l' | + | |
- | Les actions du jeu | + | |
- | Lé JLeU t pprrrop oss 10 ne È permet pas beaucoup d' | + | |
- | de démonstration, | + | |
- | Ei[:lfl Ç_' | + | |
- | de la taille des listing. Les actions existances sont ; changer de heuw, | + | |
- | pésser une porté, exarmider un objet, converser avec UI personnage, | + | |
- | IM gÉT (8 |: | + | |
- | duit un effet. Le changement de heu permet de passer d'un endroit à | + | |
- | uD autre, tout comme le passage d'une porte. L' | + | |
- | objet’ affiché un texte informauf sur l' | + | |
- | affiche le dislogue entre le jousur éc un personnage de l’aventure. Les | + | |
- | : | + | |
- | ra à vous de les programmer. | + | |
- | Quelques actions supplémentaires | + | |
- | Pour obtenir un jeu vraument utilisable, 1] faudrait ajoutér beaucoup | + | |
- | l: | + | |
- | objer, Utiliser un appareil électronique quelconque (comme dans | + | |
- | Bat), acheter divers objets, donner un objet, gérer les objets possèdes | + | |
- | par le joueur, ouveir une porte avec uné élé (ou défoncer ls porre), | + | |
- | ouvrir un tiroir, casser ume vitre, erc, | + | |
- | Vous pouvez ajouter aussi des options de deplacément comme monter | + | |
- | où descendré un escalier, monter dans un bateau (ou sur un cheval}, | + | |
- | sauter par une fenêtre, ctc. | + | |
- | Les idées d' | + | |
- | que vous avez choisis pour votre jeu, Les actions envisaÉTART | + | |
- | MAGATINE | + | |
- | geables dans la France des années 1930 ne sont pas les mêmes qu' | + | |
- | Megapolis en 2387 ou qu’a Hangenar, 75000 ans avant notre ère, | + | |
- | Présentation du jeu | + | |
- | L' | + | |
- | dessin du lieu courane, et la description textuclle de ce heu, Les optlons | + | |
- | systèmé sont’ ds fonctions trés importantes auxquelles le | + | |
- | joueur doit pouvoir accéder en permanence. Ces options sont : l’option | + | |
- | “INFO" | + | |
- | " | + | |
- | " | + | |
- | JEU" qui permet de quitter le programme en cours de Jeu, | + | |
- | INFO | [ SAUVEGARDE SORTIE JEU | + | |
- | Image du lieu | + | |
- | Description du lieu | + | |
- | Création d'une aventure | + | |
- | Pour créer une aventure, 1l faut commencer par étudier le scénarie, | + | |
- | Un bor scénario, c'est un rvpe d' | + | |
- | ficrion, héroïe-fantasy, | + | |
- | ; | + | |
- | personnages sympathiques où inquiérants, | + | |
- | chapelle gothique, une cité sous-mariné, | + | |
- | du 25ème siècle, la loge d'un concierge, une salle de rorture | + | |
- | médsévale, | + | |
- | Décomposition de l' | + | |
- | Une fois le scénario terminé, i faut passer par là phase d' | + | |
- | de décomposition. Il faut définir les lieux, les lions cxistant entre | + | |
- | eux, les images les représentant, | + | |
- | chaque endroit, les personnages, | + | |
- | BEST OF GFA BASIC | + | |
- | est valable pour le système de jeu que je vous propose c1. 51 vous | + | |
- | avez rajouté des actions supplémentaires [et je vous le conseille), le | + | |
- | travail doit ausst étré [ait pour ces nouvelles actions. | + | |
- | Codage d'une aventure | + | |
- | Une fois l' | + | |
- | à la phase de codape. Le scénario doit être codé dans le programme. | + | |
- | La plupart des programmeurs professionnels urilisent des éditeurs | + | |
- | de données. Ces éditeurs génèrent des fichiers de données bitraires, | + | |
- | C'est une technique trop complexe à mettré en oeuvre dans le | + | |
- | cadre d’un arricle, C'est pourquoi j'ai choisi une solution simple, faéile | + | |
- | à metrre en oeuvre Les données sont écrites dans des Higmes de | + | |
- | DATA à la fin du programme source Au début de l' | + | |
- | série de routines d' | + | |
- | de donnéss. | + | |
- | Codage des messages | + | |
- | Les méssages sont codés dans des lignes de DATA Le début de la z0- | + | |
- | ne des messèee est répéré par la présence du label *messages. Leur | + | |
- | taille n’est pas fixe. Il faut done un indicareur de fin de message. Cet | + | |
- | indicareur est le caractère ** L' | + | |
- | SE | + | |
- | I e e i i i e o e e T e E | + | |
- | ' * ' | + | |
- | l' | + | |
- | messages: . | + | |
- | DATA Ceci est Te premier message du jeu. Il est | + | |
- | DATA affiché lorsque le joueur clique sur là zone | + | |
- | DATA correspondante. !l peut correspondre à la | + | |
- | DATA deacrifitifln d'un objet, ou d'un Tieu particulier. | + | |
- | DATA * | + | |
- | DATA Voici le sécond message. Il est un peu plus court | + | |
- | DATA que le prémier, mais tout aussi important. | + | |
- | DATA * | + | |
- | DATA *FIN | + | |
- | Codage des dialogues | + | |
- | Les dialogues sont aussi codés dans des lignes de DATA, Leurs structures | + | |
- | est identique à celle des messages. Ces dialogues sont Lrés un | + | |
- | plifiés, Dans un jeu commercial, il faudrait avoir des échanges verbaux | + | |
- | un peu plus éroffés. La zone de stockage de dialogues est indiquét | + | |
- | par la présence du label *dialogues”. | + | |
- | | ÉRRTTAETRÉÉEETÉETÈRERÉEEEÉÉTESE | + | |
- | # EXEMPLES DE DIALOGUES 7* | + | |
- | I xxh VNF FFNF | + | |
- | dialogues: | + | |
- | DATA Le vieil homme vous répond que la clë de la | + | |
- | DATA sagesse se trouve dans la connaissancé, | + | |
- | DATA non dans une croyance aveugle, | + | |
- | DATA * | + | |
- | DATA Le magicien vous explique qu'il a raison. Il | + | |
- | DATA vous laisse le choix entre être de son avis, | + | |
- | ATARI MAGATINE | + | |
- | DATA ou Yeceyvoir une boule de feu. | + | |
- | DATA * | + | |
- | DATA Le jeune mercenaire vous répond qu'il est du | + | |
- | DATA coté de celui oui Tui donne le plus de piêèces | + | |
- | DATA d' | + | |
- | DATA * | + | |
- | DATA “FIN DIALOGUES | + | |
- | Codage des formes de souris | + | |
- | Les formes de souris sont stockées dans des lignes de DATA selon le | + | |
- | formar défini dans l' | + | |
- | ont été fabriquées à partir d’une image Degas Elite grice au générateur | + | |
- | de souris décrit dans l' | + | |
- | téléchargéement]. | + | |
- | L& listing fourni avéc cet article comprend 8 formes de souris. Vous | + | |
- | pouvez les utiliser pour votre propre programme, oùu en rajouter | + | |
- | d' | + | |
- | une forme de souris pour une action spécifique, | + | |
- | <ALLER DROIT DEVANT=, <ENTRER PORTEZ et < | + | |
- | toutes à Paction < | + | |
- | lui, entrer par une porte ou faire demi-tour dans une rue ne | + | |
- | sont pas les mêmes actions, alors que pour le programme, 1l s' | + | |
- | toujours de passer dans un autre lieu. | + | |
- | : <ALLER OROIT DEVANT= | + | |
- | : <ENTRER PORTE= | + | |
- | - < | + | |
- | - < | + | |
- | : < | + | |
- | : < | + | |
- | : < | + | |
- | : < | + | |
- | O— OH -HS- RN 0 = | + | |
- | Codage des actions | + | |
- | Les actions sont des routines du programme. Elles ont toutes ün | + | |
- | numére d' | + | |
- | Action < | + | |
- | Action =PARLER= 2 | + | |
- | Action =MAMGER= : 4 | + | |
- | Action < | + | |
- | Action =EXAMEN= / | + | |
- | Codage des lieux | + | |
- | An niveau interne, les lieux sont définis comme une série d' | + | |
- | Ces informations sont : une ifmage, un texte descriptif, et un | + | |
- | cértain nombre de zones de cliquage correspondant chacune à une | + | |
- | action réalssable dans ce lieu, : | + | |
- | COn associe à chaque action un paramètre spécifiant Pobjer avec | + | |
- | iu;' | + | |
- | < | + | |
- | pour < | + | |
- | l' | + | |
- | stockec sous un format binaire avec le programme GEN IMGS. La | + | |
- | BEST OF GRa BASIC | + | |
- | [ eT | + | |
- | S T | + | |
- | : | + | |
- | peu plus bas avec les détails sur GEN IMGS, | + | |
- | Prenons un exemple de liew H s'agit d'une pièce fermée avec une | + | |
- | seule porte. Cette porte donne sur un,long couloir. La pièce est | + | |
- | éclairée par de grandes torches. Le joueur ne peut accomplir que | + | |
- | deux actions: examiner les rorches ou passer la porte. La description | + | |
- | de ce lieu comprend : le nom du fichier binaire contenant l' | + | |
- | ce lien, le texte descriptif de la porté, et la définition des deux zones | + | |
- | de clics (les corches et la porte). | + | |
- | I E e e e e e e d r e d d d e e E | + | |
- | (* - EXEMPLES DE LIEU * | + | |
- | bl SO T n e e E A RR | + | |
- | lieux: | + | |
- | I OT e E r d e eA rr ced rrarr ard ecde e p d 006d0 R E | + | |
- | " * LIEU 1. ¢ SALLE AVFE TORCHES - * | + | |
- | LRN RE AN A N A E N d E e É A A E | + | |
- | DATA SALLE.BIN | + | |
- | DATA Vous vous trouvez dans une grande salle écjairée | + | |
- | DATA par d' | + | |
- | DATA visible est une gigantesgue porte en bronze. | + | |
- | DATA * | + | |
- | DATA 30, | + | |
- | DATA 100, | + | |
- | DATA =1 | + | |
- | La ligne 30, | + | |
- | de-clic. Certe zone est positionnée à la position (30,40). Elle à une | + | |
- | largeur de 50 pixels, et une hauteur de 35 pixels. Lorsque la souris | + | |
- | passe sur cette zont, elle doir avoir la forme 7 (< | + | |
- | clic souris cétte zone, 1l faut appélér la rourine 7 (< | + | |
- | MESSAGE=), et afficher le message numéro 1. Ce message est une description | + | |
- | assez horrible des gravures des torches. | + | |
- | La ligne 100, | + | |
- | ne de clic, Cette zone est située à la position (100,40), Elle à une larseur | + | |
- | de 30 pixels, ¢t une hauteur de 35 pixels. Lorsque la souris passe | + | |
- | dessus, elle doit avoir la forme 2 (<PASSER PORTE=). 5i le joueur | + | |
- | clique sur certe zone, il faut appeler la rourine 1 (< | + | |
- | Le nouveau lieu sera le lieu 2. | + | |
- | La fin des zones est indiquée par la ligne DATA -L La fin de tous les | + | |
- | lieux est Indiquee par la hgne DATA *FIN. | + | |
- | D e e e e e R R E RR ETEE | + | |
- | (* LIEU:2 — COULOIR * | + | |
- | | t***ttttt***t# | + | |
- | DATA COULOIR. BIN | + | |
- | DATA Vous vous trouvez actuel lement dans un | + | |
- | DATA gigantesque couloir. I1 semble 5 étendre | + | |
- | DATA à l' | + | |
- | DATA de bronze dans votre dos. | + | |
- | DATA * | + | |
- | DATA 20, | + | |
- | DATA =1 | + | |
- | DATA *FIN | + | |
- | Il o'y à qu’une seule zone de clic dans ce lieu. La forme de souris | + | |
- | correspondante ést la forme & (< | + | |
- | ATARI MAGAZIME | + | |
- | clique sur cétté zone, le programme lance l' | + | |
- | 1 (< | + | |
- | ligne DATA “FIN indique qu'il n°y a pas d' | + | |
- | aventuré. | + | |
- | Astuce de commentaire | + | |
- | On ne peut pas mettre un commentaire sur la même ligne qu' | + | |
- | instruétion DATA, car ce commentaire serait interprété comme une | + | |
- | chaîne de caractéres appartenant & cetle même instruction DATA. | + | |
- | C'est ennuyeux, car cela oblige à une répartition inesthétique des | + | |
- | commentaires. Pour éviter cela, on peut “ruser, ef mettre un commentaire | + | |
- | dans l' | + | |
- | appartenant à l' | + | |
- | programmiation, | + | |
- | hisible. La routine de lecture des DATA lit la chaïné de caractère du | + | |
- | commentaire, | + | |
- | | H*ELE !:' | + | |
- | ! * DEFINITION LTEU AVEC COMMENTAIRE = | + | |
- | I Rkt h R E É E R RR A d d E | + | |
- | DATA SALLE.BIN | + | |
- | DATA Vous vous trouvez dans une grande salle | + | |
- | DATA éclairée par d' | + | |
- | DATA La seule issue visible est une gigantésque | + | |
- | DATA porte en brônzé. | + | |
- | DATA * | + | |
- | DATA 30, | + | |
- | DATA 100, | + | |
- | DATA -1 | + | |
- | Toutes les définitions dé 2one du programme doivent avoir un commentaire | + | |
- | de ce type, Attention : cé n'est pas un véritable commentaite, | + | |
- | et il faut toujours avoir le caractère Ÿ entre la fin de la ligne et le | + | |
- | début du commentaire. S°il manque un seul commentaire, | + | |
- | de lecture des lieux va afficher une erreur de DATA | + | |
- | Coddeas igmagees | + | |
- | Les images sont des blocs graphiques de 308x80 pixels. Elles doivent | + | |
- | Être dessindes avec un logiciel de dessin style Depas Efite. Une fois les | + | |
- | images dessinées, elles seront converties dans un format binaire utilisable | + | |
- | par le programme de jeu, Cette conversion est faite par le programme | + | |
- | CONV IMG. | + | |
- | La conversion se fait en écrivant dans des lignes de DATA le nom des | + | |
- | images Deges Efaté, la position des dessins sur les images, et le nom | + | |
- | des fichiers binaires à génèrer. | + | |
- | Ces fichiers contiennent la palette de couleur de Pimage. Cela permet | + | |
- | d' | + | |
- | gèré auromatiquement les bonnes palettes. | + | |
- | 1 A e e e e e e e e e e d r e d d e d É RE | + | |
- | | # EXEMPLE DE CONVERSION DEGAS/ELITE == BINAIRE * | + | |
- | |' HR RE E É r e E d e E e E n d E e E | + | |
- | DATA VILLE,PII | + | |
- | DATA VILLE.BIN | + | |
- | DATA 6,28 | + | |
- | BEST OF GFA BASIC | + | |
- | Cer exemple correspond à la conversion de l' | + | |
- | (6,28) de l' | + | |
- | naire de nom VILLE.BIN. Les fichiers binaires ainsi générés font une | + | |
- | taille de 12842 octets. | + | |
- | Générateur d' | + | |
- | Ftant donné qu'il est assez difficile d' | + | |
- | fichiers binaires dans un aruiclé, j'ai écrit un programme supplémenture. | + | |
- | Ce petit programme, appele GEN IMGS, vous vénérera des 1mages | + | |
- | Depis slite. Elles devront être convertres par CONV IMG pour vous | + | |
- | donner les fichiers praphiques indispensables au programme de | + | |
- | démonstration. La séquence de travail est donc: exécution de | + | |
- | GEN IMGS, exécution de CONV IMG, puis ecécution de DEMO- JEU, | + | |
- | Dossier technique | + | |
- | Le programme a été écrit en GEA RASIC 3.0, Sa structure est classique. | + | |
- | On v trouve les différents rableaux conrenant les informations | + | |
- | dé jeu, des routines système, un modulé d' | + | |
- | specifiques au programme. | + | |
- | Les données du programme | + | |
- | Les informations du programme sont stockées dans des rableaux de | + | |
- | données, Ces dermers sont imitialisés & purl:fr des zones de DATA par | + | |
- | les routines d' | + | |
- | au lieu de O grice à l' | + | |
- | procramme. | + | |
- | Le tableau message$() contient les divers messages. Le tableau dia- | + | |
- | ' | + | |
- | cflnflfin[]£Immn]fl: | + | |
- | descri${) contient les descriptions des licux. | + | |
- | Le tableau zones%() sert à mémoriser les caractéristiques des zones | + | |
- | de clics du jeu, Il v à 7 données par zone de clic, ce rableau à donc | + | |
- | deux dimensions (DIM zones& | + | |
- | Codage de 1a zone n% : | + | |
- | - zoness(n%, | + | |
- | - zones# | + | |
- | - zones®{n%, | + | |
- | - 70nes# | + | |
- | - zones%(n%, | + | |
- | - zones%{n%, | + | |
- | - zoness(n%, | + | |
- | Les zones sont enregistrées les unes après les autres dans le tableau | + | |
- | zonés$. Le tableau Tieux% () sert à associer les zones aux lieux. La | + | |
- | techniquée de codage est la survante : | + | |
- | - Tlieux*{n4, | + | |
- | - lieux%{n%, | + | |
- | La variable sortie* contient la condition d’arrêt du programme, Elle | + | |
- | contient habituellement 0, mais si son contenu passé à 1, lë programme | + | |
- | s' | + | |
- | Les routines systèmes | + | |
- | Les routines système sont des procédures qui permettent de gerer divers | + | |
- | petirs problèmes qui se posent cour le temps au programmeur | + | |
- | (effacement de l' | + | |
- | rectangle graphique, dessin d’un cadre, atténté d'un clic souris, enc..). | + | |
- | Avair une bonne bibliothèque de fonctions système permet de réaliser | + | |
- | un gain de temps appréciable dans l' | + | |
- | La routite de formatage de texte est une routine système comme les | + | |
- | autres, mais elle nécessite quelques exphications. Elle permet de | + | |
- | découper un texte quelconque en lignes de textes formatées en res: | + | |
- | pectant les espaces. Les mots ne sont pas coupés à la ligne comme | + | |
- | avec un affichage classique (PRINT), et restent donc entiers. | + | |
- | Les routines d' | + | |
- | Les routines d' | + | |
- | DATA, et les merent dans les divers tableaux de donnés. Ces rou- | + | |
- | Lines sont Binit messages, Cinit dialoques, Binit_souris ct | + | |
- | Ginit lieux | + | |
- | La routme Baff ecran est auss uné mutiné d' | + | |
- | lieu de préparer les données du programme, elle prépare l' | + | |
- | jeu qui séra utilisé pendant oure |a durée d' | + | |
- | Les routines de gestion de jeu | + | |
- | La procédure @forme souris{n%) moditie la forme de la souris, | + | |
- | Avec né=0; la souris a « forme hatituelle de fléche. Avec nése=l; la | + | |
- | souris prend là forme mémorisée dans la variable sourish (n¥). | + | |
- | La procédure Catt move souris attend un changement de position | + | |
- | de la souris, où un elié-souris (changement d’étar). | + | |
- | La fonction @tst zone permet de savoir s1 uné position (x,y) est | + | |
- | comprise dans un rectangle graphique (px, | + | |
- | des foncrions les plus uriles du logiciel. | + | |
- | La fonction Écherche zone permer de savoir sv une position (x,v) | + | |
- | de l' | + | |
- | utilise la fonction @tst zone. | + | |
- | La fonction @cherche option permet dé savoir si une position | + | |
- | (x.#} de l' | + | |
- | lecture, quitter pre), Elle utilise la fonction Etst zone. | + | |
- | La procédure Batt zone clic est la routine la plus importante du | + | |
- | jeu. C'est elle qui s' | + | |
- | de sa position, ct de contrôler si le joueur clique dans une des | + | |
- | zones de l' | + | |
- | teste si la souris est sur une zone de clic. | + | |
- | En cas de réponse positive, elle s' | + | |
- | visualisant l' | + | |
- | routines @att move souris, @cherche zane, écherche option, | + | |
- | et ÉTOIME souris, | + | |
- | La procédure Bexec_option permet d' | + | |
- | du jeu. Elle utilise l' | + | |
- | de la routine choisie, | + | |
- | La |' | + | |
- | actions du jeu (déplacement, | + | |
- | Chaque action a un numére. L' | + | |
- | lancer l' | + | |
- | ATARI MAGAZINE fl BEST OF GFA BASIC | + | |
- | La routiné principale du jeu est la procédure Ogestion jeu, Flle artend | + | |
- | que l’utilisateur clique sur une zone guelcongue, puis appelle là | + | |
- | routine qui s' | + | |
- | tant que la variable sortie® contient C. | + | |
- | Les options systémes | + | |
- | Ces options sont des fonctions que le joueur peur utiliser en permapence, | + | |
- | Il v a la fonction infa, I sauvegarde du jeu, la lecture d' | + | |
- | siuveyarde, et une option permettant de sortir du jeu avec demande | + | |
- | Ë.' | + | |
- | Routine d' | + | |
- | La procéduré Goption info affiche une page d' | + | |
- | du joueur. Certe page contient le nom du programme, le tvpe | + | |
- | de système de developpement utilisé (GFA Basic 3.5 en l' | + | |
- | er les copyriehts du programme (l' | + | |
- | -~ | + | |
- | Routine de sauvegarde | + | |
- | La procédure Boption sauver sauve sur disquette l’érat du jen. Cet | + | |
- | etat est trés simplifié puisqu' | + | |
- | le lieu courant. | + | |
- | Routine de lecture | + | |
- | La procedure Coption Tecture it les donnees sauvegardees par | + | |
- | Boption sauver Une fois le numéro du lieu courant chargé en mémoire, | + | |
- | elle utilise la routine @deplacement pour positionner le jeu | + | |
- | dans son nouvel état. | + | |
- | Routine de sortie du programme | + | |
- | La procédure Goption sortie affiche une petite boîte de dialogue | + | |
- | avec un texte (" Voulez-vous quitter ce programme 7'), er deux | + | |
- | cptions (OUT' et " | + | |
- | ne se passe rien et le programme quitte la routine, 81 le joueur clique | + | |
- | sur l’option " | + | |
- | avant de quicrer la routine. | + | |
- | Les routines d' | + | |
- | Ces routines correspondent aux actions exécurables par le joueur. | + | |
- | Certaines d’entre elles modifient les variables du’ programme, | + | |
- | d' | + | |
- | maodifiér l' | + | |
- | Ces routines ont besoin d'un paramêtre décnvant la nature de la | + | |
- | tache à effectuer. | + | |
- | Routine de déplacement | + | |
- | La procédure @deplacement (11eu%) change la position du joueur. | + | |
- | C'est une routine importante, puisque Pessence même d'un jeu d' | + | |
- | est l' | + | |
- | changement de heu se fait en modifiant la variable lieu courant*, | + | |
- | et en atfichant l' | + | |
- | Routine d' | + | |
- | La procédure Eaffichage message(numé) aifiche le message | + | |
- | numéro Numé Le texte est stocké dans le tableau message()$. Ce | + | |
- | texte est formaté avec 36 caractéres par ligne avec la routine Bformat | + | |
- | avant d' | + | |
- | affiche une petite boîte de dialu;;uc ivec le méssage "OUK. Le | + | |
- | Joueur deut chquer dans cerre bofte pour quetter Foption " EXAMEN" | + | |
- | Routine de conversation | + | |
- | La procédure Éparler personnage(perso®) affiche le texte du dialogue | + | |
- | numéro persos Ce exte est sauvegardé dans le tableau dialogues$(). | + | |
- | Une fois le tecte affiche le programme attend que le | + | |
- | joueur clique dans une petite boîte OR qu'il dessine apres le texte, | + | |
- | Ce système de dialogue est semple. Il n°y à pas de véritable conversation, | + | |
- | Beaucoup d' | + | |
- | dé faire mieux et de simuler (du moins partiellement) une véritable | + | |
- | conversätiont. | + | |
- | EE R E E T RE E e r e e e e e e r e r e e e e e r e r d d rr d | + | |
- | * # CONVERSION IMAGES DEGAS ELITE => FORMAT BINAIRE * | + | |
- | A E R T E e e e T e e e ee e r e e e r e d r e r e e e e r rs rs ds dn e d | + | |
- | i e e e e r t e e e e e e e l e d e e e e rs r d e e « | + | |
- | vs ProgrCONaV mIMGm.GeFA * | + | |
- | i t*******kt: | + | |
- | ! # (C) 1990 Patrick Leclercq * | + | |
- | ! # (C) 1990 ATARI MAGAZINE " | + | |
- | LRI UR e e | + | |
- | RESERVE 50000 | + | |
- | HIDEM | + | |
- | Ggen imgs | + | |
- | SHOWM | + | |
- | END | + | |
- | I | + | |
- | 1 kol e e e e 3 ok e e g e e e e e o o o ok e e RRN o el | + | |
- | "' | + | |
- | DWW RR T o R A A R R R r e “ e r | + | |
- | 1ol sl TR e o ol R e o o R o ol e e R SR ol e el e o R e e e e | + | |
- | | * La palette est stockée dans la variable globale* | + | |
- | \ * paletteS. Cette variable est réutilisée par la * | + | |
- | * procédure Bsauve image(). * | + | |
- | l Lk T T e e e e e r e e e e e e é e d e T e e | + | |
- | PROCEDURE Toad degas (nom$) | + | |
- | palettef=SPACER(32) ! Réservation mémoire 32 octets | + | |
- | OPEN " | + | |
- | SEEK #99. 2 1 ON SAUTE LES DEUX PREMIERS OCTETS | + | |
- | BGET # | + | |
- | VOID XEI05(6, | + | |
- | EGET 299 XBIO0S(2), | + | |
- | CLOSE #99 | Fermeture du fichier | + | |
- | RETURN | + | |
- | ÂATARI MAGAZINE E BEST OF GRA BASIC | + | |
- | — =— — —— = e E | + | |
- | —— | + | |
- | = | + | |
- | B O T E Tt RR ÉÉ kR e e e i | + | |
- | * SAUVEGARDE D'UNE IMAGE SUR DISQUETTE * | + | |
- | d d d e 5 A r r d e e e e E S S T e e o E b b b e e | + | |
- | PROCEDURE aauvewîmage{nüm_jmage$} | + | |
- | LOCAL adr& | + | |
- | taille==LEN(image5) | + | |
- | OPEN “o",# | + | |
- | BPUT # | + | |
- | BPUT # | + | |
- | BPUT # | + | |
- | CLOSE #1 ! Fermeture fichier | + | |
- | ! Taille image | + | |
- | I Quverture fichier | + | |
- | RETURN | + | |
- | d e A d d e AI | + | |
- | * BOUCLE DE LECTURE DES IMAGES 7* | + | |
- | T RR RR RI E | + | |
- | dde eh e e E e A E DO S e e r r r e e e e e R e e R e e d e e L | + | |
- | * L' | + | |
- | * imagef. d | + | |
- | d dn e d e e d R e é é d d d A e A A A d d A RE CR | + | |
- | PROCEDURE gen imgs | + | |
- | LOCAL nom degas$ | + | |
- | . LOCAL nom fichier} | + | |
- | LOCAL px%,py5s | + | |
- | LOCAL px2%,py2% | + | |
- | RESTORE donnees imgs | + | |
- | 00 | + | |
- | READ nom degass | + | |
- | EXIT IF nom degas$=" | + | |
- | READ nom fichier$ | + | |
- | READ px=,pys | + | |
- | px2%=px*+307 | + | |
- | pye4=pyè+za Calcul py2% | + | |
- | #load degas(nom degas$) | Chargement image DEGAS | + | |
- | GET .px%px2,%, ppy2%y, | + | |
- | Ésquve image(nom fichier$) ! Sauv, image sur disque | + | |
- | LOOP | + | |
- | Fixe pointeur DATA | + | |
- | ! Test si Fin de donnees | + | |
- | Lecture position imagé | + | |
- | Calcul pxs | + | |
- | —— L — — L " L | + | |
- | RETURN | + | |
- | et B PP P LT RR RR E RRN e é E | + | |
- | * ST0CKAGE DES COORDONNEES DES IMAGES * | + | |
- | Ak kA EEEEAAAAANE TN ETE RERÉETARRER RR RUN | + | |
- | DATA Nom image DEGAS ELITE | + | |
- | DATA Nom fichier binaire | + | |
- | DATA px, py | + | |
- | DATA #FIN | + | |
- | donnees imüs: | + | |
- | DATA VILLE.PI1 | + | |
- | DATA VILLE.BIN | + | |
- | DATA 6,28 | + | |
- | Lecture nom image DEGAS | + | |
- | Lecture nom fichier img | + | |
- | DATA TAVERNE.PI1 | + | |
- | DATA TAVERNE.BIN | + | |
- | DATA 6,28 | + | |
- | BATA MARCHEL.PIl | + | |
- | OATA MARCHEL.EIN | + | |
- | DATA B,Z258 | + | |
- | DATA MARCHEZ.P11 | + | |
- | DATA MARCHEZ.BIN | + | |
- | DATA 6,28 | + | |
- | DATA GARDE.PI1 | + | |
- | DATA GARDE.BIN | + | |
- | DATA 6,28 | + | |
- | DATA PRISON.PI] | + | |
- | DATA PRISON.BIN | + | |
- | DATA 6,78 | + | |
- | | | + | |
- | I | + | |
- | R T Ik v e T e Re Sk | + | |
- | ! * INDICATEUR DE FIN D' | + | |
- | L RR E E R d e e | + | |
- | DATA *FIN | + | |
- | AhkakE A r r A e e e e e e e e d e e e d r e d d RE RE | + | |
- | * GENERATEUR D' | + | |
- | I RR RRN TENARAAEERRÉRET IERE NNN LY TR R bk hrdrh o ® s RE | + | |
- | ] ttttw**t**t**t& | + | |
- | * * Programme GEN IMGS.GFA * | + | |
- | D e e e d e e e e R e E R e e E | + | |
- | ' * (C) 1990 Patrick Leclercq * | + | |
- | * (C) 1990 Atari Magazine * | + | |
- | | RR R AT TR st RE RS | + | |
- | RESERVE 10000 | + | |
- | @def couleurs | + | |
- | Egen images | + | |
- | END | + | |
- | Éh dh RRN E R NN RE E E | + | |
- | * DEFINITION PALETTE DE COULEUR DES IMAGES * | + | |
- | dh A RE A A e e e e r r e e é d e d e | + | |
- | PROCEDURE def couleurs | + | |
- | LOCAL i% | + | |
- | LOCAL c& | + | |
- | RESTORE couleurs | + | |
- | FOR 1=0 TO 15 | + | |
- | READ c% ~ | + | |
- | VOID XBIOS(7, | + | |
- | NEXT i% | + | |
- | RETURN | + | |
- | ATARI MAGAZIME a BEST OF GFA BASIC | + | |
- | ñ | + | |
- | J | + | |
- | D E+HARea RR R R E AN ÉÉ ER R | + | |
- | * * PALETTE DE COULEURS DES IMAGES * | + | |
- | DRh E RE RR R R c e R ke | + | |
- | couleurs: | + | |
- | DATA 4000, | + | |
- | DATA $333, | + | |
- | L e é T d e dh e A e de d e dh e r dn r de RE S | + | |
- | * * AFFICHAGE D'UN RECTANGLE PLEIN * | + | |
- | E RE = T A REN e e e c c E | + | |
- | PROCEDURE rect(pxä, | + | |
- | LOCAL px2%,py2% | + | |
- | pxés=pxatixs-l | + | |
- | pyés-pystiysl | + | |
- | DEFFILL c& | + | |
- | PROX px%, | + | |
- | RETURN | + | |
- | - | + | |
- | | SREE R AV e d e d E r e ce e d e A r R RR AAX | + | |
- | ! * SAUVEGARDE D'UNE IMAGE AL FORMAT DEGAS ELITE * | + | |
- | | LFN RE RE A o il e KRF AAARE | + | |
- | PROCEDURE save degas(noms) | + | |
- | LOCAL paletted | + | |
- | LOCAL resolutiond | + | |
- | LOCAL aër pals | + | |
- | LOCAL adr resol& | + | |
- | LOCAL adr* | + | |
- | LOCAL i% | + | |
- | palettef-$PACES (32) | MEMOIRE FOUR PALETTE | + | |
- | resolutiont=SPACES (2] | MEMOIRE POUR RESOL. | + | |
- | adr pal%=VARPTR(palettef) | ADRESSE ZONE PALETTE | + | |
- | adr resol%VARPTR(resolution$)! ADRESSE ZONF RESOL. | + | |
- | INT[adr resol%; | + | |
- | adr“=adr pal= | + | |
- | FOR i%=0 TO 15 ! LECTURE PALETTE COUL. | + | |
- | INT{adrs}=XBI0S(7.7%, | + | |
- | ADD adr%,? | + | |
- | NEXT 1% | + | |
- | OPEN " | + | |
- | BPUT #99,adr resol%,2 | + | |
- | BPUT #99 adr pals,32 | + | |
- | BPUT # | + | |
- | CLOSE #99 | + | |
- | RETURN | + | |
- | OUVERTURE FICHIER | + | |
- | ECRITURE RESOLUTION | + | |
- | | ECRITURE PALETTE COUL. | + | |
- | ECRITURE DE L' | + | |
- | FERMETURE FICHIER | + | |
- | i J.", | + | |
- | ' # DESSIN DES ZONES DE CLIC * | + | |
- | E E E E E E E E E E E E ETE E ETE | + | |
- | PROCEDURE dessin zones | + | |
- | LOCAL px6; | + | |
- | DU | + | |
- | READ pxs | + | |
- | EXIT LF px$=-=1 | + | |
- | READ pyë, tx%, tys | + | |
- | @rect(px*, | + | |
- | LOUP | + | |
- | RETURN | + | |
- | I Test si fin de zones | + | |
- | |l o e e e ol e i e e o o e o oy e e e e RE | + | |
- | * # GENERATION DES IMAGES * | + | |
- | i 4t AR EET ektd | + | |
- | PROCEDURE gen images | + | |
- | LOCAL nom images | + | |
- | RESTORE donnees | + | |
- | û | + | |
- | READ rom imaget | + | |
- | EXIT IF nom image3=" | + | |
- | CLS | + | |
- | Grect(6, | + | |
- | Bdessin zones | + | |
- | Bsave degas(nom îimage$) | + | |
- | LOUP | + | |
- | RETURMN | + | |
- | | Dessin fond image | + | |
- | TE E | + | |
- | i RRN e ik ok o e e e e e i | + | |
- | * DONNEES DES IMAGES * | + | |
- | dh e A A A e e E R E | + | |
- | donnees: | + | |
- | DATA VILLE.PIl | + | |
- | DATA 16, | + | |
- | DATA 86, | + | |
- | DATA 156, | + | |
- | DATA 276, | + | |
- | DATA 244, | + | |
- | DATA =1 | + | |
- | DATA TAVERNE.PI1 | + | |
- | DATA 38, | + | |
- | DATA 90, | + | |
- | DATA 202, | + | |
- | DATA 90, | + | |
- | DATA 202, | + | |
- | DATA —1 | + | |
- | DATA MARCHEL.PI1 | + | |
- | DATA 20, | + | |
- | DATA 22, | + | |
- | DATA 100, | + | |
- | DATA 158, | + | |
- | DATA # | + | |
- | DATA —l | + | |
- | DATA MARCHEZ, | + | |
- | DATA 20, | + | |
- | DATA 53, | + | |
- | ATARI MAGAZINE ESIRM BESTOFGRA BASIC | + | |
- | | Dessin des zones de clic | + | |
- | DATA 140, | + | |
- | DATA 227, | + | |
- | DATA —1 | + | |
- | DATA GARDE.FTI | + | |
- | DATA §3, | + | |
- | DATA 120, | + | |
- | DATA 227, | + | |
- | DATA —l | + | |
- | DATA PRISON.FPII | + | |
- | DATA 34, | + | |
- | DATA 34, | + | |
- | DATA 104, | + | |
- | DATA 174, | + | |
- | DATA 244, | + | |
- | DATA —l | + | |
- | DATA *FIN | + | |
- | | 4R ÉRANTNEETER bbb Atk tdrerddsd | + | |
- | P JEU D' | + | |
- | ;* A | + | |
- | i RR RR R R A AR R R ek | + | |
- | | € Programmation GFA BASIC 3.5 * | + | |
- | | #* Testé sur 1090 STF & 1040 STE * | + | |
- | ! * (C) 1990 Patrick Leclerca rl | + | |
- | ! * (C) 1990 Atari Magazine b | + | |
- | | A i 3 TN s R W R R R s VIRNEE | + | |
- | RESERVE 100000 |RESERVWATION MEMOIRE POUR SYSTEME BASIC | + | |
- | OPTION BASE 1 — !INDICES DE TABLEAUX COMMENCANT À 1 | + | |
- | DIM souris$(100) ITABLEAU POUR LES FORMES DE SOURTS | + | |
- | nb_suurîsä=Û INOMBRE DE SOURIS DANS TABLEAL sourish | + | |
- | DIM Tieux5(100, | + | |
- | DIM imaçes$(100} !Tableau pour les images de lieux | + | |
- | DIM descri$(100) !Tableau pour les descript. de lieux | + | |
- | DIM zones# | + | |
- | lieu | + | |
- | DIM messages$(100) ! Tableau pour les messagés | + | |
- | nb _ méssages==D | + | |
- | DIM dialoqués5(100)! tableau pour les dialogues | + | |
- | nb dialoguess=0 | + | |
- | 1 NOMBRE DE LIEUX EN MEMOIRE | + | |
- | | NOMBRE DE ZONES EN MEMOTRE | + | |
- | nb_|ieux-=0 | + | |
- | nb_ïünüää" | + | |
- | DIM Tignest(20} ! Tableau formatage texte pour | + | |
- | affichage | + | |
- | nh lignes%=0 ! nb de lignes présentes dans ligne${) | + | |
- | fondé=SPACF{(32000)! Variablé pour mémorisation écran | + | |
- | ÂTARI MAGAZIME | + | |
- | DEFMOUS0E | + | |
- | Ginit souris | + | |
- | @init lieux | + | |
- | Cinit messages | + | |
- | Ginit dialoques | + | |
- | lieu courants=1 | + | |
- | FORME SOURIS = ABEILLE | + | |
- | INITIALISATION DES FORMES DE SOURIS | + | |
- | INITIALISATION DES LIEUX | + | |
- | INITIALISATION DES MESSAGES | + | |
- | INITIALTSATION BES DIALOGUES | + | |
- | P ey e e | + | |
- | GRAPHMODE (2) | + | |
- | [1 | + | |
- | MODE D' | + | |
- | FOUR AFFICHER LES CARACTERES SUR | + | |
- | N' | + | |
- | o — -— | + | |
- | 1 | + | |
- | HIDEM | + | |
- | Baff ecran | + | |
- | Bgestiojenu | + | |
- | DEFMOUSE 1) | + | |
- | END | + | |
- | EFFACEMENT SOURTS | + | |
- | AFFICHAGE ECRAN DE JEU | + | |
- | EXECUTION DU JEU | + | |
- | | FORME SOURIS = FLECHE | + | |
- | FIN DU FROGRAMME | + | |
- | E RR A A AW R R R R AR A AR Rk f d E A | + | |
- | F ï = | + | |
- | ' * ROUTINES SYSTEME DU PROGRAMME * | + | |
- | DRSN E RR R RE Ak A ke Exxddd | + | |
- | | VATTRREETERT TRISE ER RR | + | |
- | ! * EFFACEMENT DE L' | + | |
- | I e i oo o o o o o e e d és d d W E E | + | |
- | | oo & o o 3 o o e o R R WA e R ÉF | + | |
- | "R c% “ couleur de l' | + | |
- | L E E E E e E E E E c E E E | + | |
- | PROCEDURE cls ecran(es) | + | |
- | DEFFILL € | + | |
- | PROX 0, | + | |
- | RETURN | + | |
- | ! Couleur rectangle | + | |
- | | Dessin rectangle | + | |
- | | UR RESEE R R R E E T R e e e e | + | |
- | | * AFFICHAGE D'UN RECTANGLE PLEIN * | + | |
- | D e e e m e e e e e e e e e S d e E | + | |
- | "* pxs : Pésition x du rectangle 7 | + | |
- | E pys - Position y du rectangie 7 | + | |
- | | # TX : Largeur du rectangle u | + | |
- | ! # L% : Hauteur du rectangle H | + | |
- | ! * c% & Cowleur du rectangle o | + | |
- | I gk ke ETE TR ki xR RE RR R R | + | |
- | PROCEDURE rect{px®tx, | + | |
- | LOCAL pxess, pyes | + | |
- | puésepxertxe=l | + | |
- | pyésepyattys-1 ; | + | |
- | DEFFILL e3% - ! Couleur rectangle | + | |
- | PEOX px* pyt, | + | |
- | RETURN | + | |
- | E et ok ok o o e e e de e g o o o o o e e e e o e EN | + | |
- | BEST OF GFA BASIC - | + | |
- | * * AFFICHAGE D'UN CADRE VIDE * | + | |
- | DO ok oy o i e e RR R RE e e e RS R RN P E | + | |
- | | L L E UE AT A R e E E E E E E E E d d d e E E E SE A E d & | + | |
- | P p t : Position x du cadre e | + | |
- | 14 p : Position ¥ du cadre ‘ | + | |
- | 55 ¥ < : Largeur du cadre * | + | |
- | Vs E A : Hauteur du cadre Æ | + | |
- | e Fonds : Couleur fond du cadre * | + | |
- | ! # cContour® : Couleur bords du cadre * | + | |
- | k E E r R uc é rr rn A e | + | |
- | PROCEDURE cadre(pxf%, pys, tx*,ty5, Tond%, contours) | + | |
- | LOCAL px2%,py2% | + | |
- | pr2i=pritixni-1 | + | |
- | pyvds=pys+tysl | + | |
- | DEFFILL fond% ! Eouleur fond | + | |
- | PEOX px%, | + | |
- | COLOR contour* ! Couleur contour | + | |
- | BOX px* , | + | |
- | RETURN | + | |
- | P | + | |
- | R L L L L H T T T TP e | + | |
- | "= TEST D'UNE ZORE GRAPHIQUE * | + | |
- | | ORRRRRRR SREE RRN RR E AN R AR T T L | + | |
- | I VV E E E E d e e S E e e e e p p | + | |
- | ‘* Cette fonction teste si la position (x%.v%) | + | |
- | * est comprise dans la zone graphique | + | |
- | (pxé,pys, tx5,ty5}. 51 la position est comprise | + | |
- | dans Ta zone, Btst zone renvoit 1. | + | |
- | Dans le cas contraire, elle renvoit 0. | + | |
- | | A o L e T 8 EN E E e e m R R R E RE E E RN A | + | |
- | FUNCTION ifit_ïüne[xä, | + | |
- | LOCAL pxd%,pyes | + | |
- | LOCAL T | + | |
- | £ + + | + | |
- | pxésepxetixé=l | + | |
- | pyésepyetiye-l | + | |
- | r==0 | + | |
- | IF (xé> | + | |
- | TF (yé==py4} AND (y¥< | + | |
- | el | + | |
- | ENDIF | + | |
- | EMOIF | + | |
- | RETURN % | + | |
- | ENDFUNC | + | |
- | B dh dh e o o o O R e e A A o el R é E E | + | |
- | *.* ATTENTE CLIC DANS UNE ZONE 7 | + | |
- | | VVRRREEETÉTÉETTTTÉREETÉTTTERÉÉÉEE RE | + | |
- | A d d e e e é éc e é dn de ok o ok Ak P e e ke o O N R R W R E E R E R | + | |
- | ‘*Cette procêdure attend que l' | + | |
- | ‘*uné zone précise de ]' | + | |
- | | E E m e m e m e e e e e e v e r e e e L e e e e e f e e E e | + | |
- | PROCEDURE wait zone(px&, | + | |
- | LOCAL xmé, vméé | + | |
- | L | + | |
- | 00 | + | |
- | datt clic[xmé, yms) | + | |
- | EXITTF @tst zone(xmé, ymé,pais, pys, tik, tys) =1 | + | |
- | LODP | + | |
- | RETURN | + | |
- | | RRF b b Ul T T e A A SRR R AR RS R RS SRS ok d rT P PE E | + | |
- | ! & ATTENTE CLIC SOURIS AVEC FOURNITURE ETAT SOURIS * | + | |
- | T & o = o S e o o e e e e e o e r g e o Tt o e e et R S | + | |
- | ! = {ptte procédure attend que le joueur clique avec * | + | |
- | ! = la souris. Elle fournit Ta position (x,y) de clie* | + | |
- | ! * à la procédure appellante. Elle ne rend là main * | + | |
- | * # que lorsque le joueur a relaéhé le clic soûris. * | + | |
- | L RR R r e é d e e d e e e d d e e A A d d d e E | + | |
- | PROCEDURE att_ÇFifi[ïhfi x , Varé) | + | |
- | LOCAL Kms | + | |
- | i | + | |
- | B0 | + | |
- | MOUSE xmés, vmés, kmés | + | |
- | EXIT IF kmée=0 | + | |
- | LOUP | + | |
- | D | + | |
- | EXIT IF MOUSER=L ! Att arrêt clic | + | |
- | LOGF | + | |
- | RETURN | + | |
- | l | + | |
- | l Att clic souris | + | |
- | 1 | + | |
- | d e n d d e d nl e d | + | |
- | * ATTENTE CETC-SOURIS * | + | |
- | wtitittttt***£# | + | |
- | AERX RE R AR AR EFERA LA d e d e d e R E | + | |
- | ‘*Cette procêdure attend que le joueur ait cliqué. Elle* | + | |
- | "#*np rend la main à la procédure appelante que lorsque * | + | |
- | ‘*le clic a cessé. À la différence de datt clic, cétte * | + | |
- | ‘*procêdure ne donne pas la position de clic. F | + | |
- | i t******+# | + | |
- | PROCEDURE wait clic | + | |
- | REPEAT | + | |
- | UNTIL MOUSEK I Attente clic souris | + | |
- | REPEAT | + | |
- | UNTIL MOUSEK=0 ! Attente fin de-élie ~ | + | |
- | RETURN | + | |
- | | ARRRHARHHRRREÉRRRRRRRR ÉN AAE RR | + | |
- | | # ATTENTE ARRET CLIC SOURIS = | + | |
- | 0R A E e d e d e d d d d | + | |
- | PROCEDURE attüclic | + | |
- | REPEAT | + | |
- | UMTIL MOUSEK=0 | + | |
- | RETURN | + | |
- | Ï | + | |
- | I | + | |
- | [ o Sk e e e d S keL S | + | |
- | * #. COULEUR DU-TEXTE * | + | |
- | b o o o ok RR A R i e VR e e R | + | |
- | PROCEDURE texte color(c*) | + | |
- | ATARI MAGAZINE fl BEST OF GFA BASIC | + | |
- | 1 A d d R b s S e SE _ | « RESTAURATION DE L' | + | |
- | DEFTEXT c% - " | + | |
- | . | — PARAMETRES ROITINE - ‘ L ARRRAAAAERREE RS AAN AR RE RE A RE EN E E | + | |
- | RETURN INC nb lignes% | + | |
- | | ‘ d : lignes${nb lignes*)=tampons , ! * L' | + | |
- | (S MRSyA ES S # m : texte à formater ‘ tampon$="" | + | |
- | t A e e d d R E ! * taille* : nombre maximum de lettres par ligne X ENDIF ' * @memorisation ecran. = | + | |
- | ( AFFICHAGE TEXTE EN CARACTERES GRAS * * # SORTIE ROUTINE : _ f - D dh d et R e S et b L L bl RE | + | |
- | L ek ek e e e sk ok WO e ek e e e R R kR L É e E ä IF (tampont-="" | + | |
- | PROCEDURE texte gras ' * Les lignes sont stackées dans le tableau Tligness().* IF LEH{11EHE$]+1+LEH[tümpgn$}ä=tfi111ËË SPUT fond$ i | + | |
- | BEETERT ù 7 \ * La variable nb lignes* contient le nb de lignes du* INC nb ligness RETURN | + | |
- | RETURN \ ® tableau lignes$(). ë 1âgneaî{nh lignes*)=1igne$+" | + | |
- | ‘ | dedede d n d d d e e dede e de d e d e e e ce eh e r e d W 1ÎQHE$=""' | + | |
- | l PROCEDURE format{mk, | + | |
- | | — TÉEREANAE RE É ' | + | |
- | Lol flFF!EHAEE TEXTE EN EÈHÈETEHEE ÎÏÊLIDÜES L LflEAl p% INC nh Ïiflfl& | + | |
- | LR E SRI RE E RE LOCAL c$ 1îgnesï{nb lignes# | + | |
- | PROCEDURE texte italigue LOCAL lignes ligneg="" | + | |
- | DEFTEXT ,4 ' INC nb Tignes% | # INITIALTSATION DES LIEUX * | + | |
- | RETURN nb_lignes%=0 lignes${nb lignes# | + | |
- | ' Lamponf="" | + | |
- | n lignef="" | + | |
- | E e cé Pl ue sc E UE | ‘ ENDIF ! * les mémorise dans les tableaux correspondants * ! — AFFICHAGE TEXTE EM CARACTERES NORMAUX * FOR pt=1 T0 20 | | * (images$(), descri$(), zones& | + | |
- | PROCEDURE tfiïte_nufimaï | + | |
- | DEFTEXT ,Û | + | |
- | RETURN | + | |
- | L e e e d d e d e e e S E R A o e e e d d E | + | |
- | * AFFICHAGE TEXTE EN CAR. BRILLANTS * | + | |
- | b bddede e dn d d A d e d E E A R RR RESRE | + | |
- | PROCEDURE Lexte brillant | + | |
- | DEFTEXT 42 | + | |
- | RETURN | + | |
- | B E E A TR A C e e i e S ok e g dr R R AT e R | + | |
- | * AFFICHAGE TEXTE EN CAR. SOULIGNES * | + | |
- | 1 L T dede dc e e e e e e m e e r e n d d h e S SÉ | + | |
- | PROCEDURE texte souligne | + | |
- | DEFTEXT ,B | + | |
- | RETURN | + | |
- | oo e e dode i ok ok ke R R el AW W R R e e o e e E RR | + | |
- | * AFFICHAGE TEXTE EN CAR. ENCADRES * | + | |
- | ol ue o e 0 Ak A e ek E e e d d d R R R e c é n E | + | |
- | PROCFOURE te: | + | |
- | DEFTEXT ,16 | + | |
- | RETURN | + | |
- | Ë | + | |
- | D e T e e el r rr e e c0 66 d n e | + | |
- | * FORMATAGE D'UN TEXTE * | + | |
- | W E E R e A T NNN IERE | + | |
- | R E SE E E S E E R ETE E E A A E e RR E E E E E E E A A d E E A R E E R | + | |
- | * Cette routine découpe un texte en plusieurs lignes * | + | |
- | = pour un affichage propre. Le découpage sé fait au * | + | |
- | NEXT p* | + | |
- | d A é R e d k= | + | |
- | * BOUCLE DE DECOUPAGE ” | + | |
- | B e e e e ok É e e e R RR E | + | |
- | FOR p%=1 TO LEN(m$) | + | |
- | c$=MiD${mt, | + | |
- | IF g 0 | | + | |
- | tampon$=tamponé+ct | + | |
- | ENOTT | + | |
- | [F tj=e" ” | + | |
- | IF LEN(lignet)+1+LEN(tampant)< | + | |
- | IF lignes="" | + | |
- | ligne$-tampont | + | |
- | tampon$s="" | + | |
- | ELSE | + | |
- | lignet=lignes+" | + | |
- | tampon$="" | + | |
- | ENOITF | + | |
- | ELSE | + | |
- | INC nb lignes* | + | |
- | lignes${nb lignes# | + | |
- | lignet="" | + | |
- | IF tamponi=="" | + | |
- | tarpon$*=tarmont+t" | + | |
- | EMDIF | + | |
- | ENDEF . | + | |
- | ERDIF | + | |
- | NEXT p4 | + | |
- | Sn A en r e r d d e e e e e e e E | + | |
- | * FIN DU DECOUPAGE * | + | |
- | ATARI MAGAZINE m BEST OF GRA BASIC | + | |
- | E E R E o ol E el E e e E E e e d E E E E e | + | |
- | ! # AFFICHAGE DU TEXTE FORMATE * | + | |
- | | drfed i bk gk & o RO R E E ETE UR | + | |
- | |F RE RN AR R R e e ek g E E ol ke R e e e | + | |
- | * Cette routine affiche le texte mis en forme par la * | + | |
- | * routine Bformat à partir de Ta position graphique * | + | |
- | * (px*,pysl. ; | + | |
- | e d rr 02e MR A R u E R A E A U E E A A E R E E E E E bl R C R E e e E A | + | |
- | PROCEDURE aff format{(px#, | + | |
- | LOCAL 46 | + | |
- | LOCAL 15 | + | |
- | Y= Py | + | |
- | FOR 1%=1 T0 nb lignes= | + | |
- | TEXT px%, | + | |
- | 1 Pos Ÿ pour début affichage | + | |
- | ! Éoucle affichage message | + | |
- | ! Affichage texte message | + | |
- | ADD y&,0 | Passage ligne suivante | + | |
- | NEXT 1% | + | |
- | RETURN | + | |
- | I Rk e o e R EN bl R e | + | |
- | * MEMORISATION DE L' | + | |
- | E e e ke el o e e e e e e ek e | + | |
- | P d T e e e é e d d e e e e e e e e R R R e s e e ke | + | |
- | *l ' | + | |
- | I oA A A A AR RR E E R E A É E É R e E RR A | + | |
- | PROCEDURE memorisation ecran | + | |
- | SGET fond$ | + | |
- | ‘RETURN | + | |
- | U E E E e i i e sl ded o o rr e IS W R A A A e e | + | |
- | ATARI MAGAZINE | + | |
- | PROCEDURE init lieux | + | |
- | LOCAL px% | + | |
- | LOCAL img$ | + | |
- | LOCAL mess} | + | |
- | zo| inbrees=1 | + | |
- | nb lieuxs=0 | + | |
- | nh zones#=0 | + | |
- | RESTORE Tieux | + | |
- | DG | + | |
- | READ img | + | |
- | EXIT IF img$=" | + | |
- | INC nb lieux% | + | |
- | images${nb lieux%)=img$ | + | |
- | D | + | |
- | READ messt | + | |
- | EXIT IF mess$s=" | + | |
- | méssi=" | + | |
- | descrif{nb lieuxs)=descri${nb lîeux# | + | |
- | LOOP | + | |
- | lieux# | + | |
- | D | + | |
- | READ px | + | |
- | EXIT IF px%=-1 | + | |
- | sones*[zone libre#, | + | |
- | READ zones*(zone lihre=,2) | + | |
- | READ zones%{zone libre*,3) | + | |
- | READ zones%(zone lîbres, | + | |
- | READ zoness{zone libres,5) | + | |
- | READ zones%(zone 1ibref%, | + | |
- | READ zones& | + | |
- | READ rem$ | + | |
- | INC nb zoness | + | |
- | BEST OFGFA BASIC | + | |
- | INC zone Tibres | + | |
- | LOUF | + | |
- | \teux#(nb 1ieux%, | + | |
- | LOOP | + | |
- | RETURN | + | |
- | = | + | |
- | e d e é é d e d d d kA e e R e e e A e e d | + | |
- | * INITIALISATION DES MESSAGES * | + | |
- | d E T E d e A A R rc RE R d e E | + | |
- | e o o e o e e r e 7 A A e e e ok o b e R R o i e d e d e ok ok RRN N E b ok e | + | |
- | *Cette routine 1it les messages stockés en DATA, et * | + | |
- | “les mémorise dans le tableau messagesi(). La ; | + | |
- | *Variable nb messages% contient le nb de méssäges. ” | + | |
- | Kk R R e d d d R R A A RE NN RE | + | |
- | PROCEDURE init messages | + | |
- | LOCAL m3 | + | |
- | RESTORE méssages | + | |
- | nb méssages==0 | + | |
- | i | + | |
- | READ mt | + | |
- | EXIT IF mi=" | + | |
- | INC nb messagess | + | |
- | messages${nb messages*)=n$ | + | |
- | L0 | + | |
- | READ mi | + | |
- | EXIT IF mb=" | + | |
- | TI' | + | |
- | mEBSEgESÉ{fih_mEEEEQESÈ}=m935flgE$${nh_MESSHQESÊ]îmï | + | |
- | LOOP | + | |
- | LOOP | + | |
- | RETUEN | + | |
- | é éh e e d d e SE R RR A P E | + | |
- | * INITIALISATION DES DIALOGUES * | + | |
- | bh e e e e é é é o ok d d d d d d ke e R PR | + | |
- | E E E E E E E RR E E 44 4 dhbcici dh eBafedioh B RE TRk chidududeitehieh | + | |
- | *Cette routine 1it le texte des dialogues stockés en* | + | |
- | *[ATA. et les mémorise dans le tableau dialogues$() .* | + | |
- | *La variable nb dialoques* contient le nb dedialogues™ | + | |
- | *de dialogues${). u | + | |
- | i ****wwk; | + | |
- | PROCEDURE init dialogues | + | |
- | LOCAL messs | + | |
- | LOCAL n% | + | |
- | RESTORE dialogues | + | |
- | n#=0 | + | |
- | [H | + | |
- | READ mésst | + | |
- | EXIT IF mess$=" | + | |
- | INC n5 | + | |
- | dialoquesf{n%)=messt | + | |
- | D | + | |
- | READ messs | + | |
- | EXIT IF mess$="#" | + | |
- | messé=" | + | |
- | dialoques$(né)=dialoques$(n*)+mess$ | + | |
- | LOO# | + | |
- | LOOP | + | |
- | no_dialoguess=ns | + | |
- | RETURN | + | |
- | A E E A d d e e d e e d e R A R RE | + | |
- | * INITIALISATION FORMES DE SOURIS * | + | |
- | | RR RLRRRRANAAER RR A bbb ek xRN RN AT SÉ | + | |
- | PROCEQURE 1nit souris | + | |
- | LOCAL v fS | + | |
- | RESTORE souris | + | |
- | nb souris*=0 | + | |
- | D0 i | + | |
- | READ w% ! Lecturé DATA | + | |
- | EXIT IF v5=-1 | Test si fin données | + | |
- | INC nb souriss ! Une nouvelle souris | + | |
- | f$=HHIÏËv%] ! DEbut données souris | + | |
- | FOR i%=1 TÜ 36 | Début Tecture données | + | |
- | READ v ! Lecture DATA souris | + | |
- | fé=f4+MKI$[v5) | Mémorisation donnëéés souris | + | |
- | NEXT 1% | Fin Boucle lecture donnees | + | |
- | souris#(nb souris®)=f$! Souris dans sourisk() | + | |
- | LOUP | + | |
- | RETLRN | + | |
- | R A r e d e d e T e e R R é e ok e e | + | |
- | * RECHERCHE D'UNE ZONE DE CLIC * | + | |
- | PEc d d 044 d e e É RE E d d E E E é E E I E RS | + | |
- | ****æ*gæitittttw*tttt: | + | |
- | *Cette routine cherche si la position (xm,ym) ? | + | |
- | *correspond à une des zones du lieu courant.si c ést” | + | |
- | *13 cas, fournit le numéro de cette rone. En cas de * | + | |
- | ‘ * recherche négative, elle renvoit la valeur (. = | + | |
- | L LRN R RN E E S R RR A RE E | + | |
- | AR b AAEAEEEdtt bbbt | + | |
- | * umé : Position % * | + | |
- | * ymd : Position Ÿ * | + | |
- | dc d e m d A e e e d E | + | |
- | FUNCTION cherche zone(xm®, ymé) | + | |
- | LOCAL né,ré | + | |
- | LOCAL zone debut=,zone fins | + | |
- | LOCAL px pyt, LxR, Ly | + | |
- | r%=0 | + | |
- | zone debut*=l" | + | |
- | zone fin%=Tieux%(1ien courant*, | + | |
- | FOR n&=zone debut% TO zo_n fienä | + | |
- | px*" | + | |
- | pyéezones%(né, | + | |
- | tx5=zones5(n#, | + | |
- | tyk=zonesk({n%, | + | |
- | ATARI MAGAZINE m BEST OF GFA BASIC | + | |
- | rrF PE :î‘ -=' | + | |
- | r-———_——_rrfi._—-_— c | + | |
- | IF @tst zone(xm®, ymés, pxi,pyée, txé, tyé)=1 | + | |
- | réens | + | |
- | ENOLF | + | |
- | NEXT ni | + | |
- | RETURN r% | + | |
- | ENDFUNC | + | |
- | i | + | |
- | | ke d n R e d d d e R R d A E | + | |
- | ' * MODIFICATION DE LA FORME DE LA SOURIS * | + | |
- | PROCEDURE forme souris{n%) | + | |
- | TF n*=0 | + | |
- | DEFMOUSE Ü | + | |
- | ELSE | + | |
- | DEFMOUSE souris$(n& | + | |
- | ENDEF | + | |
- | RETURN | + | |
- | | Souris flêche | + | |
- | R s T d d dn d d d R R E | + | |
- | | * ATTENTE D'UN DEPLACEMENT DE LA SQURIS * | + | |
- | | RARRRR E REN RRRR RR E RR RN E EN E RR RE HE E | + | |
- | | RE AN E 1 E e E e S n e e E e S e e e S e E | + | |
- | ! * Cette routine attend que la souris change de. *. | + | |
- | | * position, ou qu'il se produise Un clic souris. * | + | |
- | | ÉAETRERAAARENE RE ÉÉ RR RE E RR RR R RRN É E x | + | |
- | PROCEDURE att move souris{VAR xmée, vmés, kmes) | + | |
- | LOCAL x0%; y0% | + | |
- | %= X | + | |
- | y0é=ymé | + | |
- | GO | + | |
- | MOUSE ms , Vm6k,ms | + | |
- | EXIT IF ((xmé< | + | |
- | LÔOP | + | |
- | RETURH | + | |
- | I | + | |
- | I | + | |
- | e e e e e e e e A e ok 3t gk o e e e e 3 3 e v ok e e e 1 o R R TR | + | |
- | * = AFFICHAGE DE LA DESCRIPTION D'UN LIEU * | + | |
- | | gl b bk e e e e o ok b Al e ik e E e e e e E | + | |
- | FROCEDURE aff texte(num 1ieux%) | + | |
- | eformat (descrif{num _1ieux%), | + | |
- | Brect(h, | + | |
- | Baff format(8, | + | |
- | RETURN | + | |
- | I | + | |
- | |- e d e oo v g v e d d e o o e o e i i e oo o O R R S e E E | + | |
- | ! *. AFFICHAGE DE L' | + | |
- | | TRL L ETEN re d E E d E | + | |
- | PROCEDURE aff image{num 1ieu%) | + | |
- | LOCAL paletted | + | |
- | LOCAL taille% | + | |
- | LOCAL nom image$ | + | |
- | ATAR| MAGAZINE | + | |
- | ! Nom image |ieu | + | |
- | | Mémoire pour palette | + | |
- | nom image$=images$ (num l ieu#) | + | |
- | paletted=SPACES(32) | + | |
- | OPEN " | + | |
- | BGET # | + | |
- | BGET # | + | |
- | image$=sPACES (tailles) | + | |
- | EGET ÿ1, | + | |
- | CLOSE #l | + | |
- | VOID XBIOS(6, | + | |
- | PUT 6,28,images Aff image | + | |
- | Baff texte(num lieu%) | Aff description lieu | + | |
- | ! Quverture fichier | + | |
- | ! Lecture palette image | + | |
- | lecture taille imäge | + | |
- | Mémoire pour image | + | |
- | | Chargement image | + | |
- | Fermeture fichier | + | |
- | — rr | + | |
- | RETURN | + | |
- | q | + | |
- | rr d dh e e RR A E R d e d E | + | |
- | + AFFICHAGE DE L' | + | |
- | dh e dc ce e é d e d e e e e e d e R A d d d d d A A | + | |
- | *Cette routine est utilisée au début du programmepour® | + | |
- | “afficher l' | + | |
- | # =reste du temps. | + | |
- | 5 R RR A A e e d e d e d e e e d e e e R e e é é d d d d d E | + | |
- | PROCEDURE aff ecran | + | |
- | @cils ecran(9) . ! Effacement écran | + | |
- | gtexte color(d) | + | |
- | Étexté gras | + | |
- | Écadre(6, | + | |
- | TEXT 14, | + | |
- | Acadre(79, | + | |
- | TEXT 87,16, " | + | |
- | Écadre{161, | + | |
- | TEXT 169,16, " | + | |
- | ücadre(249, | + | |
- | TEXT 25/, | + | |
- | @texte normal | + | |
- | COLOR D | + | |
- | BOX 5, | + | |
- | BOX 5, | + | |
- | Cadre INFOS | + | |
- | Cadre SAUVER | + | |
- | Cadre LECTURE | + | |
- | Cadre SURTIE | + | |
- | | Cadre du dessin | + | |
- | Cadre description | + | |
- | Raff image(lieu courant*) Aff image de debut | + | |
- | RETUEN | + | |
- | FEERR R TR ETE TENTERRRERTÉRRRR E É RVU EE | + | |
- | * TEST SI CLIC SUR UNE OPTION DU JEU. 7 | + | |
- | e d r d e e r e d e e d d e e e | + | |
- | P oF b oo ol o o R e SR d RR E A RR É RR ÉÉÉ É RRN A RESRE | + | |
- | *Cette fonction teste si le joueur à cliqué surl' | + | |
- | *des 4 options du jeu, En cas de recherche positive, | + | |
- | *elle renvoit le numéro de l' | + | |
- | *de négative, elle renvoit la valeur D, ; | + | |
- | *t***? | + | |
- | FUNCTION cherche option{px%, | + | |
- | LOCAL zone% | + | |
- | BEST OF GFA 8ASIC | + | |
- | zones=0 | + | |
- | ‘ Test pour option INFO | + | |
- | 1F Ëtat_; | + | |
- | zone%=l | + | |
- | ENDIF | + | |
- | ! Test pour option SAUVER | + | |
- | IF @tst zone(px#, | + | |
- | zone#=2 | + | |
- | ENDIF | + | |
- | ' Test pour option LECTURE | + | |
- | IF @tst zone(px%, | + | |
- | zone%=3 | + | |
- | ENDIF | + | |
- | * Test pour option SORTIE | + | |
- | IF Btst zone(px%, | + | |
- | zone%=4 | + | |
- | ENDIF | + | |
- | RETURN zone% | + | |
- | ENDFUNC | + | |
- | AN NI FEEEEEE kA RxwEERA RN TEE | + | |
- | * ATTENTE CLIC SUR UNE ZONE * | + | |
- | e —h dc e e e e e E E ETE s É PE e d d e E DE É RR | + | |
- | d d d e e DE A ce E d d e d e d e d d e d A e d e d e e R E e d e | + | |
- | *Cette procédure attend que 1' | + | |
- | *une zone de l' | + | |
- | *gére automatiquement les changements de forme de la” | + | |
- | *souris en fonction des zones de | ' | + | |
- | TN AP R r e Spr e e d e e ol R e e e e e A ko | + | |
- | — | + | |
- | ! #* Cette procédure modifie les variables globalés æ | + | |
- | ! * tvp click et zone clic*. L | + | |
- | c typ;clic% = 1 => clic dans une option utilisateur * | + | |
- | | = typ click = 2 => clic sur zone écran L | + | |
- | * * zone clic* = numéro de la zone cliqué ù | + | |
- | ! ttt**{; | + | |
- | PROCEDURE att zone clic | + | |
- | LOCAL Xm , YITÉS , ki | + | |
- | LOCAL num souris* | + | |
- | LOCAL num zone* | + | |
- | LOCAL zone souriss | + | |
- | LOCAL num _ options | + | |
- | 1 drar e d ce d d e d dn d se e e E r e e e d e e e e d ce e d | + | |
- | ! * DETERMINATION ETAT INITIAL SOURIS * | + | |
- | L d A R R R o e e É A A el i e | + | |
- | MOUSE semés , ymée , ke ILECTURE ETAT SOURIS | + | |
- | zone sourisk=Bcherche zone(xm%, | + | |
- | IF zone souris%=0 | + | |
- | num souris#=0 | + | |
- | ELSE | + | |
- | num sourisk=zoness{zone_ souris%, | + | |
- | ENDIF | + | |
- | @fürmg_suuris[numuauuriäëä | CHANGEMENT SOURTS | + | |
- | SHOWH 1 AFFICHAGE SOURTS | + | |
- | DU | + | |
- | @att move souris(am® , vmé, | + | |
- | num Euneä: | + | |
- | LF Înum_: | + | |
- | zone souris®=num _ zone*# ! MODIF. ZONE SIMIRIS | + | |
- | IF zone souris*-0 | | + | |
- | num sourise=Ù | + | |
- | ELSE | + | |
- | num_finurî5%=znn& | + | |
- | ENOIF | + | |
- | @forme souris(num souris*) ! CHANGEMENT SOURTS | + | |
- | ENGIF | + | |
- | typ clic==0 | + | |
- | IF (km%=1} AND (num_zone%==0]) | + | |
- | typ clics=2 | + | |
- | zone clic& | + | |
- | ENDIF | + | |
- | num_options=@cherche_option(xns, | + | |
- | LF (kméés=1} AND (num options=0) | + | |
- | typ clic& | + | |
- | zone clic*=num _ option# | + | |
- | ENDIF | + | |
- | EXIT IF typ click==0 | + | |
- | LOUP | + | |
- | RETURN | + | |
- | L E E E R P A MR RE TR e e e E r r « | + | |
- | * #* CHANGEMENT DE LIEU “ | + | |
- | L P A e E E E E E E o o E e A R E E | + | |
- | PROCEDURE dEp]flcement{num_]1Eu%} | + | |
- | HIDEM | Effacement souris | + | |
- | lieu courant& | + | |
- | Gaff image(lieu courants) ! Aff nouveau lieu | + | |
- | SHOW# ! AfT souris | + | |
- | RETURN | + | |
- | | AARÉÉEEEE E ER E AR EN ETE | + | |
- | | * PARLER À UN PERSONNAGE * | + | |
- | I REFN AATARRREEEÉRRAÈRRER | + | |
- | PROCEDURE parler personnage(perso®} | + | |
- | fattüclic | Attente arrët clic | + | |
- | HIDEM | Effacer souris | + | |
- | Ememorisation ecran | + | |
- | fcadre{11, | + | |
- | Btexie gras | + | |
- | TEXT 128,64, " | + | |
- | @texte normal | + | |
- | @furmaï{di& | + | |
- | gaff format(16, | + | |
- | Bcadre(l44, | + | |
- | @texte gras | + | |
- | TEXT 152, | + | |
- | Btexte normal | + | |
- | SHOWHM | + | |
- | ! Aff cadre conversation | + | |
- | | Aff titre option | + | |
- | 1 Cadre pour OE | + | |
- | | Aff de 0K | + | |
- | AÂTARI MAGAZINE fl BESTOF GFA BASIC | + | |
- | —— p | + | |
- | ' | | + | |
- | ; | + | |
- | | | + | |
- | | | + | |
- | @wait zone{144, | + | |
- | HIDEM I Effacer souris | + | |
- | @restauration ecran ; | + | |
- | SHOWM | Afficher souris | + | |
- | RETURN | + | |
- | 4 | + | |
- | DN REEREÉRÉEEARIARATETAANANTE | + | |
- | * AFFICHAGE D'UN MESSAGE * | + | |
- | E A E e e S D DE D CR SE CR T T e e A T E E | + | |
- | PROCEDURE affichage messagé(num) | + | |
- | Battlclic i I Attente arrét clic | + | |
- | HIDEM ! Plus de souris | + | |
- | @memorisation ecran | | + | |
- | @cadre(11, | + | |
- | @texte gras | + | |
- | TEXT 136, | + | |
- | @texte normal ä | + | |
- | @format (mess(anumgs)e ,3s6}$ ! Texte 36 car/ligne | + | |
- | @aff format(16, | + | |
- | @cadre(144, | + | |
- | @LexLe gras | + | |
- | TEXF152, | + | |
- | Étexte norma] | + | |
- | SHOWM | + | |
- | fwait zone(144, | + | |
- | | Cadre boite | + | |
- | ! Affichage Titre option | + | |
- | | Cadre boite ' | + | |
- | | Affichage souris | + | |
- | | Attente clic sur ' | + | |
- | HIDEM ! Kemise de 1'& | + | |
- | Grestauration ecraf ! dans son état | + | |
- | SHOWM ! inffial, | + | |
- | RETURN | + | |
- | Ve e o ok RE e e e o o o W R A | + | |
- | : # EXECUTION DES ACTIONS * | + | |
- | | itk TÉEETTTETER E | + | |
- | PROCEDURE Eïec; | + | |
- | SELECT n | + | |
- | CASE 1 | + | |
- | Bdeplacement (parametre*) | + | |
- | CASE 3 | + | |
- | EparlEfi_persunnage{parametre%} | + | |
- | CASE / | + | |
- | Gaffichage message{parametre*) | + | |
- | ENDSELECT | + | |
- | RETURN | + | |
- | i | + | |
- | I dededrdede = & g ok o ook e i e ol RR e e e | + | |
- | ‘% OPTION INFORMATION * | + | |
- | ool e o ol ok il ol ol o e e d e ok | + | |
- | PROCEDURE option info | + | |
- | Pattlciic | + | |
- | HIDEM | + | |
- | @memorisation ecran | + | |
- | @cadre(43, | + | |
- | @texte gras | + | |
- | TEXT 66,69, “JEU D' | + | |
- | @texte normal _ | + | |
- | TEXT 52,89 " | + | |
- | @texte italique | + | |
- | TEXT 52, | + | |
- | TEXT 52, | + | |
- | @cadre(144, | + | |
- | Etexte gras | + | |
- | TEXT 152, | + | |
- | Btexte normal | + | |
- | SHOWM | + | |
- | Gwait zome(144, | + | |
- | HIDEM | + | |
- | Orestauration ecran | + | |
- | SHOWM | | + | |
- | SETURN | + | |
- | DRTEEEFTE ÉÉÉ E | + | |
- | - % OPTION SAUVER JEU * | + | |
- | | b o o o o o e W E R R Y R T | + | |
- | LR A vty rdetaddrddaaidssh Rd RdR iAd d& oed | + | |
- | *Cette routine sauve le numéro du Tieu courant.Dams® | + | |
- | *le cadre d'un programme plus gros, on peut sauver * | + | |
- | *l' | + | |
- | *possédés, | + | |
- | L VVN TR SR e R T e P LR R S S 2 L L e e e S T4 L e e ks e E | + | |
- | PROCEDURE option sauver | + | |
- | LOCAL sauvet | + | |
- | I | + | |
- | Battüelic | + | |
- | FILESELECT "# | + | |
- | IF sauvet< | + | |
- | OPEN " | + | |
- | PRINT #1,lieu courant® / | + | |
- | CLOSE #1 | + | |
- | ENDIF | + | |
- | RETURN | + | |
- | L E e E TEI PN D R C D E E R T E PR R E ETE | + | |
- | ‘ # UPTION LECTURE JEU # | + | |
- | I x***hxETE | + | |
- | PROCEDURE option lecture | + | |
- | LOCAL lect$,lieu sauv& | + | |
- | Battlhclic | + | |
- | FILESELECT "*.5. "" | + | |
- | IF lecti< | + | |
- | OPEN " | + | |
- | INPUT #1,lieu sauvk | + | |
- | CLOSE #1 | + | |
- | Pdeplacement(slaiuev*u) | + | |
- | ENDIF | + | |
- | ATARI MAGAZIME m REST OF GFA BASIC | + | |
- | —— r S R | + | |
- | RETURN | + | |
- | de e e e e e R R Rk ok e e | + | |
- | * QPTION SORTIE JEU * | + | |
- | R T I I E 3 A e o E | + | |
- | ***w***tg**wwfifi*xt: | + | |
- | *La condition de sortie est la variable sorties. ” | + | |
- | *Cette routine affiche deux cadres (' | + | |
- | *et attend que le joueur clique sur l'un d' | + | |
- | faux. 51 le clic a eu Tieu sur ‘OUI', | + | |
- | *sorties prend la valeur 1 (condition de sortie du * | + | |
- | *programme) . ¥ | + | |
- | ****tttttt***kiiifi*? | + | |
- | PROCEDURE oplion sortie | + | |
- | LOCAL xmé, ym% | + | |
- | LOCAL clic options | + | |
- | — | + | |
- | dattüclic | + | |
- | HIDEM | + | |
- | @memorisation ecran | + | |
- | écadre(39, | + | |
- | TEXT 48, | + | |
- | TEXT 48, | + | |
- | Bcadre(94, | + | |
- | écadre(188, | + | |
- | @texte gras | + | |
- | TEXT 192,112, " | + | |
- | TEXT 196,112, " | + | |
- | Ptexte normal | + | |
- | SHOWM | + | |
- | clic options=0 | + | |
- | 00 | + | |
- | Gatt_clic(xn, | + | |
- | IF &tst zone(xm#, | + | |
- | clic optionssl | + | |
- | sortiessl | + | |
- | ENDIF | + | |
- | IF @tst zone{xm%, | + | |
- | clic options=l | + | |
- | ENDIF | + | |
- | EXIT 1F cl_ optiionsc=-] | + | |
- | LOUP | + | |
- | HICEM | + | |
- | Brestauration ecran | + | |
- | SHOWM | + | |
- | RETLRN | + | |
- | L T ————————————————— e S | + | |
- | I *t***# | + | |
- | ' * EXECUTION DES OPTIONS JOUEUR * | + | |
- | (Y PO PR RS Cpeae T o S T R R IR L T e e R É É R | + | |
- | k? | + | |
- | ! * Catte routine lance T' | + | |
- | ! % as< | + | |
- | ***F## | + | |
- | PROCEDURE Exec_nptîun{num_pptiün%} | + | |
- | SELECT num options | + | |
- | CASE 1 | + | |
- | Éoption infa | + | |
- | CASE 2 | + | |
- | Goption sauver | + | |
- | CASE 3 | + | |
- | Boption lecture | + | |
- | CASE 4 | + | |
- | Voption sortie | + | |
- | ENDSELECT | + | |
- | RETURN | + | |
- | | | + | |
- | | o r et e S R | + | |
- | à CGESTION DU JEU-; * | + | |
- | V kA YANNETEEE L% | + | |
- | il flkHflw# | + | |
- | | * Cette routine est la boucle d' | + | |
- | ! + Elle contrôle 1a condition de sortié. w | + | |
- | | SRR Ty B S e RR RR R NNN RR RR N NNN e e e RE | + | |
- | PROCEDURE gestion jeu | + | |
- | LOCAL actions | + | |
- | LOCAL parametres | + | |
- | i | + | |
- | sortie*=i | + | |
- | D0 | + | |
- | Gatt zone clic ! Attente clic joueur | + | |
- | R W T E BN B E S E A PE 4R R e e E E | + | |
- | L* Test s1 clic option joueur * | + | |
- | | VR RAR RE RR RAAERR R É NN _ | + | |
- | IF typ clrc#=l | + | |
- | Gexec option(zone click) | + | |
- | ENDIF | + | |
- | | | + | |
- | | VARSRRRNE EdA m EÉNE E | + | |
- | L = Test si clic dans zoné écran 7 | + | |
- | È :: | + | |
- | 1F typ cliça=z | + | |
- | actionsezones%(zone clicw,6) | + | |
- | parametres=zones%(zone clic&, | + | |
- | Bexec action(action®, | + | |
- | ENDIF | + | |
- | EXIT 1F sortie& | + | |
- | LOGR | + | |
- | RETURN | + | |
- | | Condition de sortie du prg | + | |
- | _ | + | |
- | L TR PO SO k e R d d d d R A d b RN A RR RS RE E E | + | |
- | ' STOCKAGE DES DONNEES DU PROGRAMME = | + | |
- | tht!n: | + | |
- | | A ARAAR AR TR T dd | + | |
- | : * FORMES DE SQURIS * | + | |
- | e o e e e e e e o o o RE E E | + | |
- | FORMAT DE DEFINITION : | + | |
- | ATAR| MAGAZIME OE BEST OF GFA BASIC | + | |
- | DATA Position x du point de ciic par rapport | + | |
- | au coté haut gauche de la souris | + | |
- | * DATA Position y du point de clic par rapport | + | |
- | | au coté haut gauche de la,souris | + | |
- | DATA mode d' | + | |
- | DATA Couleur du masque | + | |
- | DATA Couleur de la souris | + | |
- | DATA 16 entiers 16 hits pour le codage du masgue | + | |
- | DATA 16 entiers 16 bits pour le codage de là forme | + | |
- | — | + | |
- | souris: | + | |
- | | é e e e d e e e e e e é E R RE | + | |
- | | * FORME 1 : ALLER DÉVANT * | + | |
- | | RPN N IRRRRNF £ É | + | |
- | DATA 6, | + | |
- | DATA & | + | |
- | DATA @0FFO,& | + | |
- | DATA 60000, | + | |
- | DATA ËÜ? | + | |
- | | VWRLREER É RE NAAA RE R A bk kR R ARk E AR | + | |
- | ' * FORME 2 - ENTRER PAR UNE PORTE. * | + | |
- | | RR L PE E e E h E I E E w A A A é d E d E R R | + | |
- | DATA 8, | + | |
- | DATA R0000,601FF 6G1FF, | + | |
- | DATA SFFFE.SFDFFR3OFF, | + | |
- | DATA 6000080000 L00FE A00FE, ROOFE, &10FE, B38FE , &7CRE | + | |
- | DATA &7CFE RI8FE, | + | |
- | I Wk ehkkkhREREIAARey | + | |
- | ' * FORME 3 : PARLER * | + | |
- | i g g gk e AR AR N A | + | |
- | DATA 8,8,1,0,1 | + | |
- | DATA SFEOO, | + | |
- | DATA & | + | |
- | DATA & | + | |
- | DATA & | + | |
- | i w*# | + | |
- | ' * FORME 4 : MANGER * | + | |
- | | XT RARREREREEEARHRTE | + | |
- | DATA 8,5,1,0,1 | + | |
- | DATA RFEOO,8FE00 8FE00.8FE00, | + | |
- | DATA BFEOO, | + | |
- | DATA R0000, | + | |
- | DATA 27000, | + | |
- | | **# | + | |
- | | = FORME & : BOIRE * | + | |
- | 1 E en rr e d de 0R e R r dc d e d | + | |
- | DATA 8,8,1,0,1 H | + | |
- | DATA & | + | |
- | DATA & | + | |
- | DATA EDUHD,& | + | |
- | DATA 27C00, | + | |
- | | e e o o AR A A e W AR | + | |
- | “* —FORME & : FRAFPER ? | + | |
- | I RRÉRRÉÉ RRN E IERE | + | |
- | DATA 8,5,1,0, 1 | + | |
- | DATA äüüüü, | + | |
- | DATA S7FFC, | + | |
- | DATA 60000, | + | |
- | DATA 23FF0, | + | |
- | | ME AAMARRET TR RRER ÉÉ S RR A RR | + | |
- | ! * FORME 7 : OEIL (PDUR EXAMEN) * | + | |
- | | t: | + | |
- | DATA B,8,1,0,1 | | + | |
- | DATA & | + | |
- | DATA RFFFE,& | + | |
- | DATA Efl, | + | |
- | DATA BAFE4 & | + | |
- | PR e o W Ty CR E e e e e R e E E E | + | |
- | ! — FORME 8 : DEMI-TOUR * | + | |
- | Î fifltti*****kitittt***# | + | |
- | DATA 8,6;1,0;1 4 | + | |
- | DATA 2000080000 & | + | |
- | DATA R3F3F, | + | |
- | DÂTA & | + | |
- | DATA R1E1E R1E1E, | + | |
- | DATA —l | + | |
- | _——-—' | + | |
- | qh dh kR e d d d e R RE É A IERE É NN | + | |
- | | € TEXTES DES DIVERS MESSAGES 7 | + | |
- | i æ + | + | |
- | | AR RRER A RR A RR E LRk | + | |
- | méssades: | + | |
- | i | + | |
- | | mewaahhrdrdxEER Ak A NN RE | + | |
- | * * MESSAGE 1 : LES POTENCES * | + | |
- | 1 tt**## | + | |
- | DATA Les potences sont un triste souvenir de l' | + | |
- | de | + | |
- | DATA-HELGIR LE BON. Elles rappellent aux étrangers que | + | |
- | la , | + | |
- | DATA justice de la cité est rapide et efficace. | + | |
- | DATA = | + | |
- | i www*ww**ttxt*fiwwwtttr*t*## | + | |
- | ' % MESSAGE 2 : LES TONNEAUX DE VINS 7* | + | |
- | | w*t# | + | |
- | OATA Un marchand de verroterié tente de convaiîncre une | + | |
- | DATA jeune femme qu' | + | |
- | DATA collier de peries de verre. Elle ne semble pas | + | |
- | DATA trés convaincue. | + | |
- | DATA * | + | |
- | [ T OE E PE A S d E A A U E R E É R A E E | + | |
- | ! % MESSAGE 3 : ARMURIER * | + | |
- | | AAEÉÉÉÉ AN ol o ok e REN RRF | + | |
- | OATA Un armurier propose diverses armes. Son stock est | + | |
- | ATARI MAGAZIME BEST OF GFA BASIC | + | |
- | DATA MARCHEL.BIN _ | + | |
- | BATA Voici le célèbre marché des 5 peupliers. Cet endroit | + | |
- | DATA est trés ancien. La cdité à été construite à coté des | + | |
- | DÂTA en place publique. Il est assez content de la vie | + | |
- | DATA qu'il a mené jusqu' | + | |
- | DATA l' | + | |
- | DATA impressionnant. Il propose un lot de couteaux de | + | |
- | DATA lancer pour un prix trés raisonnablé. | + | |
- | DATA bourreau ot ses aides ont le droit d' | + | |
- | DATA les prisonniers). | + | |
- | DATA * DATA * | + | |
- | D S Ty s ol e B L R T o B o T et e ko T T e e e | + | |
- | ! # MESSAGE 4 : VENDEUR DE BEIGNETS * | + | |
- | | AR EEEA EN N RR stttk E R | + | |
- | DATA Un vendeur de beignets propose sa marchandise, | + | |
- | DATA appétissant, | + | |
- | DATA * | + | |
- | r | + | |
- | [ + *; | + | |
- | ! * MESSAGE 5 : VENDEUR D' | + | |
- | 1 VWTURTEETTATHARERÉEETE TR ETE RR LANE | + | |
- | DATA Un jeuné marchand à l'air aggressif vend de vieux | + | |
- | DATA habits au prix du neuf. | + | |
- | DATA = | + | |
- | L T T T o B 1 1 S e e R R RE e e RE E | + | |
- | * * MESSAGE 6 : VENQEUR DE CHEVAUX * | + | |
- | 1 e e B S E e e AR e r u e E E R E | + | |
- | DATA C'est l' | + | |
- | DATA pouvez y trouver aussi bien un cheval de trait, | + | |
- | DATA qu'un destrier. IL y à même des ânes (cela peut | + | |
- | DATA toujours être utile). | + | |
- | DATA * | + | |
- | I RV e i o ok e e e i g g o ok e ol o TT e e | + | |
- | 'k MESSAGE 7 : EXAMEN MILICIEN * | + | |
- | | RH SRE E R A E E | + | |
- | DATA Le chef des miliciens est un sergent d'une DATA | + | |
- | quarantaine d' | + | |
- | DATA et semble compétent. Son aspect guerrier est | + | |
- | DATA contrebalancé par la poupée de chiffons qu' | + | |
- | DATA fabrique pour sa fille. : | + | |
- | DATA * | + | |
- | I r RE R E d éc d ce ckc rrérércird e dE de f EEN EEEE | + | |
- | ! * MESSAGE & : JOUER AUX DES * | + | |
- | I d e E E R E E TS A RE d E e R ATk e | + | |
- | DATA L'un des joueurs de dés gagne gros. Les autrés le | + | |
- | DATA regardent avec une lueur de suspicion dans le | + | |
- | DATA regard. | + | |
- | DATA * | + | |
- | i | + | |
- | L I B B B T BT T T g i e e e e TRIN ETE | + | |
- | ' % MESSAGE 9 : FIN DE L' | + | |
- | | RESR RL R A s Ebt b | + | |
- | DATA La ville s' | + | |
- | DATA direction. Vous ne pouvez pas aller plus loin (pour | + | |
- | DATA l' | + | |
- | DATA # | + | |
- | | NAXÉÉÉEÈAENHRRR E ARAREEEAA A R | + | |
- | ! * MESSAGE 10 : SALLE DE TORTURE * | + | |
- | l ÉF TV A YRR EN TERRREST s oA E RL | + | |
- | DATA Vous ne pouvez ouvrir cette porte. Le Milicien vous | + | |
- | DATA dit qu' | + | |
- | ETE O N L TR RE S E E O E e S | + | |
- | L #% INDICATEUR DE FIN DE MESSAGES * | + | |
- | E cf d é e d e E E E E E E A T A C C e d E R E | + | |
- | DATA *FIN | + | |
- | i | + | |
- | i | + | |
- | LFNNAE | + | |
- | * # LES TEXTES DES DIALOGUES ” | + | |
- | l ETE REREEEEAENNNNEREREEATEFX | + | |
- | dialoques: | + | |
- | s e E RR R R e e e R RR RR E | + | |
- | ! * DIALOGUE 1 : HOMME EN ARME = | + | |
- | E E E E E e d rrr d de T E N | + | |
- | DATA Vous parlez avec l' | + | |
- | DATA d'un ordre querrier. Tl vous raconte les exploits | + | |
- | DATA qu'il à vécu avec ses amis aventuriers. [I est tres | + | |
- | DATA fier de son bras en métal qui doit étre une arme | + | |
- | DATA redoutable. | + | |
- | DATA * | + | |
- | I | + | |
- | T & btkR RNi e e | + | |
- | * * DIALOGUE 2 : MENDIANT # | + | |
- | I NNENTE FE b | + | |
- | DATA Vous parlez pendant Un moment avec le vieux | + | |
- | DATA mendiant qui se trouve là. Il est heureux car | + | |
- | DATA i1 a assez de pièces pour se payer du pain blanc. | + | |
- | DATA C'est un jour faste. Les dieux ont êt& bon avec | + | |
- | DATA lui. | + | |
- | DATA * | + | |
- | 1 d d e e e R A e e e é é d e d d e | + | |
- | * DIALOGUE 3 : GARDE PRISON * | + | |
- | | ke kel i i i v TD e e o e ke e É ol S e e E | + | |
- | DATA Le garde vous raconte qu'il monte la garde touie | + | |
- | DATA la journée. 11 est remplacé par deux colléques | + | |
- | DATA pendant la nuit. Il aime ce poste, car c' | + | |
- | DATA assez calme. 11 plaint ses camarades qui doivent | + | |
- | DATA affronter les émeutes de la rue, | + | |
- | DATA # | + | |
- | —— | + | |
- | | LHAARRS RRN AN R N IERE | + | |
- | | # DIALOGUE & : PRISONNIER 1 * | + | |
- | | RRN VV ETE E R RE | + | |
- | DATA Le prisonnier vous explique qu‘il à été condamne | + | |
- | DATA à 3 jours de prison pour avoir volé et tuë la | + | |
- | DATA belle—mére du chef des Miliciens. | + | |
- | DATA * | + | |
- | | T T o R T i o e e e e R | + | |
- | ! # DIALOGUE 5 : PRISONNIER 2 7 | + | |
- | | éx th h ek RRN ke sk e e | + | |
- | DATA Ce prisonnier attend d' | + | |
- | DATA de tombe, mais i1 sait déja qu'il sera Écartelé | + | |
- | ATARI MAGAZINE m BEST OF GRA BASIC | + | |
- | DATA * | + | |
- | Y T TR T R T REN R d RR | + | |
- | ' * FIN DES DIALOGUES * | + | |
- | | XEÉVAVVLARASEEÉAARRWRRE | + | |
- | DATA *FIN DIALOGUES | + | |
- | | | + | |
- | [T T E E T F PR T E E RO E dN E E S | + | |
- | 1* 4 Ÿ | + | |
- | ! * DEFINITION DES LTEUX * | + | |
- | VR #* | + | |
- | 1 RRh | + | |
- | leéux: | + | |
- | ' DATA Mom image | + | |
- | ' DATA texte descriptif du lieu | + | |
- | DATA px, | + | |
- | ' DATA -1 # | + | |
- | DATA *FIN | + | |
- | __—I' | + | |
- | - | + | |
- | | d d e d d d e R R RN A ARk bRk | + | |
- | "* LLEU-1': | + | |
- | | kA RA AR AR AR AANA R R R AN bk RIR | + | |
- | DATA VILLE.BIN : | + | |
- | DATA Vous voici devant Ja porte de la Cité de Randhal ou | + | |
- | DATA se trouve l' | + | |
- | DATA un endroit ol se cotoient toutés les races et toutes | + | |
- | DATA Tes cultures. | + | |
- | DATA * | + | |
- | DATA 15, | + | |
- | DATA 86, | + | |
- | DATA 156, | + | |
- | DATA 226, | + | |
- | DATA 244, | + | |
- | DATA —I | + | |
- | I f— | + | |
- | ENTRER DANS TAVERME | + | |
- | MESSAGE DE FIN DU MONDE | + | |
- | ALLER VERS MARCHE | + | |
- | EXAMEN DES POTENCES | + | |
- | ALLER VERS POSTE DE GARDE | + | |
- | i tt*******i!********## | + | |
- | * LIEU 2 - TAVERNE DE LA LICORNE BLEU * | + | |
- | ! # | + | |
- | DATA TAVERNE.GIN | + | |
- | DATA Vous êtes dans la Taverne de La Licorné Bleu. | + | |
- | DATA C'est un endroit célebre sur les 12 mers et les | + | |
- | DATA & océans. Quelques marchands jouent au dés dans | + | |
- | DATA un coin de la salle. Un homme en armes est assis | + | |
- | DÂTA à une petite table. | + | |
- | DATA * | + | |
- | DATA 38, | + | |
- | DATA 90, | + | |
- | DATA 202., | + | |
- | | SORTIR DE-LA TAVERNE | + | |
- | | MESSAGE JOUER AUX DES_ | + | |
- | | PARLER (HOMME EN ARMES) | + | |
- | DATA 90, | + | |
- | DATA 202, | + | |
- | DATA =1 | + | |
- | EERÉÉRRAAEAARER N A E | + | |
- | * LIEU-3 : MARCHE T * | + | |
- | hh R ce o T e ok e r d d e e e ol | + | |
- | ATAR| MAGAZIME | + | |
- | DATA entrepôts des premiers marchands. On peut y ;rQUVEr | + | |
- | DATA à peu prés n' | + | |
- | DATA heaucoup de piêces d' | + | |
- | DATA = | + | |
- | DATA 20, | + | |
- | DATA 22, | + | |
- | DATA 100, | + | |
- | DATA 156.33, | + | |
- | DATA 256.33, | + | |
- | DATA -1 | + | |
- | P — | + | |
- | i **t****## | + | |
- | ( «" [1EU 4 - MARCHE 2 * | + | |
- | oAk ke R R R E RR RIUE | + | |
- | DATA MARCHEZ .BIN | | + | |
- | DATA Vous vous trouvez devant d' | + | |
- | MATA * | + | |
- | DATA 20.91, | + | |
- | DATA 53, | + | |
- | DATA 140, | + | |
- | DATA 797, | + | |
- | DATA —1 | + | |
- | HRFN E E d d E E | + | |
- | * LIEU 5 : POSTE DE GARDE * | + | |
- | AR AR EEEERAVAE LA AW AT A ELR | + | |
- | DATA GARDE.BIK , | + | |
- | DATA Vous entrez d'un pas décidé dans le poste d garde | + | |
- | DATA de 1a Cité. Quelques miliciens s' | + | |
- | DATA discutant de leurs exploits militaires. La porte | + | |
- | DATA de la prison est ouverté. | + | |
- | GATA # | + | |
- | DATA 53, | + | |
- | DATA 140, | + | |
- | DATA 727, | + | |
- | DATA =1 | + | |
- | - | + | |
- | | kEkEEANRAAEEEERR AR AT AR | + | |
- | < * LIEU 5 - LA PRISON * | + | |
- | L A d d dc d RE | + | |
- | DATA PRISON.BIN | + | |
- | DATA Vous êtes dans la prison. C'est un endroit lugubre. | + | |
- | DATA Un Milicien surveille deux prisonniérs. | + | |
- | DATA * | + | |
- | DATA 34, | + | |
- | DATA 39, | + | |
- | DATA 104, | + | |
- | DATA 174, | + | |
- | DATA 244, | + | |
- | DATA —I | + | |
- | —— E E | + | |
- | ! ALLER POSTE DE -GARDE | + | |
- | ! PARLER MILICIEN | + | |
- | | PARLER PRISONNIER 1 | + | |
- | ! PARLER PRISONNIER Z | + | |
- | ! SALLE DE TORTURE | + | |
- | PR TR LU M e A e RR A I e+ B É AN e e | + | |
- | * INDICATEUR DE FIN DE DOMMEES * | + | |
- | ***kw#: | + | |
- | DATA “FIN | + | |
- | BEST OF GFA BASIC | + | |
- | GRAPHISME EN GFA BASIC | + | |
- | f:' | + | |
- | D E | B .r. | + | |
- | __ —— e UE | + | |
- | Quelques généralités | + | |
- | Les souris mesurent 16 pixels de haut sur 16 pixels de large. Elles ne | + | |
- | peuvent être définies qu'en deux couleurs. Le même dessin peut être | + | |
- | | utilisé dans les 3 résolutions praphiques de PAtari (basse résolution | + | |
- | 320x200 en 16 couleurs, movenne résolution 640x2C0 en 4 cou- | + | |
- | | leurs, haute résolution 640x400 en deux couleurs &t uniquement sur | + | |
- | Il moniteur monochrome). 11 est regrertable que les concepteurs du ST | + | |
- | n' | + | |
- | qui aurait permis la créacion de souris 16 couleurs en basse résolu- | + | |
- | | tion. Certains jeux utilisent de telles souris, mais pour arriver à leurs | + | |
- | fins les programmeurs écrivent entiérement leurs propres routines. | + | |
- | @ / d'E =< f TR | + | |
- | 8 @ s Ok £ 98 # L | + | |
- | | | ce Nce c @ K | + | |
- | | |6v2? HUVN0® 6 L B | + | |
- | Dessin des souris | + | |
- | | Les différentes souris proposées dans cet article ont été déssinées avec | + | |
- | | le logiciel de dessin, Degas Flite. Les dessins ont ensuite été trans- | + | |
- | . formés en données numériques grice à un petit programme de con- | + | |
- | ‘ i version écrit en Basic GE4. On trouve souvent des éditeurs de souris | + | |
- | | dans les journaux ou dans les livres, mais il faut savoir que les gra- | + | |
- | ' |'_ phistes professionnels n' | + | |
- | ‘ ! sing des logiciels commerciaux (animations, | + | |
- | lices de caractères, | + | |
- | ‘:: ciels graphiques classiques, puis récupérés à l'aide de petits pro- | + | |
- | N erammes astucieux, | + | |
- | | | + | |
- | | | + | |
- | L | + | |
- | IBLIOTHEQUE | + | |
- | {MES DE SOURIS | + | |
- | Donnez du cachet à vos programmes | + | |
- | 'l Cette bibliothèque offre 40 nouvelles formes de souris à utiliser à | + | |
- | | partir du GFA Basic. Vous pouvez employer ces souris dans vos | + | |
- | propres programmes pour leur donner un air plus sympathique. | + | |
- | Structure d'une souris | + | |
- | Une souris se compose d'une lorme, d'un masque-de cransparence et | + | |
- | de deux valeurs de décalage pour les clics «x et y+, La lorme est le | + | |
- | dessin de la souris. T peut ¥ avoir 2°256 formes différentes, | + | |
- | 1,16x 10"77 souris différentes! | + | |
- | Le masque est un autre dessin indiquant au système les points de la | + | |
- | souris qui doivent être affichés à l' | + | |
- | doivent pas l' | + | |
- | Il ne faut pas confondre la souris système avec le dessin qui se déplace | + | |
- | sur l‘écran. Ce dessin visualise la position de la souris, mais ce | + | |
- | n'est pas un point, alors que la souris, clle, ne sé trouve qu’à un seul | + | |
- | endrout de l' | + | |
- | Lorsque l’utilisateur presse sur un bouron de sa souris, le syswme | + | |
- | détecte le clic et fournit une position (x,y) de Pécran. Cette position | + | |
- | est considérée par défautr comme la position du point haut gauche | + | |
- | du dessin de la souris. | + | |
- | Les valeurs de décalage x et y permettent de déplacer le ventable | + | |
- | «point de clics par rapport à ce point de clic théorique En fixant la | + | |
- | valeur de décalage en x À 2, le point de clic fourni par le système sera | + | |
- | décalé de deux pixels vers la droite. | + | |
- | En prenant de bonnes valeurs de décalaue, on peur s amuser à définir | + | |
- | une nouvelle souris dont le clic ne se ferait P]LLE sur la ]: | + | |
- | flèche mais sur l' | + | |
- | genre d' | + | |
- | Programmation en GFA Basic | + | |
- | l' | + | |
- | de redéfinir la forme de la souris, Les données sont mémorisées dans | + | |
- | des lignes de DATA sous forme de chiffres hexadécimaux. Cela permer | + | |
- | d' | + | |
- | tient plus facilement que 65456 en décimal ou 1111111110110000 | + | |
- | en binaïre): Les données mémoriséés dans les lignes de DATA sont | + | |
- | stochées dans un tableau alphanumérique. | + | |
- | La fin des informations est indiquée par la valeur <1 de la dermière , | + | |
- | ligne de DATA Ce système autorise l’ajout de nouvelles souris sans | + | |
- | probléme, | + | |
- | |:' ATARI MAGAZINE m BEST OF-GFA BASIC | + | |
- | -_ | + | |
- | I AR R PR E E E E E E ETE E E ETE E A e E E E E R RR RS | + | |
- | I & | + | |
- | ! # BIBLIOTHEQUE DE FORMES DE -SOURIS * | + | |
- | E % + | + | |
- | [ | + | |
- | L 0 TR e o e e e d d d E R AIF | + | |
- | | | + | |
- | ' {c) 1989 ATARI MAGAZINE & Patrick Leclercq | + | |
- | * Machine : ATARI 31 | + | |
- | * Langage : BASIC GFA 3.03 | + | |
- | ' Machine de developpement et de test : ATARI 1040 STF | + | |
- | HESERVE 50000 | RESERVATION MEMOIRE POUR BASIC | + | |
- | DIM forme mouse%(50)1 TABLEAU DE FORMES DE SOURIS | + | |
- | nb mouses=0 | ME SOURIS DE TABLEAU forme moused | + | |
- | - | + | |
- | L | + | |
- | @lec mouse ! LECTURE DES DEFINITION DE SOURTS | + | |
- | fdemo_mouse ! DEMONSTRATION | + | |
- | END | + | |
- | | LS RRRRRAANA e o e e A R SRE A E RE S RN A e e RE | + | |
- | ! = LECTURE DES FORMES DE SOURIS STOCKES EN DATA * | + | |
- | [T 1Y S e A RR RN R A A o R R ke R b E | + | |
- | PROCEDURE lec_mouse | + | |
- | LOCAL v%.mb | + | |
- | Do | + | |
- | READ v= | + | |
- | EXIT IF wis=]1 | + | |
- | INC nb_mouse* ! UME NOUVELLE SOURIS | + | |
- | mé=MKT$ (v5) | DEBUT DES DONNEES SOURIS | + | |
- | I | + | |
- | | | + | |
- | ! LECTURE DATA | + | |
- | ! TEST 51 FIN DE DONNEES | + | |
- | FOR i%=1 TO 36 ! DEBUT BOUCLE LECTURE DONNEES | + | |
- | RFAD w5 1 LECTURE DATA SOURIS | + | |
- | mé=m{+MK1${vé) 1 STOCKAGE DES DORNEES SOURTS | + | |
- | NEXT 1% ! FIN. BOUCLE LECTURE DONNÉES | + | |
- | forme mouse${nb mouse%)=m§ ! STOCKAGE SOURIS | + | |
- | LOOP | + | |
- | RETURN | + | |
- | Y Y P S S T OE TT R S e e e e E I E e A d d d d E R | + | |
- | ! # DEMONSTRATION DES FORMES DE SOURIS = | + | |
- | | RE EAA TVRE REN A NNAAAREÉE RRN RE AAR R | + | |
- | PROCEDURE demo mousé | + | |
- | LOCAL 1% | + | |
- | FOR i%=1 TO nb mouses | DEBUT BOUCLE DEMO | + | |
- | DEFMOUSE forme mouse$(i=}! AFFICHAGE SOURIS NUMERO | + | |
- | ! VARIABLE LOCAL | + | |
- | i% | + | |
- | 1 ATTENTE D'UN CLIC SOURIS | + | |
- | ! FIN GOUCLE DEMD | + | |
- | Battclic | + | |
- | NEXT 1% | + | |
- | RETUREN | + | |
- | —_—_ | + | |
- | DRh ke Atttk E E | + | |
- | * ATTENTE D'UN CLIC SOURIS * | + | |
- | i e a1 N R e e wEEEK | + | |
- | PROCEDURE attclic | + | |
- | REPEAT ! ATTENTE D'UN CLIC SOURIS | + | |
- | UNTIL MOUSEK | + | |
- | REPEAT I ATTENTE FIN DU CLIC | + | |
- | SOURLS | + | |
- | UNTIL MDUSER=0 | + | |
- | RETURN | + | |
- | p | + | |
- | | e AP R R R e d É É RE | + | |
- | * BIBLIOTHEQUE DE FORMES * | + | |
- | RRN RE RR RR RE RE S | + | |
- | FORMAT DE DEFINITION : | + | |
- | DATA Position x du point de clic par rapport | + | |
- | ; au cote haut gauche de la souris | + | |
- | DATA Position y du point de clic par rapport | + | |
- | au coté haut gauche de la souris | + | |
- | DATA mode d' | + | |
- | —] =MODE XOR)- ; | + | |
- | DATA Couleur du masque | + | |
- | DATA Couleur de la souris | + | |
- | DATA 16 entiers 16 bits pour le codage du masque | + | |
- | DATA 16 entiers 16 bits pour le codage de la forme | + | |
- | — | + | |
- | REMARQUE : Les souris sont toujours définis en | + | |
- | ? couleurs, mais cela peut être n' | + | |
- | couleurs de la palette utilisé par le système | + | |
- | ' (rouge et vert par exemple). Il n'y à qu'en haute | + | |
- | résolution (640<400 sur écran monochrome) qu' | + | |
- | souris est toujours noir et blanc. | + | |
- | mantre: | + | |
- | DATA 7,7,1,0,1 | + | |
- | DATA fiïFH, | + | |
- | DATA äFFFE, | + | |
- | DATA & | + | |
- | DATA E# | + | |
- | cOeur: | + | |
- | DATA 7.7,1,0,1 | + | |
- | DATA ä1E1E, | + | |
- | DATA STFFF.ä? | + | |
- | DATA âü, | + | |
- | DATA äË? | + | |
- | point interrogatiôn: | + | |
- | DATA 7,7,1,0;1 | + | |
- | DATA E? | + | |
- | DÂTA E]FE, | + | |
- | DATA älEÜ, | + | |
- | ÂTAR| MAGAZIME BEST OF GFA BASIC | + | |
- | DATA & | + | |
- | larmes: | + | |
- | DATA 7,7,1,0,1 | + | |
- | DATA & | + | |
- | DATA & | + | |
- | DATA E1800, | + | |
- | DATA &3C44, 844, E10BA,& | + | |
- | peil: | + | |
- | DATA 7,7,1,0,1 | + | |
- | DATA BAFEQ, | + | |
- | DATA & | + | |
- | DATA & | + | |
- | DATA R4FE4,& | + | |
- | dragon: | + | |
- | DATA - 7,7,1,0,1 | + | |
- | DATA & | + | |
- | DATA & | + | |
- | DATA E818, | + | |
- | DATA RICF, | + | |
- | blason: | + | |
- | DATA 7, | + | |
- | DATA AFFFF, & | + | |
- | DATA BFFFF,& | + | |
- | DATA RFFFF, | + | |
- | DATA & | + | |
- | epee: | + | |
- | DATA 7,/,1,0,1 | + | |
- | DATA RF, | + | |
- | DATA AEFEO, | + | |
- | DATA & | + | |
- | DATA RCA40, 4ER80, | + | |
- | bouclier: | + | |
- | DATA 7,7,1,0,1 | + | |
- | DATA R1FFE, | + | |
- | DATA BFFFF,& | + | |
- | DATA & | + | |
- | DATA & | + | |
- | fleche gauche pleine; | + | |
- | DATA 1, X, 1, 051 | + | |
- | DATA & | + | |
- | DATA LFFFF, & | + | |
- | DATA RO,& | + | |
- | DATA R7FFE,& | + | |
- | fleche gauche vide: | + | |
- | DATA 1, 1, 1, 0, 1 | + | |
- | DATA E0,8300, 2780 8F80, | + | |
- | DATA AFFFF, | + | |
- | DATA & | + | |
- | DATA 24007 ,& | + | |
- | fleche gauche relief: | + | |
- | DATA ']: sÉ i) Es | + | |
- | DATA & | + | |
- | DATA & | + | |
- | DATA £0, | + | |
- | DATA 24006 86006 831FE&, | + | |
- | flgeauchce hahut veide: | + | |
- | DATA }, 414 614 D, 1 | + | |
- | DATA AFFF8, | + | |
- | DÂTA & | + | |
- | DATA R0, | + | |
- | DATA A4008, A4C04 85707 86102, 664 848, 530, & | + | |
- | fleche qauche haut pleine: | + | |
- | DATR 14 sl -0y | + | |
- | DATA & | + | |
- | DATA & | + | |
- | DATA &0, & | + | |
- | DATA & | + | |
- | fleche haut vidé: | + | |
- | BATA 1E 1 D- 1 | + | |
- | DATA R1B0, | + | |
- | DATA B3FFC,& | + | |
- | DATA BO,& | + | |
- | DATA R420, | + | |
- | fleche haut pleine: | + | |
- | DATA Ty }, L, 0,, 1 | + | |
- | DATA & | + | |
- | DATA & | + | |
- | DATA &0,5180 4300 87E0,& | + | |
- | DATA &7E0 8720 67E0, | + | |
- | fleche haut relief: | + | |
- | DATA-L, 1, 1, 0, 1 | + | |
- | DATA & | + | |
- | DATA & | + | |
- | DATA & | + | |
- | DATA 847E, | + | |
- | fleche bas vide: | + | |
- | 17,1 30 1.1 1051 | + | |
- | DATA & | + | |
- | DATA & | + | |
- | DATA &0, L7EQ, | + | |
- | DATA & | + | |
- | fleche bas pleine: | + | |
- | T LU TT | | + | |
- | DATA AFFO, | + | |
- | DATA EFFFF,& | + | |
- | DATA RO,& | + | |
- | DATA & | + | |
- | ATARI MAGAFIME BEST OF GFA BASIC | + | |
- | souris st: | + | |
- | DATA-1,-1, 15 O, 1 | + | |
- | DATA £C000 &E000, EF000, | + | |
- | DATA & | + | |
- | DATA & | + | |
- | DATA & | + | |
- | Farme bizarre: | + | |
- | DATR 450 1 UP3 | + | |
- | DÂTA REQ38, | + | |
- | DATA E72FF, | + | |
- | DATA R0,R6038, 67190 63FCE, | + | |
- | DATA & | + | |
- | loupe: | + | |
- | DATA:1L,-1, 1,.0,-1 | + | |
- | DATA R1FFA,& | + | |
- | DATA REOO7 ,& | + | |
- | DATA RO, | + | |
- | DÂTA & | + | |
- | transistor: | + | |
- | DATA--F, 1, 1, 0,, ! | + | |
- | DATA RAETB, | + | |
- | DATA BFFOD,& | + | |
- | DATA RO, & | + | |
- | DATA &7E00 & | + | |
- | symbole etrange: | + | |
- | DATA-1, 1, 1, 0; 1 | + | |
- | DATA RFFCF, | + | |
- | DATA RFFFF,& | + | |
- | MATA & | + | |
- | DATA & | + | |
- | symbolé atari: | + | |
- | BATA 15 1, 5, B, 1 | + | |
- | DATA ETEOQ, | + | |
- | DATA RIFFE, | + | |
- | DATA 20, | + | |
- | DATA 83900 R790E, | + | |
- | note musique: | + | |
- | DATA 1515 1 VS I | + | |
- | DATA RIEO, | + | |
- | DATA É1E0.61FFD, | + | |
- | DATA & | + | |
- | DATA & | + | |
- | disquetté: | + | |
- | DATASE, 1 14 [ | | + | |
- | DATA AFFFF,& | + | |
- | DATA & | + | |
- | DATA & | + | |
- | DATS & | + | |
- | ordinateur: | + | |
- | PATATL ts 0 14 | + | |
- | DATA REEEF,& | + | |
- | DATA & | + | |
- | DATA & | + | |
- | DATA & | + | |
- | document : | + | |
- | DATA: , 19 15051 | + | |
- | DATA R7FFERIFFE, | + | |
- | DATA & | + | |
- | DATA & | + | |
- | DATA &2004, R7FFS, 2004 AZAES 582004 BIFFC &0, 50 | + | |
- | parsonnage: | + | |
- | DATAS1 il o 1 | + | |
- | DATA RFFO, | + | |
- | DATA E3FFFRLFFCAIFFC, | + | |
- | DATA E7FO, | + | |
- | DATA R1104 ABPR, | + | |
- | tombe: | + | |
- | DATA: T, L1, 1, U, L | + | |
- | DATA ÉTEOEFFO, | + | |
- | DATA & | + | |
- | DATA fifl;&? | + | |
- | DATA £3C3E, | + | |
- | dollard: | + | |
- | DATA 114 S ) | | + | |
- | DATA A180 67F0, | + | |
- | DATA RIFFO, | + | |
- | DATA R0, | + | |
- | DATA & | + | |
- | livre: | + | |
- | DATA 1, 1, 1,-0,; 1 | + | |
- | DATA S1E0, | + | |
- | DATA ËEFFÜ, | + | |
- | DATA A0, | + | |
- | DATA Z600.& | + | |
- | alpha: | + | |
- | B[00 v B 4514 U, | | + | |
- | DATA 40,80 , | + | |
- | DATA ËËFEÜ.ËEFFÜ,& | + | |
- | DATA &0, R0,& | + | |
- | DATA R1080,& | + | |
- | beta: | + | |
- | DATA F, -1, 1, O, 1 | + | |
- | DATA L1EDD,& | + | |
- | OATA & | + | |
- | JATA & | + | |
- | DATA & | + | |
- | oméga: | + | |
- | Db 1E 14 US 1 | + | |
- | ATAR| MAGAZINE m BEST OF GFA BASIC | + | |
- | DATA RFOD,& | + | |
- | DATA B7ECO, | + | |
- | DATA & | + | |
- | DATA R3880, | + | |
- | pi: | + | |
- | DATA 1,1,1,0,1 | + | |
- | DATA RÉCSFRIFFFS3FFF A7FFF, | + | |
- | DATA SFFFO, | + | |
- | DATA 60, | + | |
- | DATA 46660.4660.8660, | + | |
- | symbole gfa: | + | |
- | DATA 1, | + | |
- | DATA AFFFF, | + | |
- | DATA - & | + | |
- | DATA RO,& | + | |
- | DATA & | + | |
- | symbole personnel auteur: | + | |
- | DATA 1,1,1,0,1 | + | |
- | DATA & | + | |
- | DATA AFFFF,& | + | |
- | DATA RO, R70FE,& | + | |
- | DATA K70FE, | + | |
- | symbole chaotique: | + | |
- | DATA . 1,1,1,0,1 | + | |
- | DATA & | + | |
- | DATA AFFFF,& | + | |
- | DATA & | + | |
- | DATA & | + | |
- | DATA —l | + | |
- | | VR RE RR RRN RE RR RESRE E AN NNN ÉÉÉ É R PR E E | + | |
- | L W & | + | |
- | ! = GENERATION DE FICHIERS CODE POUR FORME DE SOURIS * | + | |
- | L — — | + | |
- | | dkkkd d d d R R é R d d E R AN E A RR RE E | + | |
- | " (c) 1989 Patrick Leclercq & ATARI MAGAZINE | + | |
- | | ukh hhhadé é r E RR R A E d e d in | + | |
- | ' # Cet utilitaire génére un fichier .LST de codage de * | + | |
- | ! = souris à partir d‘une image DEGAS ELITE contenant * | + | |
- | " #* les formes et les masgues des souris. Les positions” | + | |
- | * % des données graphiques sont mémorisés dans des * | + | |
- | ! * lignes de DATA en Tin de programme. 2 | + | |
- | 1 dh R R d d d d d R RR RE | + | |
- | ! * La forme de souris ét le masque doivent être 5 | + | |
- | * dessinés avec des points de couleur 1 sur un fond * | + | |
- | ! * de couleur Ü. Le programme dé conversion fonctionne* | + | |
- | * * dans les 3 modes graphigues de l' | + | |
- | 1 TV R PP e é gt e e e T S e R S d e = e e d e e e A | + | |
- | RESERVE 50000 | RESERVATION DE MEMOIRE POUR LE BASIC | + | |
- | ATARI MAGAZINE BEST OF GhA BASIC | + | |
- | @codage | APPEL ROUTINE PRINCIPALE | + | |
- | END ! FIN DU PROGRAMME | + | |
- | ] | + | |
- | I | + | |
- | | dede i b e o ok ol e e e ol e ok ok e e e o ok e e e e e e e ok oo ol e | + | |
- | ! * CHARGEMENT D'UNE IMAGE DEGAS SUR L' | + | |
- | E E E E E E E AN E E E E R A R e E E | + | |
- | ttttïr***gigii*t**i**gEAttw***# | + | |
- | * * Format image DEGAS: % | + | |
- | ' * — 34 octets contenant la résolution ï | + | |
- | ! * et la païette de couleur: | + | |
- | ! * — 12000 octets contenant l' | + | |
- | d e d d TR e e e SR AR s S e TR d E e e R OR A RE | + | |
- | “Paramêtre: | + | |
- | E e e e e E E E WAkt S A E RE E A E R A E A C S | + | |
- | PROCEDURE lec degas (noms) | + | |
- | OPEN “I" ,#1,nom5! DUVERTURE DU FICHIER EN LECTURE | + | |
- | SEEK #1,34 | PLACER POINTEUR FICHIER AL DEBUT IMAGE | + | |
- | BGET # | + | |
- | CLOSE #1 ! FERMETURE DU FICHIER | + | |
- | RETURN | + | |
- | B T et R A ek R d d A I A GS SE RR RE | + | |
- | ! # CODAGE LIGNE DE 16 PIXEL SOUS FORME NUMERIQUE * | + | |
- | 1 RRRVNAAEREER s e e S e et R E A A RR R A e b | + | |
- | | *Paramétres: | + | |
- | PR e RR R R A A d e e d d é R RR RE | + | |
- | FUNCTION 1ÈE_1ÎQHË{ÜEË, | + | |
- | LOCAL %, v, 15 | DECLARATION VARIABLES LOCALS | + | |
- | wi=() | INITIALISATLION VALEUR | + | |
- | X¥=prE | INIT POSITION X DE TEST | + | |
- | FOR i%=15 TO O STEP =1 ! BOUCLE DE LECTURE | + | |
- | cE=POINT {x%, py%) ! LECTURE COULEUR FOINT (x%,V%) | + | |
- | IF cx==0 | TEST SI COULEUR = D | + | |
- | vi=vE#2%i% ! MISE A JOUR DE LA VALEUR NUMERIQUE | + | |
- | ENDIF | + | |
- | INÉ x% | INCREMENTATION POS X DE TEST | + | |
- | NEXT i% ! FIN BOUCLE DE LECTURE | | + | |
- | RETURN v | RENVOI DE LA VALEUR NUMERLQUE | + | |
- | EMOFUNC | + | |
- | VR d d d A RR e A A d A A E A A A RESRE | + | |
- | * CONVERSION D'UNE FORME 16X16 PIXELS EN CODAGE HEXA * | + | |
- | |****t*gfifitwt*tt***ttt****i# | + | |
- | L RR E e é d d d r e e | + | |
- | ‘* Les 16 chiffres hexadécimaux représentant le codage* | + | |
- | !* de la forme sont sont générés sous la forme de deux™ | + | |
- | ‘* Tignes de-DATA. ; | + | |
- | EDATA Bocex , Bcxae , Roooo, B0, oo, É , Booood Baoo * | + | |
- | *DATA Rocxioe , B, FNx , ÉSOUEX , ÉOOCCX , B, ÉUOOUX Raxxx™ | + | |
- | B d é e E R E R R A e e A A RN R R b RESRE RR e | + | |
- | '* Cette procédure utilise la foncLion lec ligne qui * | + | |
- | ‘% convertis une ligne graphique de 16 pixels en un * | + | |
- | ** némbre entier. R | + | |
- | ; . I __._-IL | + | |
- | d e e é e d e e e e e e e e e e e e e B d SE E | + | |
- | \* Paramêtres de là routine : c x | + | |
- | '# pxk : position X de la Torme à convertir = | + | |
- | '®* pyk © position Ÿ de là forme à convertir , 3 | + | |
- | ' | + | |
- | \* VARIABLES LOCALES : et | + | |
- | d i% - Indice de boucle {1 à 16) .* | + | |
- | = vi : Position Ÿ de la ligne de pixel & convertir* | + | |
- | [ R T SU S E V O e R ME E T ETE E E E E e r e E E E E E I E D RE E E E S R A A R QS | + | |
- | !* REMARQUE: L" | + | |
- | ‘* convertir le nombre v& en une chaine hexadécimal de* | + | |
- | !* 4 caractéres (par exemple, la valeur Ü donneras = | + | |
- | '* 1a chaine " | + | |
- | |*¢tti“tt******tg*q*tr**# | + | |
- | PROCEDURE lec forme{px%, | + | |
- | DCAL 1%,¥% ! DECLARATION VARIABLES LOCALS | + | |
- | PRINT # | + | |
- | yi=pyE . | INITTALISATION POS PREMIERE LIGNE | + | |
- | FOR 1%=1 TÜ 16 1 DEBUT BOUCLE | + | |
- | vi=Blec ligne(p=#, | + | |
- | IF [i%<> | + | |
- | PRINT # | + | |
- | ENDIF | + | |
- | IF i%=8 | GENFRATION DE LA FIN DE LA PREMIERE LIGNE | + | |
- | PRINT # | + | |
- | PRINT # | + | |
- | EMOLF | + | |
- | IF i%=16 | GENERATION DE LA FIN LIGNE 2 | + | |
- | PRINT # | + | |
- | PRINT #? | + | |
- | ENDLF | + | |
- | INC y* | PASSAGE A LA LIGNE DE FIXEL SUIVANTE | + | |
- | NEXT i% ! FIN BOUCLE | + | |
- | RETURN | + | |
- | i tt*t**fi*gg*tttwfiiflttittr****# | + | |
- | * % ROUTINE PRINCIPALE DU PROGRAMME * | + | |
- | 1 *p# | + | |
- | L Ah R RN A I d e e Sy e e d e e e e e e d E E E | + | |
- | " = WARIABLES LOCALS: * | + | |
- | * # jmaget: Mom de |' | + | |
- | i SOUris, L | + | |
- | "* nonf : Nom du fichier .LST généré par le prg , * | + | |
- | Fs et contenant le codage BASIC des souris.” | + | |
- | ' * px _ forme® : Position x de la forme de souris. | + | |
- | | # py formés : Position Ÿ de lä forme de souris. * | + | |
- | ! * px masque*: Fosition X du masgue ce la souris. ” | + | |
- | * # py masque%: Position Ÿ du masque de la souris. -* | + | |
- | 1 khh H e e R e d e e E E | + | |
- | PROCEDURE codage - | + | |
- | LOCAL îmage$, | + | |
- | LOCAL px masquet,py masques | + | |
- | READ image} | LECTURE NOM IMAGE DEGAS ELITE | + | |
- | Ülec degas(image$) ! CHARGEMENT DE L' | + | |
- | READ nom$ ! NOM DU FICHIER .LST À ECRIRE | + | |
- | OPEM " | + | |
- | 0o | + | |
- | READ px_formes ILECTURE PREMIERE DONNEE SOURTS | + | |
- | EXIT IF pe formes==LITEST SI FIN DE DOMNEES | + | |
- | READ py forme*s ILECTURE POSITION Ÿ FORME SOURTS | + | |
- | READ px masques ! LECTURE POSITION X MASQUE SOURTS | + | |
- | READ py masques 1 LECTURE POSITIUN Y MASQUE SOURTS | + | |
- | ÉRINT # | + | |
- | ÏEE_fürmflfpï_masquüà.pï_mfläqueâ} | MASQUE SOURIS | + | |
- | Jec forme(px_formes, | + | |
- | PRINT # | + | |
- | LOOP | + | |
- | CLOSE #2 ! FERMETURE DU FICHIER ECRITURE | + | |
- | RETURN ' | + | |
- | D ook e e B e e R ek o o kAl | + | |
- | ! * FORMAT DES DOMMEES * | + | |
- | | VHHEN ERRSE E | + | |
- | DATA Nom image DEGAS ELITE | + | |
- | DATA Nom fichier .LST à générer | + | |
- | DATA Position X forme souris 1, Pos Ÿ forme souris 1 | + | |
- | DATA Position X masque souris 1, Pos Ÿ masque souris l | + | |
- | DATA Position X forme souris 2, Pos Ÿ forme souris 2 | + | |
- | DATA Position X masque souris 2, Pos Ÿ masque souris & | + | |
- | DATA . —- ; _— | + | |
- | DATA Position X forme souris n, Pos Y forme souris n | + | |
- | DATA Position X masque souris n, Pos Ÿ masque souris n | + | |
- | DATA -1 | + | |
- | .__I_' | + | |
- | [ Ao E E b S e R DR R A e E E A R E R A | + | |
- | ! * EMEMPLE DE DONNEES DE SOURIS * | + | |
- | p S B E E E E T e A E E E E e d e A e d d | + | |
- | DATA SOURIS.FII | + | |
- | DATA SOURIS.LST | + | |
- | DATA 5, 2 | + | |
- | DATA 5, 19 | + | |
- | DATA. 22, 2 | + | |
- | DATA 22, 19 | + | |
- | DATA =1 | + | |
- | ATARI MAGAZINE WS BEST OF GFA BASIC | + | |
- | === LES FONCTIONS GRAPHIQUE DU STE(1) | + | ==== Pour finir ==== |
- | Maitriser | + | Nous verrons |
- | Cet article en deux parties a été écrit afin de vous montrer | + | |
- | comment | + | |
- | programmes en GFA Basic. | + | |
- | Palette de couleurs | + | |
- | Les couleurs des STF peuvent êtré choisies parmi une palerre de 512 | + | |
- | couleurs tandis que celles des STE peuvent être choises parm une | + | |
- | palette de 4096 couleurs. ' | + | |
- | Système RVE | + | |
- | Les couleurs sont fabriquées en mélangeant trois couleurs de bases. | + | |
- | Ces couleurs «élémentairess sont le rouge, le vert et le bleu (d'où le | + | |
- | nom de RVB); Chaque couleur élémentaire est divisée en un cértain | + | |
- | nombre de niveaux de couleurs. Le premier nivean correspond au | + | |
- | noir, et le dernier niveau correspond à une couleur Lrés lumimeuse. | + | |
- | Le nombre de couleurs intermédialres dépend du nombre de niveaux | + | |
- | de couleurs, Si les trois couleurs de base sont au niveau le plus faible, | + | |
- | la couleur résultante est le noir. Far contre, si ces couleurs sont à leur | + | |
- | niveau le plus fort, la couleur résultante est le blanc. | + | |
- | De 512 à 4096 couleurs | + | |
- | La palette de couleur du STF est codé sur 3 bits. Cela donne huir niveaux | + | |
- | de couleurs (8=273). Chacune des trois couleurs élémentaires | + | |
- | peur prendre huit teintes différentes. Ce qui représente 8x8x8 (512) | + | |
- | couleurs possibles. La définition d'une couleur se fait avec l' | + | |
- | SETCOLOR Cerre inseruction peut être utilisée de deux manières | + | |
- | différentes: | + | |
- | où en donnant un seul chiffre contenant le codage de la couleur. | + | |
- | Chaque technique posséde ses avantages et scs incorvénients, | + | |
- | SETCOLÜR c, | + | |
- | SETCOLOR c, | + | |
- | La formule permettant de calculer la valeur de la variable mélange | + | |
- | est la suivante mélange=rouge*256+tvert" | + | |
- | On obtient la couleur noire avee les trois composantes RVB à 0 | + | |
- | (SETCOLOR ¢,0,0,0). La couleur blanche est obtenue en metrant es | + | |
- | trois composantes RVB à leur valeur maximale (SETCOLOR | + | |
- | G diad sl | + | |
- | Instruction VSETCOLOR | + | |
- | Les routines graphiques du GE4 Basic ont étés derites-en utilisane les | + | |
- | fometions graphiques internes au ST (système graphique VDI), Ces | + | |
- | fonctions sont pratiques et puissantes, mais elles ont un bug trés curieux: | + | |
- | elles utilisent leur propre table de chiffres pour gérer le | + | |
- | numéro des couleurs. | + | |
- | La foncrion SETCOLOR utilise le vrai numéré dé couleur alors que les | + | |
- | autres instructions du @F4 Basic (COLOR, DEFFILL ete.} utilisent |2 | + | |
- | table de couleur spécifique au VDL Pour prendre un exemple précis, | + | |
- | si un programme change la définiton de la couleur 1 avec SETLOLOR, | + | |
- | c‘est la couleur 15 qui va être moditiée. | + | |
- | SETCOLOR 1,7,0,0 | + | |
- | L' | + | |
- | couleur, Flle possède sa propre table de conversion et permet de medifier | + | |
- | une couléur sans sé soucier des problèmes de transcodage de | + | |
- | couleur, - | + | |
- | VSETCOLOR 1,7,0,0 | + | |
- | Affichage de l' | + | |
- | Le programme suivant affiche successivement toutes les 512 couleurs | + | |
- | de Ja palete STE Il utilise Pinstruction SETCOLOR pour changez les | + | |
- | couleurs. | + | |
- | '&& | + | |
- | " PATEITTESIF * | + | |
- | Pk S HE E el o E | + | |
- | FOR rouge==à TO 7 | + | |
- | FOR vert==0 TO 7 | + | |
- | FOR bleus=0 TU / | + | |
- | V5YNC | + | |
- | SETCOLOR 0, rouges, vert*, | + | |
- | NEXT bleu® | + | |
- | NEXT vert® | + | |
- | NEXT rouge“ | + | |
- | ATARIMAGAZINE Y] BEST OF GFA RASIC | + | |
- | PE 3 R | + | |
- | Dégradé sur 512 couleurs | + | |
- | Le programme suivant affiche un dégradé de couleur rouge, Pour obtenir | + | |
- | un rouge pur, les composantes RVB vert et bleu sonr misé à D. | + | |
- | Ce programme affiche huit bandes de couleurs d'une largueur de | + | |
- | 320 pixels et d’une hanteur de & pixels. | + | |
- | FOR i%=0 TG 7 | + | |
- | VSETCOLOR i%,i%,0,0 | + | |
- | HEXT i% | + | |
- | py%-TE | + | |
- | FOR i%=0 TO 7 | + | |
- | DEFFILL i% | + | |
- | PBOX 0, | + | |
- | ADD py%,d | + | |
- | NEXT 1% | + | |
- | VOID INP(Z) | + | |
- | END | + | |
- | Palette de couleur étendue du STE | + | |
- | La palette de couleur du STE fonctionne selon le même principe | + | |
- | que la palette du STF, mais elle possède une structure légérement différente. | + | |
- | Les composantes RVB sont codées sur 4 bits, Cela réprésente | + | |
- | seize combinaisons différentes (2°2#16). Puisque chaque composante | + | |
- | de couleur peut prendre seize valeurs différentes, | + | |
- | léxléx16 couleurs, c' | + | |
- | Les conceptenrs du STE ont réalisé un système de codage des couleurs | + | |
- | compatible avec le codage des couleurs STE Clestadire qu' | + | |
- | codage de couleur STF fonctionnera sur STE. Cette compatibilité | + | |
- | est réalisée en rajoutant une nuance intermédiaire entre chaque couleur | + | |
- | STE Cellé-ci 25t codée avec le quatrième bit. Il y a denc hx codages | + | |
- | RVB compatibles avec le STE et huit codages RVE non compatibles | + | |
- | STF qui sont des nuancés intermeédiaires, | + | |
- | Affichage de toutes les couleurs STE | + | |
- | L’affichage des couleurs STE se fait de la même maniére que sur le | + | |
- | STE, sauf que les codages RVB varient de 0 à 15, et non plus de Ca 7. | + | |
- | FOR rougé*=0 TQ 15 | + | |
- | FOR vert==0 TO 15 | + | |
- | FOR bleu%=0 TÜ 15 | + | |
- | V5YNC | + | |
- | SETCOLOR O, | + | |
- | NEXT bleur | + | |
- | NEXT vert® | + | |
- | NEXT rouges | + | |
- | Affichage d'un dégradé de couleur | + | |
- | Pour réaliser un dégradé de couleur sur STE, il faut afficher les couleurs | + | |
- | dans l‘ordre de leurs nuances. À cause du codage particulier du | + | |
- | STE, il faur afficher les couleurs dans l’ordre sumant: 0, 8,01, 9, | + | |
- | 5 10.43 1.4 12,583, 6 14,7, 5 | + | |
- | Le plus simple est d’utiliser | + | |
- | STEpour écrire le programme simplement. Hélas, cela ne marche | + | |
- | pas sur les GEA Basic 1x (saul pour la version 3.3E qui fonetionne | + | |
- | d'une manitre un peu particulière). La raison de ce non-fonctionnement | + | |
- | nous est inconnue. Le programme suivant vous montré Ce que | + | |
- | pourrait être une routine d' | + | |
- | YSETCOLOR fonctionnait correctement sur STE. La séquence des | + | |
- | codes RVB est stockde au début du programme dans des lignes de | + | |
- | DATA, | + | |
- | DATA 0, | + | |
- | DATA 4, | + | |
- | FOR col%=0 TO 15 | + | |
- | READ rouges | + | |
- | VSETCOLOR col%, | + | |
- | HFXT col= | + | |
- | pys=36 | + | |
- | FOR i%=0 TO 15 | + | |
- | DEFFILL 1% | + | |
- | PEOX O,py*,319, pyt+7 | + | |
- | ADD pys,6 | + | |
- | NEXT 17 | + | |
- | vOID INP(2) | + | |
- | END | + | |
- | Pour obtenir un dégradé correcr, 1l faut écrire une routine équivalents | + | |
- | à |a foncrion VSETCOLOR Pour cela, il faut créer une table numerique | + | |
- | qui permet de convertir un numéro de couleur VDI en | + | |
- | numéro de couleur réel. Danlse programme d' | + | |
- | table de conversion est stockde dans le tableau couleur vdi(). Les | + | |
- | données de conversion sont définies dans des lignes de DATA, La routine | + | |
- | Set color émule sur un STE l' | + | |
- | Hon: pour utiliser correctement Set_color, il faut absolument avoir | + | |
- | initialisé la rable de conversion avec la routine init couleurs vdi, | + | |
- | | VRSR R PE | + | |
- | ! * AFFICHAGE DEGRADE * | + | |
- | ! # ROUGE SUR STE L | + | |
- | DIM couleur vdi(16) i | + | |
- | Binit couleurs vdi | + | |
- | deqrade: | . | + | |
- | DATA 0, | + | |
- | DATA 4, | + | |
- | couleurs wvili: | + | |
- | DATA C, | + | |
- | DATA 7, | + | |
- | RESTORE degrace | + | |
- | FOR col%=0 TÜ 15 | + | |
- | READ rougé* | + | |
- | @set color(col%, | + | |
- | REXT col% | + | |
- | ATARI MAGAZINE Wl BEST OF GFA BASIC | + | |
- | pyssib | + | |
- | FOR i%=0 TO 15 | + | |
- | DEFFILL 1% | + | |
- | PBOX O,py%, 319, pye+7 | + | |
- | ADD py*,8 | + | |
- | NEXT i% | + | |
- | VOID INP{2) | + | |
- | END | + | |
- | I el Tk e e e e e i o É e R T | + | |
- | * INITIALISATION TABLE * | + | |
- | * * CONVERSION COULEURS * | + | |
- | | ÉÉÉN ÉÉ EN EFEERAE | + | |
- | PROCEDURE init couleurs vdi | + | |
- | LOCAL 1% | + | |
- | RESTORE couleurs vdi | + | |
- | FÜR i%=0 TÜ 15 | + | |
- | READ couleur wdi{i%) | + | |
- | NEXT 1% | + | |
- | RETURN | + | |
- | L d A é A é d d | + | |
- | | * ROUTINE EQUIVALENT * | + | |
- | | # YSETCOLOR pour STE * | + | |
- | LÆhx d é é ol e e e e e ol e E RE E | + | |
- | PROCEDURE set color(ne*, | + | |
- | LOCAL m | + | |
- | mé=r4*256+v4*164+b# | + | |
- | SETCOLOR couleur vdi{nck), | + | |
- | RETURN ' | + | |
- | Variations dans les dégradés | + | |
- | Les programmes d' | + | |
- | pur, mais vous pouvez afficher aussi des dégradés de vert ou de bleu | + | |
- | en modifiant l' | + | |
- | * DEGRADE DE VERT | + | |
- | Éset color(col, | + | |
- | ' DEGRADE DE BLEU | + | |
- | üset color(col, | + | |
- | En utilisant des mélanges de couleurs, vous pouvez réaliser béaucoup | + | |
- | de dégradés différents. Avec la technique présentée iéi, i peut y avoir | + | |
- | 256 dégradés différents, | + | |
- | nombre de couleurs fixes possibles (16*16=256). | + | |
- | ' DEGRADE QUELCONQUE | + | |
- | @set color(coi, | + | |
- | Fabrication de dégradés aléatoires | + | |
- | Ce programme d’exemple affiche une série de dégradés choisie aa hasard. | + | |
- | Les couleurs constantes sont déterminées aléatoirémént avee la | + | |
- | fonction RANDOM. La composante KVB de la couleur de dégradé varie | + | |
- | de 1 à 15, et non de 0 à 15. Cela permer d' | + | |
- | l' | + | |
- | L' | + | |
- | programmie alliche un nouveau dégradé en changeant uniquement I | + | |
- | palerte de couleut grâce à la fonction XBIOS(6). Lz rourine | + | |
- | Énew color ne modifie pas directement la palette de couleur coutanté, | + | |
- | mais agit sur une palette stochée dans la zone mémoire d' | + | |
- | adrpal. Le programme affiche une nouvelle palette tant que | + | |
- | lutilisateur ne presse nas sur la touche [ESCI. | + | |
- | | E e e e e r e d iRt u E | + | |
- | ' # AFFICHAGE DE DEGRADES * | + | |
- | S ALEATOTRES £ | + | |
- | LHFF L L R R R Lk SE | + | |
- | DIM col wdi%({16) | + | |
- | DIM degra%{lé) | + | |
- | adrpel==MALLOC{32) | + | |
- | Ginit couleurs vdi | + | |
- | Ginit degrade | + | |
- | Bcalcul degrade | + | |
- | Baff degrace | + | |
- | B0 | + | |
- | @calcut dégrade | + | |
- | PAUSE 18 | + | |
- | EXIT IF INP(Z}=27 | + | |
- | LOOE | + | |
- | VOID MFREE(adrpal# | + | |
- | EMD | + | |
- | PROCEDURE init_degrade | + | |
- | LOCAL % | + | |
- | RESTORE degrade | + | |
- | FOR 1=0 TO 15 | + | |
- | READ degra(i) | + | |
- | NEXT 1% | + | |
- | RETURN | + | |
- | 1 | + | |
- | | hhh dc e e e e E RE | + | |
- | | # INIIIALISATION PALETTE * | + | |
- | ! # COULEUR FOUR DEGRADE 7 | + | |
- | I = & e e e É o | + | |
- | PROCEDURE calcul degrade | + | |
- | LOCAL w%,bs,rs | + | |
- | LOCAL alea% | + | |
- | i | + | |
- | v& | + | |
- | b%=RANDOM(15) | + | |
- | ré=RANDOM(15) | + | |
- | älea%=RANDOM(3)+1 | + | |
- | enew color(0, | + | |
- | FOR j%=1 TO 15 | + | |
- | SELECT aleaw | + | |
- | CASE 1 | + | |
- | ATAZ| pAAGAZLINE BEST OF GFA BASIC | + | |
- | Énew color(i*, | + | |
- | CASE 2 | + | |
- | ênew color(i*, | + | |
- | CASE 3 ; | + | |
- | @new color(i%, | + | |
- | ENDSELECT | + | |
- | NEXT i% | | + | |
- | VOID XEI05{6, | + | |
- | RETURN | + | |
- | E s o ol ol oy o e ol o ol o RR VR e E | + | |
- | * * AFFICHAGE DEGRADE * | + | |
- | I A d d A e d d d d d E E | + | |
- | PROCEDURE aff dégrade | + | |
- | LOCAL py%,i% - | + | |
- | pys=36 | + | |
- | FOR i%=0 TO 15 | + | |
- | DEFFILL 1% | + | |
- | PEOX C,py#,319 pytt7 | + | |
- | ADD pyé,f | + | |
- | NEXT i% | + | |
- | RETURN| | + | |
- | degrade: | + | |
- | DATA 0, | + | |
- | DÂTA 4, | + | |
- | DATA -1 | + | |
- | PROCEDURE new color(nes, | + | |
- | LOCAL mé,adré | + | |
- | mE=206+r vik*16*+b% | + | |
- | adré=adrpal%tcol wdi%(nck) *2 | + | |
- | WORD{ adrs | =m5 | + | |
- | RETURN | + | |
- | PROCEDURE init couleurwdsi | + | |
- | LOCAL i% — | + | |
- | RESTORE couleurs vdi | + | |
- | FOR 1%=0 TO 15 | + | |
- | READ col wdi(i%) | + | |
- | NEXT i% | + | |
- | RETURN | + | |
- | couleurs vdi: | + | |
- | DATA 0, | + | |
- | DATA-8, | + | |
- | Gestion des couleurs en GFA Basic 3.5E | + | |
- | Le GEA Basic 3.5F est une version du GFA Basic spécialement | + | |
- | adaptée au STE. L' | + | |
- | méme manière que les autres version du GH4 Basic. La séquence des | + | |
- | codes RVB à été modifiée. Les codes RVR STE sont maintenant dans | + | |
- | l' | + | |
- | composantes KVB de 0 à 15, | + | |
- | ek ke e e e e e ok R E RE | + | |
- | ! * AFFICHAGE DEGRADE ROUGE * | + | |
- | L # AVEC GFA BASIC 3.5E * | + | |
- | I ke e ke e oy e i o o o A T T R ol o E | + | |
- | FOR i%=0 TO 15 | + | |
- | VSETCOLOR 1%,1%,0,0 | + | |
- | NEXT i% | + | |
- | pys=3b | + | |
- | FOR i%=0 TO 15 | + | |
- | DEFFILL 1% | + | |
- | PEOX O,py%,319, pyit] | + | |
- | ADD py#,8 | + | |
- | NEXT i% | + | |
- | VOID INP{Z) | + | |
- | END | + | |
- | Cet exemple ne fonctionnera qu' | + | |
- | l' | + | |
- | [}r cümPr.' | + | |
- | Scrolling vertical | + | |
- | l’image affichée sur l' | + | |
- | mémoire Cette image est redessinée 50 fois par seconde. Le dessin | + | |
- | est fait par un point lumineux (appelé spot vidéo). Au nivéau intérne, | + | |
- | le circuit électronique d'affichage lit l'adresse de la mémoire | + | |
- | écran et affiche les données contenues dans cette zone mémoire sur | + | |
- | l'écran. Cette opération s'appelle un rafraichissement vidéo. | + | |
- | La fonction XBI05(5) du GFE4 Basic permet de changer l' | + | |
- | la mémoire vidéo. En modifiant certe adresse, on peut réaliser un | + | |
- | scrolling très mpide. La mémoiré écran dé la basse résolution est organisée | + | |
- | en ligné de 160 octers, Pour décaler l' | + | |
- | donc de modifier Padresse de la mémoire vidéo de 160 octers. | + | |
- | Le STE permet de positionner la mémoire vidéo à n' | + | |
- | adresse de l' | + | |
- | ST'E ne permet de positionner |a mémoire écran que sur des adresses | + | |
- | multiples de 256, C’est inutilisable pour un scrolling ligne par ligne | + | |
- | Instruction XBIOS(5) | + | |
- | L' | + | |
- | l' | + | |
- | systèmé, Sa syntaxe est la suivante: | + | |
- | VOID XBIDS(5, | + | |
- | log : adresse écran logique | + | |
- | phys : adresse écran physique | + | |
- | res : résolution écran | + | |
- | La résolution ne peut pas être changée en GEA Basic, car GEM ne recomnaît | + | |
- | pas le changement de résolution. Ce changement ne peut | + | |
- | Étre réalisé qu' | + | |
- | GEA Basic ne génère que des programmes GEM. Attention: uù programme | + | |
- | GEM avec uné extension . PRG ne devient pas un programme | + | |
- | TOS si son extension est renommée en . T05, | + | |
- | Uadresse de l’écran physique est l' | + | |
- | sur Pécran vidéo, alors que l' | + | |
- | ATARIMAGAZIME Mbtd BEST OF GRA BASIC | + | |
- | dresse de la zone mémoire où fonctiornneront les instructions graphiques | + | |
- | du GE4 Busic. Grâce à ce système d' | + | |
- | le ST peur très bien allicher une image pendant qu'il est en | + | |
- | train d'en dessiner une autre en mémoire. 51 un paramétre ne doit | + | |
- | pas êÊtre modifié, 1l faut lui donner la valeur -L L‘exemple suivant | + | |
- | appelle l' | + | |
- | rien, mais c'est un exemple aussi valable qu'un autre. | + | |
- | VôID XBIDS{5, | + | |
- | Attention: La modification de l' | + | |
- | pas immédiate. Le système d’affichage ne change l’adresse vidéo que | + | |
- | lorsqu’il recommence une phase d’affichage, | + | |
- | affichages par seconde Si un programme modifie plusieurs fois l' | + | |
- | de la mémoire vidéo alors que le système est encore en train | + | |
- | d' | + | |
- | prise en compte: Pour éviter cela, 1l faut attendre un réaffichage | + | |
- | vidéo après chaque changement de mémoiré écran. L' | + | |
- | VSYNC est la solution à cæ problème: elle blaque l' | + | |
- | tant que l' | + | |
- | VOID XBIOS{5, | + | |
- | VSYNC | + | |
- | Remarque: La svntaxe Lewar signifie que le programme doit transmettre | + | |
- | une valeur entière 32 bits à-la fonétion XETOS. 5i vous bubliéz | + | |
- | le symbole ‘L:", | + | |
- | plantages. | + | |
- | Scrolling vertical pixel par pixel d'une image | + | |
- | Voici un exemple de réalisarion pratique du scrolling vertical par modification | + | |
- | de la mémoire écran. Le programme éréé une zone de travail | + | |
- | de 64000 octets. Cette zone est divisée cn deux zones mémoire | + | |
- | de 32000 octers. Chacune de ces deux zones mémoire a la raille d’une | + | |
- | zone étran. Lors de Pinitialisation, | + | |
- | au format Depes Elite dans chaque zone mémoire, Il déclare ensus | + | |
- | te l’adresse travail commé nouvelle mémoire écran. L' | + | |
- | immédiatement à l' | + | |
- | dans la mémoire écran. Le programme déplace verticalement l’écran | + | |
- | d'uné ligne en incrémentant Padresse de la mémoire vidéo de 160 oetets. | + | |
- | L' | + | |
- | qu’une nouvelle ligne et apparue en bas de l' | + | |
- | ligne est la première ligne de l' | + | |
- | apération, on va voir l’image IMGI disparaître vers le haut de l' | + | |
- | et l' | + | |
- | première bouclé términée, la mémoire écran se trouve alors à l' | + | |
- | travail+32000, | + | |
- | à complétemenit disparu de l' | + | |
- | à l' | + | |
- | vidén. La séconde partie du programme effectue un nouveau scrolling | + | |
- | en décrémentant la mémoire vidéo par tranche de 160 octets. La | + | |
- | mémoire vidéo revient à son ancienne valeur, Le spectateur voir l' | + | |
- | IMGZ disparaître vers lé bas et l' | + | |
- | du haut de l' | + | |
- | [ T E E V P L CT E E e S | + | |
- | 4 SCROLLING = | + | |
- | # LIGNE FAK LIGNE * | + | |
- | | eh e e o e o o o o é d E | + | |
- | RESERVE 100000 | + | |
- | travail%=MALLOC (64000) | + | |
- | adri=travail% | + | |
- | @load degas(" | + | |
- | adr& | + | |
- | Bload degas(" | + | |
- | ! flflngÿ**tt*à*%****j*# | + | |
- | | * SCROLLING VERS LE BAS * | + | |
- | LFRR E = NRR A RE | + | |
- | adriketrava1i% | + | |
- | VOID XBIDS(S, | + | |
- | VOID INP(2) | + | |
- | FOR i%=1 TO 200 | + | |
- | ADD adrs, 160 | + | |
- | VOID XEI05(5, | + | |
- | VSYNC | + | |
- | NEXT 1% | + | |
- | VOID INP(2) | + | |
- | | dh dh e é E e o e o S e e e E C E | + | |
- | ! # SCROLLING VERS LE HAUT “ | + | |
- | I RXERRRRRERNRN ARÉa ÉÉN R | + | |
- | FOR i%=1 TO 200 | + | |
- | SUE adr#,160 | + | |
- | VOID XBIOS(5, | + | |
- | VSYNC | + | |
- | NEXT 1% | + | |
- | VOID MFREE(travail# | + | |
- | END | | + | |
- | I Rk d d d SE SE RE | + | |
- | ! # CHARGEMENT IMAGE * | + | |
- | ' # DEGAS ELITE A UME * | + | |
- | ' * ADRESSE MEMCIRE % | + | |
- | | * QUELCONQUE. bj | + | |
- | l HEF RNEE | + | |
- | PROCEDURE load degas(noms , adr“) | + | |
- | LOCAL pal5 | + | |
- | pal$=SPACES (37) | + | |
- | OPEN " | + | |
- | BGFT # | + | |
- | BGET # | + | |
- | VOID XBIOS(6, | + | |
- | BGET #1,adr%, 32000 | | + | |
- | CLOSE #1 | + | |
- | RETURH | + | |
- | Artention: aprés l' | + | |
- | n'est plus à sa valeur initiale, [ faut la réinitialiser pour continuer à | + | |
- | travailler normalement. La solution la plus prarique est de sauver l'a- | + | |
- | ATAR| MAGAZINE fl BESTOF GRA BASIC | + | |
- | | dresse de |a mémoire écran au début du programme afin de la restaurer | + | |
- | plus tard. | + | |
- | adr video%=XBI05(2} | + | |
- | Utilisation d'un écran virtuel | + | |
- | La technique que nous venons de voir est classique, mais peu facile à | + | |
- | sérer. En examinant la sicuation avec un angle de vision mouns | + | |
- | «téchMiques, | + | |
- | plus simple à utiliser. | + | |
- | La zone mémoiré de 64000 octers constitue un Ééran virtuel ‘de | + | |
- | 320*400 pixels, La mémoire écran est une fenêtre de 320*200 pixels | + | |
- | qui peut Être positionnée à n' | + | |
- | la fonction XBI05(5). On peut réliser une fonction Bset ligne | + | |
- | qui positionne la fenêtre de visualisation sur n' | + | |
- | de l' | + | |
- | tre de visualisation en multipliane le numèro de la ligne | par 160 | + | |
- | (nombre d' | + | |
- | XBIOS(5) modifie l' | + | |
- | fenêtre de visualisation. Attention: l' | + | |
- | être stockée dans la variable travail. | + | |
- | PROCFDURE set ligne(1%)} | + | |
- | LOCAL adrw | + | |
- | adr& | + | |
- | VOID XBIOS(S, | + | |
- | YSYNC | + | |
- | RETLRN | + | |
- | En déplagant la fenêtre de visualisation sur l' | + | |
- | un scrolling. L' | + | |
- | d' | + | |
- | FOR Tigne%=0 TO 200 | + | |
- | êset ligne(lignes) | + | |
- | NEXT ligne% | + | |
- | | | + | |
- | Pour réaliser un scrolling vers le hawr, il suffit de déplacer la fenérre | + | |
- | de visualisation dans le sens inrerne. | + | |
- | FOR ligne%=200 TO Q STEP -1 | + | |
- | @set ligne(liqnes) | + | |
- | NEXT lignes | + | |
- | L' | + | |
- | RESERVE 100000 | + | |
- | ravai 1& | + | |
- | adr*travail* | + | |
- | @load degas(“IMG1.PI1", | + | |
- | ATAR] MAGALINE | + | |
- | adri=travails+32000 | + | |
- | @load degas(" | + | |
- | adr®=travai 1 | + | |
- | Bset ligne(0) | + | |
- | VOID IWP(2) - | + | |
- | FOR i%=0 TD 200 | + | |
- | Bset ligne(i) | + | |
- | NEXT 1% | + | |
- | VOID INF(2) | + | |
- | FOR i%=200 TQ D STEP -1 | + | |
- | Gset ligne(1%) | + | |
- | MEXT 1% | + | |
- | VOID MFREE(travaiT# | + | |
- | END | + | |
- | Cette techrique peut être utilisée sur des écrans virtuels de n' | + | |
- | quelle taille Rien ne vous empêche d' | + | |
- | 320*2000 pixels {prenant 320 Ko de mémoire). | + | |
- | Avec une machine équipée de 4 Mo, on peut créer un écran virtuel | + | |
- | d'au moins 320x20 000 pixels (3,2 Mo). Avec un STE équipé de 2 | + | |
- | Mo de mémoire, nous avons réalisé un serolling vertical sur un écran | + | |
- | virtuel de 320x10000 pixels occupant 1,6 Mégas octers de mémoire. | + | |
- | Ce programme a été chargé par 50 images Degas Elste. Clest amusant, | + | |
- | même si cela ne présente pas béaucoup d' | + | |
- | Amélioration de la vitesse de scrolling | + | |
- | Le scrolling pixel par pixel &st béau, mais un peu lent. Il est possible | + | |
- | de l' | + | |
- | un déplacement de deux lignes à la fois, on augmente la vitesse de | + | |
- | scrolling d'un facteur de 2. Avec un déplacement de quatre lignes, | + | |
- | on augmente encore là vitesse de scrolling d'un facteur de 2, ete. La | + | |
- | qualiré visuelle du scrolling n'est pas altérde tant que le pas d' | + | |
- | est Inferieur à 10 | + | |
- | FOR 1igne%=0 TO 200 STEP 2 | + | |
- | @set ligne(ligne*) | + | |
- | NEXT ligne% | + | |
- | FOR 1ignex=200 TO 0 STEP -2 | + | |
- | üset ligne(lignes) | + | |
- | NEXT ligne% | + | |
- | Bug des boucles FOR-NEXT | + | |
- | Il ¥ à un problème dans les boucles FOR-NEXT avec certaines valeurs | + | |
- | d' | + | |
- | boucle, Avec une boucle simple, la vartable 1 prendra successivement | + | |
- | toutes les valeurs éntières possibles entre O er 200, | + | |
- | FOR 1%=0 TO 200 | + | |
- | PRINT 15 | + | |
- | BEST GF GFA BASIC | + | |
- | NEXT 15 | + | |
- | Âvec un pas d' | + | |
- | … 198, 200, : | + | |
- | FOR 1%=0 TO 200 STEP 2 | + | |
- | PRINT 1% | + | |
- | NEXT 1# | + | |
- | Par contre, la même boucle avec un pas d' | + | |
- | un résultät curieux: la variable 1% s' | + | |
- | la vient de la téchnique utilisée par le GEA Basic pour gérer les boucles | + | |
- | FOR-NEXT, Lorsque le programme incrémente la variable compteur | + | |
- | de la boucle, il teste si le résultat est supérieur ou égal à la valeur | + | |
- | de sortie de boucle Si ce test est posinf, 1l sort immédiaterment de la | + | |
- | boucle. Dans notre exemple, la variable de boucle est la variable 1%, | + | |
- | Lorsque celle-cr vaut 198, le programme l' | + | |
- | ensuite le résultat (198+3=201). Comme ce résulrar est supéricur à la | + | |
- | valeur maximale, il sore de la boucle. | + | |
- | FOR 1%=0 TO 200 STEP 3 | + | |
- | PRINT 1% | + | |
- | NEZT 1% | + | |
- | Le même pËJEL: | + | |
- | de 3, ainst qu’avéc la valeur 7. Clest encore plus drôle avec 7, | + | |
- | car la valeur de sortie de 12 houcle est alors 196, ; | + | |
- | Si vous utilisez un pas d' | + | |
- | vértical ne se fera pas sur la totalité de votre écran virtuel, Pour | + | |
- | éviter céla, on peur éviter |es pas d' | + | |
- | pesitionner systématiquement la féenêtre de visualisation à sa | + | |
- | position théorique de fin de scrotling. | + | |
- | FOR 1=0 TO 200 STEP 3 | + | |
- | @set ligne(l%) | + | |
- | NEXT 1% | + | |
- | Bset 1igne{Z00) | + | |
- | Pour éviter un affichage supplémentaire, | + | |
- | test sur la valeur de sortie de la boucle. Cela permet d' | + | |
- | quel pas de scrolling sans risque, Dans l’exemple suivant, la valeur | + | |
- | d' | + | |
- | FOR 1=0 TO 200 STEP pas# | + | |
- | êset ligne[l#] | + | |
- | NEXT 1% | + | |
- | IF 1%==200 | + | |
- | Gcet Tigne(200) | + | |
- | ENDIF | + | |
- | Remarque: Les problémes posés par des pas d' | + | |
- | se retrouvent aussi avéc des pas d' | + | |
- | boucle FOR-NEXT allant de 200 à O avec' | + | |
- | väleur 2, ec la même boucle avec un pas de 7 finira avec la valeur 4. | + | |
- | Scrolling en haute résolution | + | |
- | Les rechniques de scrolling vertical que nous venons de veir sont va- | + | |
- | ATARI MAGALZINE | + | |
- | lables pour la basse ec moyenne résolution, | + | |
- | utilisent des lignes de 160 octets. Le cas de la haute resolution | + | |
- | est différent car ce mode graphique utilise 400 lignes de 80 octers. Il | + | |
- | faut alors modifier la routine @set Tigne_hr — | + | |
- | FOR 1%=0 TO 400 | + | |
- | @set Tigne hr{1%) | + | |
- | NEXT 1% | + | |
- | FOR 1%=400 TO O STEP -1 | + | |
- | éset ligne hr(15) | + | |
- | MEXT |4 | + | |
- | PROCEDURE set_ligne hr(1%) | + | |
- | LOCAL adr% | + | |
- | adr& | + | |
- | VOID XBI0S(5, | + | |
- | V5YNC | + | |
- | RETURN | + | |
- | Le scrolling en haute résolution est deux fois plus lent que le scrolling | + | |
- | en basse ou moyenne résolution, | + | |
- | lignes à déplacer. Cependaite, rien ne vous empêche d' | + | |
- | comme nous l' | + | |
- | Scrolling circulaire | + | |
- | Voici un exemple qui affiche une image scrollant sur elle-même. | + | |
- | Clest trés spectaculaire, | + | |
- | utilise un écran wirtuel | + | |
- | chargée en mémoire à partir de la ligne Q et de la ligne 200. Elle est | + | |
- | done présente deux endroits de la mémoire. Le programme réalise | + | |
- | un scrolling vertical entre la ligne © er la ligne 200, Une fois ce scrolling | + | |
- | terminé, il repositionne la fénêtre de visualisation sur la ligne 2 | + | |
- | et recommence le cycle. À cout moment, il visualise sur l’écran une | + | |
- | partie de la première image ec une partie de la seconde image. Clest | + | |
- | le mélenge de ces deux images identiques qui donne une impression | + | |
- | Les imagc—s sont ûhargfil.: | + | |
- | tiot: la routine @set lîgne calcule une adresse de ligne à partir de | + | |
- | l' | + | |
- | | *x+xEttttédebaEae eS | + | |
- | s% SCROLLING CIRCULATIRE * | + | |
- | s D' UNE IMAGE 3 | + | |
- | i -.l: | + | |
- | i | + | |
- | RESERVE 100000 | + | |
- | adr1& | + | |
- | adré*=adr14+32000 | + | |
- | @load degas(“IMG1 .PI1", | + | |
- | Ëload degas(“IMG1 .PI1l", | + | |
- | Gset ligne(0} | + | |
- | VOTE TNP{2) | + | |
- | BEST OF GRA RASIC | + | |
- | I-"' | + | |
- | Qi | + | |
- | FOR i%=0 TD 200 | + | |
- | Üset ligne(i*) | + | |
- | NEXT i% | + | |
- | LOUF | + | |
- | VOID MFREE(adr1%) | + | |
- | END | + | |
- | I | + | |
- | L e B R R R | + | |
- | "% FIXATION LIGNE. * | + | |
- | " # ECRAN VIRTUEL * | + | |
- | L d E E E S | + | |
- | PROCEDURE <et ligne(!#) | + | |
- | LOCAL adrs | + | |
- | adr& | + | |
- | VOID XB10545, | + | |
- | VSYNC | + | |
- | RÉTURN | + | |
- | Ce programme n'a pas de condition d' | + | |
- | de maniére compilée, il faut prévoir une condition d' | + | |
- | ling en inversant le sens de la boucle FOR=NEXT. | + | |
- | FOR 1%=200 TO Ü STEF -1 | + | |
- | Bset Tigne(i%) | + | |
- | “ NEXT 1 | + | |
- | Comme dans les exemples précédents, | + | |
- | vitesse de scrolling en augmentant le pas d' | + | |
- | chaque ligne. | + | |
- | Scrolling vertical commandé par la souris | + | |
- | Le programme survant deplace une fenêtre de visualisation | + | |
- | écran | + | |
- | est commandee par la souris. Une boucle DO-LOOP permet de | + | |
- | gérer les événements souris. Le propramme ne sort de cette boucle | + | |
- | que si la position Ÿ de [ souris varie, où si l' | + | |
- | bouton souris | + | |
- | Le résultat est spectaculaire: | + | |
- | la souns. Un déplacement lent provoque un scrolling lent ec un | + | |
- | déplacement rapide modifie très rapidement l' | + | |
- | DVSF e B e e g e b e e e | + | |
- | ï | + | |
- | 1.8 . SCROLLING VERTICAL * | + | |
- | : * COMMANDE PAR LA SOURIS * | + | |
- | | HRE R VNN e e | + | |
- | RESERVE 100000 | + | |
- | old ecr=XBIOS(Z) | + | |
- | travails=MALLOC(64000) | + | |
- | | | + | |
- | HIDEMR | + | |
- | adrS=travail= | + | |
- | Bload degas(" | + | |
- | ATARI MAGAZIME | + | |
- | adr& | + | |
- | @load degas(" | + | |
- | MOUSE xmês, ymdés, ki | + | |
- | Bset | ignélym0r) | + | |
- | 0 ; | + | |
- | D . | + | |
- | MOUSE xmes, yrrée, k' | + | |
- | EXIT TF yme=ym0s | + | |
- | EXIT IF kEmée=i | + | |
- | LODP | + | |
- | EXIT IF kmw=0 | + | |
- | ymOEs =y | + | |
- | Bset ligne(ymé) | + | |
- | LODF | + | |
- | VOID : | + | |
- | SHOWM | + | |
- | VOID MFREF(travail%) | + | |
- | END | + | |
- | E.Emàrqug: La position Ÿ de la souris varie engre 0 et 199 alors que la | + | |
- | nosicion d'affichage de l'écran virtuel varie entre 0 et 200, La der | + | |
- | nièré ligne de la seconde | + | |
- | Scrolling vertical sur un grand écran | + | |
- | On peut réaliser un scrolling sur-un écran | + | |
- | f:;.hriqu ant l'écran au fur et à mesure de Ï":: | + | |
- | construit avec des éléments graphiques de 16x16 pixels. | + | |
- | L' | + | |
- | pisels. IL y a 320/16 blocs par lipne, c' | + | |
- | ligne, Tes éléments graphiques de base peuvent êÊtre stockes dans un | + | |
- | tableau-alphanñumerique et athches avec l' | + | |
- | UIM dessin$(300) | + | |
- | DIM ecrant(4000,# | + | |
- | Ce système permet de creer un grand écran ne prenant que peu de | + | |
- | place. L' | + | |
- | avec 20"10 éléments graphiques de base 51 le nombre | + | |
- | d' | + | |
- | avec des entiers courts & bits. La définition d'un écran prend alors | + | |
- | 20"10 octets, soit 200 octets. En stockant l' | + | |
- | de 4000 lignes, on peut coder 200 écrans pour une taille de | + | |
- | 30000 octets [4000 lignes de20 octets). En comparant la place | + | |
- | mémoire prise par 200 écrans avec les 80 000 ocrets du tableau écran, | + | |
- | on arrive à un rapport de 80, Pour faire un caléul exact, 1l faut venir | + | |
- | compte de la place mémoire prise par les éléménts graphiques. Un | + | |
- | élément de 16*16 pixels stocké dans une vartable alphanumérique | + | |
- | prend 134 octérs. Les 256 éléments (de D à 255) occupent 34304 c | + | |
- | tets, Le rapport est done de 200*32000/ | + | |
- | GET 1, | + | |
- | PRINT LEN(vär$) | + | |
- | La plupart des jeux d' | + | |
- | similaire à colui-ci pour créer leurs décors de jeux. | + | |
- | BEST OF GFA BASIC | + | |
- | GRAPHISME STE EN GFA BASIC | + | |
- | SCROLLING | + | |
- | HORIZONTA | + | |
- | Faites danser votre écran | + | |
- | Nous avons vu comment gérer les 4096 couleurs du STE et | + | |
- | comment réaliser des scrollings verticaux. Cet article porte | + | |
- | sur le scrolling horizontal. | + | |
- | Scrolling horizontal | + | |
- | An point de vue du spectateur, un scrolling correspond au déplacement | + | |
- | d’une fenêtre de visualisation sur une image plus grande que | + | |
- | l' | + | |
- | Le système d' | + | |
- | verticaux ét horizontaux, | + | |
- | On peut réaliser un scrolling vertical en faisan: varier l’adresse de la | + | |
- | mémoire widéo. La fonction X810S(5) permet de changer Padresse | + | |
- | de la mémoire écran à l’octet près, Erant donné qu’une ligne fair 160 | + | |
- | octéts en basse résolution, | + | |
- | memoire vidéo de 160 octets pour décaler l' | + | |
- | Structure de la mémoire écran STE | + | |
- | La mémoire vidéo basse résolution d'un STF est organisé de fmanière | + | |
- | linéaire. Elle est coñsticuée de 200 lignes de 160 octets pour une talle | + | |
- | totale de 32000 octets, Les lignes sont stockées les unes après les | + | |
- | autres. | + | |
- | ligne 1 (1460 actets) | + | |
- | ligne 2 (160 octets} | + | |
- | ligne 3 (1560 octets) | + | |
- | ligne 4 (160 octets) | + | |
- | MEMOIRE VIDEO STF | + | |
- | 200 LIGMES DE 160 OCTETS | + | |
- | La mémoire vidéo STE est organisée de la même mamère que la | + | |
- | mémoire écran STE, c' | + | |
- | peut y avoir un décalage encre chaque ligne de l' | + | |
- | MEMOIRE VIDEO 5TE | + | |
- | 200 LIGNES DE 160 OCTETS | + | |
- | Le système d’affichage doit être averti de la valeur du décalage séparaut | + | |
- | chaque ligne afin de réaliser un affichage correct. I ne doit lire | + | |
- | que les lignes appartenant à l’écran. Ce décalage s’appelle: | + | |
- | Le système d' | + | |
- | de I' | + | |
- | La variable système d' | + | |
- | de ligne, Elle est mesurée en mots (1 mot = 2 octets). Si elle contient | + | |
- | la valeur O, il n°y à pas d' | + | |
- | mémoire vidéo esc alors similaire à la mémoire vidéo du STE Clest | + | |
- | le cas le plus courant. Linstruction SPOKE permet de modifier le | + | |
- | contenu de la variable sysrème BHFF& | + | |
- | SPOKE & | + | |
- | Effet graphique nmusufif | + | |
- | Lorsque vous modifiez la valeur de l' | + | |
- | écran doit avoir une strocture tenant compte de cet offset. 51 ce n' | + | |
- | pas le cas, l' | + | |
- | contrôleut vidéo saute des espaces entre chaque higne. 51 l‘écran est | + | |
- | ordinaire, le contrôleur vidéo affiché sous forme graphique le contenu | + | |
- | de la mémoire situé après la zone mémoire vidéo. | + | |
- | Si vous voulez la voir, taper SPOKE BHFFS20F ,80. Le résultat cst garanti, | + | |
- | surtout avec le bureau GEM. Les barres de l' | + | |
- | sans cesse correspondent aux zones système du ST qui sont cont+ | + | |
- | nuellement modifiées par le système d' | + | |
- | effer vidéo, taper en aveugle SPOÉKE & | + | |
- | Scrolling horizontal | + | |
- | Pour réaliser un scrolling horizontal, on peur déplacer une fenêtre | + | |
- | de visualisation sur un écran virtuel. D' | + | |
- | programme, La fenêtre de visualisation est l' | + | |
- | le contenu de l' | + | |
- | fonctions spécialisées du STE. | + | |
- | ECRAN VIRTUEL | + | |
- | ECRAN PHYSIQUE: | + | |
- | FEMETRE SUR | + | |
- | ECRAN VIRTUEL | + | |
- | ATARI MAGAZIME m BEST OF GhRa BASIC | + | |
- | À chaque position de la fenêtre de visualisation correspond une | + | |
- | adresse pour la mémoire vidéo. Pour déplacer la postion de la | + | |
- | fenêtre, il suffit donc de changer une adresse. | + | |
- | Le ST ne tient compte du changement d' | + | |
- | affiché l' | + | |
- | 5t le programme Ehfl: | + | |
- | modification sera prise en compré. | + | |
- | Pour éviter cela, après chaque changement d' | + | |
- | l' | + | |
- | rante, C'est la tâche de l' | + | |
- | XB10S(5) 1 Changement adressé mémoire vidéo | + | |
- | VSYNC | Attente fin affichage image courante | + | |
- | Puisque le ST affiche cinquante images par seconde, la vitesse. de | + | |
- | scrolling ne peut pas dépasser cinquante décalages à la seconde. Ceci | + | |
- | dit, chaque décalage peur correspondre à autant de pixels que vous le | + | |
- | P | + | |
- | Scrolling horizontal | + | |
- | 16 pixels par 16 pixels | + | |
- | La structure de l' | + | |
- | sont stockes par groupe de 16 dans des blocs de 8 octets, Cette struerure | + | |
- | particuliere est liée au système de codage des pixels par plan de | + | |
- | couleurs. On peut réaliser un scrolling horizontal sur un écran virtuel | + | |
- | en faisant simultanément varter l' | + | |
- | ; térligne. Etant donné que le codage interne des pixels se fait par | + | |
- | blocs de 16 pixels (8 octets), le scrolling ne peut se faire que par | + | |
- | blocs de 16 pixels, | + | |
- | L' | + | |
- | done de quatre-vingt mots, L' | + | |
- | fonction XBI0S(5). Pour réaliser un scrolling horizontal vers la | + | |
- | droite, il Faut déplacer l’adresse de Pécran logique de 8 neters à la fois, | + | |
- | Chaque déplacement dé & octéts correspond à un déplacement visuel | + | |
- | de 16 prxels. | + | |
- | adr pic*=MALLOC(64000) | + | |
- | SPOKE & | + | |
- | FOR bloc%=0 TQ 19 | + | |
- | adr& | + | |
- | VOID XBIOS(5, | + | |
- | CVSYNC | + | |
- | NEXT bloc® | + | |
- | SPOKE 8HFF820F, | + | |
- | VOID MFREE(adr pic*) | + | |
- | END | + | |
- | Ce programme est incormplét. Il s’agit juste d'un exemple montrant | + | |
- | la téchnique de base de scrolling. L' | + | |
- | remplir avec une image qu: | + | |
- | démonstration. | + | |
- | Si vous voulez réaliser un programme complet, inspirez-vous du programime | + | |
- | survant. | + | |
- | ATARI MAGAZIME | + | |
- | Scrolling horizontal pixel par pixel | + | |
- | Pout réaliser un scrolling horizontal pixel par pixel, il faut positionner | + | |
- | l’écran physique par mpport à l' | + | |
- | variable système d' | + | |
- | Elle contient une valeur que l'on appelle l’affeet de pixel, | + | |
- | T_, | + | |
- | par lire le bloc mémoire correspondant aux seize premiers pixels | + | |
- | de la ligne. L' | + | |
- | doit commencer l' | + | |
- | comménce au premier pixel du bloc. Clest le mode normal d' | + | |
- | (le seul permis par le STF). | + | |
- | Pour réaliser un déplacement de pixel, 1l suffit de modirfier la valeur | + | |
- | de la variable & | + | |
- | par pixel sur une longueur de 16 pixels, | + | |
- | FOR offset pixel%=0 T0 15 | + | |
- | VSYNÉ | + | |
- | SPOKE & | + | |
- | NEXT offset pixel% | + | |
- | Si vous utilisez ce programme sur un écran noemal, le résultat risque | + | |
- | d’être surprenant. Pour obtenir un scrolling correct, il faut créer un | + | |
- | &space virmuel dont la largueur est supérieure à celle de Pécran. | + | |
- | L' | + | |
- | largueur éti octers est de 168 octers. L' | + | |
- | donc de quatre mots. | + | |
- | La taille ce l' | + | |
- | DUFN ettt RRN EÉ E N | + | |
- | ! # SCROLLING HORIZONTAL * | + | |
- | * # SUR 16 PIXELS 1y | + | |
- | D et b T e DL o ke | + | |
- | adr_pick=MALLOC{33600) | + | |
- | VOID XBIOS(5, | + | |
- | VSYNC | + | |
- | SPOKE AHFF8265, | + | |
- | FOR offset pixel%=0 T0 15 | + | |
- | VSYNC | + | |
- | SPOKE EhFF8265, | + | |
- | NEXT offset pixels | + | |
- | VOID MFREE(adr pick) | + | |
- | END | + | |
- | Si vous exécurez ce programme, vous constaterez qu'il ne fonctionne | + | |
- | pas. La raison est que l’affset de figne est variable. Lorsque l' | + | |
- | pixel vaut 0, l' | + | |
- | pixel est différent de 0, le contrbleur vidéo doit lire les prxels restants | + | |
- | dans le bloc de 16 pixels suivants. La valeur de l' | + | |
- | alors diminuer de la taille d’un bloc de 16 pixels, c' | + | |
- | (quatre mots). | + | |
- | Voici une version corigée du programme d' | + | |
- | de pixel est égal à O, l' | + | |
- | différent de 0, l’offrez de ligne vaut 0. Le programme de scrolling ho- | + | |
- | BESTOFGFA BASIC | + | |
- | rizontal publié dans Atari Magazine N°6 donnait un scrolling saccadé | + | |
- | car l' | + | |
- | L d i e e d e d o é d o e e o o ol | + | |
- | ! # SCROLLING HORIZONTAL * | + | |
- | ! * NON SACCADE A | + | |
- | ' * SUR 16 PIXELS ¥ | + | |
- | | RHN É RE RR RR EEE | + | |
- | adr_pit%=HñLLÜÈË335üÜ] | + | |
- | VOID XBIOS(5, | + | |
- | VSYNC | + | |
- | SPOKE & | + | |
- | FOR offset pixel%=0 TO 15 | + | |
- | VSYNC | + | |
- | SPOKE EhFF8265 offset pixel | + | |
- | IF offset pixel%=0 | + | |
- | SPOKE & | + | |
- | ELSE | + | |
- | SPOKE AHFF8265, | + | |
- | ENDIF | + | |
- | NEXT offset pixel® | + | |
- | VOID MFREE(adr_pic*) | + | |
- | END | + | |
- | Attention: dans ce programime, l' | + | |
- | est différent de 0. Clest un cas particulier qui n'est valable que | + | |
- | dans cet exemple simple. 11 ne faur pas oublier que si l' | + | |
- | =t différent de O, l' | + | |
- | moins 4 (dans l' | + | |
- | Si vous travaillez sur un écran virtuel constitué de deux écrans mis | + | |
- | bout à bout (160 octetsx2~320 octets, donc 160 mots), l’offset de | + | |
- | ligne vaut 80 si l' | + | |
- | contraire, | + | |
- | Exemple de scrolling horizontal | + | |
- | pixel à pixel | + | |
- | Voici un programme de démonstration qui effectue un serolling horizontal | + | |
- | entre deux images Depas Efire. Ce scrolling est réalisé en | + | |
- | déplaçant une fenêtre sur un écran virtuel. L' | + | |
- | de deux images Degas Elite mises bout à bout, 5a taille est de | + | |
- | 64000 octets (2x32000 octets). | + | |
- | IMAGE ! IMAGE 2 | + | |
- | Le scrolling est réalisé en déplaçant une fenêtre sur l’écran virtuel, | + | |
- | Pour positionner l' | + | |
- | l' | + | |
- | À certe position, la valeur de l' | + | |
- | l’offier de ligne. | + | |
- | pffsét pixel%=px% MOD 16 | + | |
- | adrfiphy5%=fldrdpic%+{px% DIV 16)*8 | + | |
- | IF offset pixel%=0 | + | |
- | offset lignes=80 | + | |
- | ELSE | + | |
- | offset ligne*=-76 | + | |
- | ENDIF | + | |
- | Le numéro du bloc est obtenu en divisant la position d' | + | |
- | 16. Comme un bloc correspond à 8 écters, on multiplie ensurte le | + | |
- | numéro de bloc par 8 afin d' | + | |
- | adr_block=(px% DIV 16)*8 | + | |
- | Cette adresse t relative à la zone mémoire contenant l' | + | |
- | obtenir une adresse absolue, il faut y additionner l' | + | |
- | mémoire, | + | |
- | adr_block=adr_img%+(px%s DIV 16)*8 | + | |
- | La valeur de l' | + | |
- | offset pixel%-px% MOD 16 | + | |
- | La valeur de l' | + | |
- | (80-4) si l' | + | |
- | La procédure Éposition fenetre(px) calcule aumnmfiquemer_l: | + | |
- | paramiètres de la fenètre correspondant à la pasition px, Une {ülîllü | + | |
- | paramètres dérerminés, | + | |
- | correspondant à la position px. Une fois la procédure @position | + | |
- | fenetre créée, les routines de scrolling sont particulièrement | + | |
- | slmpÈr. à realiser. Pour scroller une image vers la gauche, il suffic de | + | |
- | positionner la fenêtre sur la position O de l' | + | |
- | cer cétté position vers la gauche d’un pixel à la fois. | + | |
- | @position fenetre(0) | + | |
- | FOR px%=0 TO 320 | + | |
- | éposition fenetre(px# | + | |
- | NEXT px% | + | |
- | Pour réliser un scrolling vers la droite, il faut positionner la fenêtre | + | |
- | au bout de l' | + | |
- | gauche (px=0). | + | |
- | fposition fenetre(0) | + | |
- | FOR px*-320 TO D STEP -l | + | |
- | @position fenetre(px*) | + | |
- | NEXT px% | + | |
- | Le programme stocke deux images Degas Elite en mémoire et realise | + | |
- | un scrolling allant d’une image à une autre. Les images sont chargéés | + | |
- | dans la mémoite écran initizle, puis recopiées dans l' | + | |
- | tenant compte de sa structure parriculière (160 ocrets de l' | + | |
- | suivis de 160 octets de l' | + | |
- | | RRRTERRÉRR RRN ETE ÉÉ RR | + | |
- | ! # SCROLLING HORIZONTAL * | + | |
- | D e e AR TR PR AR T T e e L R R ok | + | |
- | ATAR| MAGAZIME E BEST OF GFA BASIC | + | |
- | RESERVE 100007 | + | |
- | HIDEM | + | |
- | adr_pict-MALLOC(64000) | + | |
- | adr sauve%=XEI05(2) | + | |
- | i A dr r rrr é d e é d drrec de dr de d d k 0 0 0 E E E E E | + | |
- | ' * CHARGEMENT PREMIERE IMAGE * | + | |
- | D 1 1U 64 A A U o A RU E E E R E E e e e o R RR RS | + | |
- | @load degas{" | + | |
- | adr ecrans=XBI05(2) | + | |
- | adr memoires=adr _ pic# | + | |
- | FOR 1%=0 TO 199 | + | |
- | EMOVE adr ecrans,adr mémoires, 160 | + | |
- | ADD adr ecrans, 160 | + | |
- | ADD adr memoires, | + | |
- | MEXT 1% | + | |
- | BMc d d e d d é e e e e e smE A TR | + | |
- | * # CHARGEMENT SECONDE IMAGE * | + | |
- | I E d d d A 0 e e A E A e e e e e e e x | + | |
- | Bload degas(" | + | |
- | adr ecran¥=XB105(2) | + | |
- | adr memoire*=adr pic#+1b0 | + | |
- | FOR 1%=0 TO 199 | + | |
- | BMOVE adr ecran%,adr memoire= 160 | + | |
- | ADD adr ecrans, | + | |
- | ADD adr memoire*, 320 | + | |
- | MEXT 1% | + | |
- | CLS | + | |
- | PRINT " | + | |
- | PRINT " | + | |
- | VOID INP(2) | + | |
- | [ | + | |
- | I *******tfl*itwwwt*ttt*t%**#: | + | |
- | | * SCROLLING VFRS LA DROITE * | + | |
- | | AARERRAE ERERN RAA RER | + | |
- | FOR px&=0 TO 320 | + | |
- | @position fenetre(px%) | + | |
- | NEXT px% | + | |
- | ï | + | |
- | L E r d e 00 E E bl e e e d e ok ok o ok d d d d | + | |
- | ! * SCROLLING VERS LA GAUCHE #* | + | |
- | 1 ph d é e d e d R e d e e ek e E d | + | |
- | FOR px%=320 TO O | + | |
- | Gposition fenetre(px%) | + | |
- | NEXT px | + | |
- | VOID INP{2) | + | |
- | | RR RN uRE ÉÉ A AN A E AN N AR RERR | + | |
- | ' * REMISE ECRAN DANS ETAT INITIAL | + | |
- | | HFh EEeéEE A RE e E | + | |
- | SPOKE LHFF8265, | + | |
- | SPOKE EBHFFB20F, | + | |
- | VOID XBIOS{5, | + | |
- | VS5YNC | + | |
- | VOID MFREE(adr pick) | + | |
- | SHOWM | + | |
- | EN | + | |
- | E OE E I e RP E E TIR | + | |
- | ' * AFFICHAGE DE LA FENETRE ECRAN * | + | |
- | l RE ÉN A E RE R AN A IERE | + | |
- | PROCEDURE position fenetre(px%) | + | |
- | LOCAL offset pixel% | + | |
- | LOCAL adr physs | + | |
- | LOCAL offset ligne# | + | |
- | offsét pixel& | + | |
- | adr_phys%=adr_pici+(px% DIV, 16)*8 | + | |
- | IF offset pixels=0 | + | |
- | “ offset lignes=80 | + | |
- | ELSE | + | |
- | offset ligne=76 | + | |
- | ENDIF | + | |
- | VOID XBI0S(5, | + | |
- | VSYNC | + | |
- | SPOKE EHFFB265, | + | |
- | SPOKE EHFFEZOF, | + | |
- | RETURN ; ; | + | |
- | I UEAAÉÉHREÉ RR kR ARt btk E RR RR E | + | |
- | ! * CHARGEMENT IMAGE DEGAS ELITE * | + | |
- | PROCEDURE Toad degas(nomd, | + | |
- | LOCAL pal5 | + | |
- | Ï | + | |
- | pal$=sPACE*{32} | + | |
- | OPEN " | + | |
- | SEEK #1.2 | + | |
- | BGET # | + | |
- | VOID XBIOS(6, | + | |
- | BGET # | + | |
- | CLOSE #1 | + | |
- | RETURN | + | |
- | La vitesse de scrolling horizontal peur être accélérée en augmentant | + | |
- | le pas d' | + | |
- | Avec 2 pixels, la vitesse est doublée, Avec 4 pixels, la vitesse est encore | + | |
- | doublée, | + | |
- | Remarque: le système de scrolling modifie l' | + | |
- | vidéo. Il faut remettre l' | + | |
- | surprises désagréables. Le programme sauve l' | + | |
- | variable adr_sauve*, | + | |
- | Scrolling horizontal , | + | |
- | commandé par la souris | + | |
- | Pour obtenir un effet spectaculaire, | + | |
- | 1ux positions de la souris. C'est très facile à réaliser en affichant la | + | |
- | fenêtre de visualisation à la position courante de la souris. | + | |
- | ATARI MAGAZINE KIM BEST-OFGEA BASIC | + | |
- | [ | + | |
- | xnfs=MOUSEX | + | |
- | EXIT IF MOUSEK=> | + | |
- | Gpostition fenetre(xmé) | + | |
- | LOUP | + | |
- | Cette routine fonctionne bien, mais elle présente un défaut. La fené | + | |
- | tre de visualisation est sans cesse redessinée à l' | + | |
- | il faut écrire une rourine qui attende un déplacement de la souris | + | |
- | pour redessiner la fénêtre de visualisation. | + | |
- | x 0% =MOUSEX | + | |
- | Bposition fenetre{x0%) | + | |
- | D0 | + | |
- | [0 | + | |
- | xm*=MOUSEX | + | |
- | EXIT IF emÿe=x05 | + | |
- | EXIT IF MOUSEK==0 | + | |
- | LOOF | + | |
- | EXIT 1F MOUSEK==0 | + | |
- | @position fenetre(xm6) | + | |
- | MUFE= AIN | + | |
- | LOOP | + | |
- | La position de départ de la souris est mémorisée dans la variable | + | |
- | x. Une boucle DO-LOOP bloque l' | + | |
- | que la souris ne change pas de position x. Etant donné qu'il y à deux | + | |
- | boucles DO-LOOP la condition de sortie (clic sur la souris) est tescéé | + | |
- | deux fois (EXIT IF kmi=< | + | |
- | Pour obtenir le programme complet, il faut reprendre le programme | + | |
- | de scrolling et le modifier légérement. | + | |
- | Remarqué: dans lé programme précédent, | + | |
- | est déplacée de la position © à la position 320. Etant donné que la | + | |
- | position de la souris ne peur varier qu' | + | |
- | de l' | + | |
- | affichée à l' | + | |
- | Utilisation simultanée des scrollings | + | |
- | verticaux et horizontaux | + | |
- | Après le scrolling vertical et le scrolling horizontal, voies mamtenant | + | |
- | un programme d’exemple qui utilise simultanément les deux modes | + | |
- | de scrolling, 11 affiche une fenétre sur un écran virtuel de 640x4C0 prxels. | + | |
- | Cet écran virtuel est remplis avec quatre images Degas Efite. La | + | |
- | fenêtre de visualisation est déplacée avec la souris. L' | + | |
- | quatre images Degas Flite, donc 128000 octets (4x32000 octers), | + | |
- | Les lignes d'uné même image sont séparées par 160 nctets. Pour calculer | + | |
- | l' | + | |
- | lui ajouter la valeur 320. | + | |
- | Ce chiffre correspond à la longueur de la ligne (i60 octets}, additionné | + | |
- | à Ja longueur de l’espace interligne (160 octets). On obtient | + | |
- | donc un votal de 320 octets. | + | |
- | L’imagé IMAGE 1 commence à Padresse de l' | + | |
- | IMAGE Z commence à l’adresse de l’écran virtuel plus 160 octets. | + | |
- | L' | + | |
- | octers. Et enfin, l' | + | |
- | virtuel plus 32160 octers (32000 +160). | + | |
- | IMAGE 1 IMAGE 2 | + | |
- | . | + | |
- | La procédure Bfixe ecran(px, | + | |
- | à la position (px,py). Nous avons vu plus haur que la posiuon | + | |
- | de la mémoire écran est définie par une adresse, un offset de figne et | + | |
- | un offfet de pixel. Les lignes sont séparées par 80 mots (160 octets). | + | |
- | L' | + | |
- | de 76 (80-4) dans le cas inverse. L' | + | |
- | MODULO, | + | |
- | offset pixel& | + | |
- | L' | + | |
- | v. La position y sert à dérerminer l' | + | |
- | x sert à calculer l' | + | |
- | à l’adresse de la ligne, | + | |
- | adr ligne%=adr picspy4" | + | |
- | adr physt“adr _ ligne%+(px# DIV 16)*8 | + | |
- | Le programme commence par remplir l' | + | |
- | imapes Degas Elire. Les images sont chargées avec la procédure | + | |
- | @load degas dans une mémoire tampon, puis rméopiées à leurs | + | |
- | pla: | + | |
- | tampon permet d' | + | |
- | cialisation du programme. | + | |
- | | HRN NRREREERTÉERR E R AR RE RE E | + | |
- | ! * SCROLLING SUR UN ECRAN VIRTUEL * | + | |
- | * & DE 640*400 (4 IMAGES DLGAS) * | + | |
- | P RV S0 R R S T S e B S R A | + | |
- | * * () ATARI MAGAZINE 1901 = | + | |
- | ! * (C) PATRICK LECLERCO 1991 ñ | + | |
- | | 4R RÉEÉ É AN RE E EN E R RE | + | |
- | ! * PROGRAMMATION GFA BASIC 3.xx A | + | |
- | I +ggqt****t*# | + | |
- | RESERYE 100000 | + | |
- | HIDEM | + | |
- | adr tampont=MALLOC(32000) | + | |
- | adr_pi c%=MALLOC (128000) | + | |
- | adr sauve%*=XBTOS(2) | + | |
- | ! | + | |
- | I E E ME M E Ac ue d d e e A d d d d E d e e e d | + | |
- | " * CHARGEMENT PREMIERE IMAGE * | + | |
- | D RR e L e e = R S | + | |
- | E]nad_degfifi[" | + | |
- | adr ligne¥=adr tampons | + | |
- | ATARI MAGATIME BEST OF GRA BASIC | + | |
- | ddr copies=apdicr* | + | |
- | FOR 1%=1 TO 200 | + | |
- | BMOVE adr ligne%,adr copie%, 160 | + | |
- | ADD adrT igne%1,60 ; | + | |
- | ADD adr copies32, | + | |
- | NEXT 1% | + | |
- | i | + | |
- | Lo e e m ETE R A Wl el R R W R | + | |
- | - * CHARGEMENT SECONDE IMAGE * | + | |
- | L r d e e d d d e A A R | + | |
- | @load degas({" | + | |
- | adr_1ignef=adr tampon¥ | + | |
- | adr coplgk=adr pics+le0 | + | |
- | FOR 1%=1 TO Z0 | + | |
- | BMOYE adr lignes,adr copies, 160 | + | |
- | ADD adr1 1gne%16,0 | + | |
- | ADD- adr copies, 320 | + | |
- | NEXT 1% | + | |
- | i | + | |
- | Bl E W e e o W W W R R W | + | |
- | * * CHARGEMEWT TROTSIEME IMAGE * | + | |
- | | e d e e e kA e d e d e e e e e r d é E | + | |
- | Éload degas( " | + | |
- | ddr |1gne%=-adr tampon% | | + | |
- | adr copies=adr pich+64000 | + | |
- | FOR- 1=1 TO 200 | + | |
- | BMOVE adr _ ligne%,adr copie%, 160 | + | |
- | ADD adr ligne%, | + | |
- | ADD adr copies, | + | |
- | NEKT 1% | + | |
- | l' S e r E e L L e E | + | |
- | ' # CHARGEMENT QUATRIEME IMAGE * | + | |
- | | xRk A A A A A AR TR A A AT AN AT ANk | + | |
- | Bload degas(" | + | |
- | ädr ligne%=adr tampon% | + | |
- | ädr copiessadr pic& | + | |
- | FOR 1%-1 TD 200 | + | |
- | BMOVE adr ligne%,adr copie%, 160 | + | |
- | ADD adr ligne%, | + | |
- | ADD adr copief32, | + | |
- | NEXT 1% | + | |
- | UEU AAR E R A d e d PE | + | |
- | itk INITIALISATION DE LA Ly | + | |
- | * * FENETRE DE VISUALISATION * | + | |
- | D ONÉTTAT E RRRÈ RA eA eE eE d E | + | |
- | SETMOUSE 160, 100 | + | |
- | MOUSE XiVf é, K,M | + | |
- | @fixe ecran(xm®, ym®) | + | |
- | XU SM | + | |
- | I oA AR AR A Ay Akttt | + | |
- | * Æ BOUCLE PRINCIPALE * | + | |
- | I RÉÉARHAXEREEE RE RRd | + | |
- | oo | + | |
- | Lo | + | |
- | MOUSE 0w, yis , ki | + | |
- | EXIT IF ([xmi=< | + | |
- | EXIT IF kmis=> | + | |
- | LOOP | + | |
- | EXIT IF kmés==0 | + | |
- | Bfixe ecran(xms, | + | |
- | x0é =xn - | + | |
- | VOFS@ YMFs | + | |
- | LOUF | + | |
- | | VR S ÉÉÉ R TPEe RN | + | |
- | !* REINITIALISATION DE L' | + | |
- | | *****# | + | |
- | SPOKE RHFEFBPES, | + | |
- | SPOKE & | + | |
- | VOID XBIOS(5, | + | |
- | VSYNC | + | |
- | VOID MFREEÇadr pic#) | + | |
- | VOID MFREE(adr_tampons) | + | |
- | SHOWM | | + | |
- | END | + | |
- | | Spde e g gk o ok e e e ey e ol o o ol ol | + | |
- | ' * MODIFICATION POSITION * | + | |
- | se ECRAN VIRTUEL # | + | |
- | | RRRERERTATEARETEANETETETEEFEEX | + | |
- | PROCEDURE fixe ecran(px*, | + | |
- | LOCAL offset pixel* | + | |
- | LOCAL adr phys | + | |
- | LOCAL offset lignes | + | |
- | LOCAL adr ligne% | + | |
- | ädr Tigne*=adr pic& | + | |
- | offset pixel%-px% MOD 16 | + | |
- | adr_phïsä=adr_1îgneäü[p: | + | |
- | IF offset pixel%eD | + | |
- | offset lignes=80 | + | |
- | ELSE | + | |
- | offset ligne%=76 | + | |
- | ENDIF | + | |
- | VOID XBIOS(5, | + | |
- | VS5YNC | + | |
- | SPOKE BHFF8Zb5 ,offset pixel% | + | |
- | SPÔKE BHFFBZOF,of fset Tignes | + | |
- | RETURN | + | |
- | [ | + | |
- | Wy A A A e e o i e A | + | |
- | " # CHARGEMENT IMAGE * | + | |
- | v DEGAS ELITE 5 | + | |
- | D RESREF | + | |
- | PROCEDURE load degas{nom}, | + | |
- | LOCAL pal$ | + | |
- | pal$=5PACE4{32) | + | |
- | OPEN " | + | |
- | SEEK: #1,2 . | + | |
- | BGET # | + | |
- | ATARI MAGAZINE fi BEST OF GRA BASIC | + | |
- | VOID XB105(6, | + | |
- | BGET # | + | |
- | CLOSE #l | + | |
- | RETURN | + | |
- | L’ucilisation d'une mémoire tampon pour le chargement des images | + | |
- | permet d’éviter leur affichage à l’écran. Le tampon prend 32000 octets | + | |
- | de mémoire. Pour éviter cela, on peut écrire une routine qui | + | |
- | cha;rgi: directement une irflfägü‘. lJegas Etite dans l' | + | |
- | PROCEDURE charge degas(nomÿ, | + | |
- | LOCAL pall | + | |
- | LOCAL Tigne%,adr lignes | + | |
- | pal §=SPACES(32) | + | |
- | OPEN " | + | |
- | SEEK #1,7 | + | |
- | BGET # | + | |
- | VOID XBIOS(6, | + | |
- | adr ligne%=adr images | + | |
- | FOR Tigne%=1 TO 200 | + | |
- | BGET #1,adr 11gne%, 160 | + | |
- | ADD adr 1igne%, | + | |
- | MEXT ligne* | + | |
- | CLOSE #1l | + | |
- | HEXT ligne* | + | |
- | Le Eîu: | + | |
- | plus facile à programmer. | + | |
- | Ëcharge_fiegaa[" | + | |
- | ëcharge_degaEE" | + | |
- | Ücharge_degaaf“îflflü[a.Pll" | + | |
- | @charge dégas(" | + | |
- | Artention: la routine écharge degas est une routine spécifique qui | + | |
- | ñe fonctionne qu' | + | |
- | (320 octers de large). | + | |
- | Pour avoir une routiné fonctionñnant avec un autré écran virtuel, 1l | + | |
- | faut modifier la ligne ADD ade 13 gnes, 320 en tonant compte de la | + | |
- | largueur du nouvel écran. | + | |
- | Déplacement souris sur un écran virtuel | + | |
- | de taille quelconque | + | |
- | F . 1 ! . i e E Les déplacements de là fénêtre de visualisation étant liés aux déplace- | + | |
- | ! - = . b .\. ments de la souris, la dernière ligne et la dérnière colonne de l' | + | |
- | virtuel ne sont jamais affichés par le programmé, On ne peur utiliser | | + | |
- | le système précédent que pour un écran de 639x359 pixels. Pour | + | |
- | déplacer la fenêtre de visualisation avec la buris sur un écran virtue! | + | |
- | de raille quelconque (mais supérieur à l' | + | |
- | souris de manière differente. | + | |
- | La position X de la souris varie entre 0 ot 319, et la position Ÿ varie | + | |
- | entre O et 199 pixels. Pour obtenir un déplacement sur un écran de | + | |
- | ‘dimension quelconque, if ne faut pas renir compte des déplacements | + | |
- | absolus de la souris, mais des déplacements relatifs. Pour obtéñir un | + | |
- | déplacement relatif, il faut positionner la souris à un emplacement | + | |
- | orécis de l’écran et attendré que sa position change. La valeur du deplacement | + | |
- | relatif est la différence entre la nouvelle position de la | + | |
- | souris et sa position initiale, Dès que lc déplacement relatif est caleu- | + | |
- | |, le programme doit repositionner la souris sur sa pesition initialé. | + | |
- | Après un déplacement souris, le programme doit caleuler la nouvelle | + | |
- | position de la fenêtre de visualisation. Ce calcul est effectue en additdonnant | + | |
- | le déplacement relatif avec la position courante de ls fenétre | + | |
- | de visualisation. Tl peut arriver que le çaleul du déplacement donne | + | |
- | des coordonnées en dehors de l' | + | |
- | doit exercer un contrôle sur les coordonnées de la fenêtre. | + | |
- | Lec variables xmax$ et ymax% contiennent les positions extrêmes de | + | |
- | la fenêtre. Les positions minimales sont (0,0). | + | |
- | xinax# | + | |
- | vmaxés=200 | + | |
- | SETMOUSE 160,100 | + | |
- | xaffr=-100 | + | |
- | vaff==100 | + | |
- | @fixe ecran(xafyfaféfs, | + | |
- | i | + | |
- | Do | + | |
- | | kkdxeddR WA AR TRk RN E | + | |
- | ! * ATTENTE ACTION SOURIS * | + | |
- | I #HF AAAARÉÉRRaNNVAÉRRÉÉ | + | |
- | oo | + | |
- | MOUSE e , v, ks | + | |
- | EXIT IF (xmé< | + | |
- | EXIT IF kmé=e=0 | + | |
- | LOQP | + | |
- | EXTT IF kmfe==0. | + | |
- | i | + | |
- | | ek hE Al E R RR R ettt | + | |
- | | * CALEUL POSITION X FEMETRE ” | + | |
- | P ORF T E TR R R e | + | |
- | LF =160 | + | |
- | dx*=xmé-160 | + | |
- | ADD xaff=,dx% | + | |
- | IF xaff#=0 | + | |
- | xaff*=0 | + | |
- | ENOTF | + | |
- | IF xaffa=xmax= | + | |
- | xaff# | + | |
- | ENDIF | + | |
- | ENDIF | + | |
- | P e e i o b e bl e b e e E E E e | + | |
- | "% CALCUL POSITION Y FENETRE * | + | |
- | E E E E E E ARV GR A SRR A | + | |
- | LF ymée=100 | + | |
- | dyf=yms-100 | + | |
- | ADD vaff*,dy4 | + | |
- | IF yaff==< | + | |
- | vaftæ=l | + | |
- | ENDIF | + | |
- | IF vaffs=ymaxt | + | |
- | ATARI MAGALINE m BEST OF GRA BASIC | + | |
- | yaffi=ymaxs | + | |
- | ENDIF | + | |
- | ENDIF | + | |
- | SETMQUSE 160,100 | + | |
- | @fixe ecran(xaffs, | + | |
- | LOOF | + | |
- | Éémarque‘ en modifiant les valeurs de Imh' | + | |
- | TIS, ON peut limiter le 5r.m|]1' | + | |
- | Cela peur être utile dans certaines applications, | + | |
- | mité les déplacements de la fenêtre de visualisation entre les coordonnees | + | |
- | (50,50) et (200, | + | |
- | xmin#=50 | + | |
- | ymin%=50 | + | |
- | xmax%=200 | + | |
- | ymax#=150 ‘ | + | |
- | 1F xaffs< | + | |
- | xafft-xmin® | + | |
- | ENDIF | + | |
- | IF xaff# | + | |
- | xaff%=xmax | + | |
- | EMDLF | + | |
- | 1F vaffä< | + | |
- | yaoff==ymins | + | |
- | ENDIF | + | |
- | IF vaîf%=vmaxt | + | |
- | vatTa=ymaxs | + | |
- | ENDIF | + | |
- | Taille des écrans virtuels | + | |
- | La place mémoire prise par les écrans virtuels croit rapidement en | + | |
- | fonction de leurs tailles. Un écran virtuel de 2x2 images prend 128 | + | |
- | Ko, Un écran de 354 images prend 288 Ko. La taille d'un écran vircuel | + | |
- | doit correspondre à oertaines conditions: elle doit être supérienre | + | |
- | ou égal à la taille d’un écran normal et la largueur de l’écran coit | + | |
- | être un mulriple de 16. | + | |
- | Par exemple, On peur créer un écran virtuel de 592x257 pixels. Une | + | |
- | largueur de 592 pixels correspond à 37 blocs de 16 pixels. Les lignes | + | |
- | de cec écran ont une taille de 296 octets {un bloc de 16 pixels = 5 oetets}. | + | |
- | La taille mémoire de l' | + | |
- | Pour finir | + | |
- | Maintenant que vous savez gérér les 4096 couleurs et le scrolling | + | |
- | hard du STF, vous pouvez réaliser des programmes intéressants et de | + | |
- | superbes démos Envoyez-nous vos réalisations, | + | |
- | ATAR| MACAZIMNE m BEST OF GFA BASIC | + | |
- | ST, 11, FALCON et le r | + | |
- | Abonnez | + | |
- | branché | + | |
- | vous 4 | + | |
- | este | + | |
- | Start Micro | + | |
- | Mugulll‘le | + | |
- | Chaque mois: | + | |
- | « des infos, | + | |
- | + des tests, | + | |
- | desconseils, | + | |
- | « des initiations, | + | |
- | J | + | |
- | 1 disquette pleine de | | + | |
- | programmes, d' | + | |
- | sons, efrc. | + | |
- | Wotre abonnement vous donne | + | |
- | accès à "3615 MICROHELP” | + | |
- | Wotre abonnement vous | + | |
- | procurera des réductions | + | |
- | intéressantes sur le | + | |
- | téléchargement et l’achat de | + | |
- | disquettes de logiciels du | + | |
- | domaine public | + | |
- | vutre abonnement vous fera | + | |
- | bénéficier de tarifs | + | |
- | promotionnels sur certains | + | |
- | logiciels du commerce | + | |
- | Ahnn nez- vous et | + | |
- | économisez immédiatement | + | |
- | 80 F | + | |
- | Bulletin d' | + | |
- | GRAPHISME EN GFA BASIC | + | |
- | Faites flasher vos écrans | + | |
- | Les effets vidéo permettent d' | + | |
- | graphiques et vos jeux. Nous vous proposons quelques conseils et | + | |
- | explications pour bien en comprendre le fonctionnement. | + | |
- | Instruction BMOVE | + | |
- | Elle permet de copier très rapidement une zone mémoire (environ | + | |
- | 16€0 ko à la seconde). On l' | + | |
- | graphiques. | + | |
- | BMOVE adr org, adr dest, nb octets, | + | |
- | adr org : adresse de la zone mémoire d' | + | |
- | adr dest : adresse de la zone mémoire de destinalion, | + | |
- | nb octets : nombre d' | + | |
- | Structure mémoire de l' | + | |
- | L' | + | |
- | graphiques est différent selon le mode graphique utilisé | + | |
- | La basse résolution est organisée en 200 lignes de 320 pixels avec 16 | + | |
- | couleurs possiblés par pixel. Chaque ligne à tne taille de 160 oetets. | + | |
- | Un octet contient donc la représentation binairé de 2 puxels, C'est le | + | |
- | mode graphique le plus utilisé pour les jeux. | + | |
- | Les programmes donnés cn exemple dans cet article sont prévus | + | |
- | pour la basse résolution. | + | |
- | La moyente résolution est organisée en 200 lignes de 640 pixels avec | + | |
- | 4 couleurs par pixel. Les lignes font toujours 160 pixels, mais yn octer | + | |
- | contient la représentation binaire de 4 pixels. C'est un mode graphique | + | |
- | rarement utilisé pour les jeux. Il sert pour les applications | + | |
- | professionnelles réalisées par les vtilisateurs qui n'ont pas de meori | + | |
- | teur monochrome haure résolution. | + | |
- | La haute résolution fait 400 lignes de 640 pixels en deux couleurs. | + | |
- | Les lignes ont une taille de 80 octets. Un octer contient la représentation | + | |
- | binaire de & pixels. Ce modé graphique nécessite un moniteur | + | |
- | monochrome de haute performance. La plupart des appheations | + | |
- | professionnelles utilisent la haute résolution. | + | |
- | Manipulation de l' | + | |
- | L' | + | |
- | ! L " ë P des parties de l' | + | |
- | mémoire et ensuite le reatfiéher. | + | |
- | 1 dc d d d d d e d d E | + | |
- | ! # SAUVEGARDE DE L' | + | |
- | I RRN E e d d E LD RE | + | |
- | adr tampon# = MALLOC{32000) |RESERVATION MEMOIRE | + | |
- | BMOVE XB10S(2), | + | |
- | cLS 1EFFACEMENT ECRAN | + | |
- | VOID INP(2) LATTENTE CLAVIER | + | |
- | BMOVE adr tamnon&, | + | |
- | vo1D INP(2) LATTENTE CLAVIER | + | |
- | VOID MFREE(adr tampon#) | LIBERATION MEMOIRE | + | |
- | Certe technique fonctionne dans toutes les réolutions du ST. La | + | |
- | foncrion «File select» et les boîtes d' | + | |
- | fait, élles ne sauvent pas toute l' | + | |
- | Manipulation des lignes | + | |
- | En faisant des manipulations graphiques des lignes, on obrient des | + | |
- | effets intéressants. Il faur connaître l' | + | |
- | les copier grace à BMOVE Le numéro des lignes varie entre O et 199 | + | |
- | pour la basse et la moyenne rétolution, | + | |
- | résolution. | + | |
- | Adresse d'une ligne Adr 1igne = Adr ecran+Ligne*Taille ligne | + | |
- | Basse résolution: | + | |
- | Movenne résolution: | + | |
- | Haure résolution: | + | |
- | Exemple simple | + | |
- | On peut faire un petit programme qui copie la première ligne d'un | + | |
- | écran sur tout l' | + | |
- | PROCEQURE copie ligne LOCAL adr lignels | + | |
- | LOCAL adr copie% | + | |
- | LOCAL ligne copie% | + | |
- | ATARI MAGAZINE H BEST OF GPA BASIC | + | |
- | adr Tigne(s = XETO5 (2) IADR LIGNE À COPIER | + | |
- | FOR ligne copies = 1 TO 199 | + | |
- | adr copie% = XBIOS(2}+1igne copiex*160 [ADR LIGHE | + | |
- | EMUVE adr lignel®, adr copie#, L60 ICOPIE | + | |
- | NEXT ligne copie* | + | |
- | RETURN | + | |
- | Amélioration de l' | + | |
- | Au lieu de copier une seule ligne, on peut en copier plusieurs à la | + | |
- | fois, Pour cet exemple, on divise l' | + | |
- | Flles sont numérotées de 0 à 19, La routine copie la bande D sur les | + | |
- | autres bandes, | + | |
- | PROCEDURE copie bande | + | |
- | LOCAL adr orgs | + | |
- | LOCAL adr copiet | + | |
- | ! ADKESSE BANDE O - | + | |
- | adr org® = XBIDS{Z) | + | |
- | FOR bande copies - 1 TO 19 | + | |
- | ! CALCUL ADRESSE BANDE 2 | + | |
- | adr copie% = XBI0S(2)+10*bande copie%*160 | + | |
- | ' COPIE BANDE 1 SUR. BANDE 2 | + | |
- | EMOVE adr org&, adr copiex, 1600 | + | |
- | NEXT bande copie | + | |
- | RETLIRN | + | |
- | Utilisation de plusieurs écrans en mémoire | + | |
- | Ces petits programmes sont amusants, mais peu utiles. En revanche, | + | |
- | l' | + | |
- | stochés en mémoire. | + | |
- | La place mémaire est reservée avec l' | + | |
- | load degas permet de charger une image Deges Elte à n' | + | |
- | quelle adresse en mémoire On peut réaliser toures sortes d' | + | |
- | comme l' | + | |
- | du bas de l' | + | |
- | centré où des bords, ete. Il faut tenir compte de l’adresse des écrans | + | |
- | dans le calcul des adresses des lignes. L' | + | |
- | (celui qui est wisible sur le moniteur de l' | + | |
- | par la fonction XBI05(2). Il ne faut surtour pas se tromper au n | + | |
- | veau des adresses de base des écrans. | + | |
- | Affichage rapide d’une image | + | |
- | La technique la plus simple pour afficher rapidement une image est | + | |
- | de la charger dans une mémoiré tarmpon, puis de la copier sur l' | + | |
- | avec EMOVE Frant donne la vitesse de EMOVE, l' | + | |
- | pour l’utilisaveur (en fait, il prend à peu près 20 millisecondes). | + | |
- | Âvec une routine de chargement directement en mémoire, l' | + | |
- | et lent et saccadé. | + | |
- | Affichage à partir du bas de l' | + | |
- | Pour afficher une image à partir du bas de l' | + | |
- | dans uné mémoire tampon, puis d' | + | |
- | après les auttes de la ligne 199 à la ligne 2, La routine aff bas du | + | |
- | programmé d' | + | |
- | programmier. | + | |
- | Affichage à partir du haut de l' | + | |
- | Pour afficher une image À parcir du haut de l' | + | |
- | charger dans une mémoire tampon, puis d’afficher les lignes les unes | + | |
- | après les autrés de la ligne O à la ligne 199. La routine aff haut du | + | |
- | programme d' | + | |
- | Affichage à partir du centre de l' | + | |
- | Pour afficher une image stockee dans la mémoire sur l' | + | |
- | du centre, il faut afficher d' | + | |
- | 98 et 101, et ainsi de suite jusqu' | + | |
- | La rourine aff_mil ieu du programme en exemple urilise cette | + | |
- | téchniqué, | + | |
- | Affichage à partir des bords de l' | + | |
- | Certe méthode est l’inverse de la précédente. T faut d' | + | |
- | les lignes C et 199, puis 1 et 198, pour arriver finalement aux lignes | + | |
- | 99 et 100. La routine af f bord illustre cette rechnique. | + | |
- | Affichage aléatoire , | + | |
- | Cette méthode consiste à afficher les lignes d'une rmage dans un | + | |
- | ordre aléaroire. Le numéro de la ligne à afficher est déterminé par | + | |
- | “ une fonction aldatoire. Il faut tenir compté des lignes déja-affichées | + | |
- | pour éviter de les réafficher. La solution la plus simple est d' | + | |
- | un tableau ne contenant que des @. Chaque fois qu’une ligne est affichée, | + | |
- | on met Pindice du tableau correspondant à 1. Pour chercher | + | |
- | une ligne non affichée, il suffit de lire le tableau à la recherche d'un | + | |
- | nombræ 0. | + | |
- | La routiné aff aléatoire du programme d' | + | |
- | téalisation de cette technique Cerre routine utilise un tableau | + | |
- | tst Tigne% pour la gestion des lignes. Elle fait un affichage ligne à | + | |
- | ligne, mais on peut la modifier afin de travailler sur des blocs de | + | |
- | hgnes. L' | + | |
- | d' | + | |
- | place [économie de mémoiré), | + | |
- | Inversion verticale d'une image | + | |
- | Pour inverser verticalement une image, 1l suffit de la recopier en inversant | + | |
- | la position des lignes. La ligne © devient la ligne 199, la ligne | + | |
- | 1 devient la ligne 198, la ligne 2 devient la ligne 197, … la ligne 199 | + | |
- | devient là ligne 0. | + | |
- | La routine inversion ecrän inverse l' | + | |
- | stocke le résultat dans une image tampon. Une fois l' | + | |
- | elle donne le résultat en le recopiant rapidement sur Pécran | + | |
- | physique | + | |
- | Scrolling vertical d'une image | + | |
- | Pour faire seroller une image sur une zone d' | + | |
- | faut copier le bloc de lignes de hauteur hä partic de la ligne O de l'i- | + | |
- | ATARI MACAZINE m BEST OF GFA BASIC | + | |
- | mage, puis à partir de la ligne 1 de l' | + | |
- | des blocs donnera l' | + | |
- | En affichant l' | + | |
- | bloc de 100 ligm:s de haut d'une manière parfaite sans la moindre | + | |
- | «bavures vidéo. La routine scroll du programme d’exemple fait | + | |
- | d' | + | |
- | Programmes d' | + | |
- | Les rourines d’affichages ont êté réalisées en GRA Basc 303, Les | + | |
- | exemples utilisent deux images Depas Efite chargees én mémoire au | + | |
- | début du programme. Le choix des images se fait grâce au sélecteur | + | |
- | de fichiers. | + | |
- | Problèmes de synchronisation vidéo | + | |
- | et instruction VSYNC | + | |
- | L' | + | |
- | fait, c'est un spot vidéo unique qui sé déplace & grande vitesse pour | + | |
- | dessiner l' | + | |
- | technique, on dir que l' | + | |
- | seconde, le système d' | + | |
- | à la fin (soit 32000 octets). Entre chaque balayage widéo, il ÿ à un petit | + | |
- | temps mort {le temps dé balayage est de 16 millisecondes, | + | |
- | cemps entre deux balayages de 4 milliseconces). | + | |
- | Lors de l' | + | |
- | l' | + | |
- | apparaître, | + | |
- | viennent d'une interférence encre le E}OEtëme !: | + | |
- | routine graphique. 51 le programme modifie une donnée de la mémoire | + | |
- | écran au moment où le système d' | + | |
- | sur l' | + | |
- | Pour éviter ce probléme, 1 faur travailler pem:l.fl.nt le temps libre entre | + | |
- | chaque balayage vidéo. La fonction Vsync arrête le déroulement | + | |
- | du programme pendant le balayage vidéo. Après l’' | + | |
- | le programme dispose d'un temps très court pour faire un affichage | + | |
- | graphique sans craindre de problème vidéo, | + | |
- | Travail en bas de l' | + | |
- | Le spot se déplace sur l' | + | |
- | Vsync, on dispose de peu de temps pour faire un affichage sans parasite | + | |
- | vidéo en haur de l’écran. En revanche, le temps disponible pour | + | |
- | afficher quelque chose vers le bas de l' | + | |
- | dispose du temps entre deux balayages vidéo, plus le temps | + | |
- | pris par le système d' | + | |
- | La rourine de scrolling travaille en bas de l' | + | |
- | remps supplémentaire. Remoncez la position d' | + | |
- | apparaître une barre de sjït' | + | |
- | La vitesse de rafraîchissement vidéo est de 50 Hz pour tous les moniseurs | + | |
- | couleur et de 70 Hz pour le moniteur monochrome Atari. | + | |
- | POUR TOUTES QUESTIONS, TAPEZ 3615 ATARI | + | |
- | | VRI TTAAARÉEEEARRETTNAAETREÉ RERR | + | |
- | A 4 ; w | + | |
- | * * EFFETS GRAPHIQUES AVEC FONCTLON BMOVE * | + | |
- | L * “ | + | |
- | L RHN A RR E | + | |
- | I RRF A S E AARR E E E EAARR E | + | |
- | * * (C) 1990 Patrick Leclercq & ATARI MAGAZINE * | + | |
- | I RR E FN A N R e e T d e d e e e e e S R S e N R E E | + | |
- | ' # Programmation en GFA BASIC 3.03 * | + | |
- | | Ah E R R RR e E R R d e A A E | + | |
- | RESERVE 50000 | RESERVATION MEMOIRE POUR BASIC | + | |
- | OIM tst_îîgne%{Eüü] ITABLEAU POUR AFFICHAGE ALEATOIRE | + | |
- | imagel%-MALLOC(32000) RESERVATION MEMOIRE | + | |
- | image? | + | |
- | image travail%=MALLOC(32000)! RESERVATION MEMOIRE | + | |
- | Émain | + | |
- | VOID | + | |
- | MFREE(image travail#} ! LIBERATION MEMOIRE | + | |
- | VOID MFREE{imagess) ! LIBERATION MEMOIRE | + | |
- | VOID MFREE{imagel%) ! LIBGERATION MEMOTRE | + | |
- | END | FIN DU PROGRAMME | + | |
- | ——s d | + | |
- | P EN TATARRERÉÉÉTÉ ÉÉÉ E E A R ETE ETE EN E | + | |
- | * # ATTENTE D'UN EVENEMENT CLAVIER * | + | |
- | I AR AAARA ATR AE NARA bEkEt kEi RRR | + | |
- | PROCEDURE att clavier | + | |
- | VOID INP(2) | + | |
- | RETURN | + | |
- | L é A Al R e e C de de e e R Me e | + | |
- | ! = CHARGEMENT D'UNE IMAGE DEGAS ELITE EN MEMOIRE * | + | |
- | | xFh haÈRARHARERÉAAARRR AN NN RE EN ÉÉ E RR RESRE | + | |
- | PROCEDURE load degas(nom$, | + | |
- | LOCAL palé | + | |
- | pal$=SPACE%(32) | + | |
- | OPEN " | + | |
- | SEEX #99,2 | + | |
- | BGET # | + | |
- | VOID XBI05(6, | + | |
- | BGET #99 , | + | |
- | CLOSE #99 | + | |
- | RETURN | + | |
- | I t# | + | |
- | !* COPIE D'UNE LIGNE D'UN FCRAN SUR UN AUTRE * | + | |
- | 1 e nn e d e d e e r e R e e e r e R e é r e e e e d e D d | + | |
- | PROCEDURE copie ligne(l1l%, | + | |
- | LOCAL adr14 | + | |
- | LOCAL adr£% | + | |
- | ATARI MAGAZIME m BEST OF GFA BASIC | + | |
- | adrl®=adr imagels+115%*160 ! ADRESSE DE.LA LIGNE 1 | + | |
- | adréf=adr imagee=+12# | + | |
- | BMOYE adrl%, | + | |
- | RETURN | + | |
- | ! COPLE LIGNE 1 SUR LIGNE Z | + | |
- | | ek E o e ol o e o e e e e o e e e e e e e e n S l e | + | |
- | ! * AFFICHAGE D'UN BLOCK DE LIGNES SUR L' | + | |
- | | oo ot o g ok v v o e e e e o o o e ok AN E e d o ok b o e e e E S R RE | + | |
- | PROCEDURE aff_h1uck{1lä, | + | |
- | LOCAL adrl% | + | |
- | LOCAL adrê% | + | |
- | LOCAL taillet | + | |
- | adrl%=]1%*160+adr imgl© | + | |
- | adr2%=12%*160+adr img2' | + | |
- | tailles=nbl*" | + | |
- | | ADRESSE BL@C 1 | + | |
- | | ADRESSE ELOC 2 | + | |
- | ! TAILLE DU BLOC | + | |
- | VSYNC ! ATTENTE SYNCHRO VIDEU | + | |
- | EMOVE adrl%, | + | |
- | RETURN | + | |
- | I ok hk bk E A A RE AN NN N R E i v o e e o É e e o ol i ol i ol ol ol e e o | + | |
- | * # AFFICHAGE DE L' | + | |
- | 1 d dc e e e d e d e e e e e e d e e E e A S r E e d e é n d e e e d e | + | |
- | PROCEDURE aff bas(adr_image*} | + | |
- | LOCAL ligne*# | + | |
- | FOR ligne*=199 TO D STEP -1 | + | |
- | VSYNC | + | |
- | @EÜPÎE_ÏîgnE{lîgnE%.ûdfi_ÎMEgEÈ.ÎîgnE%, | + | |
- | NEXT ligne% | + | |
- | RETURN | + | |
- | [ | + | |
- | i e | + | |
- | e L é é è e e e T e s T TSR e L é e r e b | + | |
- | | * AFFICHAGE DE L' | + | |
- | T T o E e d e e r e e e d e e D A S ol DEDE | + | |
- | PROCEDURE aff haut(adr image%) | + | |
- | LOCAL Tignes | + | |
- | i | + | |
- | FOR ligne%=0 10 190 | + | |
- | VSYNC | + | |
- | @copie ligne{ligne%, | + | |
- | MEXT ligne* | + | |
- | RETLIRN | + | |
- | I e d ércépércdr r drar d 06 d RR RE E É RE É E A d A E A A R A E d E E A R E E R E | + | |
- | ' # AFFICHAGE IMAGE A PARTIR DU MILIEU DE L' | + | |
- | E rrn d e e d e e r e e e e e e e A r e d E | + | |
- | PROCEDURE aff milieu(adr image*) | + | |
- | LOCAL lignel% | + | |
- | LOCAL lignez# | + | |
- | LOCAL 1% | + | |
- | lignel*=99 | + | |
- | lignez%=100 | + | |
- | FOR %=1 TO 100 | + | |
- | VSYNC | + | |
- | @capîe_ïîgne{1îgnel%.adr_1mage%, | + | |
- | @cüpîg_11gne{1ignefiä.aür_îmmge%, | + | |
- | DEC lignel5 | + | |
- | INC lignez* , | + | |
- | NEXT 1% | + | |
- | RETURN | + | |
- | | e lenle ool É E E e el R R | + | |
- | ! # AFFICHAGE IMAGE * | + | |
- | T T T e e ba bbb 5 3t | + | |
- | PROCEDURE aff_hflrdziafir_jmage%} | + | |
- | LOCAL lignel% | + | |
- | LOCAL lignee* | + | |
- | LOCAL 1% | + | |
- | lignel%=0 | + | |
- | ligne: | + | |
- | FOR i%=1 TO 100 | + | |
- | VSYNC | + | |
- | @cüpîe_jigne[ligflelä.adr_? | + | |
- | Écopie ligne(lignez%, | + | |
- | INC lignel®% | + | |
- | DEC Tigne?¥% | + | |
- | NEXT 1% | + | |
- | RETURN | + | |
- | 1 R ab é 5 i UR A E E i ok r e e e o e e o r e v o | + | |
- | | * AFFICHAGE ALEATOIRE D'UNE IMAGE * | + | |
- | | e e T P e R R d R R e RE | + | |
- | PROCEDURE aff aleatoire(adr image%) | + | |
- | LOCAL Tigne% | + | |
- | LOCAL i% | + | |
- | FOR i%=0 TO 199 ! INIT TABLEAL DE LIGNES AFFICHES | + | |
- | tst ligne“(i# | + | |
- | NEXT 1% | + | |
- | FOR i%=1 TO 200 | + | |
- | REPEAT | RECHERCHE D'UNE LIGNE NON AFFICHE | + | |
- | lione& | + | |
- | UNTIL tst lignes{(ligne%)=0 | + | |
- | tst ligne%{ligne# | + | |
- | Écopie ligne(ligne%, | + | |
- | NEXT i% — | + | |
- | RETURN | + | |
- | ATARI MAGAZIME H BEST OF GFA BASIC | + | |
- | | kxR dandd bbb AT Er d e d e e e e r I E | + | |
- | ' # INYERSION COMPLETE DE L' | + | |
- | | HEFN NNN E TRk il É E | + | |
- | PROCEDURE inversion écran | + | |
- | LOCAL lignel% | + | |
- | LOCAL ligne?% | + | |
- | L} | + | |
- | ligne=%=199 | + | |
- | FOR lignel%=0 TO 199 | + | |
- | Bcopie ligne(lignel%, | + | |
- | DEC Tigne2% | + | |
- | NEXT lionel® | + | |
- | VSYNC | + | |
- | BMOVE image travail*, | + | |
- | RETURN | + | |
- | 1 EHAETANTbE EeE E E2 E A | + | |
- | " # ROUTINE DE SCROLLING #* | + | |
- | D o e i o o TRN R e e R | + | |
- | PROCEDURE scroll(adr image%) | + | |
- | LOCAL ligne* | + | |
- | FOR ligne%=0 TO 100 STEP 1 | + | |
- | aff*hlnck[iigne%.lflfl, | + | |
- | NEXT lignet | + | |
- | FOR ligne& | + | |
- | @aff block{lignes, | + | |
- | NEXT ligne% | + | |
- | RETURN | + | |
- | | ÆE TRATRÉE Rl bWk VR E A A E | + | |
- | ! # DEMONSTRATION DU SCROLLING * | + | |
- | I MPE RERA RE RRN E R | + | |
- | PROCEDURE demo scroll(adr image%) | + | |
- | LOCAL i% | + | |
- | FOR i%=1 TO 2 | + | |
- | éscroll(àdr imâge*) | + | |
- | NEXT 1% | + | |
- | RETURN | + | |
- | — | + | |
- | FROCEDURE demo graph | + | |
- | Baff haut{imagels) | + | |
- | Batt clavier | + | |
- | Gaff haut(image2%) | + | |
- | @att clavier | + | |
- | Baff bas(imagels) | + | |
- | @att clavier | + | |
- | Paff bas(image2*) | + | |
- | @att clavier | + | |
- | gaff bords{imagels) | + | |
- | fatt clavier | + | |
- | Paff bords(image2*) | + | |
- | Gatt clavier | + | |
- | Gaff milieu(imagel*) | + | |
- | Batt clavier | + | |
- | Baff milieu(image? | + | |
- | Patt clavier | + | |
- | Binversion scran | + | |
- | Batt clavier | + | |
- | @inversion écran | + | |
- | datt clavier | + | |
- | gaff aleatoire(imagels) | + | |
- | att clavier | + | |
- | Paff aleatoire({mage25) | + | |
- | @att clavier | + | |
- | éscroll(imagel# | + | |
- | Batt clavier | + | |
- | @scroll (image#*! | + | |
- | Batt clavier | + | |
- | RETURN | + | |
- | | VRShRR | + | |
- | | # ROUTINE PRINCIPALE * | + | |
- | I xR RR RRR E v PR T E | + | |
- | PROCEDURE main | + | |
- | LOCAL fond$ | + | |
- | LOCAL f2$ | + | |
- | FILESELECT " | + | |
- | @load degas(fondS, | + | |
- | FILESELECT " | + | |
- | @load degas{f2$, imageë*) | + | |
- | Batt clavier | + | |
- | Bdemo graph | + | |
- | 1 | + | |
- | RETURN | + | |
- | SI VOUS N'AVEZ PAS LE | + | |
- | COURAGE DE TAPER TOUS LES | + | |
- | LISTINGS, COMMANDEZ LA | + | |
- | DISQUETTE BEST OF GFA BASIC | + | |
- | AVEC LES IMAGES AU PRIX DE | + | |
- | 70 F SEULEMENT. | + | |
- | Ban de commeande en poges 5Û | + | |
- | ATARI MAGAZINE m BEST OF GFA BASIC | + | |
- | - | + | |
- | - GRAPHISME EN GFA BA_' | + | |
- | 1096 IMAGES | + | |
- | UNE DISQUETTE | + | |
- | Economisez de la place mémoire | + | |
- | Les images des jeux d’arcades sont construites à partir d' | + | |
- | graphiques collés les uns contre les autres, codant ainsi une image | + | |
- | écran en quelques centaines d' | + | |
- | es éléments dépendent du typé de décor. Pour dessiner un | + | |
- | temple (sujet classique des jeux d' | + | |
- | des colonnes, des murs, des symboles bizarres, des portes, des | + | |
- | éléments de décors, etc. Les colonnes peuvent être conçues de plusieurs | + | |
- | déments: un socle de base, un élément intermédiaire et un | + | |
- | élément terminal. Pour dessiner une colonne à un endroit quel- | + | |
- | “ conque, il faut d' | + | |
- | avant de mettre l’' | + | |
- | ne n'est déterminée que par le nombre d' | + | |
- | Âvwec les mêmes éléments de base, on peut avoir de grandes ou de | + | |
- | toutes petites colonnes. | + | |
- | Pour dessiner les murs, trois ou quatre éléments différents suffisent. | + | |
- | En les alternant, on peut créer un mur tout à feit valable. Pour | + | |
- | rompre la monotonie, on peut aussi insérer des éléments de décors | + | |
- | comme des vases, des autels ou des dessins étranges reproduisant les | + | |
- | traits d’une divinité quelconque | + | |
- | On peut dessiner un temple avec environ 40 éléments graphiques de | + | |
- | base. Is peuvent être utilisés pour dessiner plusieurs salles du temple. | + | |
- | Construction d' | + | |
- | Avant tout, il faut définir la taille des éléments graphiques et la raille | + | |
- | des images construites. Cet article ne traité que de la basse résolution | + | |
- | (320x200 pixels en 16 couleurs). | | + | |
- | C'est la résolution la plus ucilisée, aussi bien pour les jeux que pour | + | |
- | le graphisme pur. Les éléments font 16x16 pixels. Ce n'est pas une | + | |
- | obligation, mais c'est devenu une norme de fécto. 11 suffit de regarder | + | |
- | les images des jeux d' | + | |
- | éléments, on obtient une image de 288x160 pixels. | + | |
- | C'est un format assez courant. Pour obtenir une image prenant pratiquement | + | |
- | tout l’écran, il faut utiliser un format de 20x12 éléments | + | |
- | (320x192 pixels), mais il vaut mieux laisser de l' | + | |
- | différents intervenants (décors divers, scores, nom du logiciel, * | + | |
- | nombre de vies, éle.) | + | |
- | En prenant des éléments de 1620 pixels, on peut couvrir entitrement | + | |
- | l' | + | |
- | T;:lilln d'un élément graphique | + | |
- | Un élément de 16x16 pixels (basse résolution) stocke dans une væ | + | |
- | riable alphanumérique prend 134 octets, La place mémoiré nécessaire | + | |
- | pour 256 cléments est de 34304 octets. | + | |
- | (e e 05e d e e e d n E A e e d é d d e d d e | + | |
- | * * CALCUL DE LA TAILLE MEMOIRE * | + | |
- | " # D'UN ELEMENT DE lbxl6 PIXELS * | + | |
- | 1 VR i R W E o o e e R É | + | |
- | GET 1, | + | |
- | GET 1, | + | |
- | PRINT LEN{vari) | + | |
- | Stockage des éléments en mémoire | + | |
- | Les instructions graphiques du (GEA Basie (PUT et GET) stockent les | + | |
- | données praphiques dans des variables alphanumériques. Les | + | |
- | éléments graphiques sont donc stockes dans un tableau alphanumériqué. | + | |
- | Une variable nb_élements® perme: de connaitre le | + | |
- | nombre d' | + | |
- | DIM element${256) | + | |
- | nb_elements==U | + | |
- | Pour éviter de perdre de la plact en mémoire, les tableaux commencent | + | |
- | à l’indice 1 erâce à Pinstruction OFTION BASE L | + | |
- | Sauvegarde avec l’instruction STORE | + | |
- | À prémière vue, la rechnique de sauvegarde la plus simplé serait | + | |
- | d' | + | |
- | avec une seule instruction. Mais cette méthode ne fonctionne | + | |
- | pas toujours correctement. L' | + | |
- | codes de contrôles 10, 11 et 27 pour repérer les fins de lignes et la fin | + | |
- | du fichier, Lorsque ces codes sont présents dans une chaîne alphanumérique | + | |
- | (ce qui arrive souvent avec des données graphiques), | + | |
- | l' | + | |
- | ATARI MAGAZINE RM BEST OF GFA BASIC | + | |
- | repére er charge les lignes n’importe comment. En résumé, STORE | + | |
- | n'est efficace que pour sauver des textes ASCIT normaux (codes commençant | + | |
- | à 32). | + | |
- | Sauvegarde avec l' | + | |
- | L' | + | |
- | fichier. Grâce à cette instruction, | + | |
- | les uns derrière les autres dans un fichier. La procedure Save | + | |
- | element(nom$) du programme GEN_IMGS utilise ce système, Elle | + | |
- | sauve au début du fichier la palette de couleurs des éléments. Les | + | |
- | donndes graphiques sont relues avec Pinstruction BGET qui permet | + | |
- | de lire des données à partir d'un fichier. La procédure Load element | + | |
- | (nomf) du programme AFF IMES fonctionne de cette manière. | + | |
- | Stockage des images en mémoire | + | |
- | Pour mémoriser une image, il faut un tableau de 18x10 éléments, | + | |
- | 5% y a moins de 256 éléments, ils peuvent être codés | + | |
- | (symbole |}, Une image prend alors 18x10 octers =180 octets. On | + | |
- | peur avoir 720x1024/ | + | |
- | DIM images/ | + | |
- | Le tableau images | () peut contenir 10 images. Clest un chiffre auss: | + | |
- | valable qu’un autre pour un programme de démonstration, | + | |
- | peut tour aussi bien être 50, | + | |
- | DIM images|(50, 18,10) | + | |
- | Le GEA Basic ne peut pas manipuler des tableaux de raille supérieure | + | |
- | à 32 Ko. Le rableau image|() ne peut donc contenir plus de 177 | + | |
- | images (32000/ | + | |
- | Si l y a plus de 256 éléments possibles, on peut les coder avec des | + | |
- | entiers courts (16 bitssymbole 6. I1 peut alors y avoir 63536 | + | |
- | éléments différents. Le codage d'une image prend 360 oecrets | + | |
- | {18x10x2}. On peut avoir 720x1024/ | + | |
- | soit 2048 1mages. | + | |
- | L | + | |
- | DIM images& | + | |
- | [ ne peut y avour plus de 90 images dans le tableau images& | + | |
- | de la limitation de 32 K6 pour un tableau. Il faut donc stocker les | + | |
- | images sur plusieurs tableaux. | + | |
- | Affichage d'une image | + | |
- | Pour afficher une image, il faut afficher chaque élément graphique à | + | |
- | sa place. La procédure Aff_image() affiche l' | + | |
- | partir de la position graphique (pos _x0%, | + | |
- | chér une image à n' | + | |
- | et pyk contiennent la position d’affichage de l' | + | |
- | Après l' | + | |
- | De même après l’affichage d'une ligne, on incrémente py% de 16 pixels. | + | |
- | ATARI MAGAZINE | + | |
- | | A EEEkEARRAANAAFARARAAAAN E AR h kbR R R RE RE E | + | |
- | ! * AFFICHAGE IMAGE num image% A LA POSITION 3 | + | |
- | | * (pos x0*,pos yD%) * | + | |
- | I RRN d d e d d e É A e e d RRN | + | |
- | PROCEDURE Aff image (num_image®) | + | |
- | LOCAL 1x%,144 | + | |
- | LOCAL px*,py | + | |
- | | INIT POS X IMAGE | + | |
- | py*=pos y0% I INIT PAS Ÿ IMAGE | + | |
- | FOR iy%=1 T0 10 — ! BOUCLE DES LIGNES | + | |
- | FOR ix%= 1'TO 18 ! BOUCLE DES CASES | + | |
- | PUT px%, py%, imagés |(num îmage#, ix*, iv) | + | |
- | pr%=pos_x0%- | + | |
- | INC px%,10 I PASSAGE POS X SUIVANTE | + | |
- | NEXT 1x* ! FIN BOUCLE CASE | + | |
- | INC py+,16 1 PASSAGE LIGNE SUIYANTE | + | |
- | pri=pos_x0% ! RETOUR DEBUT LIGNE | + | |
- | NEAT 1y% | FIN BOUCLE LIGNES | + | |
- | RETURN [ FIN ROUTINE | + | |
- | Sauvegarde des images sur disque | + | |
- | Le tableau contenant les images est sauvé grâce à la fonction Save | + | |
- | tableau(). Certe fonction calcule l' | + | |
- | d' | + | |
- | permettant de comprendre le codage des rableaux sont | + | |
- | présentes dans le manuel du GE4 Basic 3.0 au chapitre «Vartables et | + | |
- | gestion de la mémoires, | + | |
- | La fonetion Save tableau n'est valable qué pour des tableaux d' | + | |
- | Pour sauver un aurre tvpe de tableay, il faut augmenter la raille | + | |
- | mémoire des cases (1 octet pour un tableau d' | + | |
- | tableau d' | + | |
- | Lecture des images à partir d'un disque | + | |
- | Le rableau des images est chargé en mémoire avec la routine | + | |
- | Load tableau qui relit un tableau sauvé avec la procédure Save tableau. | + | |
- | Cétté rourine ne peut relire que des tableaux d’octets. | + | |
- | Système de construction d' | + | |
- | Pour avoir un système de construction complet, il faut un ueiliraire | + | |
- | de cr@tion des éléments graphiques, un utilitaire de «fabrications | + | |
- | des images, et un système d' | + | |
- | Les programmes GEN ELEM EDIT IMG et AFF_IMGS sont des utilitaires | + | |
- | écrirs en GFA Basic 3,0. [Is remplissent chacun une fonction | + | |
- | bien précise dans la «chaîne de fabrications des images. | + | |
- | Programme GEN__ELEM | + | |
- | Ce programme est un convertisseur d' | + | |
- | d' | + | |
- | Degas et génère un fichier binaire réutilisable par d' | + | |
- | Les éléments graphiques de base sont dessinés avee le logicicl | + | |
- | de dessin Degas Efite. Une fois fes images terminées, le program- | + | |
- | BEST OF GRA BASIC | + | |
- | meur stôcke la position de tous les éléments graphiques dans le programme | + | |
- | GEN ELEM grâce à l' | + | |
- | lit toures les images les unes après les autres, et génère le fichier | + | |
- | d' | + | |
- | Programme EDIT_IMG | + | |
- | Cet urilitraire serc à «fabriquers les images. L' | + | |
- | pour les modifier à volonté 11 se présente sous la forme d’une | + | |
- | carte avec un menu (sauvegarde des images sur disque, lecture d'un | + | |
- | jeu d’images, sortic du programme) en bas à gauche, le dessin d’un | + | |
- | élément à droite, et un numéro de carre compris entre 1 ec 10 affiché | + | |
- | aussi à droité. | + | |
- | Si l' | + | |
- | remplacé par l' | + | |
- | n' | + | |
- | L' | + | |
- | l’image courante est affiché en bas à droité de l’écran, Le programme | + | |
- | peut être modifié pour travailler avec n' | + | |
- | d' | + | |
- | Programme AFF__IMGS | + | |
- | Ce petit programme est une démonstration du système de construction | + | |
- | des images, Il lit un fichier d' | + | |
- | les autres. Pour obtenir un affichage rapide, ce programme utilise | + | |
- | une astuce courante dans la programmation des jeux: Pimage est | + | |
- | construité dans une image de travail situé en mémoire, Lorsque le | + | |
- | dessin est terminé, on récopie l' | + | |
- | à l’impression d’un affichage instantané, | + | |
- | luston. | + | |
- | B e e e i e v i e e r r e E e d e e e e r e e e e | + | |
- | | # = = | + | |
- | ! * GENERATION DU FICHIER D' | + | |
- | L + * | + | |
- | M e E E E E E RE E T ue A A e A F E E E R I e d e E r E i | + | |
- | Wk Rk e d é e e e Ak E AR | + | |
- | * Programme, GEN ELEM * | + | |
- | 25 o ki e v e kel o o e o p e r r E | + | |
- | [ T ey e TP S e e s P L e R R R d e u e e e E | + | |
- | * (C) 1990 Patrick Leclercq & ATARI MAGAZINE 7 | + | |
- | d k e e p e r e e r e e e é e e e e e e e E E A d E E | + | |
- | de é e d r T E E N E e e e S E E | + | |
- | * Cet utilitaire génêre un fichier binaîre contenant |es | + | |
- | “ éléments grephiques à partir du nôm d'une image DEGAS, | + | |
- | “ ot de la liste des positions des éléments (stockées | + | |
- | * dans des lignes de DATA). ' & | + | |
- | e e é r d S e d SEN L LV RE R e e Ah A E | + | |
- | VARIABLES GLOBALES : | + | |
- | elament$() : Tableau contenant les éléments graphiques | + | |
- | nb elementss : Nocbre éléments dans le tableau elements{) | + | |
- | - nüä_' | + | |
- | * nom fichiert - Mom fichier contenant les éléments graphiques | + | |
- | pal: | + | |
- | ATAR| MAGAZISIE | + | |
- | RESERVE 50000 | + | |
- | OPTION BASE 1 | + | |
- | OIM element$(256) | + | |
- | nb elementss=0 | + | |
- | RESTORE | | + | |
- | READ mom images ILECTURE OU MOM DE IMAGE A LIRE | + | |
- | READ nom #ichiers ILECTURE NOM FICHIER BIMAIRE À GENERER | + | |
- | flÏflflfl__dlEEü![flüm__' | + | |
- | Blecture elements ILECTURE ELEMENTS GRAPHIQUES IMAGE | + | |
- | Ésave elements{nom fichiers)[SAUVER DISQUE FICHIER ELEMENTS | + | |
- | En — IFIN DU PROGRANME | + | |
- | 1 RESERVATION DE MEMDIRE FOUR BASIC | + | |
- | 1 LES TAREFAUX COMMENCERT A 1 | + | |
- | | TARLEAU LES ELEMENTS GRAFHIQUES | + | |
- | ! NOMBRE D' | + | |
- | i | + | |
- | | dhhéthadvaaere aé dbala éek | + | |
- | ' & LECTURE IMAGE DEGAS ELITE * | + | |
- | I AERRAAE sk RE RE É b b L bR REN | + | |
- | PROCEDURE Toad degas(noms) | + | |
- | LOCAL pal$ | + | |
- | i | + | |
- | palÿ=eSPACE# | + | |
- | OPEN “j#1 ,n"omE | OUVERTURE DU FICEIER : | + | |
- | SEEK #1.7 | ON EVITE L' | + | |
- | BGET # | + | |
- | pal element$=pals | MEMORISATION PALETTE DES ELEMENTS | + | |
- | VOID XEIOS(6, | + | |
- | EGET # | + | |
- | CLOSE #l | FERMETURE DU FICHIER | + | |
- | RETURN | + | |
- | kAN R LR e e Rk T WA SE | + | |
- | | # SAUVEGARDE DES ELEMENTS GRAPHIQUES * | + | |
- | E B R E E E E E d | + | |
- | 1 e e e E S R d e e e d e e É E E | + | |
- | ! = FORMAT DU FICHIER GINATRE : n | + | |
- | ' = — Palette couleur des éléments (32 octets); | + | |
- | * — Kombre d' | + | |
- | ' * — Elément graphique 1 {134 octets); * | + | |
- | "% — Elément graphique 2 (134 octets); * | + | |
- | ! #* — Fiément graphique n (134 octets); * | + | |
- | « * — Dernier élérent graphique (134 octets); * | + | |
- | d é A bk el e sk e e e e t e e Y R dh c E E E | + | |
- | PROCEDURE save elements(nom$) | + | |
- | LOCAL i% | + | |
- | 1 | + | |
- | OPEN “o",# | + | |
- | BPUT # | + | |
- | OUT #l,nb élements® ECRITURE NOMERE ELEMENTS | + | |
- | FOR %=1 T0 nb elements® DEBUT BOUCLE LECTURE | + | |
- | ÉPUT & | + | |
- | NEXT 1% | FIN BOUCLE LECTURE | + | |
- | CLOSE £1 FERMETURE DU FICHIER | + | |
- | RETURN | + | |
- | OUVERTURE DU FICHIER | + | |
- | ECRITURE FALFTTE ELEMENTS | + | |
- | — — — —— | + | |
- | Ë | + | |
- | é E RR | + | |
- | * LECTURE D'UN ELFMENT GRAPHIQUE * | + | |
- | e r t e r e rr r e e e e e e e e t t r ch 0 | + | |
- | 1 é e d r d e d E E r E A | + | |
- | = numx - Numéro de |l' | + | |
- | BEST OF GFA BASIC | + | |
- | ! * posx% : Position X de l' | + | |
- | ! #* posye : Position Ÿ de l' | + | |
- | ï *# | + | |
- | i *gufikiik# | + | |
- | * % | " | + | |
- | * * xl, yl, xZ, y2. La fonction lec element doit fabriquer | + | |
- | " * les coordonnées x2 et yF à partir des position posat et * | + | |
- | ! * posy#. Etant donné que les éléments graphiques ont une | + | |
- | ! * taille de 16 pixels, i1 faut rajouter (16-1) à la | + | |
- | | # coordomnés de début de l' | + | |
- | ! * coordonnée de fin. Pourquoi (16-1) et non 16 ? | + | |
- | ! * Le premier pixel compté aussi dans la lonqueur de Ÿ | + | |
- | « * l' | + | |
- | !* de 16 pixels se termine au pixel 25. Les pixels 10,11, w | + | |
- | | * 19, | + | |
- | + * = | + | |
- | "* utilise la formule (16-1). f | + | |
- | 5n dh e e e e e e e E e e e e e e e S e S SE | + | |
- | PROCEDURE lec elément (num®, posx#, | + | |
- | LOCAL posx2s, posyes | + | |
- | I | + | |
- | posx£*=“posx4+[16-1] | + | |
- | posyé*=posyt+{161) | + | |
- | " LECTURE ELEMENT mun | + | |
- | GET posxŸ, | + | |
- | RETURN | + | |
- | —. — | + | |
- | I ek kb d e e e d e e r e e E E | + | |
- | ! * LECTURE DE TOUS LES ELEMENTS GRAPHIQUES * | + | |
- | L ud e e o ok cr e ok e r e e e e e e e V F | + | |
- | PROCEDURE Tecture clexents | + | |
- | LOCAL pxt,py | + | |
- | L} | + | |
- | [X | + | |
- | READ px* | + | |
- | EXIT 1F pxs==1 | + | |
- | | LECTURE PREMIERE OONNEE | + | |
- | | TEST SI DOKNEE DE FIN 1) | + | |
- | INC nb elements' | + | |
- | READ pyt 1 LECTURE POSITION Y ELEMENT | + | |
- | élec element(nb elementst, | + | |
- | LOGP | + | |
- | tETURN | + | |
- | I e e e d e e e e e e e rr pl d AT R E E E | + | |
- | ' * DEFINITION DES ELEMENTS * | + | |
- | | e é d e E | + | |
- | ' DATA Nom image DEGAS ELITE | + | |
- | " DATA Nom fichier éléments & générer | + | |
- | " DATA x.¥ | + | |
- | ' DATA x,y | + | |
- | ‘ DATA <L (=1 = INDICATEUR DE FIN DE DATA) | + | |
- | DATA DESSIN.PII | + | |
- | DATA ELEMENTS.ELE | + | |
- | DATA 1, 1 | + | |
- | DATA 18, 1 | + | |
- | DATA 35, 1 | + | |
- | DATA BB, 1 | + | |
- | DATA-105, 1 | + | |
- | DATA 120, | + | |
- | DATA 137, | + | |
- | DATA 154, | + | |
- | DATA 171, | + | |
- | OATA 188, | + | |
- | DATA 206, | + | |
- | DATA 222, | + | |
- | DATA 239, | + | |
- | DATA 256, | + | |
- | DATA 273, | + | |
- | DATA 250, | + | |
- | DATA —l | + | |
- | i el el R T RE TT E e e E R | + | |
- | P kR EEthdt it e m e c d d E | + | |
- | I d | + | |
- | * #* EDITEUR D' | + | |
- | 4 r | + | |
- | e e é e e e e e A E e e E E E E | + | |
- | de m d SREENE E | + | |
- | * Programme FDIT IME * | + | |
- | ok de e dr e gkt e e e e r e e e e p g E | + | |
- | ttutrhhhekkebedéhbdde é RESRE RE É SE E | + | |
- | = (C) 1990 Patrick Leclercq & ATARI MAGAZINE * | + | |
- | ! * Programration Interpréteur GFA BASIC 3.03 * | + | |
- | | LRN RE e i b o É o S e o E o ol R TR e E | + | |
- | ! **i& | + | |
- | * WARTABLES GLOBALES DU PROGRAMME = | + | |
- | D oaEEret RkRENd Rd kRakdt | + | |
- | - | + | |
- | * element${) :Tableau contenant les & | + | |
- | ' nb etementst Mh éléments graphigues dans elementd() | + | |
- | ' images | () :Tableau contenant le codage des imacés | + | |
- | ! ronesi() :Tableéau conterant les zones de clics | + | |
- | ‘ nb zones% :Nombre de zones dans tableau zonesk() | + | |
- | \ sortiés ‘Condition de sortie du pry | + | |
- | element courant® :Num élément selectionné par utilisateur | + | |
- | | num image® :Numéro de l' | + | |
- | ' posx0% Position x d' | + | |
- | ! posy0 ‘Fosition y d' | + | |
- | - clie x :Pos x dérnier clic dans zone écrän | + | |
- | “alicy :Pos y dernier ciic dans zone écran | + | |
- | RESERVE 50000 | + | |
- | OPTION BASE 1 | + | |
- | DIM images|(10, | + | |
- | IRESERVATION DE MEMOIRE POUR LE BASIC | + | |
- | " ES INDICES DE TABLEAU COMMENCENT A 1 | + | |
- | DIM element3(2756) ITABLEAU POUR LES ELEMENTS | + | |
- | nb elements# | + | |
- | DIM zone%{10,4} ITABLEAL POUR LES ZONES DE CLICS | + | |
- | nb zones+-0 | + | |
- | émair lAPPEL PROCEDURE PRINCIPALE | + | |
- | END T |FIN DU PROGRAMME | + | |
- | 1 | + | |
- | i | + | |
- | L e d r btk d r e d r | + | |
- | " * ATTENTE D'UN CLIC SOURIS * | + | |
- | T wEERTEE AT T AR Akdd | + | |
- | PROCEDURE att clic(VAR xm,yms) | + | |
- | AIARI MAGAZIME m BEST OF GFA BASIC | + | |
- | :}Efififl! =-j.ll.| .:.:: P' H dsF E = | + | |
- | P | + | |
- | LOCAL Kms | + | |
- | i | + | |
- | REPEAT | + | |
- | MOUSE Xmyérné s, l,em | + | |
- | UNTIL kmi=l ‘ | + | |
- | RETURN | + | |
- | T T E E A e A d E E E | + | |
- | * * ATTENTE ARRET CLIQUAGE ** | + | |
- | | PE E E A SE R AR AR R E RE | + | |
- | PROCEDURE attüclic | + | |
- | REPEAT | + | |
- | UNTIL MOUSEK=Ù | + | |
- | RETURN | + | |
- | 1 wEggkdEdtkFdrrbEbdbbryr Adebbyd | + | |
- | '+ TEST SI UNE POSITION (px/py} * | + | |
- | ' * EST DANS UNE ZONE (x1, | + | |
- | | #pdmadFRd Tttt Rbd -t é é k e Aobishd | + | |
- | FUNCTION tst zone(pxh, | + | |
- | LOCAL r* | + | |
- | r%=FALSE | + | |
- | IF ((pxé==x15) AND (pxèe=x2%) AND (py==y1%) AND (pyd==y2%)) | + | |
- | r%=TRUE | + | |
- | ENDIF | + | |
- | RETURN r% | + | |
- | ENDFUNC | + | |
- | 1 é e d e e e e e o ol SÉ D d E | + | |
- | ' = SAUVEGARDE D'UN TABLEAU D' | + | |
- | | RH E r E ÉÉ R À E | + | |
- | PROCFDURE save tableau(nom$, | + | |
- | LÜCAL nb dinfé | + | |
- | LÜCAL nb_elemt | + | |
- | LOCAL adr data% | + | |
- | LOCAL taille datas | + | |
- | nb_dimk=INT[ARRETR(tab[-()}# | + | |
- | adr data=LONG[ARRPTR(tab{{}}} ! ADRESSE TABLEAU | + | |
- | nb_elemt=0DIM7{tab|{}) | NOMBRE ELEMENTS TABLEAU | + | |
- | taille datatenb_elemssnb dimé*s | TAILLE DU TABLEAU | + | |
- | BSAVE nom$,adr data%, | + | |
- | RETLRN | + | |
- | i | + | |
- | 1 Sk deddok & R ok e i ok i e i gl e s ol RE RE A ETE | + | |
- | ' # LECTURE D'UN TABLEAL D' | + | |
- | | AA AN E É É ÉÉ E E | + | |
- | PROCEDURE Înad tableau(nom®, | + | |
- | LOCAL adr datas | + | |
- | adr data%=LONG{ARRPTR(tab]{})} TAOR ZONE MEMOIRE TABLEAU | + | |
- | BLOAD nom$,adr datas ICHARGEMENT TABLEAU | + | |
- | RETURN | + | |
- | i **tt*tt**t**tttiiiiLtt# | + | |
- | * * INITIALISATION DU TABLEAU DES IMAGES * | + | |
- | ATARI MAGAZIME | + | |
- | D o e e o é T e e e e c e r e e o o R v T r | + | |
- | PROCEDURE init _images | + | |
- | LOCAL 1%, %%, 1y% | + | |
- | I | + | |
- | FOR i%=1 70 10 | + | |
- | FOR ix%=1 TD 18 | + | |
- | FOR iy4=1 TO 10 | + | |
- | images | (1%,1x%, 1y5)=1 | + | |
- | NEXT 154 | + | |
- | NEXT 1X% | + | |
- | NEXT 1% | + | |
- | RETURN | + | |
- | I HR NaKEÉNTÉ TVRE TRÉ É RR E E | + | |
- | " * TMITIALISATION DES ZONES DE CLIC * | + | |
- | D ETE i R o e É L e e i i el e | + | |
- | PHOCEDURE init elic | + | |
- | LOCAL x1&, 1%, x2%,¥2% | + | |
- | nb zonest=û | + | |
- | oo | + | |
- | READ x1% | + | |
- | EXIT IF x18=<2 | + | |
- | INC nb zones* | + | |
- | READ y1% | + | |
- | READ x2% | + | |
- | READ y2% | + | |
- | zone%(nb zoness, l)=x15 | + | |
- | zoné%{nb zones%, | + | |
- | zone%(nb _ zones‘, | + | |
- | zone%(nb_zonest, | + | |
- | LooË — | | + | |
- | RETURN | + | |
- | i | + | |
- | I d ko s A A R A É E R R | + | |
- | ' = DEFINITION DES ZONES DE CLIC * | + | |
- | 1 mt e e e e bR A é e d d & | + | |
- | ' DATA xi, y1, x2, y2 | + | |
- | ' DATA x1, yl, xé, ¥2 | + | |
- | ' DATA -1 (INDICATEUR DE FIN DE DONNEFS) | + | |
- | DATA 35 , 197, 165, 19/ | + | |
- | DATA 253, 190, 285, 197 | + | |
- | DATA 253, 16/, Z85, 174 | + | |
- | DATA 35, 16/, 165, 177 | + | |
- | DATA 35, 177, 165, 187 | + | |
- | DATA 200, 190, Z18, 197 | + | |
- | DATA 200, 147, 215, 174 | + | |
- | DATA 16, 3, 303, 162 | + | |
- | DATA -1 | + | |
- | 1 | + | |
- | 1 | + | |
- | T il i il o ol e o e e e el i T | + | |
- | ' * LECTURE DES IMAGES * | + | |
- | | HÉÉTÉETTÉTTÉTTTTETTTeE | + | |
- | PROCEDURE lecture images | + | |
- | LOCAL nomk | + | |
- | LOCAL pathi | + | |
- | i | + | |
- | pathé=D1R$(0)+" | + | |
- | FILESELECT pathé," | + | |
- | IDETERMINATION CHEMIN COURANT | + | |
- | |APPEL SELECTEUR DE FICHIERS | + | |
- | BEST OF GFA BASIC | + | |
- | IF nomf< | + | |
- | HIDEM | EFFACER SOURTS | + | |
- | Éload tableau{nom$, | + | |
- | num_images=1 FINIT TMAGE COURANTE | + | |
- | Baff image VAFFICHAGE IMAGE COURANTE | + | |
- | Baft num image IAFE MUMERO IMAGE COURANTE | + | |
- | SHOWM LAFFICHAGE SOURTS | + | |
- | ENDIF | + | |
- | RETURK | + | |
- | 6h ok o o R R Y R A S “ | + | |
- | * * SAUVEGARDE DES IMAGES * | + | |
- | | e il e e i i e e i e o | + | |
- | PROCEDURE sauver images | + | |
- | LOCAL nomd | + | |
- | LOCAL pathd | + | |
- | pathf=0IRE (0)+" | + | |
- | FILESELECT path$," | + | |
- | IDETERMINATION CHEMIN COURANT | + | |
- | JAPPEL SELECTEUR DE FICHIERS | + | |
- | IF nomf< | + | |
- | HIDEM ' | + | |
- | Bsave tableaufnom$, | + | |
- | SHOWM IAFFICHAGE SOURES | + | |
- | ENDIF | + | |
- | RETURM | + | |
- | 1 A e A r A e E E R é E e e e e e e ke e o | + | |
- | " + ROUTINE DE LECTURE DES ELEMENTS GRAPHIQUES * | + | |
- | 0 deéeede e rr e o e e d e d e e e e e é e e e e d E | + | |
- | PROCEDURE Toad elements(nomd } | + | |
- | LOCAL 1% | VARIABLE LOCALE POUR BOUCLE LECTURE | + | |
- | LOCAL pals | + | |
- | 1 | + | |
- | OPEN “i",# | + | |
- | pal$=sPACE{(32} | + | |
- | BRET #1, VARPTR(pal5), | + | |
- | VOID XBIOS(6, | + | |
- | nb elesentst=INP(# | + | |
- | IOUVERTURE DU FICHIER | + | |
- | 1LECTURE DE LA PALETTE . | + | |
- | IDÉCLARATION PALETTE | + | |
- | !LECTURE NOMBRE ELEMENTS | + | |
- | FOR 1%=1 TO nb elementsw IDEBUT BOUCLE LECTURE | + | |
- | element{{(i%)=5PACES(134) ! RESERVE MEMOIRE POUR ELEMENT | + | |
- | BGET #1 , | + | |
- | NEXT i% 1FIN BOUCLE LECTURE | + | |
- | CLOSE #l !FERMETURE DU FICHIER | + | |
- | RETURN | + | |
- | ti**f**t**# | + | |
- | ' = AFFICHAGE U'UN- ELEMENT GRAFRIQUE #* | + | |
- | 1 2R d e 1h E É e d e r e r - se e r s e e rh c p F | + | |
- | 1 e e e r e e e e e e e e d e e e e e e e r É e | + | |
- | ! * La position d'un élèment sur l' | + | |
- | !* 13 maniére suivante : ” | + | |
- | ! % px& = (colonnes1}*16+posx06 # | + | |
- | ! * le numéro x de l' | + | |
- | " * Affichage élément 1 a posx+ ï | + | |
- | * * Affichage élément 2 à posx3+16 ¥ | + | |
- | B dh e gt o oy e i o e o o oo o e i e B o e e e o ke e e e e | + | |
- | PROCEDURE aff element(colonnes, | + | |
- | LOCAL px%,py% | + | |
- | LOCAL num_el ement* | + | |
- | num elementt=images| (num image*, | + | |
- | pat=(colonne*-1}*16+-posx0# | + | |
- | pyt=(1ignet-1)" | + | |
- | PUT px*, | + | |
- | RETURK | + | |
- | | ek ok e & i il el e e kel ol i e T ok e o TR | + | |
- | ! # AFFICHAGE DF L' | + | |
- | D d d ki e d e e d e ik é d é e u d | + | |
- | PROCEDURE aff_image | + | |
- | LOCAL ix%,ivs | + | |
- | FOR iy*=1 TO 10 | + | |
- | FOR ix%=1 TO 18 | + | |
- | Baff element(ix%, | + | |
- | NEXT ix% | + | |
- | NEXT TY4 | + | |
- | RETURN | + | |
- | Pk WA E R R i R ki e e g e o kel e e o e R e E | + | |
- | ' % AFFICHAGE DE L' | + | |
- | 1 rr e d d d e e d e e e d d e e e A É E | + | |
- | PROCEDURE aff el courant | + | |
- | PUT 201, | + | |
- | RETURN | + | |
- | L e e W e d r e e d d e ok e T 1 “ d e e e dF E | + | |
- | ' * AFFICHAGE DU NUMERD D' | + | |
- | I rr e v e e e e e e e e e d o o e e d o e E e e o A d E | + | |
- | PROCEDURE àff_num image | + | |
- | PROX 254,175,284 189 ' | + | |
- | TEXT 264,185,num image% !AFFICHAGE NUMERO IMAGE COURANTE | + | |
- | RETURN | + | |
- | 1 Rk dkEddrFEdbrddretdhddh il | + | |
- | ! * AFFICHAGE ECRAN EDITION * | + | |
- | | é e É R r e d E | + | |
- | PROCEDURE aff edit | + | |
- | CLs | EFFACEMENT DE L' | + | |
- | L | + | |
- | P&ox 15, | + | |
- | BOX 35, | + | |
- | LINE 35, | + | |
- | LINE 35, | + | |
- | TEXT 50,175, " | + | |
- | TEXT 45,185, " | + | |
- | TEXT 46,195, SORTIE EDITEUR“ | + | |
- | BOX 200, | + | |
- | LINE 200, | + | |
- | LINE 200, | + | |
- | ! : ! POSITION ELEMENT COURANT : 201,175 | + | |
- | EOX 253, 167, | + | |
- | LINE 253, | + | |
- | LINE 253, | + | |
- | ! ZONE DE L' | + | |
- | Baff image ! AFFICHAGE IMAGE COURANTE | + | |
- | ATARI MAGAZINE W BEST OF GFA BasIC | + | |
- | Re Ss e | + | |
- | N - I - 5 | + | |
- | E ——lE | + | |
- | P " | + | |
- | £ | + | |
- | Eflff_E]_EflErflfit ! AFFICHAGE ELEMENT COURANT | + | |
- | Baff_num_image ! AFFICHAGE MUMERO IMAGE COURANTE | + | |
- | RETURK | + | |
- | ë | + | |
- | e e i 3 v e o e r e e e r i e E e e e e e o e e e A ol ol e o ol i ok e | + | |
- | “ # MIDIFICATION DE LA CASE SELECTIONNE PAR L' | + | |
- | *++**g***tù# | + | |
- | 8 e e o d e rr e e gl u o el e i m o e e e e e e r e e e e r F | + | |
- | *. CALOUL POSITION CASE : " | + | |
- | 4 Le calcul de 1a position de la case cliqué par $ | + | |
- | * l' | + | |
- | = — 1} On calcule la position relative de clic par & | + | |
- | = rapport au bord de l' | + | |
- | « position de l' | + | |
- | ; pxfexc5 i—poisxc0% et pyt=clic y=—posyls “ | + | |
- | * — 7) On divise le résultat par 16 (taïlle d'une case) * | + | |
- | = at on ajoute ! puisque le résultat de la division* | + | |
- | % vas de 0 à 17 pour les colonnes à la place de 4 | + | |
- | * 1l à 18, et de D à Ÿ pour les lignes à Ta place de* | + | |
- | F 1 à 10. e Æ | + | |
- | A Ë | + | |
- | * TEST D' | + | |
- | * Avant de modifier le contenu d'une case de l' | + | |
- | * routine regarde si celte case ne contient pas déja la * | + | |
- | * bonne valeur. Cela évite un accès vidéo inutile. A | + | |
- | * L' | + | |
- | cec ue e d e e ce d r r r e e e r e e e e e m e S e ok e R R | + | |
- | PRÜCEQURE modif case | + | |
- | R | + | |
- | i | + | |
- | i | + | |
- | LOCAL colonne* | + | |
- | LOCAL Tignes | + | |
- | LOCAL pxs py5 | + | |
- | LOCAL element* | + | |
- | px4=clic xk-posxûs POS X RELATIVE 1 | + | |
- | py& | + | |
- | colonne%=INT{px#/ | + | |
- | | NUM LIGNE TABLEAU ligne“=INT{(pys/ | + | |
- | elemen| (ntum *ima=ge*i, | + | |
- | IF element courant#<> | + | |
- | images | {num_ionnem%, | + | |
- | HIDEM | + | |
- | @aff_glem& | + | |
- | 5 HO | + | |
- | EMDEF | + | |
- | ETURN | + | |
- | é e e e e e e e e E T e e e S e e | + | |
- | « DECREMENTATION DE L' | + | |
- | e e e r e e e e e e e d e d | + | |
- | cè dh e e e d e r d A d E d E S AR d e E EN E | + | |
- | t Les images vont de 1 à 10. La routine vérifie 51 A | + | |
- | = l' | + | |
- | cuc d d kR ke RN R AR AR e SRR TRk ik e r o RN | + | |
- | PROCEDURE dec_imaye | + | |
- | TF num_images=l ! TEST SI DECREMENTATION POSSIBLE | + | |
- | DEC num imaget | FASSAGE IMAGE INFERTEURE | + | |
- | HIDEM ! EFFACER LA SQURIS | + | |
- | Jaff image | AFFICHAGE MOUVELLE IMAGE | + | |
- | Saff num image ! AFFICHAGE NUMERC NOUVELLE TMAGE | + | |
- | SHOWM | AFFICHAGE SOUMIS APRES MODTF ECRAN | + | |
- | ATARI MAGALIMNE | + | |
- | ENDIF | + | |
- | RETURN | + | |
- | 1T e e sy o o e i sy e s E o e E S e e e el e r e d ok E | + | |
- | * INCREMENTATION DE L' | + | |
- | e e e E r e E S S E R e e e e e e e Q e e c v e e d | + | |
- | r r c e f E SE E é e e e E u p e e e f e | + | |
- | * Les images vont de 1 à 10. La routine vérifie s1. * | + | |
- | * l' | + | |
- | ti*ttt*itk# | + | |
- | PROCEDURE înc_image | + | |
- | 1F num imoge=10 ITEST SI INCREMENTATION POSSIBLE FlHÈEËiifi} | + | |
- | INC num images IINCREXENTATION IMAGE | + | |
- | HLDEM LEFFACEMENT SOURLES | + | |
- | aff image JAFFICHAGE NOUVELLE IMAGE | + | |
- | Eaff num irage ' | + | |
- | SHCWM lAFFICHAGE SOURIS | + | |
- | ENDIF | + | |
- | RETURN | + | |
- | | wRdEREd kR E E E d kR d e d A d R E | + | |
- | | « DECREMENTATION DE L' | + | |
- | L é e 3 e e e E É T o o T E 1 E | + | |
- | PROCEDURE dec_elément | + | |
- | IF element courant®==] | + | |
- | DEC element courants | + | |
- | HIDEM - 1 | + | |
- | éaff el courant | + | |
- | SHOWY . . | + | |
- | @atilclic | + | |
- | EXOTF | + | |
- | RETURR | + | |
- | I se e é d e rr dc r d e c e e e t e 6 e p e e | + | |
- | " * INCREMENTATION DE L' | + | |
- | Lh e é e e e S e e A e E SE | + | |
- | PROCEDURE inc element | + | |
- | IF element courant#nb elementss: | + | |
- | INC element couraniy | + | |
- | HIDEM | + | |
- | Baff el courant | + | |
- | SHOWM | + | |
- | Fattüclic | + | |
- | ENDLF | + | |
- | RETURN | + | |
- | L h d e o e e e o e o e o e O r r Q | + | |
- | ! * TEST.DE SORTIE DU PROGRAMME * | + | |
- | | e FÉ e REN E TEIETE | + | |
- | V d e e e r e r e É E d E d E it EN RE RE ket | + | |
- | * Cette routine met à jour la condition de sortie (sortiex)* | + | |
- | ! * En fonction de la variable de réporse de la boife 7 | + | |
- | -* c' | + | |
- | * sortie® =0 == l' | + | |
- | * sortie® =1 = l' | + | |
- | p e e “ e ce kAR n T E e d e d E d E R E E | + | |
- | PROCEDURE tst sortie | + | |
- | LOCAL tsth | + | |
- | LOCAL m$ | + | |
- | BEST OF GFA BASIC | + | |
- | m=" | + | |
- | ALERT 2, | + | |
- | IF tstw=e | + | |
- | sortie#el | + | |
- | ENDTF | + | |
- | RETURN | + | |
- | L | + | |
- | =1} | + | |
- | A i e e v e A A o ke el m e o o o e E | + | |
- | * EXECUTION DES FONCTIONS DE L' | + | |
- | e e e e e e e e e e e e e e e e e o o A e E | + | |
- | PROCEDURE exec fonction(evf) | + | |
- | SELECT evw | + | |
- | CASE 1 | + | |
- | éattüclic | + | |
- | Btst sortie | + | |
- | CASE Z | + | |
- | édec image | + | |
- | CASE 3 | + | |
- | @inc_image | + | |
- | CASE 4 | + | |
- | Battûclic | + | |
- | Fsauver images | + | |
- | CASE 5 | + | |
- | Battlclic | + | |
- | @lecture images | + | |
- | CASE 6 | + | |
- | Bdec element | + | |
- | CASE 7 | + | |
- | éi_ enlemecnt | + | |
- | CASE & | + | |
- | Émodif case | + | |
- | ENOSELECT | + | |
- | RETURN | + | |
- | ] | + | |
- | Wik e e d d RN AT R é E E R | + | |
- | * RECHERCHE DE LA 70NE DE CLIC * | + | |
- | se cr o e oy e o A o r e e e v e e e “ h d e | + | |
- | ***l“kqi**t*ttt*tt*# | + | |
- | * Cette routine renvoit le numéro de la zone “ | + | |
- | * correspondant aux coordonnées pxs et pys. 51 aucune zone * | + | |
- | * ne correspond aux coordonnées, | + | |
- | t; | + | |
- | FUNCTION chezronec (eh, peys) | + | |
- | LOCAL 1% | + | |
- | LOCAL mum_zones | + | |
- | LOCAL x1%, | + | |
- | num_zona%=0 | + | |
- | FOR i%=1 10 nb_zones | + | |
- | x1%=# | + | |
- | vlt=rone# | + | |
- | w2%=zone%(i%, | + | |
- | véiezonet(i%, | + | |
- | 1F @tst zone(pk.pyk, | + | |
- | num zonek=ik | + | |
- | ENDIF | + | |
- | HEXT i% | + | |
- | RETURN num zone% | + | |
- | ATAR| MAGAZIME | + | |
- | ENDFUNC | + | |
- | L eh e ik AR Rk A R E RS ÉÉÉ R | + | |
- | * * ATTENTE SELECTION FONCFION EDTTEUR * | + | |
- | ] *tt**; | + | |
- | i ***fiit*# | + | |
- | | % Cette routine attend que l' | + | |
- | ' % zone de clic correspondant à une fonction de l' | + | |
- | ! t*ttt# | + | |
- | i : Sortie du programme | + | |
- | : CliC zone passage image inférieure | + | |
- | : Clic zone passage image supérieure | + | |
- | ; €lic zone sauvegarde imagés | + | |
- | - Clic zone lecture imègés | + | |
- | * | + | |
- | 0ME | + | |
- | H— | + | |
- | « Ëlie-zone incrémentation élément courant | + | |
- | L | + | |
- | 0 U O O #= 4 3 # | + | |
- | (i position clic | + | |
- | FUNCTION att zone clic | + | |
- | LOCAL zone clic® | + | |
- | RFFEAT | + | |
- | éatt clic{clic x*,clic v | ATTENTE CLIC SOURIS | + | |
- | zune: | + | |
- | UNTIL zone clic&0 | ATT CLIC ZOME | + | |
- | RETURN zone clic* | RENVOT KUMERO ZOWE DE CLIC | + | |
- | ENDFUNÉC | + | |
- | i | + | |
- | i | + | |
- | ok EaddERdd d rr e é d b d E | + | |
- | ! = FONCTION PRINCIPALE DE L' | + | |
- | | i s o el ol e T e e RR E A RE e e EN | + | |
- | PROCEOURE edit | + | |
- | LOCAL zone click | + | |
- | F | + | |
- | sorties#=0 ! CONDITION DE SORTIE - Q | + | |
- | H | + | |
- | zoné click~@att zome clic ! ATTENTE D'UN ORDRE | + | |
- | Eeuec_fnnctian{zune_; | + | |
- | EXIT IF sortie*=l ! TEST SI COWDITION DE SORTIE =1 | + | |
- | LOCP | + | |
- | RETURN | + | |
- | ï | + | |
- | 1 dh d d é d d d e d S | + | |
- | ' # PROGRAMME PRINCIPAL * | + | |
- | | P e S = E E E | + | |
- | PROCEDURE main | + | |
- | posx0==15 1 POSITION X DE L' | + | |
- | posydé=3 | POSITION Ÿ DE L' | + | |
- | num image*%=1l | INIT NUMERD IMAGE | + | |
- | element courantä=l ! INIT NUMERO ELEMENT COURANT | + | |
- | ginit clic | 1 INITIALISATION DES ZOKES DE CLIC | + | |
- | @init images 1 INTTIALISATION IMAGES DE DEBUT | + | |
- | éload elements(" | + | |
- | paff edit ! AFFICHAGE DE L' | + | |
- | SHOMM 1 AFFICHAGE SOURLS | + | |
- | Bedit ! PROCFOURE D' | + | |
- | RFTURN | + | |
- | 1 b b ik A e e o o É e e r e e e d kb | + | |
- | BEST OF GRA BASIC | + | |
- | w | + | |
- | Æ | + | |
- | - Élic zone décrémentation élément courant & | + | |
- | : Clic dans l‘image. clic »% et clic y* contiennent * | + | |
- | *t**It**ttt*****i**ùfiùùlt*****iiihlkttt*tittt*k“iHt**fii*# | + | |
- | e T L S | + | |
- | i e i,— | + | |
- | p | + | |
- | T-" * | + | |
- | | # AFFICHAGE DES IMAGES CONSTRUITES * | + | |
- | 1 = L | + | |
- | | RR ETE ok e o o e S RE E | + | |
- | dxhadthEttartEiTrEaNd bE | + | |
- | ‘ © _ programme AFF IM6S * | + | |
- | En é c SE R IS ETE E E SE | + | |
- | T A A u e d e d u r R e r r e r | + | |
- | ! # ) Patrick Leclercqg & ATARI MAGATINE * | + | |
- | | NN el i E ÉÉ E i e E e S E el R | + | |
- | RESERYE 50000 ! RESERVATION MEMOIRE POUR LE BASIC | + | |
- | OPTION BASE 1 | + | |
- | DIM images|(10, | + | |
- | DIM e ement§{256) ! TAELEAU POUR LES ELEMENTS | + | |
- | nb elements-2 ! NOMBRE ELEMENTS EN MEMOIRE | + | |
- | ! LES INDICES DE TABLEAU COXMENCENT À 1 | + | |
- | ecran travall# | + | |
- | émaîn ! APPEL ROUTIME PRIRCIPALE | + | |
- | VOID MFREE(ecran travail& | + | |
- | END ! FIN DU PROGRAMME | + | |
- | I ARk EArEA ARt kR A AR R AR bR R R F R e d R d | + | |
- | * #* DEFINITION DE L' | + | |
- | L e e e e e e e e e e e e e e o ol e e ol e e u " " i | + | |
- | PROCECURE def ecr log(ecran logiques) | + | |
- | VOID XBI05(5, | + | |
- | RETURK | + | |
- | ! | + | |
- | I g ol e ol ol e e o u D e A O " | + | |
- | * * LECTURE D'UN TABLEAU D' | + | |
- | L RN R A U T R E RE | + | |
- | PROCEDURE 1nad tableau(nom$, | + | |
- | LOCAL adr datas | + | |
- | i | + | |
- | adr datat=LONG{ARRPTR(£ab] (}}} | + | |
- | BLOAD nomt,adr datas | + | |
- | RETURIN | + | |
- | i | + | |
- | 1 e e dc nn e o ok e e ce ok e B h m e de b e s o e e b | + | |
- | \ # LECTURE DES CLEMENTS GRAPHIQUES. * | + | |
- | 1 é É i E r e ol e É S S i D o | + | |
- | PROCEDURE load elements(nor$) | + | |
- | LOCAL 1% | + | |
- | LOCAL palf | + | |
- | i | + | |
- | OPEM " | + | |
- | palt=sPACE$(32} | + | |
- | BGET # | + | |
- | VOID XBI05(6, | + | |
- | nb_elements*=INPF(# | + | |
- | | QUVERTURE DU FICHIER | + | |
- | 1 LECTURE DE LA PALETTE | + | |
- | I DECLARATION PALETTE | + | |
- | ! LECTURE MOMERE ELEMENTS | + | |
- | FOR 1%=1 TÜ rlll-_E' | + | |
- | element${i%)=5PACE$(134] ! RESERVATION MEMOTRE | + | |
- | BRET # | + | |
- | REXT i% | FIN BOWCLE LECTURE | + | |
- | CLOSE #l ! FERMETURE DU FICHIER | + | |
- | RETURN | + | |
- | | ÉÉN E ol o i o o o ol e o o e i | + | |
- | ATARI MAGAZINE | + | |
- | ' * AFFICHAGE D'UN ELEMENT DE L' | + | |
- | e L Sk e e e e e c e e e e E e E | + | |
- | de e e e e o d e r e e e e e rr e e ok e r t rl ol o e e ol o o " i S E d E | + | |
- | ! # imaget - Numéro de l' | + | |
- | ' * colonne® : Numéro de la colonne de l' | + | |
- | ' % lTlgne% : Numéro de la ligne de l' | + | |
- | 1 E E d e r é s s | + | |
- | PROCEDURE aff element(image%, | + | |
- | LOCAL pack, Dy | + | |
- | LOCAL num elements | + | |
- | I | + | |
- | ' LECTURE NUM ELEMENT | + | |
- | num. el ementi=images | (image%, colonnes, ligne#] | + | |
- | * CALCUL POS X ELEMENT | + | |
- | px& | + | |
- | * CALCUL POS Y ELEMENT | + | |
- | pys=({1igne# | + | |
- | " AFFICHACHE ELEMENT | + | |
- | PUT px&, | + | |
- | RETURN | + | |
- | I drdrkabvrd i e s v ok o e e ol e s o R O | + | |
- | " * AFFICHAGE D'UNE IMAGE * | + | |
- | L ÉRTAAREd oA dodeA okR e ÉTEA | + | |
- | U ke e E e e ke E ke e o e o e g d e sl o ol el g o ol o r e el o e 0 o e ot e o i e o | + | |
- | * L' | + | |
- | * # l' | + | |
- | ! * mémoire (ecran travail%). Une fois 1' | + | |
- | | * complétement terminée, le programme recopie l' | + | |
- | * * travail sur l' | + | |
- | * * Cette méthode permet d' | + | |
- | * * plus agréable à l' | + | |
- | L é b b i ol e e S e e e e e o o o q e S S p e" i e e | + | |
- | PROCEDURE aff image(num images) | + | |
- | LOCAL ix%,iy4 | + | |
- | @def ecr log{ecran travail& | + | |
- | cS O ! EFFACEMENT DE L' | + | |
- | FOR iy&=1 TO 10 | + | |
- | FOR ix<=l TO 18 | + | |
- | Baff element(num imagek, | + | |
- | NEXT 1X% | + | |
- | MEXT 146 | + | |
- | Édef ecr log(XBI0S{Z)) | ECRAN PHYSIQUE - ECRAN LOGTQUE | + | |
- | BMOVE ecran travail®, | + | |
- | RETURN | + | |
- | i | + | |
- | = | + | |
- | | ANA o e ek E E | + | |
- | ' € PROGRAMNE PRINCIPAL * | + | |
- | 1E 4 E R E A E E d o de 3 d E o e | + | |
- | FROCEQURE main | + | |
- | LOCAL 1% | + | |
- | i | + | |
- | posxûs=lh L INIT PDO5 X IMAGE | + | |
- | posy0#=3 ! INIT FOSI Y IMAGE | + | |
- | @load elements(" | + | |
- | @loëd tableau(" | + | |
- | FOR i%=1 TO 10 | + | |
- | Baff image{i%) | + | |
- | VOID INP(2) | + | |
- | NEXT i% | + | |
- | RETURN | + | |
- | | AFFICHAGE IMAGE 1% | + | |
- | | ATTENTE CLAVIER | + | |
- | BEST OF GPRA BASIC | + | |
- | GRAPHISME EN GFA BASIC | + | |
- | FABRICATION | + | |
- | PAR ASSEMB | + | |
- | IMAGES | + | |
- | SE SPRITES | + | |
- | Un légo informatique | + | |
- | Voici une technique permettant de dessiner des images à partir de | + | |
- | sprites qui est beaucoup utilisée par les développeurs de jeux | + | |
- | vidéo pour fabriquer des images avec peu de place mémoire. | + | |
- | Qu' | + | |
- | Un sprite est une image pouvant s' | + | |
- | fond graphique quelconque. Contrairément à une image rectangulaire | + | |
- | ‘affichée avec l' | + | |
- | n' | + | |
- | Les sprites peuvent être utilisés pour réaliser des animations divers | + | |
- | (monstres de jeux vidén, vaisseaux spatiaux, lettres se déplaçant sur | + | |
- | l’écran, ete.) Os peuvent aussi être utilisés pour dessiner des images à | + | |
- | partir d' | + | |
- | Affichage d'un sprite | + | |
- | Le GEA Basic dispose d’une instruction SPRITE mais celle-ci est tellement | + | |
- | peu PË]' | + | |
- | Elle ne peut afficher que des sprites dessinés en deux couleurs et ne | + | |
- | pouvant faire plus de 16x16 pixels. Pour afficher un sprite en 16 couleurs | + | |
- | et de dimensions quelconque, il faut uriliser les opérateurs gra | + | |
- | phiques logiques. | + | |
- | Un sprite est constitué de deux images: la forme et le masque La | + | |
- | forme contient le dessin du sprite réalisé sur un fond de couleur 0. | + | |
- | Le masque est un dessin en couleur © réalisé sur un fond de couleur | + | |
- | 15. Les pixels en couleur D du masque correspondent aux pixels | + | |
- | affichables de la forme. Les pixels en couleur 15 du masque correspondent | + | |
- | aux pixels non alfichables de la forme. | + | |
- | Le masque doit être affché avant la forme. Le masque est affiché | + | |
- | avec l’opérateur graphique logique AND ec la forme avec l' | + | |
- | graphique logique OR | + | |
- | L' | + | |
- | logique. Le type de l' | + | |
- | la variable alphanumérique (1 pour opérateur AND et 7 pour opérateur | + | |
- | ÜR), | + | |
- | ! Opérateur AND | + | |
- | | Opérateur OR | + | |
- | PUT px, | + | |
- | PUT px,py; formes, ? | + | |
- | Un article présentant les Üpémt-:: | + | |
- | exemples d' | + | |
- | Génération d'un sprite | + | |
- | Pour avoir un sprite, il faut dessiner le masque et la forme. Le dessin | + | |
- | du masque est une opération délicate. C'est souvent la hantise des | + | |
- | sraphistes, On peut simplifier les opérations en générant le masque | + | |
- | ét la forme à partir d’une seule image. Cette image doit être dessinée | + | |
- | sur un fond de couleur 15. On dit alors que la couleur 15 est une | + | |
- | couleur transparente, | + | |
- | pas affichés sur l' | + | |
- | sur l’écran, les sprites ne sont pas dessinés en 16 couleurs, mais en 15 | + | |
- | (de la couleur Q à la couleur 14). | + | |
- | Table des couleurs VDI | + | |
- | Avant d' | + | |
- | faut étudiér la manière dont le GFA Basic gère les numéros de couleurs. | + | |
- | Les fonctions graphiques du GF4 Baste n' | + | |
- | normal des couleurs, mais le codage couleurs des fonctions graphiques | + | |
- | VI (implantés dans les ROMS du 5T). | + | |
- | Par -E]{f:mpk, le numeéro de couleur VDI n: | + | |
- | Lorsqu' | + | |
- | couleur 1, elle écrit dans la mémoire vidéo la valeur 15 cc non la valeu1r. | + | |
- | teeeee==== fussus ismit #. Fun=us=zen +-----acumem | | + | |
- | | Numéro | Muméro | | Mumëro | Numéro | | + | |
- | | Couleur | véritable | | couleur | véritable | | + | |
- | | GFM/VOI | couleur | | GEM/VDI | couleur | + | |
- | d{csuestiees Lo L t e PE e e fommmmm——— + | + | |
- | e | 0 [ £l S p 7 | | + | |
- | [t el R i, -y S|[OS | + | |
- | | 2 | ! [ B 3 | | + | |
- | | 3 æ PR = 0l | | + | |
- | 1= | 4 D LR i M | | + | |
- | M5 ekl T i A = . | | + | |
- | [ | E I b T = I | | + | |
- | dl | 5 el E RE E | | + | |
- | Fau=s=——-——=- S RE + F-ponmen-- TGSS + | + | |
- | ATARI .MMGAEIHLW GESTOF GRA BASIC | + | |
- | N — —s se | + | |
- | Le çudgäç de couleur VIN n'est pas utilisé par ous e programmes | + | |
- | ST. Les logiciels de dessin graphiques (Deges Efite par exemple) urilisent | + | |
- | les vrais numéros de couleurs. Les opérateurs graphiques logiques | + | |
- | qui agissent sur les couleurs au niwau codage binaire ont besoin | + | |
- | des vrais numéros de couleurs. Pour obtenir la couleur 15 dans | + | |
- | la mémoire écran, il faur utiliser la coulsur 1 en GFA Basic. | + | |
- | Fabrication d'une forme de sprite | + | |
- | L' | + | |
- | couleur 15, La forme est le dessin du sprite réalisé sur un fond de | + | |
- | couleur Ü. Pour générer une forme à partir d'une image de base, il | + | |
- | faut changer tous les pixels de couleur 15 en couleur 0. Pour le GFA | + | |
- | flasic, en tenant compte du transcodage de couleur, il faur convertir | + | |
- | tous Jes pixels de couleur 1 en couleur O, | + | |
- | La procédure Ëgen forme fabrique ure forme à partir d'une image | + | |
- | de base, L' | + | |
- | tx% pixels de lange et ty% pixels de haut | + | |
- | | ULAREHHAAARRREETE ÉÉ R SREE SREE | + | |
- | ! * FABRICATION FORME SPRITE * | + | |
- | I RRFN ERETRÉEEeaa E N | + | |
- | PROCEDURE gen forme[pxs, | + | |
- | LOCAL xpos*, ypos® | + | |
- | FOR ypost=pyt TO pyttys-] | + | |
- | FOR xpos®=px= TÜ pxi+ixs-1 | + | |
- | IF POINT(xpos%, | + | |
- | COLOR 0 . | + | |
- | PLOT xposs, | + | |
- | ENDIF | + | |
- | NEXT xpos | + | |
- | NEXT wposs | + | |
- | RETURN | + | |
- | Fabrication d'un masque de sprite | + | |
- | L' | + | |
- | couleur 15. Le masque est un dessin en couleur 0 réalisé sur un fond | + | |
- | de couleur 15. Pour générer un masque à partir d'une image de base, | + | |
- | il faue changer tous les pixels de couleur aurre que 15 en couleur O, | + | |
- | En tenant compte du codage couleur du GE4 Basic, 1l faut convertir | + | |
- | tous lés pixels de couleur autre que 1 en pixels dé couleur O, | + | |
- | La procédure Égen masque fabrique un masque de sprite à partir | + | |
- | d'une image de base située à la position (px%, py%). Elle mesure px* | + | |
- | pixels de large et py* pixels de haut. | + | |
- | 1 -ll.-g: | + | |
- | ! * FABRICATION MASQUE SPRITE * | + | |
- | I E a T TR TS CM E E e e E E A d d d A S | + | |
- | PROCEDURE gen masque{px®, | + | |
- | LOCAL xpos%, | + | |
- | FOR ypos%=py% TO pyettys-1l | + | |
- | FOR xpos%=px= TO pxéttxs-1 | + | |
- | IF POINT(xpos*, | + | |
- | COLOR O | + | |
- | PLOT xpost, | + | |
- | ENDIF | + | |
- | NEXT xpos% | + | |
- | NEXT yposh | + | |
- | RETURN | + | |
- | Le programme GENSPRIT | + | |
- | Le programme GENSPRIT fabrique des sprites (masques et formes) | + | |
- | à pareir d’une image Deges Elite et les stocke dans un fichier disque. | + | |
- | Le contenu de ce fichier peut être utilisé par divers autres programimes. | + | |
- | d bN RR R e e REF | + | |
- | É GENERATEUR DE SFRITES p | + | |
- | e g e o o A T A R R é o d o d E RE O | + | |
- | * Programme GENSPRIT.GFA — * | + | |
- | E E ue r e r RE ETÉT TRI AXX | + | |
- | * (C) 1991 Atari Magazine * | + | |
- | * (C) 1991 Patrick Leclercg * | + | |
- | PR E E e E d3 EN | + | |
- | RESERVE 50000 | + | |
- | OPTION BASE 1 | + | |
- | DIM sprites(255, | + | |
- | * spriteh(né, | + | |
- | “ spritef(n&, | + | |
- | Émain | + | |
- | END | + | |
- | R o o b Tk M B o B A e o N T | + | |
- | ! * PROCEDURE PRINCIPALE * | + | |
- | | ÉF AAAARANRR RR RR RE E | + | |
- | FROCEBURE main | + | |
- | @gen sprites | + | |
- | @sauve sprites[" | + | |
- | RETURN | + | |
- | =U E E E E S E E E E r S — rrr S | + | |
- | hhh k khh de o é ok W Wl e r d e o e e e | + | |
- | * CHARGEMEMT IMAGE DEGAS ELITE * | + | |
- | P R R E R AR R A ds d R E A AR E E E | + | |
- | FhEEA kAR ERRAAAFELF TR AR AR RE RRES E | + | |
- | * Cette procédure stocke la palette = | + | |
- | | * de couleur de l' | + | |
- | ! % 14 variable globale palettet. r | + | |
- | D E RN W A R e e e d d ol ke d d E o E | + | |
- | PROCEDURE loäd degas(nom$) | + | |
- | palettef=SPACES(32) | + | |
- | OPEN " | + | |
- | SEEK #1,2 | + | |
- | BGET # | + | |
- | VOID XETOS(6, | + | |
- | BGET #1,XET0S(2) , 32000 | + | |
- | CLÔSE #l | + | |
- | RESERVE MEM | + | |
- | OUVRIR FICHIER | + | |
- | SAUTER ENTETE | + | |
- | CHARGE PALETTE | + | |
- | MODIF PALETTE | + | |
- | CHARGE IMAGE | + | |
- | FERMER FICHIER | + | |
- | s —— - — — ™ =— LIs | + | |
- | ATARI mmaa.äuNF BEST OF GFA BASIC | + | |
- | e B P R o e B B B e R e EE e | + | |
- | Y T T e b b L R e DL LS é r e e d e | + | |
- | ' * FABRICATION MASQUE SPRITE * | + | |
- | 1 e e e e d ol r e iy o e e d ok o o o e e R | + | |
- | PROCEDURE gen masque (px, pys, ta%, tys) | + | |
- | LOCAL xpos%, | + | |
- | FOR ypos%=py¥ TO pyx+ty%-1 ! BOUCLE EN Ÿ | + | |
- | FOR xpos%=px% TO pa%+tx%-1 | BOUCLE EN X | + | |
- | ÏF POINT(xpos%, | + | |
- | COLOR À ! FIXE COULEUR PIXEL | + | |
- | PLOT xpos%,ypos% ! TRACE PIXEL | + | |
- | ENDIF | + | |
- | NEXT xposs | + | |
- | NEXT ypos% | + | |
- | RETURN | + | |
- | — r B BE ORI T O B R UER SRR r E | + | |
- | I ek ÉN b E ket = AW | + | |
- | ! * FABRICATION FORME SPRITE ”* | + | |
- | | tkhéaa e ki R R d e R A R T A ko | + | |
- | PROCEDURE gen forme(px*, | + | |
- | LOCAL xpos%, | + | |
- | FOR ypos*=pys TO pys+tys=-1 | BOUCLE EM Y | + | |
- | FOR xpos%=px% TÜ pa%+tx%-1 ! BOUCLE EN X | + | |
- | IF POINT(xpos%, | + | |
- | COLOR O ! FIXE COULEUR PIXEL | + | |
- | PLOT xpos%k, | + | |
- | ENDIF | + | |
- | NEXT xpos | + | |
- | NEXT ypos% | + | |
- | RETURN | + | |
- | P E P P E P A A TT E TT C OR R | + | |
- | | e e e e T E r V r e e e e e e e | + | |
- | ' * SAISIE D'UN SPRITE SUR L' | + | |
- | | VRN TTAAREÉEtERREREE RR v e E RE RE | + | |
- | PROCEDURE 5& | + | |
- | LOCAL image$ | + | |
- | LOCAL px?%,pyes | + | |
- | pxi4=pxs+txs=1l | + | |
- | pyZE=pyi+iy%-1 | + | |
- | GET px%, | + | |
- | Bgen masque(px%, | + | |
- | GET pxH, | + | |
- | PUT px%,py%, image$ | + | |
- | Égen forme(px®, | + | |
- | RETURN | + | |
- | P TEI BN T L NN N SR LR | + | |
- | | RESTAURE IMAGE | + | |
- | | FABRIC FORME | + | |
- | GET pxd, | + | |
- | | e e 3 & 0 RR W WO R ki o e ek | + | |
- | ' # GENERATION DES SPRITES * | + | |
- | | HE TEI ER X | + | |
- | PROCEDURE gen sprites | + | |
- | LOCAL nom_image$ | + | |
- | LOCAL n% | + | |
- | LOCAL pxs pys | + | |
- | LOCAL tx%,ty | + | |
- | DO | + | |
- | READ nom_imaged LIRE NOM IMAGE | + | |
- | EXIT IF nom image$="# | + | |
- | @load degas(nom imagef! | CHARGE IMAGE | + | |
- | Do | + | |
- | READ n% ! LIRE NUMERO SPRITE | + | |
- | EXIT IF n%=-1 | TEST SI FIN SPRITE | + | |
- | READ px* | LIRE POS X SPRITE | + | |
- | READ pys | LIRE POS Y SPRITE | + | |
- | READ tx* ! LIRE TX SPRITE | + | |
- | READ 1y% ! LIRE TV SPRITE | + | |
- | 1 INC nb spritess UN SPRITE DE FLUS | + | |
- | Bsaisie sprite(nk, | + | |
- | LOOP | + | |
- | LOOP | + | |
- | RETURN | + | |
- | P ETE E E P r r M r R rr rr e R e r e e e e e e e M e M e e e | + | |
- | 1 éh e E S E e e r é e e e d d e e ue e | + | |
- | ' * SAUVEGARDE DES SPRITES SUR DISQUE * | + | |
- | E A kAR At e rr d e d e e 1 A R E E E RE RE | + | |
- | PROCEDURE sauve sprites(nom$) | + | |
- | LOCAL n% | + | |
- | LOCAL taille* | + | |
- | LOCAL adr_masques | + | |
- | LOCAL adr_formes | + | |
- | OPEN " | + | |
- | EPUT # | + | |
- | FOR n&=1 T0 255 ° | + | |
- | taille*=LEN(sprite5{n&, | + | |
- | IF taillete=0 IPRESERCE SPRITE ? | + | |
- | BPUT # | + | |
- | BPUT # | + | |
- | adr masque*=VARPTR(sprite$(n#, | + | |
- | BPUT #1,adr masqueS, | + | |
- | adr formeS=VARPTR(spritef(n®, | + | |
- | BPUT #1,adr forme%, | + | |
- | ENDIF | + | |
- | NEXT n* | + | |
- | n==0 ; | INDICE FIN DE SPRITE | + | |
- | BPUT # | + | |
- | CLOSE #1 ! FERMETURE FICHIER | + | |
- | RETURN | + | |
- | 1 | + | |
- | ATARI MAGAZINE m BEST OF GFA BASIC | + | |
- | N . --““F———-_“---H________------------ | + | |
- | | RR RE AN LRk kR TR AT Ak kT oy | + | |
- | ! * FORMAT DE DEFINITION DES SPRITES # | + | |
- | i h; | + | |
- | —— - | + | |
- | DATA IMAGEI.FIl | + | |
- | DATA 1, | + | |
- | DATA 2, | + | |
- | DATA 3, | + | |
- | DATA 4, | + | |
- | DATA -1 | + | |
- | —0 N N N N N E E srr | + | |
- | DATA IMAGEZ.PI1 | + | |
- | DATA 5, | + | |
- | DATA 6, | + | |
- | DATA 7, | + | |
- | DATA -1 | + | |
- | [ ——————E | + | |
- | DATA IMAGE3.PIL | + | |
- | DATA 8, | + | |
- | DATA 9, | + | |
- | DATA -1 | + | |
- | DATA *FIN | + | |
- | Ce programme peut générer des sprites à partir de plusieurs images | + | |
- | Degas Elite. Le nom des images est stocké dans les lignes de DATA | + | |
- | avant la position des sprites. La valeur -1 indique la fin des sprites | + | |
- | de l' | + | |
- | plus d’images à charger et donc plus de sprites. | + | |
- | Les sprites sont dessinés sur un fond de couleur 15, Is sont définis | + | |
- | dans le programme sous la forme d’un numéro, d'une position PX, | + | |
- | d'une posidon PY, d’une largeur TX et d'une hauteur TY. Le | + | |
- | numéro est le numéro de référence du sprite Les numéros de | + | |
- | rélérence n'ont pas besoin de se suivre. Il est possible de définir le | + | |
- | sprite 12 À la suite du sprite 6. Cette technique permet d' | + | |
- | mouveau sprite dans la liste sans être obligé de renuméroter tous les | + | |
- | sprites suivanits, | + | |
- | Fonctionnement de GENSPRIT | + | |
- | Les sprites sont stockés dans le tableau sprite$(). Le masque du | + | |
- | sprite n* est stocké dans la variable sprite$(n&, | + | |
- | la variable sprite$(n%, | + | |
- | 255 éléments, mais peut être agrandi à volonté | + | |
- | La routine @load degas charge une image Degas Elite sur l’écran. A | + | |
- | la différence des routines de chargement présentés habituellément | + | |
- | dans cette rubrique, la palette de couleur de l' | + | |
- | dans une variable locale, mais dans la variable globale palettes. Le | + | |
- | contenu de cette variable est utilisée par la procédure ©sauve | + | |
- | sprites. | | | + | |
- | La procédure Bgen_masquel px%, py%s, txs, t v&) fabrique un masque | + | |
- | à partir de l’image située à la position (px*, py&) et de dimensions | + | |
- | (tx%,ty%). La procédure Bgen forme(px*, | + | |
- | ue forme de sprite à partir de I' | + | |
- | (pxk,pyé) et de dimension [txs tyé). | + | |
- | La procédure Ésaisie _sprite fabrique le masque et la Fcrrmc_ld’ufu | + | |
- | sprite ec sauve le tout en mémoire, Le dessin du masque modifie l' | + | |
- | originale du sprite, c'est pourquoi @saisie sprite sauve dans | + | |
- | image$ l’image du sprite et la réaffiche après avoir généré le masque. | + | |
- | La routine Bgen sprite supervise la fabrication des sprites, Elle | + | |
- | charge les images Degas Elite, lit les données des sprites et appelle les | + | |
- | procédures de fabrications du masque et de la forme. Clest la routine | + | |
- | la plus impartante du programme. | + | |
- | Sauvegarde des sprites | + | |
- | :n::gn fichier disque | + | |
- | La procédure Ésauve sprites(nom$) sauve les sprites dans un fichier | + | |
- | disque portant le nom nom$. Le fichier commence par 32 octets | + | |
- | contenant la palette de couleurs utilisée par les sprites, suivis du | + | |
- | stockagé des sprites. Les sprites sont scockés sous la forme du | + | |
- | numéro de sprite (4 oetets), la taille d’un élément graphique (4 octets | + | |
- | - taille du masque et de la lorme), du masque et de la forme. La fin | + | |
- | du fichier est signalée par la valeur 0 stockée sur 4 octets. | + | |
- | BPUT # | + | |
- | BPUT # | + | |
- | [es variables n et taille% sont sauvées sous la forme d'unc zoné | + | |
- | mémoire de 4 octers car elles occupent 4 octets en mémoire. La fonetion | + | |
- | VARPTR{var) fournis l’adresse de la variable var (quelque soir le | + | |
- | type de variable). ; | + | |
- | Amélioration de GENSPRIT | + | |
- | 1l est possible de stocker les coordonnées des sprites dans un fichier | + | |
- | texte et de modifier GENSPRIT pour qu'il extraie les informations | + | |
- | dont 1l à besoïn à partir de ce fichier. | + | |
- | Cela évite de modiliér le programme pour générer un nouveau fi | + | |
- | chier de sprites. Cela permet aussi d' | + | |
- | GENSPRIT ne prenant que peu de place disque e s' | + | |
- | pidemert que la version interprété. Le fichier texte pourrait ressembler | + | |
- | à cec | + | |
- | w A e A e ol o r o oA i e e e r ok oy E E | + | |
- | -* DEFINITION SPRITES * | + | |
- | ; HR g ok e ok okl e ok e e RR RE | + | |
- | IMAGE1.P[1 | + | |
- | 10 037 20 | + | |
- | = 34 Q 21 20 | + | |
- | 361 0 9 44 | + | |
- | 4 76 0 72 18 | + | |
- | TMAGEZ . P11 | + | |
- | 5 158 0 33 41 | + | |
- | é 201 0 21 27 | + | |
- | 7 232 0 40 47 | + | |
- | IMAGE3.PTI1 | + | |
- | & 277 09 10 | + | |
- | à 292 0 12 17 | + | |
- | *FIN | + | |
- | - ATARI WHEWHEH OFGFA BASIC | + | |
- | Vous pouvez aussi ajoutez à GENSPRIT la possibilité de sauver des | + | |
- | sprites dans un fichier qui en contient déja, évitant ainsi de redessiner | + | |
- | des sprites déja faits. | + | |
- | Il est possible de stocker le numéro et le nombre d' | + | |
- | dans une vartable de type entier 16 bits (symbole &), Cela représente | + | |
- | une économie de 4 octers par sprites. Mais il faut fairé attention à ne | + | |
- | pas mélanger les symboles % et & dans le corps du programme. | + | |
- | EPUT n&, | + | |
- | BPUT taillek, VARPTR(taille& | + | |
- | Si le nombre de sprites ne risque pas de dépasser 255, 1l est méme | + | |
- | possible de stocker le numéro de sprite dans une variable du type byte | + | |
- | (symbole |). Cette varable n' | + | |
- | de cet octet peut se faire avec l' | + | |
- | OUT. | + | |
- | EPUT n| , | + | |
- | OUT #l,n| | + | |
- | Utiliser des variables de différents types en GEA Basic est risqué, car | + | |
- | 1l est facile de r_' | + | |
- | d' | + | |
- | toujours très difficile à repérer, Pour éviter cela, il est préférable d' | + | |
- | un type unique de vatiable et de s’y tenir. 5i l' | + | |
- | variable particulière vous permet d' | + | |
- | de place mémoire ou de vitesse d' | + | |
- | commentaires dans votre programme, de manière à ne pas oublier | + | |
- | que cette variable est différente des autres. | + | |
- | Fabrication d'une image | + | |
- | par assemblage de sprites | + | |
- | Le programme DRAWIMG fabriqué des imagés én affichant les uns par | + | |
- | dessus les autres plusieurs sprites. Ces sprités sont chargés à partir | + | |
- | d'un fichier disque généré par le programme GENSPRIT. | + | |
- | DE ok b AN RE E N e D d e é r B | + | |
- | L CONSTRUCTTON D* IMAGES * | + | |
- | N A FARTIR DE SPRITES 7 | + | |
- | | deded o ok s ke o de ko ok ok e e W e i e T E | + | |
- | | * Programme DRAWIMG.GFA 5 | + | |
- | ! ' | + | |
- | x (C) 1991 Atari Magazine ; | + | |
- | * (C) 1991 Patrick Leclerca * | + | |
- | I HFEERP R e ce e e S e e e e e S e C | + | |
- | RESERVE 100000 | + | |
- | OPTION BASE 1 | + | |
- | o s e r e i o e -t - e e e i S P - e e e e Ty | + | |
- | i —HRR RR E | + | |
- | ' * MEMORISATION DES SPRITES * | + | |
- | DR E R E N E A RE | + | |
- | DIM sprite5(200, | + | |
- | ' spritef(n#, | + | |
- | | sprites(n*, | + | |
- | — E S E E E S E E — — — ——— — S E E | + | |
- | U o o e e RR R e e e ol o o ke bR e A ETE | + | |
- | ! = MEMORISATION DES IMAGES * | + | |
- | R TRR E E S | + | |
- | DIM image%(50, | + | |
- | DIM taille image*(50) | + | |
- | | image%(img®, | + | |
- | * imagé%(imgé, | + | |
- | 1 | + | |
- | Emain | + | |
- | END | + | |
- | 1NA AN YW REER | + | |
- | ' # PROCEDURE PRINCIPALE * | + | |
- | I o ol L d e e e de 056 o r i e r r i d e e EN | + | |
- | PROCEDURE main | + | |
- | Bcharge sprites(" | + | |
- | Binit_images | + | |
- | Bdemo images | + | |
- | RETURN | + | |
- | - image img® | + | |
- | Pos À sprite n% - image img® | + | |
- | * image%(img%, | + | |
- | = ——R R S S B O S S r sC E R N A OE . | + | |
- | O R é e L e e e é r é é d d e e d E | + | |
- | : # DEMONSTRATION CONSTRUCTION IMAGES = | + | |
- | | XE EARÉÉETEEÉEREÉ AÉRT RAS R&RA TN &ÉR | + | |
- | PROCEDURE demo images | + | |
- | CLS | + | |
- | UJR | + | |
- | LOCATE 1,1 | + | |
- | INPUT "Mum image (0 pour fin) ", | + | |
- | EXIT IF img#=0 | + | |
- | CLS | + | |
- | PRINT img# | + | |
- | @draw imaçe{img#, | + | |
- | LOOP | + | |
- | RETURM | + | |
- | | RAAHRETEEEEATERAAARREÉÉÉRRRE | + | |
- | ' # AFFICHAGE D'UN SPRITE ?* | + | |
- | \* DU TABLEAU sprite$() * | + | |
- | I VRRRERERTEETTTERTERTEERrTENFRE | + | |
- | # n : Numéro sprite # | + | |
- | E px% : Pos X sprite ¥ | + | |
- | |* ps : Pos Y sprite # | + | |
- | l' | + | |
- | PROCEDURE aff sprite(n%, | + | |
- | PUT px%, | + | |
- | PUT px%, | + | |
- | RETUREN | + | |
- | PE g vy E E e e E E e e e g RE S | + | |
- | I AT E E E d d d E E e d d EN | + | |
- | \* AFFICHAGE DE L' | + | |
- | ATAR| MAGAZINE mEEÈÏ OFGRA BASIC | + | |
- | | AFFICHAGE MASQUE | + | |
- | | AFFICHAGE FORME | + | |
- | i | + | |
- | - | + | |
- | - | + | |
- | 0 | + | |
- | i | + | |
- | 1 | + | |
- | =—e ; | + | |
- | =— | + | |
- | = = | + | |
- | .--I.:| el | ! | + | |
- | = | + | |
- | Ë | + | |
- | 0 e e r e Tt et e e e “ f e e e e e S E | + | |
- | * img5 : Numêrô image 7 | + | |
- | * posx* : Position X affichage * | + | |
- | * posys : Position Y affichage *, | + | |
- | e e v v e e e d e i iy o i i e d A A E | + | |
- | PROCEDURE draw_image [1mg%, | + | |
- | LOCAL n% | + | |
- | LOCAL sporites | + | |
- | LOCAL px#,py | + | |
- | FOR n&=1 T0 taille image%(img%) | + | |
- | spritet=image*(img#, | + | |
- | pxk=images (img%, | + | |
- | pys=image%(imgs, | + | |
- | Gaff spri te(spritex, | + | |
- | MEXT n% | + | |
- | RETURN | + | |
- | SE E T E E A r r r r r r e r r r e e e M e e | + | |
- | f e d e e d d e e e e e r e d r é e e e d e | + | |
- | * CHARGEMENT DES SFRITES * | + | |
- | u À PARTIR DU DISQUE w | + | |
- | < de-de de et A A e e e r e e e é f R E SE | + | |
- | * Les sprites sont lus à * | + | |
- | * partir du fichier nom$ * | + | |
- | I s e W W W ko oo o o o ol o el i o e e e | + | |
- | PROCEDURE charge sprites(noms) | + | |
- | LOCAL pal} | + | |
- | LOCAL n% | + | |
- | LOCAL taïlle% | + | |
- | LOCAL adr masques | + | |
- | LOCAL adr formes | + | |
- | OPEN " | + | |
- | pal$=SPACES(32) | + | |
- | BGET # | + | |
- | ! QUVERTURE FICHIER | + | |
- | | RESERVE 32 OCTETS | + | |
- | | CHARGE PALETTE | + | |
- | VOID XBIOS(6, | + | |
- | CO | + | |
- | BRET # | + | |
- | EXIT IF n%=0 | + | |
- | BGET # | + | |
- | | CHARGE NUM SPRITE | + | |
- | | TEST FIN FICHIER | + | |
- | | CHARGE TAILLE SPRITE | + | |
- | spritef(n&, | + | |
- | spritet{n#, | + | |
- | adr masque%=VARPTR(sprite$(n#, | + | |
- | adr forme*=VARPTR(sprite$(n&, | + | |
- | BGET #1,adr masques, | + | |
- | BGET #1,adr formes, | + | |
- | LOOP | + | |
- | 1 | + | |
- | CLOSE #l | + | |
- | RETURN | + | |
- | _._l_r-|_|_|.u|_|-" | + | |
- | D e e oy e e e o ol d o e ok o e el e A O O T o CC | + | |
- | \ * INITIALISATION DES IMAGES * | + | |
- | ] ADR FORME | + | |
- | ! CHARGE MASQUE | + | |
- | ! CHARGE FORME | + | |
- | ! FERMETURE FICHIER | + | |
- | ATARI MAGAZINE | + | |
- | L RR RR AI R NNN A É E RRN | + | |
- | FROCEDURE init_imagés | + | |
- | LOCAL num image% | + | |
- | LOCAL nb_sprites% | + | |
- | LOCAL n%, | + | |
- | RESTORE def_images | + | |
- | Do | + | |
- | READ num image* | + | |
- | EXIT IF num imaget=0 | + | |
- | nb spritess=0 | + | |
- | Do | + | |
- | READ n | + | |
- | EXIT IF n%=-1 | + | |
- | READ px%,py% | + | |
- | INC nb spritesk | + | |
- | imagek (num image%, | + | |
- | image%{num image%, | + | |
- | image%(num image%, | + | |
- | LOOP | + | |
- | taille image%(num image%)=nb_sprites* | + | |
- | LODP | + | |
- | RETURK | + | |
- | o e e R e e o e N N B | + | |
- | i ***1**titt****fli!iittt***** | + | |
- | * DEFINITION DES IMAGES = | + | |
- | g e g o e e e T R R o o R RE | + | |
- | DATA num sprite, | + | |
- | DATA num sprite, | + | |
- | DATA =1 | + | |
- | def images: | + | |
- | | ol i Wk ik o e dr e e e i | + | |
- | * * PREMIERE IMAGE * | + | |
- | TLRSU US ok REN | + | |
- | DATA 1 | + | |
- | DATA 1,10,10 | + | |
- | DATA 2,20,20 | + | |
- | DATA 3,40,40 | + | |
- | DATA -1 | + | |
- | — | + | |
- | | AN AAEEEERH | + | |
- | ! * SECONDE IMAGE * | + | |
- | E TT o ok ol e ol ol e RE RR A A A S | + | |
- | DATA 2 | + | |
- | DATA 4,10,10 | + | |
- | DATA 5,16,15 | + | |
- | DATA 6,30,30 | + | |
- | DATA -1 | + | |
- | | RENAAATE | + | |
- | | * TROISIEME IMAGE * | + | |
- | | whRr Rkr ki L | + | |
- | DATA 3 | + | |
- | DATA 2,0,0 | + | |
- | DATA 7,3,3 | + | |
- | DATA B,28,37 | + | |
- | BEST OF GFA BASIC | + | |
- | DATA 9,20,:0 | + | |
- | DATA -1 | + | |
- | | dededede i @ ok o o b ke oo e o o o ol kel | + | |
- | ' * QUATRIEME IMAGE * | + | |
- | | T o T e ÉÉ RE | + | |
- | DATA 4 | + | |
- | DATA 2.0.0 | + | |
- | DATA 7,5,5 | + | |
- | DATA 1,2,7 | + | |
- | DATA -1 | + | |
- | ï | + | |
- | g A d d de 0 ol o o A e S | + | |
- | | * FIN DE DONNES ™ | + | |
- | S whEEEETdktdthk kAW | + | |
- | DATA © | + | |
- | Chaque image est définie par une série de sprites. Ceux-ci sont | + | |
- | eux-même définis par un numéro de référence ct uné position d' | + | |
- | Ils sont affichés dans l' | + | |
- | est affiché en premier, suivi du second, etc, La position d' | + | |
- | est relarive au bord de l' | + | |
- | quel endroir de l’écran. La valeur -1 signale la fin d'une image. La valeur | + | |
- | O signale que la dernière image vient d' | + | |
- | des sprites sont les numéros de références qui ont Été assignés aux | + | |
- | sprites dans les instructions DATA du programme GENSPRIT, | + | |
- | Fonctionnement de DRAWIMG | + | |
- | Les sprites sont stockés dans le programme DRAWIMG de la même manière | + | |
- | que dans le programme GENSPRIT, c' | + | |
- | sprite$(). La procédure Bcharge sprites(nom$) charge les | + | |
- | sprites du fichier nom$ dans le tableau sprite$(). La valeur © est le | + | |
- | signe de fin de fichier. La taille et le numéro des sprites qui sont stockés | + | |
- | sous la forme de 4 octets sont lus avec l' | + | |
- | PROCEDURE charge sprites(nom$) | + | |
- | LOCAL pal$ | + | |
- | LOCAL n# | + | |
- | LOCAL taille® | + | |
- | LOCAL adr masque* | + | |
- | LOCAL adr _formes | + | |
- | L | + | |
- | OPEN " | + | |
- | pal$=SPACE$(32) | + | |
- | BGET # | + | |
- | VOID XBI0S(6, | + | |
- | Do | + | |
- | BGET # | + | |
- | EXIT IF n%=0 | + | |
- | BGET # | + | |
- | spritef{n*, | + | |
- | spritef(n*, | + | |
- | adr_maquE%; | + | |
- | BGET #1,adr masque%, | + | |
- | adr_forme%=VARPTR{sprite{n%, | + | |
- | BGET #1,adr forme%, | + | |
- | LOOP | + | |
- | CLOSE #1 | + | |
- | RETURN | + | |
- | La procédure ouvre le fichier en lecture, charge les 32 octets de la palette | + | |
- | de couleur des sprites, puis utilise la fonction système | + | |
- | XBIOS(6) pour remplacer la palerte l’écran par la palette des sprités. | + | |
- | La procédure @init_images charge la définition des images à partir | + | |
- | des DATA, Les images sont stockées dans le rableau image=(}. Le tableau | + | |
- | tai ! le image%(img%) contient le nombre de sprites de l' | + | |
- | img% La routine Éinit images utilise une double boucle | + | |
- | D0-LO0P La boucle interne s' | + | |
- | définissant une image. La sortie de la boucle est assurée par une inst | + | |
- | ruction EXIT IF lorsque le programme rencontre la valeur -1 sigralant | + | |
- | la fin de l' | + | |
- | La rourine @draw image affiche l' | + | |
- | posy&. Elle lit les donnés définissant le sprite et utilise la procédure | + | |
- | Gaff sprite qui affiche un sprité à une position quelconque de | + | |
- | l' | + | |
- | la position relative du sprice et sa position d' | + | |
- | PROCEDURE draw image(img®, | + | |
- | LOCAL n% ; | + | |
- | LOCAL spritez | + | |
- | LOCAL px%.py% | + | |
- | FOR %=1 T0 taille imagek(img¥) | + | |
- | spritet=image%{img&, | + | |
- | pxi=image%(img&, | + | |
- | py*=image%{(img®, | + | |
- | Baff sprite(sprites, | + | |
- | NEXT n | + | |
- | RETURN | + | |
- | La procédure @demo images est une procédure de démonstration | + | |
- | qui permet de visualiser les images existantes. Flle demande un | + | |
- | numéro d' | + | |
- | frappe sur la touche [0], le programme s' | + | |
- | pas grande importance. Ce n'est qu’un banc d' | + | |
- | de tester le générateur d' | + | |
- | Bdraw_image. | + | |
- | Amélioration de DRAWIMG | + | |
- | Le programme DRANIMG peut être grandement amelioré au niveau de | + | |
- | la création des images. Au lieu d' | + | |
- | des DATA, 1l serait préférable d' | + | |
- | et de positionner les sprites À la souris. L' | + | |
- | à réalisé l y a qL; | + | |
- | Ü C'est parfaitement réalisable en GFA Basic en moins de 100 | + | |
- | lignes. : | + | |
- | Les informations définissant les sprites peuvent êtré stockées dans un | + | |
- | fichier disque. Cela permet d' | + | |
- | images sont dessinées avec de nombreux sprites. | + | |
- | ATARI HA: | + | |
- | Erant donné que les positions des sprites sont définis de manière relarive | + | |
- | à la position d' | + | |
- | positions d' | + | |
- | permet d' | + | |
- | Le scul inconvénient de certe technique, c'est qu'un sprite ne peut | + | |
- | être affiché à plus de 255 pixels du bord haut gauche de l' | + | |
- | C'est un défaut plutôt mineur! | + | |
- | Si le nombre de sprites cst inférieur à 255, on peut aussi mémorisér | + | |
- | les numéros de sprites dans des variables de type |. Cela permet | + | |
- | d’économiser encore 3 ocrets par sprite. La taille mémoire nécessaire | + | |
- | pour mémoriser un sprite est de 3 octets, alors que DRAWIMG gutilisé | + | |
- | 12 octers pour faire la même chose. Si le nombre de sprites est | + | |
- | compris entre 255 et 65535, on peut utiliser une variable de cype & | + | |
- | {l :: | + | |
- | prise par la définition d’un sprite est alors de 4 octéts. | + | |
- | Le codage des images peut être mémorisé dans une zone binaire et | + | |
- | non dans un tableau. Cela permet d' | + | |
- | mémoiré nécessaire à une image. La plupart des programmeurs de | + | |
- | jeux utilisent des données stockées directement en mémoire et non | + | |
- | dans des tableaux numériques. | + | |
- | Le programme DRAWIMG stocke un fichier graphique dans un seul rableau | + | |
- | alphanumérique, | + | |
- | blocs de sprites dans différents tableaux. | + | |
- | par exemple un tableau contenant des éléments de visages, un ta | + | |
- | bleau contemant des éléments de votures, et un tableau contenant | + | |
- | des élements d' | + | |
- | Performances | + | |
- | Cette technique permet de dessiner des images avec Irés peu de | + | |
- | mémoire, | + | |
- | Frant donné que le codage d'une image ne contient que des | + | |
- | références de sprites, la taille de l' | + | |
- | occupation mémoire. Une image de grande dimension dessinée avec | + | |
- | peu de sprites peut n' | + | |
- | gu'une petite image dessinée avec beaucoup de sprites peut oceuper | + | |
- | une centaine d' | + | |
- | S l’on ne considère pas la taille mémoire prisé par les éléments graphiques | + | |
- | de base, il est possible de coder un nombre gigantesque | + | |
- | d' | + | |
- | image moyenne est fabriqué avec 30 sprites (ce qui est déja beaucoup), | + | |
- | le codage de cette image occupe 121 octers (4x30 octets pour | + | |
- | les sprites et 1 octet pour le nombre de sprites). On peur mettre | + | |
- | 6093 images de 30 sprites sur une disquette double face. Cer exemple | + | |
- | est théorique, car les images ne seront pas toutes dessings avec 30 | + | |
- | éléments, mais il met en évidence le gain de mémoire permus par cette | + | |
- | technique. | + | |
- | Applications | + | |
- | La technique consistant à dessiner des images par assemblage (ou collage) | + | |
- | de sprites peut êÊtre urilisés dans de nombreux cas de figures. | + | |
- | Voici quelques exemples: dessin d' | + | |
- | de visages, habillements de personnages, | + | |
- | Vous pouvez vous amuser À dessiner des animaux fantastiques à partir | + | |
- | d' | + | |
- | hideux, jambes de cheval, etc.) Un éditeur de créatures fantastiques | + | |
- | ATAR| MAGAZINE | + | |
- | fonctionnant en haute résolution et réalisé en 3 jours à eu un grand | + | |
- | succes pendant la fête d'une école primaire. | + | |
- | On peur déssiner des visages en prenant des formes de visages ct en Ÿ | + | |
- | rajoutant des éléments de bases. Ces éléments sont; cheveux, yeux, | + | |
- | nez, bouches, mentons. On peut aussi y rajourer des éléments divers | + | |
- | comme des handeaux, des lunettes, des monocles, quelques cicatrices, | + | |
- | etc. Awec une cinquantaine d' | + | |
- | 60 Ko, on peut creer plusieurs centaines de visages différents. | + | |
- | On jouant sur certains éléments comme les veux ou la bouche, il est | + | |
- | même possible de faire varier l' | + | |
- | colère, peur, eté..). | + | |
- | Âvec une quarantaine de sprites représentant des murs, des toits, des | + | |
- | chemindés, des portes et des fenêtre, il est possible de dessiner un | + | |
- | grand nombre de maisons différentes, | + | |
- | Pour la petite histoire, tous les éléments graphiques du jeu de rôle | + | |
- | DONJON MASTER (murs, créarures, portes, écritures sur les muts, | + | |
- | ete..) sont dessinés entièrement avec des sprites. | + | |
- | Pour finir | + | |
- | Les programmes de cet article sont disponibles | + | |
- | sur le 3615 ATART, Tls sont livrés dans un fichier binaire compacté | + | |
- | autodécompactable et ne coûrent que quelques francs de téléchargément. | + | |
- | TELECHARGEZ | + | |
- | DES CENTAINES | + | |
- | DE LOGICIELS | + | |
- | SUR LE | + | |
- | 3615 | + | |
- | ATARI | + | |
- | BEST OF GGFA BASIC | + | |
- | GRPHISME EN GFA BASIC | + | |
- | INSTRUCTION | + | |
- | Copie rapide’ | + | |
- | COPY | + | |
- | 310CS | + | |
- | L | + | |
- | L' | + | |
- | 3.0 permettant de réaliser des affichages rapides et des effets | + | |
- | spéciaux graphiques. La voila disséquée pour vous. | + | |
- | Copie de blocs | + | |
- | RC_COPY permet de copier des blocs de pixels d'un écran à un autre, | + | |
- | Les écrans d' | + | |
- | fonctionne dans les 3 résolutions graphiques du ST et est environ 7 | + | |
- | fois plus rapide sur une machine équipée d’un blittér que sur un STF | + | |
- | de base. Sa syntaxe est la suivanté: | + | |
- | AC COPY ecranl, x1, yl, tx, ty TO ecrand, x2, y?@ | + | |
- | ecranl: | + | |
- | x1:Position X du bloc de pixel | + | |
- | yl:Position Y du bloc de pixel | + | |
- | Lx:Largeur du bloc de pixel | + | |
- | ty:Hauteur du bloc de pixel | + | |
- | ectran: | + | |
- | x#:Position X de destination | + | |
- | y2:Position Y de destination | + | |
- | Création d'un écran en mémoire | + | |
- | Un écran est une zone mémoire de 32000 octers. Cette zont mémor | + | |
- | re peut être créée en déclarant une variable alphanumérique de 32000 | + | |
- | octets. | + | |
- | ecran$=SPACES (32000) adr ecri=VARPTR(ecran3) | + | |
- | L' | + | |
- | restructuration mémoire {garbage collection). Il faur denc recalculer | + | |
- | fréquemment l' | + | |
- | l' | + | |
- | la variable ecran$ avec l' | + | |
- | On peut aussi réserver de la mémoire grâce à l' | + | |
- | La zone mémoire ainsi déclarée sera fixe. En général, les allocations | + | |
- | de mémoire sont réalisées au début des programmes. L' | + | |
- | MFREE permet de désallouer une zone mémoire créée par MALLOL. | + | |
- | adr écr4=MALLOC(32000) VOID MFREE(adr _ecr®) | + | |
- | Remarque: l’instruction MALLOC renvoie la valeur © si la reservation | + | |
- | mémoite n'a pu avoir lieu (manque de mémoire disponible). | + | |
- | Copie d' | + | |
- | On peur copier un écran sur un sutré grâce à BMOVE, une mstruction | + | |
- | de copie de mémoire. L' | + | |
- | Fadresse ecranl® à l’adresse ecran?%, Les 32 000 octets se trouvant | + | |
- | l’adresse ecran?% sont effacés par l' | + | |
- | BMOVE ecranl%, ecran£*, 32000 | + | |
- | L' | + | |
- | decerminée avec la fonction XBI0S(2). On peur donc copier le contenu | + | |
- | de l’écran physique en mémoiré et vice-versa. | + | |
- | EMOVE XBIOS(2), adr ecr&, 32000 BMOVE adr ecr%, | + | |
- | xBIOS(2), 32000 | + | |
- | Fabrication d'un écran aléatoire | + | |
- | Paur tester des routines graphiques, il faut avoir une image de test. | + | |
- | Celle-ci peut etre chargée à partir d'un disque, ou fabriquée sur place. | + | |
- | Nous vous propasant ici une petite routine fabriquant une image | + | |
- | _ aléaroire. Elle s' | + | |
- | grâce à la fonction XB105(4) qui indique la résolution courante du | + | |
- | sySbèmme. | + | |
- | PROCEDURE gen ecran | + | |
- | LOCAL 1%,c$,nb car% | + | |
- | SELFCT XBIOS(& | + | |
- | CASE D | + | |
- | nb_cars=40 | + | |
- | CASE 1 | + | |
- | nbk cars=a( | + | |
- | CASE 2 | + | |
- | nb_cars=al | + | |
- | ATARI MAG.#EIHEW BEST OF GRA BASIC | + | |
- | - | + | |
- | ENDSELECTS | + | |
- | FOR 1%=1 TO 24 | + | |
- | c{=CHR$ (RANDOM(26)+65} | + | |
- | PRINT STRINGS(nb car%,c#); | + | |
- | NEXT 1% | + | |
- | c$=CHRÉ{RANDOM(26)+65) | + | |
- | PRINT STRING${nb car%-1, | + | |
- | RETURN | + | |
- | La procédure GEN_ECRAN affiche 25 lignes de caractères, | + | |
- | caractère de la dernière ligne n'est pas affiché afin de ne pas déclencher | + | |
- | un serolling d' | + | |
- | Affichage d'un morceau d' | + | |
- | Le programme suivant charge unc image aléatoire dans un écran virtuel | + | |
- | À l’adresse adr ecr& Un morceau de cetre image est cnsuite recopié | + | |
- | sur l' | + | |
- | RESERVE 100000 | + | |
- | adr ecr%=MALLOC(32000} | + | |
- | BGEN ECRAN | + | |
- | EMOVE XBIOS(2), adr ecr%, 32000 | + | |
- | CLS | + | |
- | VoTD INP(2) | + | |
- | RC COPY adr ecr%, | + | |
- | VoID INP(2) | + | |
- | VOID MFREE [ali' | + | |
- | END | + | |
- | L' | + | |
- | est libérée en fin de programme par l' | + | |
- | fonctionne dans les 3 résolutions. | + | |
- | Copie de blocs de pixels | + | |
- | directement sur l' | + | |
- | L' | + | |
- | directement sur l’écran physique. Ces blocs ne doivent évidemment | + | |
- | pas éofméider, | + | |
- | RC COPY XBIDS(2), | + | |
- | C'est plus rapide et cela prend moins de mémaire que la combinaison | + | |
- | classique des instructions GET et PUT. | + | |
- | GET 0,0,31,31, IMGS PUT 100,100, IMGS | + | |
- | Affichage d'une image ligne à ligne | + | |
- | Linstruction RC COPY permet d' | + | |
- | Pour des raisons de simplicité, | + | |
- | l’affichage ligne à ligne uniquement en basse résolution. L' | + | |
- | divisé en 20 lignes. Etant donné qu'il y à 200 pixels de haur, chaque | + | |
- | ligne à une hauteur de 10 pixels (200/ | + | |
- | mumérotées de 1 à 20, | + | |
- | ATART MAGAZINE | + | |
- | PROCEDURE aff ligne (ligne%) | + | |
- | LOCAL ylä | + | |
- | y1% = (1igne%-1)*10 | + | |
- | RC COPY adr ecr%, | + | |
- | RETURN | + | |
- | Pour affichér une image à partir du haut de Pécran, il faut afficher | + | |
- | les lignes dans un ordre croissant. La procédure AFF_HAUT affiche | + | |
- | une image 4 partir du haut. Cet exemple est incompler. 1l manque | + | |
- | linitialisation de l’écran virtuel (avec SPACES ou MALLOC), et la tabre | + | |
- | cation de l' | + | |
- | PROCEDURE aff haut | + | |
- | FOR 1%=1 TO 20 | + | |
- | Gaff ligne (1%) | + | |
- | PAUSE 2 | + | |
- | MEXT 1% | + | |
- | RETURN | + | |
- | Pour afficher une image à partir du bas, il faut afficher les lignes | + | |
- | dans un ordre décroissant. La procédure AFF_BAS affiche unc image | + | |
- | à partir du has de l' | + | |
- | PROCEDURE. aff bas | + | |
- | FOR 1%=20 TO 1 STEP -1 | + | |
- | - Baff_Tigne(1%) | + | |
- | PAUSE 2 | + | |
- | NEXT 1% | + | |
- | RETURN | + | |
- | L' | + | |
- | l’affichage des lipnes. En augmentant ou en diminuant le paramètre | + | |
- | de temporisation, | + | |
- | Affichage ligne à ligne multi-résolution | + | |
- | Programmer une routine multi-résolution pose toujours quelques | + | |
- | problèmes. Ül faut déterminer les paramétres qui dépendent de la | + | |
- | résolution et écrire une routine d' | + | |
- | Dans le cas présent, les paramétres dépendant de la résolution sont la | + | |
- | largeur d’une ligne (variable x1%), et la hauteur d’une ligne {variable | + | |
- | y14). La routine DEF LIGNE caleule leur valeur en fanction du môde | + | |
- | sräphique. Flle doit impérativement être appelée au début du programme | + | |
- | sous peine de mauvais fonctonnement. | + | |
- | PROCEDURE def ligne | + | |
- | SELECT XBIOS[(4) | + | |
- | CASE 0 | + | |
- | x1%5=320 | + | |
- | y1%=10 | + | |
- | CASE 1 | + | |
- | x1%=640 | + | |
- | y1#=10 | + | |
- | CASE 2 | + | |
- | X1%=b40 | + | |
- | y1*=20 | + | |
- | BEST OF GRA BASIC | + | |
- | ENDSELECT | + | |
- | RETURN | + | |
- | PROCEDURE aff ligne(lignes) | + | |
- | LOCAL py* | + | |
- | pyé=(1ignet-1}# | + | |
- | RC COPY adr ecr, | + | |
- | RETURN | + | |
- | Les procédures AFF_HAUT, et AFF_BAS du paragraphe précédent fonctionnent | + | |
- | parfaitement avec la nouvelle procedure AFF LIGNE Il est | + | |
- | amusant de voir la mème routine graphique fonetionner dans les 3 | + | |
- | résolutions du ST, En anticipant un petit peu, On pourrait imaginer | + | |
- | des routines graphiques lonctionnant dans tous les modes graphiques | + | |
- | 5T &c TT. | + | |
- | La plupart des programmes professionnels sur IM PC et comparibles | + | |
- | urilisent un système graphique similaire à célui que nous venons | + | |
- | d' | + | |
- | IBM PC que c'est une obligation pour les programmeurs. | + | |
- | Affichage d'une ligne sur deux | + | |
- | On peut obienir un bel effet graphique en affichant les li;g:n:ï impaires, | + | |
- | puis les lignes paires, L' | + | |
- | image à partir du haut, mais le principe fonctionne aussi pour un affichage | + | |
- | à partir du bas, | + | |
- | PROCEDURE aff haut? | + | |
- | FOR 1%=1 TO 19 STEP 2 | + | |
- | Paff ligne (1%) | + | |
- | PAUSE & | + | |
- | NEXT 1% | + | |
- | FOR 1%= 2 TO 20 STEP Z | + | |
- | Gaff ligne (1%) | + | |
- | FAUSE 2 | + | |
- | NEXT 1% | + | |
- | RETURN | + | |
- | Cette technique d' | + | |
- | ligne. Afficher une ligne sur 4 donne un trés bel effer. | + | |
- | Affichage des lignes à partir des bords de | + | |
- | l' | + | |
- | Avec cerre technique, l' | + | |
- | lignes 1ignel% et lignez# sont affichés quasi-simultanément par la | + | |
- | routine. L' | + | |
- | les différentes étapes d' | + | |
- | 1l | + | |
- | lignez*=20 | + | |
- | FOR i 1 TO 10 | + | |
- | Baff ligne(lignels) | + | |
- | Baff ligne(lignez# | + | |
- | PAUSE 1 | + | |
- | INC lignes | + | |
- | DEC 11gness | + | |
- | NEXT i% | + | |
- | En inversant le sens d' | + | |
- | imagé à partir du milieu de l' | + | |
- | Jignel%=10 | + | |
- | ligne2%-11 | + | |
- | FOR 1%=1 TO 10 | + | |
- | Gaff ligne(lignel%) | + | |
- | Ëaff_]1gne{lîgnEÈ%} | + | |
- | PAUSE 1 | + | |
- | DEC lignel% | + | |
- | INC ligne£z* | + | |
- | NEXT 1% | + | |
- | Affichage d'une image | + | |
- | colonne par colonne | + | |
- | De la même manière que l'on affiche une image ligne à ligne, on | + | |
- | peut afficher une image colonne par colonne. Le principe est le | + | |
- | méme, seul le sens d' | + | |
- | L’écran est divisé en 20 colonnes, En basse résolution, | + | |
- | ont une largeut de 16 pixels (320/20) er une hauteur de 200 pm::ls | + | |
- | En movenne résolution, | + | |
- | xels {HÆHËÜ_‘] et une hauteur de 200 pixels. En haute résolution, | + | |
- | colonnes ont une largeur de 32 pixels (640/20) er une hauteur de 400 | + | |
- | pixels, | + | |
- | PROCEDURE def colonne | + | |
- | SELECT XETOS5(4) | + | |
- | CASE O | + | |
- | xchks16 | + | |
- | ycs=2UU0 | + | |
- | CASE l | + | |
- | xcis=i; | + | |
- | vc===00 | + | |
- | CASE & . | + | |
- | k=32 | + | |
- | yc#=400 | + | |
- | ENDSELECT | + | |
- | RETURN | + | |
- | La procédure DEF COLONNE initialise les variables xc% et ¥c% en | + | |
- | fonction de la résolution du sysetme. Elle doit être appelée avant d' | + | |
- | la procédure AFF_COLONNE Le plus simple est de l' | + | |
- | début du programme. | + | |
- | PROCEDURE aff colon ne(colonne%) | + | |
- | LOCAL px* | + | |
- | pxé=(colonnes-1}*xc% | + | |
- | RC COPY adr ecr&, | + | |
- | RETURN | + | |
- | La procédure AFF_COLONNE affiche la colonne colonnet en tenant | + | |
- | compte de la résolution. Les colonnes sont numérorées de 1 à 20. En | + | |
- | ATARI MÈGÆINEm BEST OF GFA BASIC | + | |
- | & | + | |
- | affichant les colonnes dans un ordre croissant, l’image s' | + | |
- | de la gauche. | + | |
- | PROCEDURE aff gauché ! | + | |
- | LOCAL c% | + | |
- | FOR c%=1 TO 20 | + | |
- | ; Baff colonne(c®) | + | |
- | PAUSE 2 - | + | |
- | NEKT c% | + | |
- | RETURN | + | |
- | En affichant les colonnes dans uh ordre décroissant à partir de 20, | + | |
- | l' | + | |
- | PROCEDURE aff droite | + | |
- | ; LOCAL c% | + | |
- | FOR c%=20 10 1 STEP -1 3 | + | |
- | Gaff colonne(c*) | + | |
- | , PAUSE 2 | + | |
- | NEXT c% | + | |
- | RETURN | + | |
- | Affichage d'une colonne sur deux | + | |
- | De la même manière que l'on peut afficher une ligne sur deux, on | + | |
- | peut afficher une colonne sur deux. Lexemple suivant affiche les colonnes | + | |
- | impaires, puis les colonnés paires. | + | |
- | PROCEDURE aff qauchez | + | |
- | LOCAL c% | + | |
- | FOR c%=1 TO 19 STEP Z | + | |
- | @aff colonne(c“) | + | |
- | PAUSE 2 | + | |
- | MEXT €* | + | |
- | FOR c&=2 TO 20 STEP Z | + | |
- | Baff colonne(c*) | + | |
- | PAUSE 2 | + | |
- | NEXT c* | + | |
- | RETURN | + | |
- | Vous pouvez aussi afficher une image colonne par colonne à prartllr | + | |
- | des bords nu du centre de l' | + | |
- | ligne à ligne. | + | |
- | Découpage d'une image en petits rectangles | + | |
- | Au lieu de découper l' | + | |
- | découper en petits rectangles. Cela permet de créér n:læ: nouveaux el | + | |
- | fets graphiques, Afin d maintenir une compatibilité avec IEIE programmes | + | |
- | précédents, | + | |
- | blocs). | + | |
- | En basse résolution, | + | |
- | résolution, | + | |
- | un bloc graphique fait 32x20 pixels. La procédure DEF ELOC | + | |
- | initialise | + | |
- | système. Elle doit être exécutée au débur des programmes. | + | |
- | PROCEDURE def bloc | + | |
- | SELECT X8105(4) | + | |
- | CASE Ü | + | |
- | xb==16 | + | |
- | yhiz=10 | + | |
- | CASE 1 | + | |
- | xb%=32 | + | |
- | vb*=10 | + | |
- | CASE Z | + | |
- | xb%=37 | + | |
- | yh%=20 | + | |
- | ENDSELECT | + | |
- | RETURN | + | |
- | La procédure AFF_BLOC copie un bloc graphique | + | |
- | l' | + | |
- | définissant la position des blocs sont numérotées de 1 à 20. | + | |
- | PROCEDURE aff bloc(Tigne%, | + | |
- | LOCAL px*, pys | + | |
- | pxs= (colonnes-1}*xb# | + | |
- | py& | + | |
- | C COPY adr_ecr%_pïä, | + | |
- | RETURN | + | |
- | La routine AFF BLOC peur être utilisée pour réaliser des affichages sophistiqués | + | |
- | comme l’affichage aléatoire, ou l’affichage en diagonale. | + | |
- | Affichage aléatoire | + | |
- | L' | + | |
- | doit garder la trace des blocs déjà affichés atin de ne pas nî' | + | |
- | deux fois le même. Le tableau bloc%() contient la liste des blocs déja | + | |
- | affichés à l' | + | |
- | toutes 0. Lorsque le programme affiche un bloc sur I scran, il met lla | + | |
- | valeur 1 dans la case correspondant au bloe affiché La routine de tr | + | |
- | rage aléatoire sait qu’un bloc n'est pas encore affiche si la case équivalente | + | |
- | de blocs () contient la valeur 0. | + | |
- | DIM block(20, | + | |
- | ARRAYFILL bloc%(),0 | + | |
- | FOR j&=1 TO 400 | + | |
- | RÉPEAT | + | |
- | c*=RAMD(20}+1 | + | |
- | |& | + | |
- | UNTIL blocs(15, | + | |
- | Gaff bloc(1%, | + | |
- | block(1%, | + | |
- | NEXT 1% | + | |
- | L' | + | |
- | cases du tableau bloc%(}. L' | + | |
- | aléatoire compris entre Ü et n-l. La formule RAND(n) +1 donne doné: | + | |
- | ATARI MAGAZINE RLF BEST OF GFA BASIC | + | |
- | nn nombre aléatoire compris entre 1 ec n. Associé à la procédure | + | |
- | DEF BLOC, ce programme permet de réaliser une routine d' | + | |
- | aléaroire fonctionnant dans les 3 résolutions du ST. | + | |
- | Amélioration de l' | + | |
- | Si vous avez exécuré la routine d’affichage aléatoire, vous avez dû remarquer | + | |
- | que l’affichage des derniers blocs st un peu lent. Le programme | + | |
- | peine un peu pour trouver les 5 ou 6 derniers blocs non affichés | + | |
- | parmi les 400 blocs possibles. Ceci dis, le GE4 Basic est tellement | + | |
- | rapide qu'il met moins d'une seconde à trouver le dernier bloc | + | |
- | {en version interprétée). | + | |
- | Pour éviter ce petit ralencissement, | + | |
- | des blocs avant la fin, et afficher rapidement les derniers blocs resrant. | + | |
- | On peut, par exemple, n’afficher que 395 blocs et utiliser une | + | |
- | routine supplémentaire utilisant le tabléau b oc%() pour connaître | + | |
- | les blocs non affichés. | + | |
- | nb blocs*# | + | |
- | FOR i%=1 TÜ nb blocs* | + | |
- | *. , AFFICHAGE ALEATOIRE | + | |
- | NEXT i% | + | |
- | FOR c%=1 TO 20 | + | |
- | FOR 1%=1 TÜ 20 | + | |
- | IF block(1%, | + | |
- | Baff bloc(1%, | + | |
- | block(1%, | + | |
- | PAUSE 1 | + | |
- | ENDIF | + | |
- | NEXT 1% | + | |
- | NEXT c% | + | |
- | L' | + | |
- | trop rapidement, Vous pouvez la retirer si vous trouvez qu' | + | |
- | sert à rien. Vous pouvez faire varier le nombre de blocs affichés | + | |
- | aléatoirement, | + | |
- | dans le programme d' | + | |
- | Affichage d'une image en diagonale | + | |
- | Les routines d' | + | |
- | agréable à regarder, mais elles sont un peu plus difficiles à programmer | + | |
- | que les autres. | + | |
- | Nous avons vu que l' | + | |
- | organisés en 20 lignes et en 20 colonnes. C'est une situation idéale | + | |
- | qui simplifie considérablement la programmation. Les diagonales | + | |
- | sont à 45 deprés. Pour tracer une diagonale, il faut partir d’un bloc | + | |
- | graphique, puis décrémenter régulièrement la position du bloc courant | + | |
- | avant d' | + | |
- | bloc (10,10) est constituée des blocs (10,10), (9,9), (8,8), ... (1.1). | + | |
- | PROCEDURE diagonale(1%, | + | |
- | REPEAT | + | |
- | Baff bloc(l%, | + | |
- | DEC c% | + | |
- | DEC 1% | + | |
- | UNTIL (c*<1) OR (1%=1) | + | |
- | RETURN | + | |
- | La procédure DIAGONALE cesse le dessin lorsque le bloë à afficher | + | |
- | sort des limites de l’écran, c' | + | |
- | inférieur à 1, ou lorsque le numéro de colonne devient | + | |
- | inférieur à 1. Cette technique trace une diagonale en direction du | + | |
- | coin haut gauche de l' | + | |
- | d' | + | |
- | ou encore vers le coin bas dront de l’écran), | + | |
- | A titre d’exemple, | + | |
- | du coin haut droir de l' | + | |
- | lorsque le bloc à afficher est hors de l' | + | |
- | numéro de ligne est inférieur à 1, ou lorsque le numéro de colonne | + | |
- | st supérieur à 20. | + | |
- | PROCEDURE diagû_bîa{Ï%.c%} | + | |
- | REPEAT | + | |
- | @aff bloc{1%, | + | |
- | INC c% | + | |
- | DEC 1% | + | |
- | UNTIL (c*=20) OR [1%<1) | + | |
- | RETURN | + | |
- | Affichage d'une diagonale particulière | + | |
- | 1l y a 39 diagonales sur un écran. La diagonale 1 est située en bas et à | + | |
- | gauche de l' | + | |
- | l' | + | |
- | sélectivement n' | + | |
- | La routine AFF DIAGONAL est capable d' | + | |
- | l' | + | |
- | PROCEDURE aff diagonal (numé) | + | |
- | LOCAL ligne% | + | |
- | LOCAL colonne* | + | |
- | 1F num%< | + | |
- | ligne*=20 | + | |
- | colonne*# | + | |
- | ELSE | + | |
- | ligne%=40-nums | + | |
- | colonne*=20 | + | |
- | ENDIF | + | |
- | Pdiagonale(lignet, | + | |
- | RETURN | + | |
- | Cette routine reconstitue la position du bloc de départ à partic du | + | |
- | numéro de diagonale, - | + | |
- | Affichage en diagonale | + | |
- | de la gauche vers la droite | + | |
- | La procédure IMG DIAGONALE] affiche une image en diagonale en | + | |
- | partant de la gauche, Elle affiche les différentes diagonales les unis | + | |
- | après les autres. La routine est trés simple, car le travail à été décomposé | + | |
- | niveau par miveau,. : | + | |
- | ATARI …HEW BEST OF GFA BASIC | + | |
- | =] | + | |
- | - | + | |
- | |' | + | |
- | PROCEBURE img diagonalel | + | |
- | LOCAL d% | + | |
- | FOR d%=1 TO 39 | + | |
- | Gaff diagonal (d%) | + | |
- | FAUSE 1 | + | |
- | NEXT d | + | |
- | RETURN | + | |
- | Affichage en diagonale | + | |
- | de la droite vers la gauche | + | |
- | La prü«._“' | + | |
- | partant de la droite, La diagonale 39 est affichée en premier. | + | |
- | PROCECURE img diagonalel | + | |
- | LOCAL d% | + | |
- | FOR d%=39 TO 1 STEP -1 | + | |
- | Gaff diagonal (d%) | + | |
- | PAUSE 1 | + | |
- | NEXT d% | + | |
- | RETUEN | + | |
- | Affichage d'une diagonale sur deux | + | |
- | En affichant une diagonale sur deux, on obtient un effet graphique | + | |
- | assez joli. La procédure AFF_20TAGONALE affiche une image à partir | + | |
- | de la gauche. Elle a été écrite en modifiant la procédure IMG_DIAGDNALEL | + | |
- | Vous pourrez modifier de la même manière la procédure | + | |
- | IMG DIAGOMALEZ pour obtenir un affichage à partir de la droité. | + | |
- | PROCEDURE aff 2diagonale | + | |
- | LOCAL d% | + | |
- | FOR d%=1 TO 39 STEP 2 | + | |
- | Baff diagonal(d%) | + | |
- | PAUSE 1 | + | |
- | REXT d% | + | |
- | FOR d%= 2 TO 38.5TEP Z | + | |
- | Gaff diagonal (d%) | + | |
- | PAUSE 1 | + | |
- | NEXT d | + | |
- | RETURN | + | |
- | Bibliothèque d' | + | |
- | Vous pouvez utiliser RC_COPY pour créer une petite bibliothèque | + | |
- | d' | + | |
- | de dessin type Degas Elite, puis de charger en mémoire l' | + | |
- | écran générée par le logiciel graphique. 11 suffira ensuite d' | + | |
- | RC COPY pour recopier les images sur l’écran physique. | + | |
- | La procédure LOAD IMAGE charge l' | + | |
- | $i / cette variable ne contient pas l' | + | |
- | 32000 octets préparée avec MALLOC ou VARPTR, vous risquez de provoquér | + | |
- | Un Sup-E:rh-E; p' | + | |
- | ATARI MAGATINE | + | |
- | PROCEDURE load images(ncmé) | + | |
- | OPEN " | + | |
- | SEEK #1,34 | + | |
- | BGET #1,adr ecr%, | + | |
- | CLOSE #1 | + | |
- | RETURN | + | |
- | La position et la taille des images doivent Être mémorisées dans un | + | |
- | tableau numérique. Ces données doivent être chargées dans le & | + | |
- | blean au début du programme. Ce peut être fait avec des Instructions | + | |
- | DATA, où én lisant le contenu d'un fichier. | + | |
- | DIM image%(100, | + | |
- | ! image%(n,1) = position X | + | |
- | ' image“{n,& | + | |
- | * image%(n,3} = largeur {t;} | + | |
- | ' image%({n, | + | |
- | La procédure AFF_IMAGE affiche à la position (X%,y#) de l' | + | |
- | l' | + | |
- | à l' | + | |
- | FROCEDURE aff_îmage{xä, | + | |
- | LOCAL pxt, pré | + | |
- | LOCAL Tx%, Lys | + | |
- | ox% = image%{n#, | + | |
- | pyk = image%(n%, | + | |
- | tx = image%(n#, | + | |
- | tys = image%(n%, | + | |
- | RC COPY Eü? | + | |
- | RETURN | + | |
- | Extension de la bibliothèque d' | + | |
- | Le système de gestion de bibliothèque d’images que nous venons de | + | |
- | voir ne peut pas en gérer beaucaup. On est vite limité par la taille | + | |
- | maximale d'une image. On peut avoir davantage d' | + | |
- | sur plusieurs fichiers Degas Flite. LOAD IMAGE doit être modifiée | + | |
- | pour charger une image Degas à une adresse particulière. | + | |
- | PROCEDURE load images(nom$, | + | |
- | OPEN " | + | |
- | SEEK #1,34 | + | |
- | BGET #1,adr img*, 32000 | + | |
- | CLOSE #1 | + | |
- | RETURN | + | |
- | Le tableau image%() doit contenir une case supplémentaire pour | + | |
- | contenir le numéro d’écran de l' | + | |
- | de 100 images, mais il peut être beauconp plus grand avec ce | + | |
- | système d’écrans multiples (1 000 images par exemple). | + | |
- | DIM image=(100, | + | |
- | Les nouveaux écrans doivent être créés au début du programme. Les | + | |
- | adresses peuvent être mémorisées dans un tableau. La réservation de | + | |
- | BEST OF GrA BASIC | + | |
- | zone mémoire se fait avec l’inseruccion MALLOC. L' | + | |
- | réserve de la place mémoire pour 4 images. | + | |
- | DIM adr ecran%(4) | + | |
- | FOR i%=1 T0 4 | + | |
- | adr_ecran(i%)=MALLOC(32000) | + | |
- | NEXT 1% | + | |
- | Attention: 4 écrans de 32000 octets représentent 128 000 octets, Il est | + | |
- | possible que le système manque dé mémoire (surtout sur 520) si la | + | |
- | mémoiré est déja bien encombrée (programme important, tabléaux | + | |
- | de grande taille, nombreux accessoires, | + | |
- | Pour plus de sécurité, il faut contrôler la bonne exécution des rèservations | + | |
- | mémoirc, | + | |
- | FOR i%=1 TÜ 4 | + | |
- | adris=MALLOC({32000) | + | |
- | [F adrk=0 | + | |
- | PRINT " | + | |
- | END | + | |
- | ENDIF | + | |
- | adr_ecran*(i%}=adr& | + | |
- | HEXT i% | + | |
- | Une fois le programme terminé, la mémaire réservée doit être libérée. | + | |
- | Cetté opération se fait avéc l’instructon MFREE | + | |
- | FOR i%=1 T0 4 | + | |
- | VOID MFREE(adr ecran%(i%)) | + | |
- | NEXT 1% Ë | + | |
- | La procédure AFF_IMAGE s’utilise toujours de la même manière pour | + | |
- | le programmeur. Par contre, il y à une différence importante au niveau | + | |
- | interne: la routine détermine l' | + | |
- | avant d' | + | |
- | PROCEDURE aff image(x%, | + | |
- | LOCAL px=, pys | + | |
- | LOCAL tx%, tys | + | |
- | LOCAL num _image*# | + | |
- | LOCAL adr img# | + | |
- | px = image%(n%, | + | |
- | pys = image%(n%, | + | |
- | tx* = image%(n%, | + | |
- | ty% = image%(n#, | + | |
- | num _ imge = imâge%(n#, | + | |
- | adr img%-adr ecrant{num_imgé) | + | |
- | RC COPY adr imgé, | + | |
- | RETUEW | + | |
- | Une image est définie par 5 paramétres: | + | |
- | (tx), hauteur (ty) et numéro de l' | + | |
- | 1MMmAge, | + | |
- | Les positions des images peuvent être définies en mémoire dans des | + | |
- | lignes de DATA | + | |
- | La valeur À sert d' | + | |
- | images: | + | |
- | DATA px,py,tx, Ly,num image | + | |
- | DATA 10, | + | |
- | DATA 80, | + | |
- | DATA 10, | + | |
- | DATA -1 | + | |
- | La routine INIT IMAGES lit les informations stockées dans les lignes | + | |
- | de DATA et les stocke dans le tableau image%(). La variable | + | |
- | nb_images% contient le nombre d' | + | |
- | PROCEDURE init_images | + | |
- | LOCAL px%, pys, tx%, tys | + | |
- | LOCAL num_img% | + | |
- | LOCAnL% | + | |
- | n&=0 | + | |
- | RESTORE images | + | |
- | BQ | + | |
- | READ px® | + | |
- | EXIT IF pu%=-1 | + | |
- | INC nf% | + | |
- | READ py5, | + | |
- | READ num_img% | + | |
- | image%{(n%, | + | |
- | imageX(n%, | + | |
- | images(n%, | + | |
- | image# | + | |
- | image%(n*, | + | |
- | LOOP | + | |
- | nb_imagess-ns | + | |
- | RETURN | + | |
- | Le chargement des images Degas doit se faire au debut du _ programme, | + | |
- | mais aprés la réservation mémoire. L' | + | |
- | d' | + | |
- | Bload ecran(" | + | |
- | @load ecran(" | + | |
- | @load ecran(" | + | |
- | @load ecran(" | + | |
- | Scrolling d'une zone de l' | + | |
- | Une routine de scrolling permer de simuler le déplacement d' | + | |
- | fenêtre virtuelle sur une image de grande dimension: Au point de | + | |
- | vué téchnique, il s’agit d’un affichage rapide de bloc d' | + | |
- | RC_COPY permet de réaliser cela facilement, | + | |
- | Il faut travailler très rapidement pour obtenir un scrolling de grande | + | |
- | dimension parfaitement fluide. Clest impossible à realiser avec | + | |
- | AC COPY sur uh STE, car la routine est trop lente. On ne peut obtepir | + | |
- | que des scrollines de toutes petites dimensions. Lexemple | + | |
- | présenté dans eer article | + | |
- | STE, ou un MEGA ST avec blicter actif. | + | |
- | La routine AFF_ZONE affiche au milieu de l' | + | |
- | de 192x64 pixels. Ce bloc graphique provient d'un écran virtuel s1- | + | |
- | ATARI …ÏIHEW BEST OF GFA BASIC | + | |
- | mué à l' | + | |
- | (0x%, pyé) de l' | + | |
- | l' | + | |
- | la barre synchronisation vidéo ne soit pas spr l' | + | |
- | transfert de pixels (grâce à l' | + | |
- | PROCEDURE aff;; | + | |
- | VSYNC | + | |
- | RC COPY adr ecrs, | + | |
- | RE TURE | + | |
- | L' | + | |
- | de 101 pixels, 1l est réalisé en recopiant 101 fois une partie de l' | + | |
- | ädr ecr® sur l' | + | |
- | graphique d'un pixel. | + | |
- | L' | + | |
- | de scrolling. Ce rectangle n'a pas de réélle wilité pour le scrolling, 11 | + | |
- | est juste là pour des raisons esthétiques. L' | + | |
- | importante en informatique, | + | |
- | E] ITIÉLIT S, | + | |
- | COLOR 2 BOX 63, | + | |
- | FOR pyé=0 TO 100 | + | |
- | Gaff zone(100, | + | |
- | NEXT pys | + | |
- | Pour réaliser un scrolling du bas fi…rs le bas, il faut afficher les blocs | + | |
- | graphiques dans le sens mverse, | + | |
- | FOR py%=100 TO Ü STEP -1 | + | |
- | paff zone(100, | + | |
- | NEXT pyF | + | |
- | La vitesse de scrolling dépend du pas d' | + | |
- | pas d’incrémentation est le nombre ajouté à une position d' | + | |
- | pour obtenir une nouvelle position, Il était de 1 dans les exemples | + | |
- | précédents. Vous pouvez augmenter la vitesse de scrolling en augmentant | + | |
- | le pas d' | + | |
- | d' | + | |
- | FOR pyx=1 TO 100 STEP 2 | + | |
- | Gaff zone{100, | + | |
- | NEXT py% | + | |
- | Vous pouvéz aussi vous amuser à réaliser un scrolling double en modifiant | + | |
- | simultanément les positions X et Ÿ du bloc graphique. | + | |
- | nxw={] | + | |
- | pyé=l | + | |
- | FOR i%= 0 T0 199 | + | |
- | Gaff zone{px%, | + | |
- | INC px% | + | |
- | INC pyi | + | |
- | NEXT i% | + | |
- | Encore plus fort: faites un scrolling double avec des pas d' | + | |
- | différents pour les deux axes. | + | |
- | px==0 | + | |
- | =0 | + | |
- | FOR i%= 0 TO 150 | + | |
- | Baff zone(px&, | + | |
- | ABD pxt,é | + | |
- | INC pys | + | |
- | NEXT i% | + | |
- | Que vous utilisiez un blitter ou non, il est impossible de réaliser un | + | |
- | scrolling plein écran suffisamment mpide avec l' | + | |
- | Cela ne vous en empêche pas de l’utilisér pour réaliser divers petits | + | |
- | effers g[fl; | + | |
- | peut apparaîtré en scrollant dans une petite fenêtre, Un long rexte | + | |
- | peut être visualisé par petits bouts dans une fenêtre Une série | + | |
- | d' | + | |
- | sent une routine dé sctollings pour faire défiler doucement leurs di- | + | |
- | Vers textés. | + | |
- | Rafraïchissement de fenêtres graphiques | + | |
- | Lorsque vous modifiez les caractéristiques d'une fenêtre graphique | + | |
- | GFM (taille, position, déplacement dans la fendtre avec les ascenscurs, | + | |
- | ctc.), la fenêtre est redessinée. Cette opération (redraw dans la | + | |
- | terminologie GEM, redessin, ou encore rafraîchissement) peut Erre | + | |
- | réalisée par l' | + | |
- | Une fenêtre graphique est définie par ces paramètres écran (position - | + | |
- | de la f‘enêtre sur l' | + | |
- | interne (position de la lenétre visible par rapport à la fenêtre | + | |
- | virtuelle). La fenêtre virtuelle est stockée quelque part en mémoire. | + | |
- | fenetre - Adresse mémoire de la fenêtre virtuelle | + | |
- | xpos — : Position X de la fenêtre visible par rapport à la fenêtre | + | |
- | virtuelle | + | |
- | ypos — : Position Y de la fenêtre visible par rapport à la fenêtre | + | |
- | virtuelle; | + | |
- | Lx : Largeur de la fenêtre visible: | + | |
- | ty : Hauteur de la fenêtre visible: | + | |
- | px : Position X de la fénêtre visible sur l’écran: | + | |
- | py : Position Ÿ de la fenêtre visible sur l' | + | |
- | RC COPY fenetre, xpos, ypos, tx, ty TO XBIOS(Z), px, py | + | |
- | TELECHARGEZ | + | |
- | DES CENTAINES | + | |
- | DE LOGICIELS SUR | + | |
- | LE 3615 ATARI | + | |
- | ATARI MAGAEIHEH BEST OF GFA BASIC | + | |
- | GRAPHISME EN GFA BASIC | + | |
- | TEURS | + | |
- | LOGIQUES | + | |
- | Manipulez les pixels | + | |
- | Les fonctions graphiques logiques du GFA Basic permettent de | + | |
- | réaliser de nombreux effets graphiques (affichage de sprites, | + | |
- | vidéo inverse, effets spéciaux, etc.) Découvrons-les ensemble. | + | |
- | Fonctions graphiques de base | + | |
- | Le GF Basic peut stocker en mémoire et afficher des blocs graphiques | + | |
- | grâce aux instructions GET et PUT. L' | + | |
- | de stocker un bloc graphique dans une variable alphanumériqué, | + | |
- | alors que PUT permer d' | + | |
- | n' | + | |
- | GET x1, | + | |
- | PUT x,y,imgt | + | |
- | L' | + | |
- | dans la variable imy}. On peut aussi mélanger ces pixels de | + | |
- | l’image avec ceux de l' | + | |
- | manières grice à ce que l'on appelle des opéraceurs graphiques logiques. | + | |
- | ' | + | |
- | Les opérateurs graphiques logiques | + | |
- | Les opérateurs graphiques logiques sont des fonctions grapaiques qui | + | |
- | peuvent faire «fusionners plusicurs pixels entre eux au niveau des | + | |
- | couleurs. Les opérateurs graphiques logiques sont des fonctions qui | + | |
- | servent à mélanger deux images entre elles, Le résultar obrenu dépend | + | |
- | des images, mais aussi du type d' | + | |
- | Le mélange se fair pixel par pixel. Pour chaque pixel, la couleur | + | |
- | résultante dépend de la couleur initiale, de la nouvelle couleur et de | + | |
- | l' | + | |
- | piveau binaire, c' | + | |
- | bit à bit, Les opérateurs binaires les plus utilisés sont AND, | + | |
- | OR, XOR et NOT. | + | |
- | Opérateur graphique logique AND | + | |
- | Lersqu' | + | |
- | 1 que s1 les 2 brts sont à 1. | + | |
- | Û | + | |
- | 0 | + | |
- | 0 AND O | + | |
- | G AND 1 | + | |
- | 1 ANDO | + | |
- | 1 AND1 | + | |
- | Û | + | |
- | 1 | + | |
- | Lorsque l' | + | |
- | le résultat dépend du codage binaire de la conleur des pixels, | + | |
- | Par exemple, en appliquant l' | + | |
- | de couleur 13 et un [l-' | + | |
- | 4. | + | |
- | 1101 (13 en décimal) | + | |
- | 0110 (06 en décimal) | + | |
- | ---- AND | + | |
- | 0100 (04 en décimal) | + | |
- | Mise en oeuvre de l' | + | |
- | Pour eflectuer | + | |
- | images, 1l faur stocker l'une des images dans une variable alphamumérique | + | |
- | avec l’inscruction GET, puis l' | + | |
- | avec l' | + | |
- | GET x1l, | + | |
- | PUT px, | + | |
- | Ce petit programme fait une opération logique AND entre l' | + | |
- | définie par les points (x1, | + | |
- | (px,pv). Après son exécution, l' | + | |
- | (px.py) est la résultante des ? images de départ. | + | |
- | Intérêt de l' | + | |
- | L' | + | |
- | ombre chinoise- Prenons une image basse résolution faite urique | + | |
- | ment avec des pixels de couleur 0 et 15. En affichant cette image sur | + | |
- | l' | + | |
- | phénomène très umportant: les pixels de couleurs 0 sont bien visibles | + | |
- | sur l’écran, mais ceux de couleur 15 ont disparu. | + | |
- | La couleur 15 se code 1111 en binaire, et la couleur © se code 0000 | + | |
- | ALARI .‘-MGAEIMEE BEST OF GFA BASIC | + | |
- | 3 @ 2Eh | + | |
- | en binaire. Lorsque la routine d' | + | |
- | les pixels de l' | + | |
- | ANTDés avec la couleur O se sont retrouvés 2 0, alors que tous les | + | |
- | ANDés avec |z couleur 15 n'ont pas été modifiés. | + | |
- | n AND 0000 = D (0000 = 0 en décimal) | + | |
- | n AND 1111 = n (1111 - 15 én décimal) | + | |
- | On appelle certe technique affichage en ombre chinoise car elle ne | + | |
- | permet d' | + | |
- | Fm%rumme de démonstration | + | |
- | de l' | + | |
- | Avant d' | + | |
- | logique AND, il faut savoir que le GAA Basic utilisé sa propre | + | |
- | table de couleurs, En elfet, après une instruction DEFFILL 2 1 | + | |
- | tracera des rectangles graphiques de couleur 1, et non 2. Ve la | + | |
- | table de conversion couleurs récls/couleurs GE4 Bastc: - | + | |
- | Couleurs réelles 01234567 89 1011 12 13 14 15 | + | |
- | Couleurs GFA Basic 0 2 3 6 4 75 89 10 11 14 12 15 13 1 | + | |
- | Les seules couleurs qui ne sont pas modifiées sont les couleurs 0,4 et | + | |
- | 12. En fait, il he s'agic pas d’un bug du GFA Baste, mais du système | + | |
- | graphique VDI présent dans les ROMs du STE. II faut utiliser la | + | |
- | couleur 1 pour obtenir à l' | + | |
- | de dessin graphiques travaillent avee les véricables numéros de couleurs, | + | |
- | c' | + | |
- | 15, | + | |
- | Le programme de démonstration affiche une petite image conslituée | + | |
- | d’une bande de couleur © ¢t d'une bande de couleur 15 (couleur 1 | + | |
- | pour le GF4 Basic). Cette image est stockée dans la variable alphanumérique | + | |
- | image$. Elle est affichée à la position (100,10) grâce à | + | |
- | Finstruction FUT. Elle est ensuite affichée avcc l' | + | |
- | AND à la posimon (200,10). | + | |
- | DEFFILL 2,6,2 | + | |
- | PEOX 0, | + | |
- | DEFFILL 0,1 | + | |
- | PEOX 10, | + | |
- | DEFFILL 1 | + | |
- | PBOX 20, | + | |
- | DEFFILL O | + | |
- | PBOX 30, | + | |
- | GET 10, | + | |
- | VOID INP(2) | + | |
- | PUT 100,10, images | + | |
- | VOID INP(Z) | + | |
- | PUT 200, | + | |
- | VOID INP{2) | + | |
- | ERD | + | |
- | En & | + | |
- | couleur O sonr affichés sur l' | + | |
- | disparu. Cette rechnique fonctionne aussi en moyenne et haute résolution, | + | |
- | mais les numéros de couleurs changent. Etant donné que les | + | |
- | couleurs en moyente résolurion sont codés sur 2 bits, il fauc travail | + | |
- | ler avec les couleurs © er 3 {0 et 6 en tenant compte de la bug des | + | |
- | couleurs VDI). De même pour la haure résolution, | + | |
- | avec les couleurs 0 et 1 (D et Z pour tenir compte de la bug des couleurs- | + | |
- | VDT). | + | |
- | Opérateur graphique logique OR | + | |
- | Lorsqu’on applique l' | + | |
- | que si au moins l’un des deux bits &t à 1. | + | |
- | Ü OR Q = | + | |
- | UUR 1= | + | |
- | 1 U@R) = | + | |
- | 1 U1R = | + | |
- | En appliquant l' | + | |
- | et un autre de couleur 6, on obtient un pixel de couleur 15. | + | |
- | 1101 (13 en décimal) | + | |
- | 0110 (Dh en décimal) | + | |
- | ---- DR | + | |
- | 1111 {15 en décimal) | + | |
- | Les propriétés importantes de l‘opérateur graphique logique OR | + | |
- | sont les suivantes: | + | |
- | n OR 0000 | + | |
- | n OR 1111 | + | |
- | | | + | |
- | 1111 | + | |
- | Démonstration de l’opérateur logique OR | + | |
- | L' | + | |
- | PUT px,py, imagef,7. Le même programme de démonstration que | + | |
- | AND donne le résulrar suivant: tous les pixels de couleurs 15 sont | + | |
- | visibles après l’affichage en mode OR, alors que tous les pixels de | + | |
- | couleurs © ont disparu. C'est un résultat inverse de celui obtenu avec | + | |
- | l’opérateur logique AN | + | |
- | DEFFILL 2,2,7 | + | |
- | PBOX 0, | + | |
- | DEFFILL 0,1 | + | |
- | P&0X 10, | + | |
- | DEFFILL 1 | + | |
- | PEOX 20, | + | |
- | DEFFILL Q | + | |
- | PEOX 30, | + | |
- | GET 10, | + | |
- | VOID INP(2] | + | |
- | PUT 100, | + | |
- | ATAR mmzwffi BEST OF GFA BASIC | + | |
- | VOID INP(Z) | + | |
- | PUT 200, | + | |
- | VOID INP(2) | + | |
- | END | + | |
- | De la même manière que pour l' | + | |
- | Popératenr OR en moyenne et haute résolution en changeant le | + | |
- | numéro des couleurs. | + | |
- | Opérateur logique XOR | + | |
- | Lorsqu' | + | |
- | 1 que s1 seulement l'un dés deux bits esc à 1. | + | |
- | 0 0R 0 = | + | |
- | 0 0R 1 = | + | |
- | 10 0*" | + | |
- | 10R ] " | + | |
- | e e T | + | |
- | En appliquant l’opérateur graphique OR sur un pixel de couleur 13 | + | |
- | et un de couleur 6, on obtient un pixel de couleur 11. | + | |
- | 1101 (13 en décimal) | + | |
- | 0110 (06 en décimal) | + | |
- | ---= H | + | |
- | 1011 (11 en décimal) | + | |
- | L' | + | |
- | l'on permute une opération logique pour revenir aux données de | + | |
- | départ (13 XOR 6 = 1Let11 XOR 6 = 13). | + | |
- | n XDR a | + | |
- | b XOR a | + | |
- | Utilisation de l' | + | |
- | L' | + | |
- | revenir à l’image initiale en réaffichant l’objet une seconde fois. Cela | + | |
- | peut paraître curieux, mais fonctionne bien. Le programme de | + | |
- | démonstration suivant vous convainera. ' | + | |
- | DEFFILL Z,2,2 | + | |
- | P8OX 0.0, | + | |
- | DEFFILL 0,1 | + | |
- | PEOX 10, | + | |
- | DEFFILL 1 | + | |
- | PEOX # | + | |
- | DEFFILL O | + | |
- | PEOX 30, | + | |
- | GET 10, | + | |
- | VOID INP(2) | + | |
- | PUT 100,10, image$ | + | |
- | vVOID INP(2) | + | |
- | i | + | |
- | |' | + | |
- | ! * AFFICHAGE MODE XOR * | + | |
- | 1E E R RR R UR A R N d d E E SE E | + | |
- | PUT 200, | + | |
- | VOID INP(2) | + | |
- | 1 khe e d kL | + | |
- | : * REAFFICHAGE MODE XAOR * | + | |
- | 1 Ph R R R R E s E É UEU e d | + | |
- | PUT 200,10, image$,6 | + | |
- | VOID INP(2) | + | |
- | END | + | |
- | Les premiers jeux d' | + | |
- | graphique XOR pour afficher leurs sprités. Le résultat était plutôt | + | |
- | Curieux au niveau des couleurs, mais cela fonctionnait rapidement et | + | |
- | les urtilisareurs de l' | + | |
- | Opérateur logique NOT | + | |
- | L' | + | |
- | que sur un seul nombre Les bits du nombre sont inversés (les 0 | + | |
- | deviennent des 1, et les 1 deviennent des C). | + | |
- | NOT 1 = 0 | + | |
- | NOT O. = 1 | + | |
- | 1101 (13 en décimal) | + | |
- | —- NÛT | + | |
- | 0010 (Z en décimal) | + | |
- | On obrient le mode logique NOT en donnant le paramêtre supplémentaire | + | |
- | 12 à l’instruction graphique PUT. | + | |
- | PUT px, | + | |
- | L' | + | |
- | d'une image. Cela peut être utile pour alficher des zones d' | + | |
- | vidéo inverse. Le programme de démonstration suivant Invérsé une | + | |
- | image de test, | + | |
- | DEFFILL 2,2,2 | + | |
- | PBOX 0, | + | |
- | DEFFILL 0,1 | + | |
- | PBOX 10, | + | |
- | DEFFILL 1 | + | |
- | PREOY 20, | + | |
- | DEFFILL À | + | |
- | PROX 30, | + | |
- | GET 10, | + | |
- | VOID INP{Z) | + | |
- | PUT 100,10, images | + | |
- | ATARI MÆË: | + | |
- | VOID INP(2) | + | |
- | PUT 700, | + | |
- | VOID INP(2) . | + | |
- | END | + | |
- | Les autres opérateurs graphiques logiques | + | |
- | Le GFA posside 16 opérateurs graphiques logiques. Nous n' | + | |
- | présenté que les 4 principaux, Vous pourrez rouver la description | + | |
- | des 12 autres modes à la page 196 du manuel du GÆd Basee 3.0, | + | |
- | Applications des opérateurs graphiques logiques | + | |
- | Flles sont très nombreuses. INous allons vous en présenter plusieurs | + | |
- | que vous pourrez réutiliser dans vos programmes, | + | |
- | Visualisation d'une icône en vidéo inverse | + | |
- | La vidéo inverse æst un moyen pratique de visuäliær une option ou | + | |
- | une commande en cours d' | + | |
- | GEM visualise en vidéo inverse le fichier courant, c' | + | |
- | chier sur lequel l’utilisateur vient de cliquer. Vous pouvez faire la | + | |
- | même chose en utilisant l' | + | |
- | La vidéo inverse peut être urilisée pour visualiser une action en | + | |
- | cours. Supposons que vous aycs pmgmmmë LI pfitit soft de g-r: | + | |
- | utilisant un système de commande à base d' | + | |
- | clique sur une icône, celle-ci passe en vidéo inverse et ne revient | + | |
- | en vidéo normale que lorsque le craitement est termuné. | + | |
- | Le propramme suivant montre comment ce système peut fonctionner, | + | |
- | Lorsqu' | + | |
- | saisit le dessin de l' | + | |
- | réaffiche ce dessin en vidéo inverse grâce à l' | + | |
- | NOT. Une fois le traitement achevé, Ia routine réaffiche | + | |
- | l' | + | |
- | PROCEDURE exec impression | + | |
- | HIDFF | + | |
- | GET xl, | + | |
- | PUT xi, | + | |
- | IIIIII | + | |
- | IIIIII | + | |
- | PUT x1, | + | |
- | SHOWM | + | |
- | RETURN | + | |
- | Cependant, au lieu d' | + | |
- | vous amuser à afficher une petite image visualisant le tratement en | + | |
- | cours. Pour une impression, ce peut êtré une plume et du papier. | + | |
- | Pour un tri, un facteur regardant une énorme pile de papier d’un air | + | |
- | découragé, | + | |
- | Affichage d'une police de caractères | + | |
- | L' | + | |
- | d' | + | |
- | de n' | + | |
- | Basic. | + | |
- | MNous avons vu que l' | + | |
- | dessins dont seuls les pixels en couleur O sont visibles. 51 ces pixels | + | |
- | visibles forment la matrice d'un dessin, 1 suffit alors d' | + | |
- | dessin d'un caractère en mode AND) pour voir apparaître celui-ci. La | + | |
- | matrice du caractère doit être dessiné dans la couleur O, et les autres | + | |
- | pixels doivent être en couleur 15. | + | |
- | PUT 100, | + | |
- | Les difflérentes matrices doivent êtres stockées dans un tableau alphanumériqué. | + | |
- | Pour afficher le caractère n, il suffit d' | + | |
- | mumérg 1. | + | |
- | DIM car$(255} | + | |
- | PUT 100, | + | |
- | Les caractères sont toujours affichés avec la couleur 0. Cela peut paraftre | + | |
- | contraignant, | + | |
- | de logiciels commercialisés n' | + | |
- | couleur @ {ou en couleur 15). | + | |
- | La meilleure manière de créer vos nouveaux caractères ost d' | + | |
- | un logiciel de dessin type Degas Fitte, Une fois les caractères dessines, | + | |
- | il faut utiliser un programme de saisie générant un fichier binaire. | + | |
- | | RR ÉÉ NN NEAEEE - | + | |
- | A GENERATEUR DE * | + | |
- | ! = POLICE DE CARACTERES * | + | |
- | L RR R RR R OE ÉÉ RE RE À | + | |
- | RESERVE 50000 | + | |
- | DIM cark(255) | + | |
- | @charge degas(" | + | |
- | ésaisie car | + | |
- | Ésauve police(" | + | |
- | END | + | |
- | | HR TAA deh ek RR N VS | + | |
- | ! # POSITION DES CARACTERES * | + | |
- | Lo g o e d r À d e o E | + | |
- | " DATA px, p¥. num car | + | |
- | ' =1 = fin de DATA | + | |
- | DATA 0,0,65 | + | |
- | DATA 8,0,66 | + | |
- | DATA 16,0,67 | + | |
- | DATA 24,0,68 | + | |
- | DATA 32,0,69 | + | |
- | DATA -1 | + | |
- | PROCEDURE saisié car | + | |
- | LOCAL px,py,n | + | |
- | 4] | + | |
- | READ px | + | |
- | EXIT IF px=-1 | + | |
- | READ py | + | |
- | FOEHHJflÈEfiIHüEIIËiËIEEËTEËHÊEËEHËE | + | |
- | READ MN | + | |
- | GET px, | + | |
- | LOOP | + | |
- | RETURN | + | |
- | PROCEDURE sauve police(nom$) | + | |
- | LOCAL i, | + | |
- | OPEN " | + | |
- | FÜR 1=0 TO 255 | + | |
- | 1=LEN(car$(1}) | + | |
- | IF [=0 | + | |
- | OUT #1,0 | + | |
- | ELSE | + | |
- | OUT #1,1 | + | |
- | BPUT # | + | |
- | ENDIF | + | |
- | NEXT 1 | + | |
- | RETURN | + | |
- | Le programme suivant charge la police de caractères POLICE. CAR en | + | |
- | T ol e e o e ol ol e o e Y T T f S | + | |
- | ok AFFICHAGE . | + | |
- | ' * POLICE DE CARACTERES * | + | |
- | RESERVE 50000 | + | |
- | DIM car$(255) | + | |
- | Ëcharge police(" | + | |
- | DEFFILL Z | + | |
- | PEUX 0, | + | |
- | Bafftext(30, | + | |
- | VOID INP(Z) | + | |
- | END | + | |
- | PROCEDURE afftext(px, | + | |
- | LOCAL i,xaff,n | + | |
- | xatf=px | + | |
- | OR i=1 TO LEN(m$) | + | |
- | cS=MID${(m#, | + | |
- | n=ASC{c$} | + | |
- | IF LEN{car${n)}==0 | + | |
- | PUT xaff, | + | |
- | ENDTF | + | |
- | ADD xaff,8 | + | |
- | MEXT 1 | + | |
- | RETLIRN | + | |
- | PROCEDURE charge police(nomf) | + | |
- | LOCAL 1,1 | + | |
- | OPEN " | + | |
- | FOR 1=0 TO 255 | + | |
- | 1=INP(#1) | + | |
- | 1F 1=={ | + | |
- | carf(i)=SPACES$(1) | + | |
- | BGET # | + | |
- | ENDIF | + | |
- | NEXT 1 | + | |
- | RETURN | + | |
- | L' | + | |
- | routine AFF MESSAGE affiche un message à la position (px*,py%). I | + | |
- | peut arcmver que le programme tente d' | + | |
- | pas été redéfini. La routiné d' | + | |
- | pour vérifier si le dessin du caractère n' | + | |
- | fonctionne avec des caractères d’une largueur de & pixels, mais | + | |
- | rien ne vous empêche de la modifier pour des caractères plus larges. | + | |
- | Police de caractères de couleur 15 | + | |
- | En affichant les caractères avec l' | + | |
- | obrient des caractères de couleur C En urilisant l' | + | |
- | logique OR, on peut obtenir des caractères de couleur 15, Il | + | |
- | faut alors modifier le dessin des caractères, | + | |
- | dessinées en couleur 15 sur un tond dé couléur O. | + | |
- | Affichage dans n' | + | |
- | La routine AFFTEXT présenté plus haur affiche les rextes de la gauche | + | |
- | vers la droite. Vous pouvez la modifier pour qu' | + | |
- | vers le bas ou vers le haut en incrementant ou décrémentant la position | + | |
- | py d' | + | |
- | du bas. Après chaque affichage, la position courante d' | + | |
- | augmentée de & pixels, | + | |
- | PROCEDURE afftext? | + | |
- | LOCAL 1 | + | |
- | LOCAL xaff | + | |
- | LOCAL yaff | + | |
- | LOCAL n | + | |
- | xaff=px | + | |
- | yaff=py | + | |
- | FOR i=1 TD LEN{m%) | + | |
- | c4=MID$(m#, | + | |
- | n=ASC(c# | + | |
- | IF LEN(car# | + | |
- | PUT xaff, | + | |
- | ENDIF | + | |
- | ADD yafîf,8 | + | |
- | NEXT 1 . | + | |
- | RETURN | + | |
- | La routine AFFTEXT3 affiche le texte en direction du haut de l’écran. | + | |
- | Après chaque affichage, la position y d' | + | |
- | pixels. | + | |
- | PROCEDURE afftext3({px, | + | |
- | LOCAL 1 | + | |
- | LOCAL xaff | + | |
- | ATARE MAGAZIN Efi BEST OF GFA BASIC | + | |
- | LOCAL yaff | + | |
- | LOCAL n | + | |
- | xdff=px — A | + | |
- | yaff=py | + | |
- | FOR i=1 TO LEM(m$) | + | |
- | c$=MID4 (m#,i,1} | + | |
- | n=ASC{c}) | + | |
- | IF LEN{car}{n})==0 | + | |
- | PUT xaff, | + | |
- | ENDIF | + | |
- | SUB yaïît,8 | + | |
- | MEXT 1 | + | |
- | RETURN | + | |
- | Une variable SENS AFFICHAGE peur contenir le type courant d’fii-‘ | + | |
- | chage. La routine générale d' | + | |
- | d' | + | |
- | PROCEDURE affmessage(x, | + | |
- | SELECT sens affichage | + | |
- | CASE 1 | + | |
- | Gafftext(x, | + | |
- | CASE 2 | + | |
- | Gafftext# | + | |
- | CASE 3 | + | |
- | GafFtext3{x, | + | |
- | ENDSELECT | + | |
- | RETURN | + | |
- | En utilisant des méthodes plus complexes, on peut afficher des textes | + | |
- | en suivant une forme géométrique, | + | |
- | est de déterminer Palgorithme caleulant la position d'une lettre | + | |
- | quélconque. | + | |
- | Disparition progressive d'une image | + | |
- | En urilisant l' | + | |
- | disparaître progressivement une image. En affichant un masque fait | + | |
- | de 2 couleurs (0 et 15) avec l' | + | |
- | parties dé l' | + | |
- | faut afficher une séric de masques avec de plus en plus de pixels de | + | |
- | couleurs 0. Le dernier masque doit être entièrément en couleur 0. | + | |
- | PUT px, | + | |
- | PAUSE L% | + | |
- | PUT px, | + | |
- | PAUSE t% | + | |
- | PUT px, | + | |
- | PAUSE t% | + | |
- | PUT px, | + | |
- | Lés instruetions PAUSE servent à diminuer la vitesse d' | + | |
- | l' | + | |
- | pour être visible. Les masques d' | + | |
- | de manière aléatoire par une routine spécifiqué, | + | |
- | avec un logiciel graphique. | + | |
- | L' | + | |
- | d’effacement n'est donc valable que sur un fond de couleur 0. En | + | |
- | remplagant l' | + | |
- | logique OR on obtient un effacement progressif en couleur 15. | + | |
- | Cette autre technique n'est valable que sur un fond de couleur 15. | + | |
- | Apparition progressive d'une image | + | |
- | En inversant le processus, il est possible de faire apparaître progressivement | + | |
- | une image. C'est une techtique très utilisée par les programmeurs | + | |
- | de jeu pour afficher les titres de leurs logiciels. En général, ces | + | |
- | ticres sont affichés sur un fond de couleur 0, donc avec l’opérateur | + | |
- | graphique AN | + | |
- | L’affichage est plus difficile à réaliser que l' | + | |
- | réalisé dans un écran virtuel afin d' | + | |
- | suivant recopie l' | + | |
- | adr ecr®, L' | + | |
- | EMOVE On peur aussi utiliser l' | + | |
- | L4=2 ! | + | |
- | adr ecri=MALLOC{32000) | + | |
- | BMOVE XBIOS(2e)cr, | + | |
- | VOID XBIOS(5, | + | |
- | PUT px, | + | |
- | PUT pï, | + | |
- | BMOVE adr ecr%, | + | |
- | PAUSE t4 | + | |
- | PUT px, | + | |
- | PUT px, | + | |
- | BMOVE adr ecr%, | + | |
- | PAUSE t% | + | |
- | PUT px, | + | |
- | PUT px, | + | |
- | EMCVE adr_ecrä, | + | |
- | PAUSE t# | + | |
- | PUT px, | + | |
- | PUT px, | + | |
- | BMOVE adr ecr“%, XBIOS(322)00, | + | |
- | VOID XBIOS(5, | + | |
- | On peut aussi remplacer les masques aléatoires par des masques | + | |
- | péométriques pénérés par programme, On peut ainsi allicher une | + | |
- | image sous la forme de petirs cercles ou de petits rectangles s' | + | |
- | pour reconstituer l' | + | |
- | pour les effacements d' | + | |
- | peut même faire une image qui s' | + | |
- | de faire un effet trés spectaculaire, | + | |
- | place mémoure. | + | |
- | Affichage de sprites de dimensions quelconques | + | |
- | Un sprite est une image qui peut s' | + | |
- | Contrairement à l’affichage en ombre chinoise, les sprites doivent | + | |
- | ATARI MAGAZIN E BEST OF GFA BASIC | + | |
- | être de plusieurs couleurs. On ne peut afficher un sprite avec un seul | + | |
- | opérateur logique. Il faut faire deux opérations graphiques logiques à | + | |
- | ]fl Eiui' | + | |
- | Un sprite est constitué d'un masque et d'une forme. La forme contient | + | |
- | le dessin proprement dit du sprite, et le masque contient les informations | + | |
- | sur les pixels de la forme devant être affichée. Le dessin | + | |
- | du sprite est fait sur un fond de couleur 0. Le masque est un dessin | + | |
- | de couleur O sur un fond de couleur 15. Les pixels én couleur O du | + | |
- | masque correspondent à ceux de la forme devant être affichée. | + | |
- | La technique à mettre en oeuvre est la suivante: l’image résultante | + | |
- | doit être de la couleur de la forme si le masque est à G, et de la couleur | + | |
- | du fond si le masque est à 15. L' | + | |
- | par pixel. Le principe est toujours le méme: si le pixél de masque est | + | |
- | à 0, le pixel de forme est affiché: et si le pixel de masque est à 15, le | + | |
- | pixel de l' | + | |
- | étapes: le masque est d’abord affiché avec l' | + | |
- | puis la forme est affichée avec l’opérateur logique OR L' | + | |
- | masque se fait avec le mode logique AND. Les pixels de l' | + | |
- | trouvent en interaction avec les pixcls du masque de couleur & se | + | |
- | changent en conleur O (puisque n AND O = Q), Les pixels de l' | + | |
- | qui entrent en interaction avec les pixels en couleur 15 du masque ne | + | |
- | changent pas de couleurs (puisque n AND 15 = n} On 2 alors une | + | |
- | image en ombre chinoise de la forme à afficher. L' | + | |
- | se fait ensuite avéc le mode logique OR | + | |
- | Les pixels de l' | + | |
- | couleur O de l' | + | |
- | xels de l' | + | |
- | pixels de la forme (puisque n OR 0 =n). | + | |
- | PUT px, | + | |
- | PUT px, | + | |
- | Fabrication automatique des masque | + | |
- | et des formes - | + | |
- | Il n’est pas très facile de dessiner les formes et les masques des sprites. | + | |
- | Pour éviter cela, le plus simple est de dessiner une seulc image et | + | |
- | d' | + | |
- | le masque du sprite. Cette tachnique est celle de la couleur transparenté. | + | |
- | Le sprite est dessiné avec un logiciel graphique. L'uné des couleurs | + | |
- | (généralement la couleur 15) est dite transparente, | + | |
- | qu' | + | |
- | qui ne doivent pas être modifiés par l' | + | |
- | Une fois le sprite dessiné avec une couleur transparenté, | + | |
- | générer le masque et la forme. Le masque est généré en remplagant la | + | |
- | couleur transparente par 15, et les autres couleurs par 0. La forme est | + | |
- | générée en remplaçant la couleur cransparente par 0. Le programme | + | |
- | suivant fabrique un masque ct une forme à partir d'une image avec | + | |
- | couleur transparente, | + | |
- | VDI, ce programme utilisé la couleur 1 et non la couleur 15, | + | |
- | x1=10 | + | |
- | yl=10 | + | |
- | x2=4{ | + | |
- | y2=d{) | + | |
- | trans=s1 | + | |
- | I | + | |
- | GET xl, | + | |
- | Bgen masque | + | |
- | GET xl, | + | |
- | PUT xl,vl, image$ | + | |
- | @gen Torme | + | |
- | GET x1, | + | |
- | END | + | |
- | PROCEDURE gen masque | + | |
- | LOCAL px,py | + | |
- | FOR py=vl TO y2 | + | |
- | FOR px=x1 TÜ x2 | + | |
- | IF POINT(px, | + | |
- | PLOT px,py,l | + | |
- | ELSE | + | |
- | PLOT px,py,0 | + | |
- | ENDIF | + | |
- | NEXT px | + | |
- | NEXT py | + | |
- | RETURN | + | |
- | PROCEDURE gen forme | + | |
- | LOCAL px,py | + | |
- | FOR py=yl TO y£ | + | |
- | FOR pxexl TO x2 | + | |
- | IF POINT(px, | + | |
- | PLOT px,py,0 | + | |
- | ENDIF | + | |
- | NEXT px | + | |
- | NEXT py | + | |
- | RETURN | + | |
- | Une fois le masque et la forme stockes dans les variables masque$ et | + | |
- | formes, il ne reste plus qu'à les afficher ou à les sauver dans un fichier | + | |
- | binaire pour une utilisation ultérieure, | + | |
- | Des sprites dans n' | + | |
- | quelle résolution | + | |
- | On peut afficher des sprites dans n' | + | |
- | d' | + | |
- | En moyenne résolution, | + | |
- | un fond de couleur 3, et les formes sont dessinées sur un fond de | + | |
- | couleur 0. En haute résolution, | + | |
- | couleur 0 sur un fond de couleur 1 et les formes sur un fond de cou- | + | |
- | Icur 0. | + | |
- | En créant un sprite avec une couleur transparente, | + | |
- | qui ne peut Être utilisée dans le dessin du sprite. | + | |
- | Cc n'est pas très génant en basse résolution, | + | |
- | quinze couleurs. Par contre, il ne reste que trois couleurs en moyenne | + | |
- | résolution, | + | |
- | dé dessiner les masques des sprites à la iriain (c' | + | |
- | graphique) pour la moyenne et la haute résolution. On évite ainsi | + | |
- | de perdre une couleur. | + | |
- | ATARI mmszE BEST OF GFA BASIC | + | |
- | Au lieu de perdre | + | |
- | du temps à taper | + | |
- | les listings des | + | |
- | programmes, | + | |
- | simplifiez-vous | + | |
- | la vieen | + | |
- | commandant | + | |
- | la disquette | + | |
- | BEST OF GFA, | + | |
- | contenant tous les | + | |
- | listings de ce | + | |
- | numéro et des | + | |
- | images | + | |
- | utilisabalveecs les | + | |
- | programmes | + | |
- | graphiques. | + | |
- | Voir bon de commande en page 50 | + | |
- | Le contenu de cette disquette est également | + | |
- | disponible en téléchargement sur le serveur | + | |
- | 3615 ATARI, sous la forme d'un fichier portant | + | |
- | le nom de BESTGFA.TOS. | + | |
- | Des avanfages | + | |
- | supplémentaires | + | |
- | exclusivement réservés | + | |
- | aux abonnés de | + | |
- | Start micro | + | |
- | magazine | + | |
- | Wotre abonnement vous donne | + | |
- | accès à " 3615 MICROHELP" | + | |
- | Wotre abonnement vous | + | |
- | procurera des réductions | + | |
- | intéressantes sur le | + | |
- | téléchargement et l’achat de | + | |
- | disquettes de logiciels du | + | |
- | domaine public | + | |
- | Wotre abonnement vous fera | + | |
- | bénéficier de tarifs | + | |
- | promotionnels sur certains | + | |
- | logiciels du commerce | + | |
- | Ahnnne: | + | |
- | économisez immédiatement | + | |
- | 30 F | + | |
- | Bulletin d' | + | |
- | O OUI, je m' | + | |
- | MICRO MAGAZINE pour un an à | + | |
- | partir du numéro à paraitre | + | |
- | (11 numéros dont un double en | + | |
- | juillet/août) au prix exceptionnel de | + | |
- | 360 F au lieu de 440 F (prix au | + | |
- | numéro) | + | |
- | J'ai bien noté que je bénéficierai du | + | |
- | service exclusif d' | + | |
- | 3615 MICROHELP. | + | |
- | Ci-joint un chèque bancaire ou postal | + | |
- | (exclusivement, | + | |
- | à l' | + | |
- | Mes modalités de foncäonnement du service ons que voire | + | |
- | code d' | + | |
- | l' | + | |
- | Toffra wolchle pour la France seulement. Etranger nous | + | |
- | consulier. | + | |
- | Attention : | + | |
- | envoyer ce bulletin et votre chèque à : | + | |
- | FC PRESS | + | |
- | 57, rue Danton | + | |
- | 92300 LEVALLOIS-PERRET | + | |
- | Nom i tl 5oy én e L] o T T l R L | + | |
- | Prénom Aty MY A A e < R | + | |
- | Adresse é ek e 0o TC Ll P L LA | e el SR ol | + | |
- | e d e S e [ ) RE L o RE RS | + | |
- | Codepostal | | 1 i gy 1 L. 1 1 | | + | |
- | Ville P T N TP fs e T R . [ e ä.< | + | |
- | DOSSIER FALCON | + | |
- | Présentation du Falean 030 | + | |
- | Multimédia pour fous | + | |
- | TOS 4.0 et MULTITOS | + | |
- | 505 COURRIER | + | |
- | Les réponses h vos questions | + | |
- | ESSAI LOGICIEL | + | |
- | L' | + | |
- | Le fraitement de texte Papyrus | + | |
- | . GRAPHISME | + | |
- | aqiciel de royirocin P DKBTRACE ° | + | |
- | La couleur de À & / | + | |
- | TABLEURS | + | |
- | Tronsférer vos données | + | |
- | entre 5T ¢ PC | + | |
- | MUSIQUE | + | |
- | Les messages AIDH | + | |
- | ACTUALITE | + | |
- | De nombreuses news Falcon | + | |
- | 505 COURRIER | + | |
- | Las réponses à vos questions | + | |
- | MUSIQUE | + | |
- | Les messages MIDI suite.. | + | |
- | PORTFOLIO | + | |
- | Interface Midi Pocket Music | + | |
- | EUREAUTIQUE | + | |
- | Le tableur Groal Cale 3 | + | |
- | EDUCATION | + | |
- | L’ordinateur | + | |
- | est un jeu d' | + | |
- | SYNTHESE D' | + | |
- | Espaces de |1.|m|E|n: | + | |
- | Lagiciet rup ique | + | |
- | vber Shadows | + | |
- | Les nouveautés graphiques | + | |
- | PHISME | + | |
- | Logiciel Persistence of Vision 1.0 | + | |
- | Mode d' | + | |
- | de Néochrome Master | + | |
- | :'l n.” | + | |
- | d | + | |
- | EDUCATIF | + | |
- | Vive l' | + | |
- | COMPARATIF | + | |
- | Conscles de jeu portables | + | |
- | JEUX | + | |
- | Les jeux de rôle | + | |
- | INITIATION | + | |
- | Les différentes lypes de virus | + | |
- | PROGRAMMATION | + | |
- | 3 nouvellés palices | + | |
- | de caractères en Gfo Basic | + | |
- | TELEMATIQUE | + | |
- | Les nouvéautés du | + | |
- | téléchargement | + | |
- | LA DISQUETTE DU MOIS | + | |
- | 49 accessoires | + | |
- | indispensables | + | |
- | JEUX | + | |
- | Jeux d' | + | |
- | TEST MATERIEL | + | |
- | Fax Modem SUFÉEM-Pé2é | + | |
- | DOMAINE PUBLIC | + | |
- | Sélection de 56 programmes à | + | |
- | posséder absolument. | + | |
- | TELEMATIQUE | + | |
- | Les nouveautés en | + | |
- | téléchargement | + | |
- | Les jeux PC en téléchargement | + | |
- | Flflfifl.fimflfl' | + | |
- | Ecrivez “un logiciel d-: | + | |
- | vous êles le héros” | + | |
- | Animation d%n amique | + | |
- | én asic | + | |
- | Fichiers à accés directs en | + | |
- | Omikron | + | |
- | Effets spéciqux Ëru phiques | + | |
- | en AssemD' | + | |
- | . DISQUETTE DU MOIS | + | |
- | Le lagiciel | + | |
- | Master 2.27 | + | |
- | Une biblicthéque d' | + | |
- | Pour commander, remplissez lisiblement ce bon (ou une Eä | + | |
- | envoyez- \e accompagné du réglement à : | + | |
- | FC PRESS- 57, rue Danton- 92300 Levallois-Perret | + | |
- | Je commande le n°1 O, le n°2 © à 38 F le numéro. | + | |
- | T | numéro(s) à 38 F = Lecssvans F + 15 F de frais de part et | + | |
- | d' | + | |
- | l' | + | |
- | Nom T R u e e e P E S | + | |
- | Prénom e Sl E 6 t e m e tL n srrr e | + | |
- | Adresse é CR T C P £ gy e i d e | e | + | |
- | | S O R S P 1 e | + | |
- | Codepostall 1161* 15 pogo Lop 1 ). | | + | |
- | Ville e o S - Y (] Y e S PS | + | |
- | Pays T e e T SE E S | + | |
- | Start | + | |
- | LA MODELISATION | + | |
- | DES | + | |
- | OBJETS 3D | + | |
- | d ' | + | |
- | SLokr | | + | |
- | UL | + | |
- | LE MULTIMEDIA | + | |
- | A LA MAISON | + | |
- | JOURNAL | + | |
- | L' | + | |
- | INITIATION | + | |
- | SAUVEGARDEZ VOS FICHIERS | + | |
- | TEST LOGICIEL | + | |
- | PARALLELE 3D | + | |
- | LES REPONSES A | + | |
- | VOS QUESTIONS SO | + | |
- | ' o | + | |
- | .fi- | + | |
- | L" | + | |
- | = | + | |
- | .hfi.. | + | |
- | I | + | |
- | ' . | | + | |
- | — LS [ UE [ __' | + | |
- | e PE R e L | + | |
- | T Lo1 tMLU E -__\-_ll-" | + | |
- | EZ | + | |
- | PE T I_:: | + | |
- | I | + | |
- | / PE | + | |
- | A 0R | + | |
- | | j‘h“— | + | |
- | "n . [ ï * | + | |
- | F r |' TPEF tdéwE i | + | |
- | Fhx ; PE ; | + | |
- | .l- | + | |
- | . = | + | |
- | e e E | + | |
- | L e | + | |
- | ms F | + | |
- | ; - | + | |
- | ; ; | | + | |
- | ETE A e r | + | |
- | e o 8 | + | |
- | Prenez les commandes cIEE_ | + | |
- | 3 meilleurs logiciels de simulation: | + | |
- | 10 Vroom, F19 Stealth Fighter, | + | |
- | ùs Silent Service !!! n .. | + | |
- | (avec la super commande Zoomer) | + | |
- | rl = — - | + | |
- | " | + | |
- | k | + | |
- | (, | + | |
- | I"-.r -:" | + | |
- | — É | + | |
- | 1 - | + | |
- | Î | + | |
- | L - | + | |
- | J Ë | + | |
- | P | + | |
- | L | + | |
- | Il_.-" | + | |
- | B= | + | |
- | F | + | |
- | =x | + | |
- | " | + | |
+ | Patrick Leclereq |