Outils pour utilisateurs

Outils du site


back2root:archives:jeu-de-role-en-gfa-basic:02-editez-vos-cartes-graphiques

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
back2root:archives:jeu-de-role-en-gfa-basic:02-editez-vos-cartes-graphiques [2025/06/11 22:44] fraterback2root:archives:jeu-de-role-en-gfa-basic:02-editez-vos-cartes-graphiques [2025/06/12 00:09] (Version actuelle) – [Programme Complet] frater
Ligne 168: Ligne 168:
 ==== La simplicité n'est pas de ce monde ==== ==== La simplicité n'est pas de ce monde ====
  
-Initialement, cet éditeur a Été conçu pour être simple à utiliser et à +Initialement, cet éditeur a Été conçu pour être simple à utiliser et à comprendre. Hélas, il s'est avéré impossible d'écrire des routines d’affichages simples et performantes aussi bien sur STE que STF [dommage que tous les ST ne soient pas dotés de blitter). Les routines d'affichage de EDITCART utilisent donc des techniques de programmation un peu complexes à comprendre pour un programmeur debutant. 
--:-:-mprr:nfln:. Hélas, il s'est averé impossible d'écrire des routines d’affichages + 
-simples et performantes aussi bien sur STE que STF [dommage +==== Un système d’affichage simple ==== 
-que tous les ST ne soient pas dotés de blitter). Les routinés + 
-d'affichage de EDITCART utilisent donc des techniques de programmation +La première méthode qui vient à l'esprit est de ré afficher entièrement l'écran après chaque déplacement. Dans l’exemple qui suit, le codage de la carte est stocké dans le tableau //CARTE|()// et les éléments graphiques de base dans le tableau //ELEMENT$()//. La procédure //aff_carte// dessine la carte sur l'écran. 
-un peu complexes à comprendre pour un programmeur + 
-debutant. +La position du morceau de carte visible par rapport à la carte virtuelle cst contenu dans les variables //ligne_carte// et //colonne_carte//. 
-Un système d’affichage simple + 
-La première méthode qui vient à l'esprit est de réafficher entiérement +En mettant //ligne_carte// et //colonne_carte// à 1, le côté haut gauche de la carte est affiche sur l'ecran. 
-l'écran après chaque déplacement. Dans l’evemple qui suit, le + 
-codage de la carte est stucké dans le tableau CART E|() et les éléments +Pour déplacer la carte d’une position vers la droite, il faut incrémenter la variable //colonne_carte// de 1 et appeler de nouveau //aff_carte//
-graphiques de base dans le tableau ELEMENTS(). La procedure + 
-Gaff carte dessine la carté sur l'écran. +Pour déplacer la carte d'une position vers le bas, il faut incrémenter //ligne_carte// et exécuter //aff_carte//. 
-La pésition du morceau de carte visible par rapport à la carte virtuelle + 
-cst contenu dans les variables lîgne carte ec colonne_carte. +Remarque: la position (1, 1) correspond au premier indice du tableau contenant la carte, grâce à l’instruction OPTION BASE 1 Sans celle-ci, le premier indice du tableau a la position (0,0). 
-En mettant Tigne carte ot colonne carte à 1, lé côté haut gauche + 
-de la carte est affiche sur Pecran+Le morceau de carte visible est affiché à l'écran à la position définie par les variables xcarteet ycarte%. Etant donné là structure interne de la mémoire vidéo et la manière dont fonctionnent les instructions graphiques du //GFA Basic//, il est préférable d'utiliser une position d'affichage en x multiple de 16, afin d'accélérer la vitesse d'exécution. 
-Pour déplacer là carte d’une position vers la droite, il faut incrémenter + 
-la variable colonne liane de 1 et appeler de nouveau +<code freebasic> 
-@aff carte+OPTION BASE 1 
-Fnur_q:'LËFÏ:m':,la carte d'une position vers le bas, il faur incrementer +
-ligne carte er exécuter Baff carte+xcarte%=16 
-Remarque: la position (1, 1) correspond au premier indice du tableau +ycarte%=5 
-conténant la carte, grice à l’instruction OPTION BASE 1 Sans celle- +' 
-ci, le premier indice du tableau a la position (0,0). +ligne carte%=30 
-Le morceau de carte visible est affiché à l'écran à la position définie +colonne_carte%=67 
-par les variables xcarteet ycarte*. Etant donnd là sccucture interne +
-de la mémoire vidéo et la manière dont fonctionnent les Instruetions +@aff_carte
-graphiques du GE4 Basic, il est préférable d'utiliser une position +
-d'affichage en x multiple de 16, alin d'accélérer la vitesse +
-d'exécution. +
-OFTION BASE 1 +
-scartes=16 +
-vcarté%=5 +
-ligne cartes=30 +
-cn]unng_cart&%=ñ? +
-éaff carte+
 END END
