[TUTO] Hello IntyBASIC
+5
upsilandre
Putois Blagueur
drfloyd
F.L
Shaoth
9 participants
Page 2 sur 3
Page 2 sur 3 • 1, 2, 3
Re: [TUTO] Hello IntyBASIC
Bon ben je gère Papi et 3 autres ennemis avec une IA très basique.
C'est rigolo, et en fait assez simple à prendre en main.
Les Samples sont super utiles, ainsi que les données indiquées sur constants.bas.
Manque plus qu'à faire un Background un peu plus détaillé, gestion des obstacles, IA un peu plus complexe.
Invité- Invité
Re: [TUTO] Hello IntyBASIC
Coucou,
Voici ma modeste contribution !
Bon y a des trucs intéressants :
1/ Gestion d'une MAP via des DATA.
2/ Pathfinding "évolué" de 3 IA.
3/ Changement d'état des sprites en fonction de leur déplacement.
Les trucs à corriger :
Hitbox avec les obstacles BG, ici pas au point .. J'ai remarqué que les tableaux ont quelques soucis ... Peut être ceci explique cela ?
Optimiser le code.
A ajouter :
Les animations des sprites pendant le déplacement.
Les tirs.
A vous de jouer avec ce petit listing.
N'empêche que ça reste fluide malgré les petits calculs du code ... Intéressant !
Voici ma modeste contribution !
- Code:
REM
REM Example MOBs (sprites)
REM Demo for IntyBASIC
REM by Oscar Toledo G. http://nanochess.org
REM Jan/27/2014
REM Jul/12/2015. Added IntyBASIC logo (DZ-Jay) and spaceship now visible (hidden before)
REM Jul/13/2015. Enhanced spaceship graphics.
REM
REM Include useful predefined constants
INCLUDE "constants.bas"
MODE SCREEN_CS, CS_GREEN, GREEN, GREEN,GREEN
'Déclaration Sprites
WAIT
DEFINE DEF00,20,Sprites
WAIT
'Variables
DIM X1(3)
DIM Y1(3)
DIM DX1(3)
DIM DY1(3)
DIM Sens(3)
DIM Chemin(3)
DIM CheminMAX(3)
DIM LX(19)
DIM LY(11)
'Position Sprites
for i=1 to 3
X1(i)=random(100)+8
Y1(i)=random(60)+8
Sens(i)=random(4)
CheminMAX(i)=random(75)
next
Direction=0 '0 BAS, 1 HAUT, 2 DROITE, 3 GAUCHE
TempoAnimation=0
X=70
Y=50
'Init Tableau BG
for i=0 to 19
for j=0 to 11
LX(i)=0
LY(j)=0
next
next
'Background
restore Map
for i=0 to 239
read value
if value=0 then
print at (SCREENPOS(Ax,Ay)) color CS_DARKGREEN, "\269"
else
print at (SCREENPOS(Ax,Ay)) color CS_GREY, "\273"
LX(Ax)=1
LY(Ay)=1
end if
Ax=Ax+1
if Ax>19 then
Ay=Ay+1
Ax=0
end if
next
'Boucle principale
loop:
'Affichage Sprite
gosub AffSprite
wait
goto loop
AffSprite: PROCEDURE
'Papi Commando !
'Commande
Direction=1
IF CONT1.UP THEN
Y=Y-1
Direction=0
DX=(X/8)-1
DY=(Y/8)-1
If DX<0 then DX=0
if LX(DX)=1 and LY(DY)=1 then GO=1 else GO=0
if GO=1 then Y=Y+1
end if
IF CONT1.DOWN THEN
Y=Y+1
Direction=1
DX=(X/8)-1
DY=(Y/8)-1
if LX(DX)=1 and LY(DY)=1 then GO=1 else GO=0
if GO=1 then Y=Y-1
end if
IF CONT1.LEFT THEN
X=X-1
Direction=3
DX=(X/8)-1
DY=(Y/8)-1
if LX(DX+1)=1 and LY(DY)=1 then GO=1 else GO=0
if GO=1 then X=X+1
end if
IF CONT1.RIGHT THEN
X=X+1
Direction=2
DX=(X/8)-1
DY=(Y/8)-1
if LX(DX-1)=1 and LY(DY)=1 then GO=1 else GO=0
if GO=1 then X=X-1
end if
'Limite
if Y<8 then Y=8
if Y>96 then Y=96
if X>160 then X=160
if X<8 then X=8
'Gauche
if Direction=2 then
SPRITE 1,X+VISIBLE,Y+ZOOMY2,SPR01+SPR_RED
SPRITE 2,X+VISIBLE,Y+ZOOMY2,SPR02+SPR_PINK
SPRITE 0,X+VISIBLE,Y+ZOOMY2,SPR00+SPR_WHITE
SPRITE 3,X+VISIBLE,Y+ZOOMY2,SPR03+SPR_BLACK
SPRITE 4,X+VISIBLE,Y+ZOOMY2,SPR04+SPR_DARKGREEN
end if
'Droite
if Direction=3 then
SPRITE 1,X+VISIBLE,Y+ZOOMY2+FLIPX,SPR01+SPR_RED
SPRITE 2,X+VISIBLE,Y+ZOOMY2+FLIPX,SPR02+SPR_PINK
SPRITE 0,X+VISIBLE,Y+ZOOMY2+FLIPX,SPR00+SPR_WHITE
SPRITE 3,X+VISIBLE,Y+ZOOMY2+FLIPX,SPR03+SPR_BLACK
SPRITE 4,X+VISIBLE,Y+ZOOMY2+FLIPX,SPR04+SPR_DARKGREEN
end if
'HAUT
if Direction=1 then
SPRITE 1,X+VISIBLE,Y+ZOOMY2,SPR10+SPR_RED
SPRITE 0,X+VISIBLE,Y+ZOOMY2,SPR11+SPR_WHITE
SPRITE 2,X+VISIBLE,Y+ZOOMY2,SPR09+SPR_PINK
SPRITE 3,X+VISIBLE,Y+ZOOMY2,SPR12+SPR_BLACK
SPRITE 4,X+VISIBLE,Y+ZOOMY2,SPR04+SPR_DARKGREEN
end if
'BAS
if Direction=0 then
SPRITE 1,X+VISIBLE,Y+ZOOMY2,SPR06+SPR_RED
SPRITE 0,X+VISIBLE,Y+ZOOMY2,SPR07+SPR_WHITE
SPRITE 2,X+VISIBLE,Y+ZOOMY2,SPR05+SPR_PINK
SPRITE 3,X+VISIBLE,Y+ZOOMY2,SPR08+SPR_BLACK
SPRITE 4,X+VISIBLE,Y+ZOOMY2,SPR04+SPR_DARKGREEN
end if
for i=1 to 3
'Limite
if x1(i)<8 then sens(i)=2
if x1(i)>160 then sens(i)=3
if y1(i)<9 then sens(i)=1
if y1(i)>96 then sens(i)=0
'Gestion IA/Chemin
Chemin(i)=Chemin(i)+1
if Chemin(i)>CheminMAX(i) then
sens(i)=random(4)
Chemin(i)=0
end if
'Direction/Gestion Obstacle
if sens(i)=0 then
y1(i)=y1(i)-1
DX1(i)=(X1(i)/8)-1
DY1(i)=(Y1(i)/8)-1
a=DX1(i)
b=DY1(i)
if LX(a)=1 and LY(a)=1 then GO=1 else GO=0
if go=1 then sens(i)=1:goto suite
end if
if sens(i)=1 then
y1(i)=y1(i)+1
DX1(i)=(X1(i)/8)-1
DY1(i)=(Y1(i)/8)-1
a=DX1(i)
b=DY1(i)
if LX(a)=1 and LY(a)=1 then GO=1 else GO=0
if go=1 then sens(i)=0:goto suite
end if
if sens(i)=2 then
x1(i)=x1(i)+1
DX1(i)=(X1(i)/8)-1
DY1(i)=(Y1(i)/8)-1
a=DX1(i)
b=DY1(i)
if LX(a)=1 and LY(a)=1 then GO=1 else GO=0
if go=1 then sens(i)=3:goto suite
end if
if sens(i)=3 then
x1(i)=x1(i)-1
DX1(i)=(X1(i)/8)-1
DY1(i)=(Y1(i)/8)-1
a=DX1(i)
b=DY1(i)
if LX(a)=1 and LY(a)=1 then GO=1 else GO=0
if go=1 then sens(i)=2:goto suite
end if
'Affichage Ennemi
Suite:
if i=1 then
if sens(i)=1 then SPRITE 5,x1(i)+VISIBLE,y1(i)+ZOOMY2,SPR14+SPR_BLACK
if sens(i)=0 then SPRITE 5,x1(i)+VISIBLE,y1(i)+ZOOMY2,SPR15+SPR_BLACK
if sens(i)=2 then SPRITE 5,x1(i)+VISIBLE,y1(i)+ZOOMY2,SPR16+SPR_BLACK
if sens(i)=3 then SPRITE 5,x1(i)+VISIBLE,y1(i)+ZOOMY2+FLIPX,SPR16+SPR_BLACK
end if
if i=2 then
if sens(i)=1 then SPRITE 6,x1(i)+VISIBLE,y1(i)+ZOOMY2,SPR14+SPR_RED
if sens(i)=0 then SPRITE 6,x1(i)+VISIBLE,y1(i)+ZOOMY2,SPR15+SPR_RED
if sens(i)=2 then SPRITE 6,x1(i)+VISIBLE,y1(i)+ZOOMY2,SPR16+SPR_RED
if sens(i)=3 then SPRITE 6,x1(i)+VISIBLE,y1(i)+ZOOMY2+FLIPX,SPR16+SPR_RED
end if
if i=3 then
if sens(i)=1 then SPRITE 7,x1(i)+VISIBLE,y1(i)+ZOOMY2,SPR14+SPR_YELLOW
if sens(i)=0 then SPRITE 7,x1(i)+VISIBLE,y1(i)+ZOOMY2,SPR15+SPR_YELLOW
if sens(i)=2 then SPRITE 7,x1(i)+VISIBLE,y1(i)+ZOOMY2,SPR16+SPR_YELLOW
if sens(i)=3 then SPRITE 7,x1(i)+VISIBLE,y1(i)+ZOOMY2+FLIPX,SPR16+SPR_YELLOW
end if
next
END
Map:
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Sprites:
REM DROITE ET GAUCHE ( FLIP )
REM Calque BLANC 00
BITMAP ".*....*."
BITMAP "...*.*.."
BITMAP ".*......"
BITMAP ".**...*."
BITMAP "..****.."
BITMAP "........"
BITMAP "........"
BITMAP "........"
REM Calque ROUGE 01
BITMAP "........"
BITMAP "***.*.*."
BITMAP "*......."
BITMAP "....*..."
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
REM Calque ROSE 02
BITMAP "..****.."
BITMAP "........"
BITMAP "..*.*.*."
BITMAP "...*.*.."
BITMAP "........"
BITMAP ".**..**."
BITMAP ".*....*."
BITMAP "........"
REM Calque NOIR 03
BITMAP "........"
BITMAP "........"
BITMAP "...*.*.."
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "...**..."
BITMAP "..*..*.."
REM Calque VERT FONCE 04
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "...**..."
BITMAP "........"
BITMAP "........"
REM BAS
REM Calque ROSE 05
BITMAP "..****.."
BITMAP "........"
BITMAP "..****.."
BITMAP "..****.."
BITMAP "........"
BITMAP ".**..**."
BITMAP ".*....*."
BITMAP "........"
REM Calque ROUGE 06
BITMAP "........"
BITMAP "*******."
BITMAP "*......."
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
REM Calque BLANC 07
BITMAP ".*....*."
BITMAP "........"
BITMAP ".*....*."
BITMAP ".**...*."
BITMAP "..****.."
BITMAP "........"
BITMAP "........"
BITMAP "........"
REM Calque NOIR 08
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "...**..."
BITMAP "..*..*.."
REM HAUT
REM Calque ROSE 09
BITMAP "..****.."
BITMAP "........"
BITMAP "...**..."
BITMAP "..*..*.."
BITMAP "........"
BITMAP ".**..**."
BITMAP ".*....*."
BITMAP "........"
REM Calque ROUGE 10
BITMAP "........"
BITMAP "**.**.*."
BITMAP "*......."
BITMAP "...**..."
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
REM Calque BLANC 11
BITMAP ".*....*."
BITMAP "..*..*.."
BITMAP ".*....*."
BITMAP ".*....*."
BITMAP "..****.."
BITMAP "........"
BITMAP "........"
BITMAP "........"
REM Calque NOIR 12
BITMAP "........"
BITMAP "........"
BITMAP "..*..*.."
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "...**..."
BITMAP "..*..*.."
REM Tile Terrain
REM Terrain Calque Vert 1 13 (269)
BITMAP "********"
BITMAP "***.****"
BITMAP "********"
BITMAP "********"
BITMAP "**.*****"
BITMAP "********"
BITMAP "*****.**"
BITMAP "********"
REM Sprite Ennemis BAS
REM Terrain Calque NOIR 14 (270)
BITMAP "..****.."
BITMAP ".*....*."
BITMAP ".**..**."
BITMAP ".******."
BITMAP "..****.."
BITMAP ".*.**.*."
BITMAP "..****.."
BITMAP ".**..**."
REM Sprite Ennemis HAUT
REM Terrain Calque NOIR 15
BITMAP "..****.."
BITMAP ".******."
BITMAP ".******."
BITMAP ".******."
BITMAP "..****.."
BITMAP ".*.**.*."
BITMAP "..****.."
BITMAP ".**..**."
REM Sprite Ennemi DROITE
REM Terrain Calque Noir 16
BITMAP "..####.."
BITMAP ".####.#."
BITMAP ".####.#."
BITMAP ".######."
BITMAP "..####.."
BITMAP "...####."
BITMAP "...###.."
BITMAP "..#..##."
REM Rocher
REM Terrain GRIS 17 (273)
BITMAP "..####.."
BITMAP ".####.#."
BITMAP ".#####.#"
BITMAP "######.#"
BITMAP "######.#"
BITMAP "########"
BITMAP "########"
BITMAP "########"
BITMAP "########"
REM Terrain 1 GRIS 18 (274)
Bon y a des trucs intéressants :
1/ Gestion d'une MAP via des DATA.
2/ Pathfinding "évolué" de 3 IA.
3/ Changement d'état des sprites en fonction de leur déplacement.
Les trucs à corriger :
Hitbox avec les obstacles BG, ici pas au point .. J'ai remarqué que les tableaux ont quelques soucis ... Peut être ceci explique cela ?
Optimiser le code.
A ajouter :
Les animations des sprites pendant le déplacement.
Les tirs.
A vous de jouer avec ce petit listing.
N'empêche que ça reste fluide malgré les petits calculs du code ... Intéressant !
Invité- Invité
Re: [TUTO] Hello IntyBASIC
ce qui ets vraiment sympa c'est que tu as du resultat immédiat
Quelqu'un qui a 2 ou 3 jours libres a 100% et qui maitrise INTY il peut arriver a pondre un vrai jeu fini et digne de l'epoque en une 30aine d'heure maxi de boulot....
En assembleur il faudrait plus de temps
Quelqu'un qui a 2 ou 3 jours libres a 100% et qui maitrise INTY il peut arriver a pondre un vrai jeu fini et digne de l'epoque en une 30aine d'heure maxi de boulot....
En assembleur il faudrait plus de temps
_______________________________________________________
Re: [TUTO] Hello IntyBASIC
l'affichage de la map via des SCREENPOS(x,y) j'avais cru remarquer que c'etait bien plus lent que le PRINT AT 0-239, non ?
_______________________________________________________
Re: [TUTO] Hello IntyBASIC
oui heureusement
Et la modif des tiles via la GRAM ca marche finalement ? J'ai pas essayé.
Et la modif des tiles via la GRAM ca marche finalement ? J'ai pas essayé.
_______________________________________________________
Re: [TUTO] Hello IntyBASIC
Pas tenté pour le moment.
Le seul truc qui m'a bloqué, c'est la hitbox Sprite/MAP.
J'ai essayé un truc dans mon code, mais ca foire, y a des décalages.
J'attends les conseils du grand Manitou Ithus.
Le seul truc qui m'a bloqué, c'est la hitbox Sprite/MAP.
J'ai essayé un truc dans mon code, mais ca foire, y a des décalages.
J'attends les conseils du grand Manitou Ithus.
Invité- Invité
Re: [TUTO] Hello IntyBASIC
ca m'interesse aussi la hitbox sprite vs Tile
parce que ma methode pourrie de verifier le x/8 et y/8 du sprite rapport à la position d'un tile, c'est lourd....
parce que ma methode pourrie de verifier le x/8 et y/8 du sprite rapport à la position d'un tile, c'est lourd....
_______________________________________________________
Re: [TUTO] Hello IntyBASIC
Je t'avoue que j'ai un peu de mal avec le fait de ne pas déclarer les variables.
En début de code, on peut ajouter une ligne:
Il y a pas de constante GREEN il me semble. (à remplacer par CS_GREEN)
On ne peut pas charger plus de 16 sprites/tiles ni plus de deux sets par frame. Je ferais quelque chose comme ça:
Ensuite, pour afficher Papi:
Et tout à la fin, les sprites/tiles:
C'est surtout pour que le code soit moins long. Je sais pas si c'est mieux ou pas. J'ai encore plein de lacunes en ce qui concerne l'IntyBASIC.
Dans mon projet, pour les collisions avec les tiles, j'utilise un PEEK, style:
Après, l'Intellivision propose un test de collisions hard, simple à utiliser via IntyBASIC, mais je l'ai jamais essayé parce qu'il y a une histoire de retard d'une frame...
PS: super Doc.
En début de code, on peut ajouter une ligne:
- Code:
OPTION EXPLICIT ON
Il y a pas de constante GREEN il me semble. (à remplacer par CS_GREEN)
On ne peut pas charger plus de 16 sprites/tiles ni plus de deux sets par frame. Je ferais quelque chose comme ça:
- Code:
DEFINE DEF00, 1, SpritePapiVertFonce
DEFINE DEF01, 4, SpritesPapiBas
WAIT
DEFINE DEF05, 3, SpritesEnnemis
DEFINE DEF08, 2, TilesDecor
WAIT
Ensuite, pour afficher Papi:
- Code:
'Charge les bons sprites de Papi en GRAM
#miroir=0
'BAS
IF Direction=0 THEN
DEFINE DEF01, 4, SpritesPapiBas
'HAUT
ELSEIF Direction=1 THEN
DEFINE DEF01, 4, SpritesPapiHaut
'Gauche
ELSEIF Direction=2 THEN
DEFINE DEF01, 4, SpritesPapiGauche
'Droite
ELSE
#miroir=FLIPX
DEFINE DEF01, 4, SpritesPapiGauche
END IF
'Affiche les sprites de Papi
SPRITE 0,X+VISIBLE,Y+ZOOMY2+#miroir,SPR00+SPR_WHITE
SPRITE 1,X+VISIBLE,Y+ZOOMY2+#miroir,SPR01+SPR_RED
SPRITE 2,X+VISIBLE,Y+ZOOMY2+#miroir,SPR02+SPR_PINK
SPRITE 3,X+VISIBLE,Y+ZOOMY2+#miroir,SPR03+SPR_BLACK
SPRITE 4,X+VISIBLE,Y+ZOOMY2+#miroir,SPR04+SPR_DARKGREEN
Et tout à la fin, les sprites/tiles:
- Code:
SpritePapiVertFonce:
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "...**..."
BITMAP "........"
BITMAP "........"
SpritesPapiGauche:
'Calque BLANC 00
BITMAP ".*....*."
BITMAP "...*.*.."
BITMAP ".*......"
BITMAP ".**...*."
BITMAP "..****.."
BITMAP "........"
BITMAP "........"
BITMAP "........"
'Calque ROUGE 01
BITMAP "........"
BITMAP "***.*.*."
BITMAP "*......."
BITMAP "....*..."
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
'Calque ROSE 02
BITMAP "..****.."
BITMAP "........"
BITMAP "..*.*.*."
BITMAP "...*.*.."
BITMAP "........"
BITMAP ".**..**."
BITMAP ".*....*."
BITMAP "........"
'Calque NOIR 03
BITMAP "........"
BITMAP "........"
BITMAP "...*.*.."
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "...**..."
BITMAP "..*..*.."
SpritesPapiBas:
'Calque ROSE 05
BITMAP "..****.."
BITMAP "........"
BITMAP "..****.."
BITMAP "..****.."
BITMAP "........"
BITMAP ".**..**."
BITMAP ".*....*."
BITMAP "........"
'Calque ROUGE 06
BITMAP "........"
BITMAP "*******."
BITMAP "*......."
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
'Calque BLANC 07
BITMAP ".*....*."
BITMAP "........"
BITMAP ".*....*."
BITMAP ".**...*."
BITMAP "..****.."
BITMAP "........"
BITMAP "........"
BITMAP "........"
'Calque NOIR 08
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "...**..."
BITMAP "..*..*.."
SpritesPapiHaut:
'Calque ROSE 09
BITMAP "..****.."
BITMAP "........"
BITMAP "...**..."
BITMAP "..*..*.."
BITMAP "........"
BITMAP ".**..**."
BITMAP ".*....*."
BITMAP "........"
'Calque ROUGE 10
BITMAP "........"
BITMAP "**.**.*."
BITMAP "*......."
BITMAP "...**..."
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
'Calque BLANC 11
BITMAP ".*....*."
BITMAP "..*..*.."
BITMAP ".*....*."
BITMAP ".*....*."
BITMAP "..****.."
BITMAP "........"
BITMAP "........"
BITMAP "........"
'Calque NOIR 12
BITMAP "........"
BITMAP "........"
BITMAP "..*..*.."
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "...**..."
BITMAP "..*..*.."
SpritesEnnemis:
'Sprite Ennemis BAS
BITMAP "..****.."
BITMAP ".*....*."
BITMAP ".**..**."
BITMAP ".******."
BITMAP "..****.."
BITMAP ".*.**.*."
BITMAP "..****.."
BITMAP ".**..**."
'Sprite Ennemis HAUT
BITMAP "..****.."
BITMAP ".******."
BITMAP ".******."
BITMAP ".******."
BITMAP "..****.."
BITMAP ".*.**.*."
BITMAP "..****.."
BITMAP ".**..**."
'Sprite Ennemi DROITE
BITMAP "..####.."
BITMAP ".####.#."
BITMAP ".####.#."
BITMAP ".######."
BITMAP "..####.."
BITMAP "...####."
BITMAP "...###.."
BITMAP "..#..##."
TilesDecor:
'Tile Terrain
'Terrain Calque Vert 1 13 (272)
BITMAP "********"
BITMAP "***.****"
BITMAP "********"
BITMAP "********"
BITMAP "**.*****"
BITMAP "********"
BITMAP "*****.**"
BITMAP "********"
' Rocher
' Terrain GRIS 17 (273)
BITMAP "..####.."
BITMAP ".####.#."
BITMAP ".#####.#"
BITMAP "######.#"
BITMAP "######.#"
BITMAP "########"
BITMAP "########"
BITMAP "########"
BITMAP "########"
C'est surtout pour que le code soit moins long. Je sais pas si c'est mieux ou pas. J'ai encore plein de lacunes en ce qui concerne l'IntyBASIC.
Dans mon projet, pour les collisions avec les tiles, j'utilise un PEEK, style:
- Code:
#Mcard = PEEK($200 + testX + testY) AND $FF8
if #Mcard=numeroDeMaTile*8 THEN GOTO faitUnTruc
Après, l'Intellivision propose un test de collisions hard, simple à utiliser via IntyBASIC, mais je l'ai jamais essayé parce qu'il y a une histoire de retard d'une frame...
PS: super Doc.
Invité- Invité
Re: [TUTO] Hello IntyBASIC
enfin je rigole un peu... mais si j'estime que mon jeu est fun et viable, et que certains réclament une cartouche, oui pourquoi pas j'ai encore une grosse marge de progression sur le potentiel de ce jeu.
Mais bon là je tourne sous Inty avec des connaissances hyper reduites !!! Merci pour tes tutos !
Mais bon là je tourne sous Inty avec des connaissances hyper reduites !!! Merci pour tes tutos !
_______________________________________________________
Re: [TUTO] Hello IntyBASIC
Bravo Doc !
Merci pour les indications Ithus.
J'ai laissé tombé pour le moment, mon portable me fait chier du fait que la compilation plante une fois sur deux ...
Pour la collision, il existe une solution HARD :
If COL0 and HIT_BACKGROUND then ...
COL0 concerne le premier sprite et HIT_Background les tiles affichés. Donc même des Tiles de décor. Pour cela que les fonds etaient vide ...
On peut même faire de la detection Tile+Sprite avec cette méthode.
La méthode est décrite dans l'exemple Game2.bas
Il y a pas mal de fonction pré programmée comme FRAME HIT .. faut faire gaffe de ne pas nommer des variables avec les même nom.
Après y a de quoi s'amuser et ce intybasic semble véloce.
Merci pour les indications Ithus.
J'ai laissé tombé pour le moment, mon portable me fait chier du fait que la compilation plante une fois sur deux ...
Pour la collision, il existe une solution HARD :
If COL0 and HIT_BACKGROUND then ...
COL0 concerne le premier sprite et HIT_Background les tiles affichés. Donc même des Tiles de décor. Pour cela que les fonds etaient vide ...
On peut même faire de la detection Tile+Sprite avec cette méthode.
La méthode est décrite dans l'exemple Game2.bas
Il y a pas mal de fonction pré programmée comme FRAME HIT .. faut faire gaffe de ne pas nommer des variables avec les même nom.
Après y a de quoi s'amuser et ce intybasic semble véloce.
Invité- Invité
Re: [TUTO] Hello IntyBASIC
Lien très utile :
[size=32]https://books.google.fr/books?id=_VFnDwAAQBAJ&pg=PA58&lpg=PA58&dq=col0+intybasic&source=bl&ots=rlP-lClr91&sig=35GPpeeHzjCripOLVyt4O5sQLlw&hl=fr&sa=X&ved=2ahUKEwiB56vRiLjeAhUI2BoKHbshA7IQ6AEwAXoECAkQAQ#v=onepage&q=col0%20intybasic&f=false[/size]
[size=32]https://books.google.fr/books?id=_VFnDwAAQBAJ&pg=PA58&lpg=PA58&dq=col0+intybasic&source=bl&ots=rlP-lClr91&sig=35GPpeeHzjCripOLVyt4O5sQLlw&hl=fr&sa=X&ved=2ahUKEwiB56vRiLjeAhUI2BoKHbshA7IQ6AEwAXoECAkQAQ#v=onepage&q=col0%20intybasic&f=false[/size]
Invité- Invité
Re: [TUTO] Hello IntyBASIC
Ce sont les premières pages du livre qu'a publié récemment Oscar Tolédo, le créateur d'IntyBASIC.
http://nanochess.org/intybasic.html#book
http://nanochess.org/intybasic.html#book
Invité- Invité
Re: [TUTO] Hello IntyBASIC
StudioVetea a écrit:
Après y a de quoi s'amuser et ce intybasic semble véloce.
Oui, compilé en ASM on obtient franchement des resultats egaux en vélocité aux jeux de 1979-1983
_______________________________________________________
Re: [TUTO] Hello IntyBASIC
Le test de collusion de ithus via PEEK semble buggé ? Non ?
Vetea tu peux reexpliquer ton test de collision Sprite / Tile ?
Vetea tu peux reexpliquer ton test de collision Sprite / Tile ?
_______________________________________________________
Re: [TUTO] Hello IntyBASIC
Coucou !
Voici mon code de gestion de Sprites remaniés grace aux conseils de Ithus.
Le Listing s'est bien raccourci !
Avec le suffixe "#" on peut définir hors fonction des macros dans les fonctions clés comme SPRITE pour régler la couleur, le FLIP, etc ...
Me reste à gérer l'animation des Sprites.
Ensuite l'affichage d'un tableau.
Et la gestion obstacle/Sprite.
Voici mon code de gestion de Sprites remaniés grace aux conseils de Ithus.
- Code:
REM Demo Sprites / Pahfinding / Gestion déplacement.
INCLUDE "constants.bas"
MODE SCREEN_CS, CS_GREEN, GREEN, GREEN,GREEN
'Déclaration Sprites/TILE
WAIT
DEFINE DEF00,1,SpritePapiVertFonce
wait
DEFINE DEF01,4,SpritePapiBas
WAIT
DEFINE DEF05,3,SpritesEnnemis
wait
DEFINE DEF08,2,TilesDecor
WAIT
'Variables
DIM X1(3)
DIM Y1(3)
DIM DX1(3)
DIM DY1(3)
DIM Sens(3)
DIM Chemin(3)
DIM CheminMAX(3)
DIM LX(19)
DIM LY(11)
'Position Sprites
for i=1 to 3
X1(i)=random(100)+8
Y1(i)=random(60)+8
Sens(i)=random(4)
CheminMAX(i)=random(75)
next
Direction=0 '0 BAS, 1 HAUT, 2 DROITE, 3 GAUCHE
TempoAnimation=0
X=64
Y=48
'Init Tableau BG
for i=0 to 19
for j=0 to 11
LX(i)=0
LY(j)=0
next
next
'Boucle principale
while 1
'Affichage Sprite
gosub AffSprite
wait
wend
AffSprite: PROCEDURE
Direction=0
'Papi Commando !
' Commandes
DEFINE DEF00, 4, SpritePapiHaut
IF CONT1.UP THEN
Y=Y-1
Direction=0
DEFINE DEF00, 4, SpritePapiBas
#miroir=0
end if
IF CONT1.DOWN THEN
Y=Y+1
Direction=1
DEFINE DEF00, 4, SpritePapiHaut
#miroir=0
end if
IF CONT1.LEFT THEN
X=X-1
Direction=3
#miroir=FLIPX
DEFINE DEF00, 4, SpritePapiDroite
end if
IF CONT1.RIGHT THEN
X=X+1
Direction=2
DEFINE DEF00, 4, SpritePapiDroite
#miroir=0
end if
'Affiche les sprites de Papi
SPRITE 0,X+VISIBLE,Y+ZOOMY2+#miroir,SPR00+SPR_WHITE
SPRITE 1,X+VISIBLE,Y+ZOOMY2+#miroir,SPR01+SPR_RED
SPRITE 2,X+VISIBLE,Y+ZOOMY2+#miroir,SPR02+SPR_PINK
SPRITE 3,X+VISIBLE,Y+ZOOMY2+#miroir,SPR03+SPR_BLACK
SPRITE 4,X+VISIBLE,Y+ZOOMY2+#miroir,SPR04+SPR_DARKGREEN
'Limite
if Y<8 then Y=8
if Y>96 then Y=96
if X>160 then X=160
if X<8 then X=8
'Sprites Ennemis
for i=1 to 3
'Limite Tableau
if x1(i)<8 then sens(i)=2
if x1(i)>160 then sens(i)=3
if y1(i)<9 then sens(i)=1
if y1(i)>96 then sens(i)=0
'Gestion IA/Chemin - Pathfinding
Chemin(i)=Chemin(i)+1
if Chemin(i)>CheminMAX(i) then
sens(i)=random(4)
Chemin(i)=0
end if
'Déplacement IA
if sens(i)=0 then y1(i)=y1(i)-1:#SPR=SPR06:#miroir1=0
if sens(i)=1 then y1(i)=y1(i)+1:#SPR=SPR05:#miroir1=0
if sens(i)=2 then x1(i)=x1(i)+1:#SPR=SPR07:#miroir1=0
if sens(i)=3 then x1(i)=x1(i)-1:#SPR=SPR07:#Miroir1=FLIPX
'Couleur Sprites
if i=1 then #Color=SPR_BLACK
if i=2 then #Color=SPR_YELLOW
if i=3 then #Color=SPR_RED
'Affichage ennemis
SPRITE 4+i,x1(i)+VISIBLE,y1(i)+ZOOMY2+#miroir1,#SPR+#Color
next
return
END
Sprites:
SpritePapiDroite:
REM Calque BLANC 00
BITMAP ".*....*."
BITMAP "...*.*.."
BITMAP ".*......"
BITMAP ".**...*."
BITMAP "..****.."
BITMAP "........"
BITMAP "........"
BITMAP "........"
REM Calque ROUGE 01
BITMAP "........"
BITMAP "***.*.*."
BITMAP "*......."
BITMAP "....*..."
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
REM Calque ROSE 02
BITMAP "..****.."
BITMAP "........"
BITMAP "..*.*.*."
BITMAP "...*.*.."
BITMAP "........"
BITMAP ".**..**."
BITMAP ".*....*."
BITMAP "........"
REM Calque NOIR 03
BITMAP "........"
BITMAP "........"
BITMAP "...*.*.."
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "...**..."
BITMAP "..*..*.."
SpritePapiVertFonce:
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "...**..."
BITMAP "........"
BITMAP "........"
SpritePapiBas:
REM Calque BLANC 07
BITMAP ".*....*."
BITMAP "........"
BITMAP ".*....*."
BITMAP ".*....*."
BITMAP "..****.."
BITMAP "........"
BITMAP "........"
BITMAP "........"
REM Calque ROUGE 06
BITMAP "........"
BITMAP "*******."
BITMAP "*......."
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
REM Calque ROSE 05
BITMAP "..****.."
BITMAP "........"
BITMAP "..****.."
BITMAP "..****.."
BITMAP "........"
BITMAP ".**..**."
BITMAP ".*....*."
BITMAP "........"
REM Calque NOIR 08
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "...**..."
BITMAP "..*..*.."
SpritePapiHaut:
REM Calque BLANC 11
BITMAP ".*....*."
BITMAP "..*..*.."
BITMAP ".*....*."
BITMAP ".*....*."
BITMAP "..****.."
BITMAP "........"
BITMAP "........"
BITMAP "........"
REM Calque ROUGE 10
BITMAP "........"
BITMAP "**.**.*."
BITMAP "*......."
BITMAP "...**..."
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
REM Calque ROSE 09
BITMAP "..****.."
BITMAP "........"
BITMAP "...**..."
BITMAP "..*..*.."
BITMAP "........"
BITMAP ".**..**."
BITMAP ".*....*."
BITMAP "........"
REM Calque NOIR 12
BITMAP "........"
BITMAP "........"
BITMAP "..*..*.."
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "...**..."
BITMAP "..*..*.."
SpritesEnnemis:
REM Sprite Ennemis BAS
REM Terrain Calque NOIR 14 (270)
BITMAP "..****.."
BITMAP ".*....*."
BITMAP ".**..**."
BITMAP ".******."
BITMAP "..****.."
BITMAP ".*.**.*."
BITMAP "..****.."
BITMAP ".**..**."
REM Sprite Ennemis HAUT
REM Terrain Calque NOIR 15
BITMAP "..****.."
BITMAP ".******."
BITMAP ".******."
BITMAP ".******."
BITMAP "..****.."
BITMAP ".*.**.*."
BITMAP "..****.."
BITMAP ".**..**."
REM Sprite Ennemi DROITE
REM Terrain Calque Noir 16
BITMAP "..####.."
BITMAP ".####.#."
BITMAP ".####.#."
BITMAP ".######."
BITMAP "..####.."
BITMAP "...####."
BITMAP "...###.."
BITMAP "..#..##."
TilesDecor:
REM Rocher
REM Terrain GRIS 17 (273)
BITMAP "..####.."
BITMAP ".####.#."
BITMAP ".#####.#"
BITMAP "######.#"
BITMAP "######.#"
BITMAP "########"
BITMAP "########"
BITMAP "########"
BITMAP "########"
REM Gazon/BG
REM Terrain Calque Vert 1 13 (269)
BITMAP "********"
BITMAP "***.****"
BITMAP "********"
BITMAP "********"
BITMAP "**.*****"
BITMAP "********"
BITMAP "*****.**"
BITMAP "********"
Le Listing s'est bien raccourci !
Avec le suffixe "#" on peut définir hors fonction des macros dans les fonctions clés comme SPRITE pour régler la couleur, le FLIP, etc ...
Me reste à gérer l'animation des Sprites.
Ensuite l'affichage d'un tableau.
Et la gestion obstacle/Sprite.
Invité- Invité
Re: [TUTO] Hello IntyBASIC
Je viens de terminer les animations de mes petits personnages.
Le pixel art minimaliste en 8x8 est assez particulier à appréhender !!
Le pixel art minimaliste en 8x8 est assez particulier à appréhender !!
Invité- Invité
Re: [TUTO] Hello IntyBASIC
L'intellivision a le systeme hardware de collision de sprite le plus poussé de toutes les consoles mais c'est pas forcement adapté a toute les situations.
upsilandre- Interne
- Nombre de messages : 5138
Age : 49
Localisation : val de marne 94
Date d'inscription : 31/05/2015
Re: [TUTO] Hello IntyBASIC
Tu t'en sors bien.StudioVetea a écrit:Le pixel art minimaliste en 8x8 est assez particulier à appréhender !!
Je sais pas si c'est une bonne idée d'utiliser la moitié des sprites pour afficher Papi, mais il a une bonne bouille.
Et ta démo a l'air de bien tourner, c'est cool.
Invité- Invité
Re: [TUTO] Hello IntyBASIC
Oui j'ai pu voir sur le bouquin que le créateur du SDK l'a intégré avec les fonctions COL0->COL7 qui renvoient des bits de collisions, couplés avec HIT_BACKGROUND pour les TILES.
Je pense qu'un fond "BITMAP" en guise de décor couplé avec des TILES à gérer en collision nécessite une gestion en soft ... A voir.
Sinon j'ai terminé d'intégrer la gestion d'animation de l'IA avec des vitesses differentes, c'est rigolo.
Me manque la gestion de Papi que j'ai réduit à 4 sprites ( 4 couleurs ), me laissant la gestion d'un projectile.
Je pense qu'un fond "BITMAP" en guise de décor couplé avec des TILES à gérer en collision nécessite une gestion en soft ... A voir.
Sinon j'ai terminé d'intégrer la gestion d'animation de l'IA avec des vitesses differentes, c'est rigolo.
Me manque la gestion de Papi que j'ai réduit à 4 sprites ( 4 couleurs ), me laissant la gestion d'un projectile.
Invité- Invité
Re: [TUTO] Hello IntyBASIC
Faut descendre à 3 sprites maxi pour Papy, ca te laissera plus de liberté.
Mais c'est toi qui le sent.
Sinon y a pas de fonction qui reinitialise une serie de chiffres aléatoires (pour avoir toujours la meme série) ? J'ai pas trouvé.
Mais c'est toi qui le sent.
Sinon y a pas de fonction qui reinitialise une serie de chiffres aléatoires (pour avoir toujours la meme série) ? J'ai pas trouvé.
_______________________________________________________
Re: [TUTO] Hello IntyBASIC
RAND % Nombre marche pas mal.
Sinon je suis en train de finaliser mon tout premier jeu sur Intellivision.
Un jeu ou il faut survivre un maximum de temps ...
Les unités sont toutes animées, et l'IA est vicieuse car certaine vont suivre PAPI.
Je finalise ça, peut être que je vais diffuser dans la soirée.
Sinon je suis en train de finaliser mon tout premier jeu sur Intellivision.
Un jeu ou il faut survivre un maximum de temps ...
Les unités sont toutes animées, et l'IA est vicieuse car certaine vont suivre PAPI.
Je finalise ça, peut être que je vais diffuser dans la soirée.
Invité- Invité
Re: [TUTO] Hello IntyBASIC
GET PAPI !! V1.0
Voici donc mon tout premier jeu Intellivision !!
Je suis ému ...
Dans ce petit jeu, vous devrez survivre le plus longtemps possible face à des Robots de Garde C++, les terribles C3P-128 ( une version améliorée du C3P-64 ).
Au fur et à mesure du chrono, les choses se corsent ...
Techniquement, il y a pas mal de choses sympas :
- Animation des sprites.
- Pathfinding "intelligent".
- Gestion temps.
- Gestion collision Sprites.
- Sons.
Vous trouverez le code ci dessous commentée.
Bon jeu !
- Code:
REM ====================================
REM ==== GET PAPI !! ====
REM ==== V1.0 ====
REM ==== (c) 2018 STUDIO VETEA ====
REM ====================================
INCLUDE "constants.bas"
'Fond Vert
MODE SCREEN_CS, CS_GREEN, GREEN, GREEN,GREEN
'Déclaration Sprites/TILE
WAIT
DEFINE DEF00,4,SpritePapiDROITE_0
WAIT
DEFINE DEF04,3,SpriteIADroite
WAIT
DEFINE DEF07,3,SpriteIABAS
WAIT
DEFINE DEF10,3,SpriteIAHAUT
wait
DEFINE 13,2,TilesDecor
WAIT
'Variables
DIM X1(5) 'POSX IA
DIM Y1(5) 'POSY IA
DIM INT(5) 'INT IA
DIM Sens(5) 'DIRECTION IA
DIM Chemin(5) 'DISTANCE PARCOURUE IA
DIM CheminMAX(5) 'DISTANCE MAX IA
DIM TempoAnimation(5) 'TEMPO ANIMATION IA
DIM TempoIA(5) 'VITESSE IA
DIM TempoIA_MAX(5) 'VITESSE MAXI IA
Debut:
CLS
'Position/Config Sprites
for i=1 to 4
X1(i)=random(100)+8
Y1(i)=random(60)+8
if y1(i)<15 then y1(i)=16
Sens(i)=RAND % 4
CheminMAX(i)=RAND % 75
TempoIA(i)=0
INT(i)=RAND % 50
TempoIA_MAX(i)=(i*5)+1
next
Direction=1 '0 HAUT, 1 BAS, 2 DROITE, 3 GAUCHE
VitessePapi=3
TempoPapi=0
Temps=0
X=64
Y=48
Ax=0
Ay=1
'Background
restore Map
for i=0 to 239
read value
if value=0 then
print at (SCREENPOS(Ax,Ay)) color CS_DARKGREEN, "\270"
else
'#ADR=$080A
'#backtab(i)=#ADR+8*8
end if
Ax=Ax+1
if Ax>19 then
Ay=Ay+1
Ax=0
end if
next
'Affichage du Temps
print at (SCREENPOS(6,0)) color CS_WHITE, "TIME :"
print at (SCREENPOS(13,0)) color CS_WHITE, <3>temps
'Boucle principale
while 1
'Gestion temps
gosub gestionTime
'Affichage Sprite
gosub AffSprite
'Detection de Papi COL0 avec les 4 autres Sprites Ennemis après une FRAME
IF (COL0 and FRAME) AND HIT_SPRITE4+HIT_SPRITE5+HIT_SPRITE6+HIT_SPRITE7 THEN gosub CollisionSPRITE
wait
wend
'Gestion du temps
GestionTime: PROCEDURE
FR=FR+1
if FR=60 then
temps=temps+1:FR=0
end if
print at (SCREENPOS(13,0)) color CS_WHITE, <3>temps
return
end
'Procedure de Collision Sprite
CollisionSPRITE: PROCEDURE
FOR color = 0 TO 31
WAIT
SPRITE 0,X+HIT+VISIBLE,Y+ZOOMY2,SPR00+(color AND SPR_WHITE)
SPRITE 1,X+HIT+VISIBLE,Y+ZOOMY2,SPR01+(color AND SPR_RED)
SPRITE 2,X+HIT+VISIBLE,Y+ZOOMY2,SPR02+(color AND SPR_PINK)
SPRITE 3,X+HIT+VISIBLE,Y+ZOOMY2,SPR03+(color AND SPR_BLACK)
SOUND 0,(color and 7)*32+32,15
SOUND 1,(color and 7)*36+32,15
SOUND 2,(color and 7)*40+32,15
NEXT
SOUND 0,,0
SOUND 1,,0
SOUND 2,,0
FOR loop = 0 to 100
WAIT
NEXT
'INIT Sprite
SPRITE 0,0,0
SPRITE 1,0,0
SPRITE 2,0,0
SPRITE 3,0,0
SPRITE 4,0,0
SPRITE 5,0,0
SPRITE 6,0,0
SPRITE 7,0,0
goto debut
return
end
'Procedure de Gestion de Sprite
AffSprite: PROCEDURE
'Gestion Vitesse/Active sur si PAD Actif.
if CONT then VitessePapi=VitessePapi+1
'Animation quand PAD inactif
if CONT=0 then
#Miroir=0
if Direction=0 then DEFINE DEF00, 4, SpritePapiHAUT_1
if Direction=1 then DEFINE DEF00, 4, SpritePapiBAS_1
if Direction=2 then DEFINE DEF00, 4, SpritePapiDROITE_1
if Direction=3 then DEFINE DEF00, 4, SpritePapiDROITE_1:#miroir=FLIPX
end if
'On peut fixer la vitesse de Papi dans la condition.
if VitessePapi>4 then
VitessePapi=0
TempoPapi=TempoPapi+1
if TempoPapi>4 then TempoPapi=0
'Papi Commando !
'Commandes
'PAD Actif !
IF CONT1.UP THEN
Y=Y-1
Direction=0
if TempoPapi=1 then DEFINE DEF00, 4, SpritePapiHAUT_0
if TempoPapi=2 then DEFINE DEF00, 4, SpritePapiHAUT_1
if TempoPapi=3 then DEFINE DEF00, 4, SpritePapiHAUT_2
if TempoPapi=4 then DEFINE DEF00, 4, SpritePapiHAUT_1
#miroir=0
end if
IF CONT1.DOWN THEN
Y=Y+1
Direction=1
if TempoPapi=1 then DEFINE DEF00, 4, SpritePapiBAS_0
if TempoPapi=2 then DEFINE DEF00, 4, SpritePapiBAS_1
if TempoPapi=3 then DEFINE DEF00, 4, SpritePapiBAS_2
if TempoPapi=4 then DEFINE DEF00, 4, SpritePapiBAS_1
#miroir=0
end if
IF CONT1.LEFT THEN
X=X-1
Direction=3
#miroir=FLIPX
if TempoPapi=1 then DEFINE DEF00, 4, SpritePapiDROITE_0
if TempoPapi=2 then DEFINE DEF00, 4, SpritePapiDROITE_1
if TempoPapi=3 then DEFINE DEF00, 4, SpritePapiDROITE_2
if TempoPapi=4 then DEFINE DEF00, 4, SpritePapiDROITE_1
end if
IF CONT1.RIGHT THEN
X=X+1
Direction=2
if TempoPapi=1 then DEFINE DEF00, 4, SpritePapiDROITE_0
if TempoPapi=2 then DEFINE DEF00, 4, SpritePapiDROITE_1
if TempoPapi=3 then DEFINE DEF00, 4, SpritePapiDROITE_2
if TempoPapi=4 then DEFINE DEF00, 4, SpritePapiDROITE_1
#miroir=0
end if
end if
'Affiche les sprites de Papi
SPRITE 0,X+VISIBLE+HIT,Y+ZOOMY2+#miroir,SPR00+SPR_WHITE
SPRITE 1,X+VISIBLE+HIT,Y+ZOOMY2+#miroir,SPR01+SPR_RED
SPRITE 2,X+VISIBLE+HIT,Y+ZOOMY2+#miroir,SPR02+SPR_PINK
SPRITE 3,X+VISIBLE+HIT,Y+ZOOMY2+#miroir,SPR03+SPR_BLACK
'Limite
if Y<16 then Y=16
if Y>96 then Y=96
if X>160 then X=160
if X<8 then X=8
'Sprites Ennemis
for i=1 to 4
'Limite Tableau
if x1(i)<8 then sens(i)=2
if x1(i)>160 then sens(i)=3
if y1(i)<16 then sens(i)=1
if y1(i)>96 then sens(i)=0
'Tempo
TempoIA(i)=TempoIA(i)+1
'Au fur et a mesure que le temps passe, les choses se corsent ... ^^
DIF=temps/16
T_IA=TempoIA_MAX(i)-DIF
if T_IA<2 then T_IA=2
INT(i)=INT(i)-(DIF*2)
'Gestion Sprite
if TempoIA(i)>T_IA then
'Tempo Animation
TempoAnimation(i)=TempoAnimation(i)+1
if TempoAnimation(i)>4 then TempoAnimation(i)=1
TempoIA(i)=0
'Gestion IA/Chemin - Pathfinding
' Unités Connes
if Int(i)<25 then
Chemin(i)=Chemin(i)+1
if Chemin(i)>CheminMAX(i) then
sens(i)=random(4)
Chemin(i)=0
end if
else
'Les unités Intelligentes suivent Papi
'Calcul de distance
a=x-x1(i)
b=y-y1(i)
'Algo de Pathfinding
if a>b and b<=8 then
if x1(i)<x then sens(i)=2 else sens(i)=3
end if
if a<=b and b>8 then
if y1(i)<y then sens(i)=1 else sens(i)=0
end if
if y1(i)<y and a<8 then sens(i)=1
if y1(i)>y and a<8 then sens(i)=0
end if
'Déplacement IA
if sens(i)=0 then
y1(i)=y1(i)-1
if TempoAnimation(i)=1 then #SPR=SPR10
if TempoAnimation(i)=2 then #SPR=SPR11
if TempoAnimation(i)=3 then #SPR=SPR12
if TempoAnimation(i)=4 then #SPR=SPR11
#miroir1=0
end if
if sens(i)=1 then
y1(i)=y1(i)+1
if TempoAnimation(i)=1 then #SPR=SPR07
if TempoAnimation(i)=2 then #SPR=SPR08
if TempoAnimation(i)=3 then #SPR=SPR09
if TempoAnimation(i)=4 then #SPR=SPR08
#miroir1=0
end if
if sens(i)=2 then
x1(i)=x1(i)+1
if TempoAnimation(i)=1 then #SPR=SPR04
if TempoAnimation(i)=2 then #SPR=SPR05
if TempoAnimation(i)=3 then #SPR=SPR06
if TempoAnimation(i)=4 then #SPR=SPR05
#miroir1=0
end if
if sens(i)=3 then
x1(i)=x1(i)-1
if TempoAnimation(i)=1 then #SPR=SPR04
if TempoAnimation(i)=2 then #SPR=SPR05
if TempoAnimation(i)=3 then #SPR=SPR06
if TempoAnimation(i)=4 then #SPR=SPR05
#miroir1=FLIPX
end if
'Couleur Sprites
if i=1 then #Color=SPR_BLACK
if i=2 then #Color=SPR_YELLOW
if i=3 then #Color=SPR_RED
if i=4 then #Color=SPR_PINK
'Affichage ennemis
SPRITE 3+i,x1(i)+VISIBLE+HIT,y1(i)+ZOOMY2+#miroir1,#SPR+#Color
end if
next
return
END
Map:
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
'Sprite Papi
SpritePapiHaut_0:
'WHITE
BITMAP ".#....#."
BITMAP "........"
BITMAP ".#....#."
BITMAP "..#..#.."
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
'RED
BITMAP "........"
BITMAP "#######."
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
'PINK
BITMAP "..####.."
BITMAP "........"
BITMAP "..####.."
BITMAP "...##..."
BITMAP "..#....."
BITMAP ".#...#.."
BITMAP "......#."
BITMAP "........"
'BLACK
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "...###.."
BITMAP "..###..."
BITMAP ".##.##.."
BITMAP ".....##."
SpritePapiHaut_1:
'WHITE
BITMAP "........"
BITMAP ".#....#."
BITMAP "........"
BITMAP ".#....#."
BITMAP "..#..#.."
BITMAP "........"
BITMAP "........"
BITMAP "........"
'RED
BITMAP "........"
BITMAP "........"
BITMAP ".######."
BITMAP "#......."
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
'PINK
BITMAP "........"
BITMAP "..####.."
BITMAP "........"
BITMAP "..####.."
BITMAP "...##..."
BITMAP "..#..#.."
BITMAP ".#....#."
BITMAP "........"
'BLACK
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "...##..."
BITMAP "..####.."
BITMAP "..####.."
SpritePapiHaut_2:
'WHITE
BITMAP ".#....#."
BITMAP "........"
BITMAP ".#....#."
BITMAP "..#..#.."
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
'RED
BITMAP "........"
BITMAP "#######."
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
'PINK
BITMAP "..####.."
BITMAP "........"
BITMAP "..####.."
BITMAP "...##..."
BITMAP ".....#.."
BITMAP "...#..#."
BITMAP "..#....."
BITMAP "........"
'BLACK
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "..###..."
BITMAP "...###.."
BITMAP "..##.##."
BITMAP ".##....."
SpritePapiBAS_0:
'WHITE
BITMAP ".#....#."
BITMAP "..#..#.."
BITMAP ".#....#."
BITMAP ".#.##.#."
BITMAP "..####.."
BITMAP "........"
BITMAP "........"
BITMAP "........"
'RED
BITMAP "........"
BITMAP "##.##.#."
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
'PINK
BITMAP "..####.."
BITMAP "........"
BITMAP "...##..."
BITMAP "..#..#.."
BITMAP "........"
BITMAP ".#......"
BITMAP "......#."
BITMAP "........"
'BLACK
BITMAP "........"
BITMAP "........"
BITMAP "..#..#.."
BITMAP "........"
BITMAP "........"
BITMAP "..####.."
BITMAP ".##.##.."
BITMAP ".....##."
SpritePapiBAS_1:
'WHITE
BITMAP "........"
BITMAP ".#....#."
BITMAP "..#..#.."
BITMAP ".#....#."
BITMAP ".#.##.#."
BITMAP "..####.."
BITMAP "........"
BITMAP "........"
'RED
BITMAP "........"
BITMAP "........"
BITMAP ".#.##.#."
BITMAP "#......."
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
'PINK
BITMAP "........"
BITMAP "..####.."
BITMAP "........"
BITMAP "...##..."
BITMAP "..#..#.."
BITMAP "........"
BITMAP ".#....#."
BITMAP "........"
'BLACK
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "..#..#.."
BITMAP "........"
BITMAP "........"
BITMAP "..####.."
BITMAP "..####.."
SpritePapiBAS_2:
'WHITE
BITMAP ".#....#."
BITMAP "..#..#.."
BITMAP ".#....#."
BITMAP ".#.##.#."
BITMAP "..####.."
BITMAP "........"
BITMAP "........"
BITMAP "........"
'RED
BITMAP "........"
BITMAP "##.##.#."
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
'PINK
BITMAP "..####.."
BITMAP "........"
BITMAP "...##..."
BITMAP "..#..#.."
BITMAP "........"
BITMAP "......#."
BITMAP ".#......"
BITMAP "........"
'BLACK
BITMAP "........"
BITMAP "........"
BITMAP "..#..#.."
BITMAP "........"
BITMAP "........"
BITMAP "..####.."
BITMAP "..##.##."
BITMAP ".##....."
SpritePapiDROITE_0:
'WHITE
BITMAP ".#......"
BITMAP "..##.##."
BITMAP ".#......"
BITMAP ".##.#.#."
BITMAP "..####.."
BITMAP "........"
BITMAP "........"
BITMAP "........"
'RED
BITMAP "........"
BITMAP "##..#..."
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
'PINK
BITMAP "..#####."
BITMAP "........"
BITMAP "..#.#.#."
BITMAP "...#.#.."
BITMAP "........"
BITMAP ".##...#."
BITMAP ".#......"
BITMAP "........"
'BLACK
BITMAP "........"
BITMAP "........"
BITMAP "...#.#.."
BITMAP "........"
BITMAP "........"
BITMAP "...###.."
BITMAP "..####.."
BITMAP "..#..##."
SpritePapiDROITE_1:
'WHITE
BITMAP "........"
BITMAP ".#......"
BITMAP "..##.##."
BITMAP ".#......"
BITMAP ".##.#.#."
BITMAP "..####.."
BITMAP "........"
BITMAP "........"
'RED
BITMAP "........"
BITMAP "........"
BITMAP ".#..#..."
BITMAP "#......."
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
'PINK
BITMAP "........"
BITMAP "..#####."
BITMAP "........"
BITMAP "..#.#.#."
BITMAP "...#.#.."
BITMAP "........"
BITMAP "..#...#."
BITMAP "........"
'BLACK
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "...#.#.."
BITMAP "........"
BITMAP "........"
BITMAP "...###.."
BITMAP "..####.."
SpritePapiDROITE_2:
'WHITE
BITMAP ".#......"
BITMAP "..##.##."
BITMAP ".#......"
BITMAP ".##.#.#."
BITMAP "..####.."
BITMAP "........"
BITMAP "........"
BITMAP "........"
'RED
BITMAP "........"
BITMAP "##..#..."
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
BITMAP "........"
'PINK
BITMAP "..#####."
BITMAP "........"
BITMAP "..#.#.#."
BITMAP "...#.#.."
BITMAP "........"
BITMAP "...#...."
BITMAP ".#..#..."
BITMAP "........"
'BLACK
BITMAP "........"
BITMAP "........"
BITMAP "...#.#.."
BITMAP "........"
BITMAP "........"
BITMAP "..#.##.."
BITMAP "..##.##."
BITMAP ".#...#.."
'Sprite IA
SpriteIAHAUT:
BITMAP "..####.."
BITMAP ".######."
BITMAP ".######."
BITMAP "..####.."
BITMAP ".#####.."
BITMAP "..#####."
BITMAP ".##.##.."
BITMAP ".....##."
BITMAP "........"
BITMAP "..####.."
BITMAP ".######."
BITMAP ".######."
BITMAP "..####.."
BITMAP ".######."
BITMAP "..####.."
BITMAP ".##..##."
BITMAP "..####.."
BITMAP ".######."
BITMAP ".######."
BITMAP "..####.."
BITMAP "..#####."
BITMAP ".#####.."
BITMAP "..##.##."
BITMAP ".##....."
SpriteIABAS:
BITMAP "..####.."
BITMAP ".######."
BITMAP ".#.##.#."
BITMAP "..####.."
BITMAP ".#####.."
BITMAP "..#####."
BITMAP ".##.##.."
BITMAP ".....##."
BITMAP "........"
BITMAP "..####.."
BITMAP ".######."
BITMAP ".#.##.#."
BITMAP "..####.."
BITMAP ".######."
BITMAP "..####.."
BITMAP ".##..##."
BITMAP "..####.."
BITMAP ".######."
BITMAP ".#.##.#."
BITMAP "..####.."
BITMAP "..#####."
BITMAP ".#####.."
BITMAP "..##.##."
BITMAP ".##....."
SpriteIADroite:
BITMAP "..####.."
BITMAP ".####.#."
BITMAP ".###.##."
BITMAP "..####.."
BITMAP "...####."
BITMAP "...###.."
BITMAP "..##.##."
BITMAP "..#....."
BITMAP "........"
BITMAP "..####.."
BITMAP ".####.#."
BITMAP ".###.##."
BITMAP "..####.."
BITMAP "...##..."
BITMAP "...##..."
BITMAP "...###.."
BITMAP "..####.."
BITMAP ".####.#."
BITMAP ".###.##."
BITMAP "..####.."
BITMAP "...##..."
BITMAP "..####.."
BITMAP "...#.##."
BITMAP "..#....."
TilesDecor:
REM Rocher
REM Terrain GRIS 17 (273)
BITMAP "..####.."
BITMAP ".####.#."
BITMAP ".#####.#"
BITMAP "######.#"
BITMAP "######.#"
BITMAP "########"
BITMAP "########"
BITMAP "########"
BITMAP "########"
REM Gazon/BG
REM Terrain Calque Vert 1 13 (269)
BITMAP "********"
BITMAP "***.****"
BITMAP "********"
BITMAP "********"
BITMAP "**.*****"
BITMAP "********"
BITMAP "*****.**"
BITMAP "********"
Invité- Invité
Re: [TUTO] Hello IntyBASIC
Papi returbine !
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Re: [TUTO] Hello IntyBASIC
il y a 48h tu ne connaissais pas le langage. Bravo !
En 1 semaine, a temsp plein, tu te fais un vrai jeu commercial avec ce langage hyper puissant !
En 1 semaine, a temsp plein, tu te fais un vrai jeu commercial avec ce langage hyper puissant !
_______________________________________________________
Re: [TUTO] Hello IntyBASIC
Ahah merci !!
Oui il est sympa cet Intybasic, j'y retrouve un peu du BEX en lui.
Il me manque à maîtriser ces collisions BG/Sprite de manière à bien gérer les déplacements et proposer de véritables tableaux, voire plus tard des MAP avec scrolling.
Ce qui est bien avec ces contraintes d'un autre âge, c'est de se creuser la tête pour trouver le Gameplay accrocheur ... On est bien loin de RDR2 !
J'ai pas mal d'idées en tête en tout cas.
Ceci met mes projets MD en pause, mais c'était déjà un peu le cas ... mais je surfais entre du C et du Basic ( voire du C# en // ).
La clairement, on est en face d'un SDK qui permet direct de tirer le max de cette console atypique.
Mais elle semble en avoir dans le ventre.
Oui il est sympa cet Intybasic, j'y retrouve un peu du BEX en lui.
Il me manque à maîtriser ces collisions BG/Sprite de manière à bien gérer les déplacements et proposer de véritables tableaux, voire plus tard des MAP avec scrolling.
Ce qui est bien avec ces contraintes d'un autre âge, c'est de se creuser la tête pour trouver le Gameplay accrocheur ... On est bien loin de RDR2 !
J'ai pas mal d'idées en tête en tout cas.
Ceci met mes projets MD en pause, mais c'était déjà un peu le cas ... mais je surfais entre du C et du Basic ( voire du C# en // ).
La clairement, on est en face d'un SDK qui permet direct de tirer le max de cette console atypique.
Mais elle semble en avoir dans le ventre.
Invité- Invité
Page 2 sur 3 • 1, 2, 3
Sujets similaires
» [TUTO] [IntyBASIC] Les tiles
» [TUTO] [IntyBASIC] Afficher et déplacer un sprite
» TUTO RGB sur PC Engine Coregrafx , TUTO RGB AMP pour PCE TNK2 etc...
» IntyBASIC, le topic officiel
» Tuto assembleur sur MSX
» [TUTO] [IntyBASIC] Afficher et déplacer un sprite
» TUTO RGB sur PC Engine Coregrafx , TUTO RGB AMP pour PCE TNK2 etc...
» IntyBASIC, le topic officiel
» Tuto assembleur sur MSX
Page 2 sur 3
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum