Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
back2root:archives:jeu-de-role-en-gfa-basic:02-editez-vos-cartes-graphiques [2025/06/11 18:19] – 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: | ||
- | ===== 02 - Editez | + | ===== 02 - Éditez |
+ | |||
+ | ==== Editer vos cartes graphiques | ||
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. | 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. | ||
Ligne 5: | Ligne 7: | ||
==== Notions de base ==== | ==== Notions de base ==== | ||
- | Dans les jeux de rôle de type Cfrimer-ou Aentarsy | + | Dans les jeux de rôle de type Ultima |
- | le Joucur gére les actions d'uné équipe de personnages. Celle-ca | + | |
- | se déplace sur une grande carte réprésentant | + | |
- | jeu. Seule une partie de la carte est affichée à l' | + | |
- | de fénêtre | + | |
- | ilï_!!:i pPÉrsUnnages e ljl' | + | |
==== Dessin de la carte ==== | ==== Dessin de la carte ==== | ||
- | L' | + | L' |
- | l' | + | |
- | fi': | + | |
- | de 3X0x220 | + | |
- | 1600800 | + | |
- | une place mémoire de 640 Ko. C'est beaucoup trop pour un 520 5T | + | |
- | et même pour un 1040 5T, en tenant | + | |
- | programme | + | |
==== Dessin avec éléments graphiques de base ==== | ==== Dessin avec éléments graphiques de base ==== | ||
- | YA l.' | + | Au lieu de stocker |
- | ner avec des élements | + | |
- | 7 {.:'Ii'l: | + | Une carte est alors mémorisée sous la forme d' |
- | de beaucoup d' | + | |
- | dessine | + | Avec des éléments de 16x16, une carte de 1600x800 |
- | avec un seul élément représentant la silhouerre | + | |
- | (st le procédé utilisé par bon nombre de logiciels de jeu du com- | + | <code freebasic> |
- | FICFce, Pl" | + | OPTION |
- | mémoires vidéos, les elements | + | DIM carte|(100,50) |
- | lôx16 pixels ou 32x32 piæels, | + | </ |
- | Une carte esr alors mémorisée sous la forme d' | + | |
- | Ë' | + | L' |
- | deux dimensions, dont le type dépend du nombre d' | + | |
- | Avec moins de 256 élements, ce qui est déjà énorme, on peur | + | Un élément graphique de 16x16 pixels stocké dans une variable alphanumérique grâce à l' |
- | utiliser un tableau de vvpe BYTE (svmbole | + | |
- | n' | + | <code freebasic> |
- | 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. | + | |
- | Même un non-graphiste peut réaliser une jolie carte à partir de beaux | ||
- | éléments de hase. | ||
==== Dessin de la carte Ultima ==== | ==== Dessin de la carte Ultima ==== | ||
- | La portion de carte affichée par les jeux Ultima | + | La portion de carte affichée par les jeux //Ultima// a une dimension de 176x176 pixels, et se constitue |
- | 176x176 pixels, et est constitué | + | |
- | La position de l' | + | |
- | en noir affichee au milieu de l' | + | |
- | Lors des déplacements, | + | |
- | cé que l' | + | |
- | ==== Programmation d'un système de déplacement style Ultima ==== | + | |
- | Pour réaliser un systéme de déplacement similaire à celui d' | + | Lors des déplacements, |
- | en GEA Basic, il faut résoudre un certain | + | |
- | Nous avons déjà vu que le codage de la carte peur être stocké | + | ==== Programmation d’un système de déplacement style Ultima ==== |
- | dans un tableam | + | |
- | un tabléau | + | Pour réaliser un systéme de déplacement similaire à celui d'//Ultima// en //GFA Basic//, il faut résoudre un certain |
- | Comment est-ce que les éléments graphiques sont stockes dans | + | aussi bien sur un STF que sur un STE? Comment stocker les différentes |
- | le tableau alphanumérique? | + | |
- | aussi bien sur un STF que sur un STE? Comment stocker les différéntes | + | 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 |
- | données sur disque? Comment gérer les déplacements de | + | |
- | l' | + | ==== Définition des éléments graphiques |
- | 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 | + | On suppose |
- | à la créition | + | |
- | pour gérer les déplacements de l' | + | La structure du fichier binaire est la suivante: 32 octets |
- | Définition des éléments graphiques | + | |
- | On suppese | + | <code freebasic> |
- | un graphiste avec un logiciel de dessin type Degas Elite où equivalent. | + | ' ****************************** |
- | Nos précieux | + | ' |
- | image au format Degas, Le programme GENELEM, | + | ' * |
- | ELEMENTS.P11 et stocke les éléments graphiques dans un fichier | + | ' ****************************** |
- | binaire ELEMENTS . BIN réucilisable | + | RESERVE |
- | La structure du fichier binaire est la suivante: 32 ocrets | + | DIM element$(200) |
- | palette de couleur des éléments graphiques, un oot unique | + | nb_elements%=0 |
- | le nombre d' | + | palette$=SPACE$(32) |
- | oecupant | + | ' |
- | est définie dans une série de DATA à la fin du programme, la fin des | + | @load_dzgas(" |
- | 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 187: | 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 194: | 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 801: | 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 | + | |
- | par EDITCART pour gérer les déplacéments d'une équipe de personnagés | + | ==== Pour finir ==== |
- | sur un monde virruel | + | |
- | carte, gestion des rencontres, interdictions | + | Nous verrons le mois prochain comment |
- | sur certaines cases, | + | |
- | sur le 3615 ATARI les listings de l’article, | + | |
- | une image Degas contenant quelques éléments de dessin. | + | |
Patrick Leclereq | Patrick Leclereq |