-PROCEDURE aff carte i + 
-LOCAL 1%,c0+PROCEDURE aff_carte 
-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 cartes +  ' 
-FOR 1=1 TO 11 +  posy%=ycarte% 
-posx#=xcartes +  ligne%=ligne_carte% 
-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%+    INC ligne% 
 +    ADD posy%,16 
 +  NEXT l%
 RETURN RETURN
-Pour gérer les déplacements, il suffit d’avoir une série de procédures +</code> 
-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, il suffit d’avoir une série de procédures modifiant les variables de position en fonction de la direction de déplacement. Pour des misons de sécurité, ces procédures doivent contrôler que le déplacement ne se fasse pas en dehors des limites de la carte. 
-controler que le -l:ié[;];mt‘.m:m né sé fasse pas en dehors des limites de + 
-la carte. +<code freebasic> 
-ATARI MAGAZINE H BEST OF GFA BASIC +PROCEDURE aller_haut 
-PROCEDURE aller haut +  IF ligne_carte%<>
-IF ligne cartes==+    DEC ligne_carte% 
-DEC 1igne cartes +    @aff_carte 
-Baff carte +  ENDIF
-ENDIF+
 RETURN RETURN
-PROCEDURE aller bas +
-IF ligne cartese=ligne max® +PROCEDURE aller_bas 
-INC ligne carte+  IF ligne_carte%<>ligne_max% 
-Baff carte +    INC ligne_carte
-ENDLF+    @aff_carte 
 +  ENDIF
 RETURN RETURN
-PROCEDURE aller gauche +
-1F colonne cartesss-+PROCEDURE aller_gauche 
-DEC calonne cartes +  IF colonne_carte%<>
-Baff carte +    DEC colonne_carte% 
-ENDIF+    @aff_carte 
 +  ENDIF
 RETURN RETURN
-PROCEDURE aller droite +
-IF colonne carte*=- +PROCEDURE aller_droite 
-INC colonne cartes +  IF colonne_carte%<>1 
-Gaff carte +    INC colonne_carte% 
-ENDT F+    @aff_carte 
 +  ENDIF
 RETURN RETURN
-Ce système est parfait sur le papier, mais une fois mis en ceuvre, il se +</code> 
-révéle trop lent pour une utilisation pratique, cas de figure fréquent + 
-en informartique, La solution passe par une amélioration du principe +Ce système est parfait sur le papier, mais une fois mis en oeuvre, il se révèle trop lent pour une utilisation pratique, cas de figure fréquent en informatique. La solution passe par une amélioration du principe de base. 
-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'écran et les colonnes 2 à 11 sont décalées d'une position vers la gauche, le programme ne dessine vraiment que la nouvelle colonne 11, De la même manière, lors d'un déplacement vers la droite, seule la colonne 1 est nouvelle, Puisqu'une partie de la carte est juste décalée, au lieu de le redessiner, on peut la déplacer en une seule opération graphique. L'une des solutions possible est de lire la portion de carte avec l'instruction ''GET'' et de l’afficher à sa nouvelle position avec ''PUT''.  
-l'écran et les colonnes 2 à 11 sont décalées d'une pasition vers la + 
-gauche, le programme ne dessine vraiment que la nouvelle éolônne +Cette technique fonctionne, mais présente un inconvénient d'ordre esthétique, L'oeil humain est un outil très perfectionné qui est capable d'analyser et de décomposer la structure d'un mouvement rapide.  
-11, De la même manière, lors d'un déplacemient vers la dronté, +C'est souvent un avantage, mais dans notre cas particulier, c’est un inconvénient: si la routine d'affichage travaille en deux étapes, cela produit un effet graphique nuisible visible. Pour éviter cela, il faut que l’affichage s’effectue en une seule fois et le plus rapidement possible
-seule la colonne 1 est nouvelle, Puisqu'une partie de la carte est justé + 
-décalée, au licu de le redessiner, on peut la déplacer en une seulc +La seule manière d'obtenir un affichage rapide est de réaliser les opérations graphiques en mémoire et de les recopier rapidement sur l'écran en une seule opération. Afin d’obtenir un résultat graphique encore meilleur, le programme ''EDITCART'' utilise une variante de cette technique: il dessine la carte dans un écran virtuel, puis change l’adresse de la mémoire écran par l'adresse de cet écran virtuel. Ainsi, on évite de recopier l'image sur l'écran. 
-opération graphique. L'une des solutions possible est de lire la portion + 
-de carte avec l'instruction GET er de l’afficher à sa nouvelle position +La fonction ''XBIOS(5)'' permet de changer l'adresse de la mémoire écran. Sur un STE cette adresse peut être quelconque, alors que sur un STF elle doit obligatoirement être un multiple de 256. L'adresse initiale de l’écran est multiple de 256. Il faut créer une zone de 32000 octets pour l'écran virtuel. L’instruction ''MALLOC'' permet d'allouer une zone mémoire de n octets. Cette zone mémoire commence obligatoirement à une adresse pairePour obtenir une adresse multiple de 256, il faut déclarer avec ''MALLOC'' une zone de 32255 octets et masquer les deux derniers bits de l'adresse Le résultat est une adresse multiple de 256 qui ports sur une zone mémoire de 32000 octets contenus dans la zone mémoire de 32255 octets déclarée par le programmeC'est un peu compliqué mais cela marche bien. 
-avec PUT, + 
-Cette technique fonctionne, mais présente uñ inconvénient d'ordre +<code freebasic> 
-esthétique, L'oeil humain est un outil trés perfectionné qui est capable +adr_tampon%=MALLDC(32255) 
-d'analyser et de décomposer la structure d'un mouvement rapide. +adr2%=(adr_tampon%+255) AND &HFFFFFF00 
-C'est souvent un avantage, mais dans notre cas particuliér, c'ést +</code> 
-un inconvénient: si la routine d'affichage travaille en deux étapes, cela + 
-produit un effet graphique nuisible visible. Pour éviter cela, il faut +Les variables //adrl%// et //adr2%// contiennent l'adresse des deux écrans. La variable //adr1%// contient l'adresse initiale de la mémoire écran et //adr2%// contient l'adresse de l’écran virtuel de 32000 octets. L'affichage se fait en bascule. Lorsque l’adresse de la mémoire écran est positionnée sur //adr1%//, l'image de la nouvelle carte est dessinée dans //adr2%// Lorsque l’adresse de la mémoire écran est positionnée sur 
-que l’affichage s'effectne en une seule fois et le plus rapidement possible, +//adr1%//, l'image de la nouvelle carte est dessinée dans //adr1%//
-La seule manière d'obtenir un affichage rapide est de réaliser les + 
-opérations graphiques en mémoire et de les recopier rapidement sur +Lorsque le programme a terminé de dessiner une image en mémoire, il change l'adresse de la mémoire écran grace à l’instruction ''XBIOS(5)''Attention: la fonction ''XBIOS(5)'' peut être appelée à tous moment par le programme, mais le gestionnaire d’écran ne change l'adresse de la mémoire écran que lorsque l'image courante à été entiérement dessinée, St vous utilisez trop rapidement l'instruction ''XBIOS(5)'', seul le dernier changement de mémoire d'écran sera pris en compte. Pour éviter ce probléme, aprés avoir utilisé ''XBIOS(5)'', il faut attendre que le gestionnaire d'écran ait affiché entièrement l'image écran. Ce test est réalisé avec l'instruction ''VSYNC'' Celle-ci bloque l'exécution du programme tant que le gestionnaire d'écran affiche l’image courante (il y à 50 images affichés par seconde). 
-Pécran en une setle opétration. Afin d'obrenir un résultat graphiqué + 
-encore meilleur, le programme EBITCART utilise une variante de cetté +<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'adresse de cet écran virtuel. Ainst, +
-on évité de recopier l'imagé sur l'écran. +
-La fonction XBI0S(5) permet de changer l'adresse de la mémoire +
-écran. Sur un STEE cette adresse peut être quelconque, alors que sur +
-un STE elle doit obligatoirement être un multiple de 256. L'adresse +
-initiale de l’écran est multiple de 256. Il faut créer une zone de 32000 +
-Dclets pour l'écran virtuel. L'inscruction MALLOC permet d'allouer +
-une zonc mémoure de à octéts Cette zone métnoire commence oblipatoirement +
-à une adresse pairePour obtenir une adresse multiple +
-de 256, 1] faut déclarer avec MALLOC une zone de 32255 octets ct +
-masquer les deux derniers bits de l'adresse Le résultar est une adresse +
-multiple de 256 qui ports sur une zoné mémoire de 32000 octers +
-contenus dans la zone mémoite de 32255 octets déclarée par le programme+
-C'est un peu compliqué mais cela marche bien, +
-adr tampon#=MALLDC(32255) +
-adré#=(adr tampon%+255) AND KHFFFFFFO0 +
-Les vartables adrl% et adr2% contiennent l'adrésse des deux écrans. +
-La varable adr1% contient l'adresse inimiale de la mémoire écran et +
-adr?contienr l'adresse de l’écran virtuel de 32000 octers. L'atfichagé +
-se [ait en bascule. Lorsque l’adresse de la mémoire ééran est post +
-tionnée sur adrl®, l'image de la nouvelle carte est dessinée dans +
-adr?% Lorsque l’adresse de la mémoire écran est positionnée sur +
-adrls, l'image de la nouvellé carte est dessinée dans adriér +
-Lorsque le programme a terminé de dessiner nne image en mémoire, +
-change Padresse de la mémoire écran grace à l'mnstrucrion +
-XB10S(5}Artention: la fonction XBI0S(5) peur être appélée à rous +
-moment par le programme, mais le gestionnaire d'éctan ne change +
-Padresse de la mémoireécran que lorsque l'image courante à ét éentiérement +
-dessinée, St vous urilisez trop rapidement l'instruction +
-XBIOS(5}, seul le dernier changement de mémoire d'écran sera pris +
-én compré. Pour éviter ce probléme, aprés avoir wrilisé XBI0S(5), il +
-faut attendre que le gestionnaire d'écran aic affiché entierement +
-l'image écran. Ce test est réalisé avec l'mstruction VEYNC Celle-er +
-bloque l'exécution du programme tant que le gestionnaire d'écran atfiche +
-l’image courante (il y à 50 images affichés par seconde). +
-vOID XBIOS(5)+
 VSYNC VSYNC
-Format de sauvegarde des cartes +</code> 
-Les cartes génerées par EDITCART ont une taille de 30 lignes de 60 colonnes. + 
-Four changer fa taille, 1l faut modifier les variables nb_colonnes +==== Format de sauvegarde des cartes ==== 
-et nb Tignes sans dépasser les limites du tableau carte( + 
-700,75). +Les cartes générées par ''EDITCART'' ont une taille de 30 lignes de 60 colonnes. Pour changer fa taille, 1l faut modifier les variables //nb_colonnes// et //nb_lignes// sans dépasser les limites du tableau //carte(700,75)//. 
-Les cartes d'EDITCART ont le formar suivant: 19 octers conténant la + 
-chaîne CARTE JdR ATARI MAG" un octer contenant le nombre de +Les cartes d'''EDITCART'' ont le format suivant: 19 octets contenant la chaîne "CARTE JdR ATARI MAG" un octet contenant le nombre de colonnes, un octet contenant le nombre de lignes et le codage de la carte (la taille de ce codage est égal à nb_colonnes x nb_lignes octets). La chaîne est un en-tête d'identification. 5i vous tentez de lire un fichier n‘avant pas d'en-tête, le programme affiche un message d'erreur. Le nom d'une carte doit  impérativement avoir une extension ''.CAR'', ne l'oubliez pas au moment de taper de la carte à sauver (c'est l'unique moment où l'éditeur utilise le clavier). 
-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'identification. 5i vous tentez de lire + 
-un fichier n‘avant pas d'en-tête, le programme affiche un message +<code freebasic> 
-d'érreur. Le nom d'une carte doit impérativement avoir uné excenson +' ****************************** 
-.CAR, ne l'oubliez pas au moment de taper de la carte à sauver +' *       EDITEUR DE CARTE     * 
-(c'est l'unique moment où Péditeur utilise le clavier). +' *       POUR JEU DE RÔLE     * 
-ATAR| MAGAZINE m BEST OFGFA BASIC +' *        STYLE ULTIMA        
-| HÉVÉENVÉATAETETETTTENNAETEREETAEE E +' ****************************** 
-EDITEUR DE CARTE ñ +' * (C) 1991 ATARI MAGAZINE    
-POUR JEU DE RÔLE = +* (C) 1991 PATRICK LECLEREQ  * 
-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 LECLEREG # +
-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%+255AND SHFFFFFFOO +adr_tampon%=MALLOC(32255) 
-adr1*=XB105{#+adr2%=(adr_tampon%+255AND &HFFFFFFOO 
-nb colonness=60 +adr1%=XBIOS{2
-nb_lignes*=30+nb colonnes%=60 
 +nb_lignes%=30
 DIM carte|(200,75) DIM carte|(200,75)
-Gmair+
 +@main
 VOID XBIOS(5,L:adrl%,L:adrl%,-1) VOID XBIOS(5,L:adrl%,L:adrl%,-1)
 CLS CLS
 VOID MFREE(adr tampon%) VOID MFREE(adr tampon%)
 END END
-PROCEDURE set ecr Tog(adr ecrans+
-VOID X810$(5,L:adr ecrans,L:-1,-1)+' ----------------------------------- 
 +PROCEDURE set_ecr_log(adr ecran%
 +  VOID XBIOS(5,L:adr_ecran%,L:-1,-1)
 RETURN RETURN
-PROCEDURE set ecr phys([adr ecran+
-VOID XBIOS(5,L:-1,L:adr ecran*,-1)+PROCEDURE set_ecr_phys([adr ecran%
 +  VOID XBIOS(5,L:-1,L:adr_ecran%,-1)
 RETURN RETURN
-— — ===" c=s cs — e ] e e e e e C +' 
-A 045446 GRR A UE UE É ÉÉ R AN RE E E S +' ----------------------------------- 
-ATTENTE ARRET CLIC SQURIS * +*********************************** 
-1 el e e e o e e e e e e e d Sl et e e r ol +' *    ATTENTE ARRET CLIC SQURIS    
-PROCEDURE attbclac +' *********************************** 
-i) +PROCEDURE attOclic 
-EXIT IF MOUSEK=0 +  DO 
-LOUP+    EXIT IF MOUSEK=0 
 +  LOOP
 RETURN RETURN
-PROCEDURE Euurîa_fleche +
-DEFMOUSE 0+PROCEDURE souris_fleche 
 +  DEFMOUSE 0
 RETURN RETURN
-PROCEDURE souris abeïlle +
-GEFMOQUSE Z+PROCEDURE souris_abeille 
 +  DEFMOUSE 2
 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 +' *    TEST CLIC SUR ZONE ÉCRAN      
-FUNCTION tstzone(x*,y%,px5pyétxstyf+' ************************************ 
-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 +  IF x%<px% 
-result#+    result%=0 
-ENDIF +  ENDIF 
-LF yésepys +  IF x%>px%+tx%-1 
-result#=0 +    result%=
-ENDIF +  ENDIF 
-IF yve=pysitys-l +  IF y%<py% 
-result=eD +    result%=0 
-ENDIF +  ENDIF 
-RETURN resuLl+  IF y%=py%+ty%-l 
-ERDFUNE +    result%=0 
-I B o A S ARl e B e o be +  ENDIF 
-' * EFFACEMENT ECRAN +  RETURN result
-| NAAAÉERERF REÉSEREE RTEN +ERDFUNC 
-PROCEDURE cls _ ecran(+
-DEFFILL c% +' ************************************ 
-FBOX 0,0,319,199+' * EFFACEMENT ECRAN                 * 
 +' ************************************ 
 +PROCEDURE cls_ecran(c%
 +  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 w +   AFFICHAGE CADRE GRAPHIQUE     * 
-| RR L e R LR S E +' ************************************ 
-PROCEDURE cadre[px%, pys,tx%, tyd, f=,+PROCEDURE cadre(px%,py%,tx%,ty%,f%,b%
-LOCAL pxé%, pyes +  LOCAL px2%, py2% 
-pxés"pxe+txe=l +  ' 
-pyés=pyésttys-1 +  px2%=px%+tx%-1 
-DEFFILL f # +  py2%=py%+ty%-1 
-FEOX pxS,0V5pad%spyas +  DEFFILL f% 
-COLOR  +  PBOX px%,py%,px2%,py2% 
-BOX px%,py%,px2%,pyd%+  COLOR b% 
 +  BOX px%,py%,px2%,pyd%
 RETURN RETURN
-| ERRRREAA TR RR AN N EEFE +' 
-“ * AFFICHAGE MESSAGE +************************************ 
-DANS ROITE DE CLIC +' *         AFFICHAGE MESSAGE        * 
-1 ETENESÉ É R +       DANS BOITE DE CLIC        * 
-PROCEDURE aff boite(ptxad,% ty,f, pFésyDéssa m+' ************************************ 
-LOCAL pxespyes +PROCEDURE aff_boite(px%,py%,tx%,ty%,f%,b%, m$
-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 +  ' 
-+  xaff%=px%+(tx%-LEN(m$}*8)/2 
-¥ +  yaff%=py%+6+(ty%-7)/2 
-DEFFILL 3+  ' 
-PEOX px%,pyepréspyés +  DEFFILL f
-COLOR b* +  PBOX px%,py%px2%py2% 
-EOX px* pytpX24 pyd=x +  COLOR b% 
-TEXT xafvafffä,*mf+  BOX px% py%px2% py2% 
 +  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 charge elements({fichierf+' ************************************* 
-LOCAL n% +PROCEDURE charge_elements({fichier$
-LOCAL palettet ; +  LOCAL n% 
-palettet=SPACE$(32} +  LOCAL palette$ 
-OPEN "1" ,#1,fichierf +  ' 
-BGET #1,VARPTK(palette$),32 +  palette$=SPACE$(32) 
-VOID XBIOS (6;L:VARPTR(palette$)) +  OPEN "1" ,#1,fichier$ 
-nb elementsi=INP{#1) +  BGET #1,VARPTR(palette$),32 
-FOR n%=1 TD nb_elements* +  VOID XBIOS (6;L:VARPTR(palette$)) 
-element$(n%)=5PACE$ (134) +  nb_elements%=INP{#1) 
-BGET #1,VARPTR(element#(n#}},134 +  FOR n%=1 TO nb_elements% 
-MEXT n% +    element$(n%)=SPACE$(134) 
-CLOSE #1+    BGET #1,VARPTR(element$(n%)),134 
 +  NEXT n% 
 +  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 init carte +* INITIALISATION DE LA CARTE       
-ARRAYFILL carte[(),l+' ************************************ 
 +PROCEDURE init_carte 
 +  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 759: Ligne 735:
 xcartes=6 xcartes=6
 vcartes=l= vcartes=l=
-Gcharge elements ("ELEMENTS.BIN®) +  @charge_elements ("ELEMENTS.BIN®) 
-@init carte +  ' 
-HIDEM +  @init_carte 
-GRAPHMODE 2 +  HIDEM 
-@aff ecran +  GRAPHMODE 2 
-@aff carie +  @aff_ecran 
-BMOVE XBIOS(Z2),adr2%,32000 +  @aff_carte 
-@souris fleche +  BMOVE XBIOS(2),adr2%,32000 
-SHOWM +  ' 
-etats=1 +  @souris_fleche 
-@gestion eciteur+  SHOWM 
 +  etat%=1 
 +  @gestion_editeur
 RETURN RETURN
-Pour finir +</code> 
-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 +==== Pour finir ==== 
-sur un monde virruel (affichage de l'image de l'equipe sur la + 
-carte, gestion des rencontres, interdictions où Autorisation de deplacements +Nous verrons le mois prochain comment utiliser les cartes générées par ''EDITCART'' pour gérer les déplacéments d'une équipe de personnages sur un monde virtuel (affichage de l'image de l'equipe sur la carte, gestion des rencontres, interdictions ou autorisation de deplacements sur certaines cases, etc.) Vous trouverez en téléchargement sur le **3615 ATARI** les listings de l’article, un exemple de carte et une image //Degas// contenant quelques éléments de dessin. 
-sur certaines cases, e'n:Vous trouverez én E:ËlÈ:härg,Emflnl: +
-sur le 3615 ATARI les listings de l’article, un exemplé de carte et +
-une image Degas contenant quelques éléments de dessin.+
 Patrick Leclereq Patrick Leclereq
back2root/archives/jeu-de-role-en-gfa-basic/02-editez-vos-cartes-graphiques.1749674685.txt.gz · Dernière modification : de frater