[TUTO] [IntyBASIC] Afficher et déplacer un sprite
Page 1 sur 1
[TUTO] [IntyBASIC] Afficher et déplacer un sprite
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:
Comme pour n'importe quel tile/sprite qui n'est pas inclus dans la GROM, il vous faut préalablement le charger en GRAM:
Ensuite, vous allez pouvoir l'afficher à l'écran. Pour ce faire, vous devez utiliser la commande SPRITE comme suit:
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:
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.
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:
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 !
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.
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 !
Invité- Invité
Sujets similaires
» [TUTO] Hello IntyBASIC
» [TUTO] [IntyBASIC] Les tiles
» TUTO RGB sur PC Engine Coregrafx , TUTO RGB AMP pour PCE TNK2 etc...
» a sup topic deplacer
» IntyBASIC, le topic officiel
» [TUTO] [IntyBASIC] Les tiles
» TUTO RGB sur PC Engine Coregrafx , TUTO RGB AMP pour PCE TNK2 etc...
» a sup topic deplacer
» IntyBASIC, le topic officiel
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum