[TUTO] [IntyBASIC] Afficher et déplacer un sprite

Aller en bas

[TUTO] [IntyBASIC] Afficher et déplacer un sprite

Message par Ithus le Jeu 29 Nov 2018 - 17:53

Je suis chaud, c'est parti pour un troisième tutoriel sur l'IntyBASIC.

Ouvrez le fichier HelloWorld.bas de la dernière leçon; il doit, une fois compilé, afficher sur tout l'écran un background d'herbe.

Votre mission du jour: faire afficher un sprite à l'Intellivision. Donc il vous faut un sprite... Et en voici un à c/c à la fin de votre code:

Code:
sprite_hero:
BITMAP ".######."
BITMAP "########"
BITMAP "##.##.##"
BITMAP "##.##.##"
BITMAP "########"
BITMAP "########"
BITMAP "########"
BITMAP ".######."

Comme pour n'importe quel tile/sprite qui n'est pas inclus dans la GROM, il vous faut préalablement le charger en GRAM:

Code:
DEFINE DEF01, 1, sprite_hero
WAIT

Ensuite, vous allez pouvoir l'afficher à l'écran. Pour ce faire, vous devez utiliser la commande SPRITE comme suit:

Code:
SPRITE 0, hero_x+VISIBLE,hero_y+ZOOMY2,SPR01+SPR_BLACK

0: c'est le numéro du sprite affiché
Note: l'Intellivision peut afficher 8 sprites monochromes simultanément, numérotés de 0 à 7. Chaque sprite peut faire soit 8x8 pixels, soit 8x16 pixels.
En cas de chevauchement, le sprite 0 s'affiche par dessus le sprite 1 qui s'affiche par dessus le sprite 2 etc...


hero_x: c'est la coordonnée x du sprite à l'écran

VISIBLE: à ajouter pour que le sprite soit visible

hero_y: c'est la coordonnée y du sprite à l'écran

ZOOMY2: fait en sorte que le sprite soit à la résolution verticale de l'écran. Par défaut les sprites sont affichés dans une résolution de 160*192
Note: l'Intellivision permet d'étirer les sprites verticalement et/ou horizontalement, d'y appliquer une symétrie verticale et/ou horizontale.

SPR01: c'est le numéro du sprite dans la GRAM. Si vous aviez écrit SPR00 à la place, le sprite aurait pris l'apparence de la tile d'herbe.

SPR_BLUE: c'est la constante contenant la couleur du sprite. Je vous renvoie au fichier constants.bas du dossier lib pour connaître les couleurs applicables à un sprite.

Les variables hero_x et hero_y valent 0 pour l'instant. Il faut donc, avant d'afficher le sprite leur attribuer une valeur:
Code:
hero_x=50
hero_y=50

Voici ce à quoi doit ressembler votre code pour l'instant:


C'est cool, ça affiche un sprite, mais s'il bouge pas, ça présente un intérêt relatif... Donc vous allez devoir déplacer ce sprite. Very Happy

C'est plutôt facile en fait, car tout est déjà plus ou moins en place. Il vous faut seulement détecter quelle touche est appuyée et modifier la valeur des variables hero_x et hero_y en conséquence.
Pour détecter les touches de la première manette, on utilise la variable cont1. Ici, plus précisément, il faut vérifier si cont1.up, cont1.down, cont1.left et cont1.right ont une valeur non-nulle.

Ajoutez cette portion de code dans la boucle InfiniteLoop:

Code:
IF cont1.up THEN
hero_y=hero_y-1
ELSEIF cont1.down   THEN hero_y=hero_y+1
END IF

IF cont1.left THEN
hero_x=hero_x-1
ELSEIF cont1.right   THEN hero_x=hero_x+1
END IF

Votre code doit à présent avoir cette tête:


Et voici ce qui en résulte après compilation:


Voilà, voilà. J'espère que ça vous sera utile !
Ithus
Ithus
Patient contaminé

Masculin Nombre de messages : 251
Age : 33
Localisation : Loin
Date d'inscription : 26/10/2009

Revenir en haut Aller en bas

Re: [TUTO] [IntyBASIC] Afficher et déplacer un sprite

Message par F.L le Ven 30 Nov 2018 - 15:11

j'aime les tutos comme ça , encore merci !! amoureux
F.L
F.L
Docteur *
Docteur *

Masculin Nombre de messages : 3131
Age : 43
Localisation : hérault
Date d'inscription : 11/06/2012

http://fl.basic.free.fr

Revenir en haut Aller en bas

Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum