hdxs
22/03/2006, 11h32
Bonjour,
je débute à la fois en C et avec PAlib, et je souhaite faire un portage d'un jeu existant sous DOS, Atari et Amiga (un projet surement trop "grand" pour un premier essai :( )
j'ai un problème d'affichage de sprites lors de la création de mon niveau
j'ai un tableau contenant pour l'instant 2 niveaux de 16 tiles (16X16pixels) en X et 10 en Y
s32 Levels[20][16] = {
// Level 1
{0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0},
{0,0,1,2,2,2,2,2,2,2,2,2,2,1,0,0},
{0,1,2,2,2,2,2,2,2,2,2,2,2,2,1,0},
{1,2,2,2,2,2,2,0,0,2,2,2,2,2,2,1},
{1,2,2,4,2,2,0,0,0,0,2,2,3,2,2,1},
{1,2,2,2,2,2,0,0,0,0,2,2,2,2,2,1},
{1,2,2,2,2,2,2,0,0,2,2,2,2,2,2,1},
{0,1,2,2,2,2,2,2,2,2,2,2,2,2,1,0},
{0,0,1,2,2,2,2,2,2,2,2,2,2,1,0,0},
{0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0},
// Level 2
{0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0},
{0,0,1,2,2,2,2,2,2,2,2,2,2,1,0,0},
{0,1,2,2,2,0,2,2,2,2,0,2,2,2,1,0},
{1,2,0,2,2,2,0,2,2,0,2,2,2,0,2,1},
{1,2,0,3,2,2,2,0,0,2,2,2,4,0,2,1},
{1,2,0,2,2,2,2,0,0,2,2,2,2,0,2,1},
{1,2,2,2,2,2,0,2,2,0,2,2,2,2,2,1},
{0,1,2,2,2,0,2,2,2,2,0,2,2,2,1,0},
{0,0,1,2,2,2,2,2,2,2,2,2,2,1,0,0},
{0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0},
};
je l'affiche ensuite :
void LoadLevel(s32 LevelNumber) {
s32 x=0,y=0,x2=0,y2=32;
s32 i=4;
PA_ResetSpriteSys();
PA_LoadSpritePal(1,1,(void*)TileEmpty_Pal);
PA_LoadSpritePal(1,2,(void*)TileWall_Pal);
PA_LoadSpritePal(1,3,(void*)TileGround_Pal);
PA_LoadSpritePal(1,4,(void*)TileExit_Pal);
PA_LoadSpritePal(1,5,(void*)TileEnter_Pal);
PA_LoadSpritePal(1,6,(void*)Dragon_Pal);
for (x=0;x<16;x++)
for (y=0;y<10;y++)
Level[y][x]=Levels[y+10*(LevelNumber-1)][x];
for (x=0;x<16;x++) {
for (y=0;y<10;y++) {
switch(Level[y][x]) {
case 0 :
PA_CreateSprite(1,i,(void*)TileEmpty_Sprite,OBJ_SI ZE_16X16,1,1,x2,y2);
break;
case 1 :
PA_CreateSprite(1,i,(void*)TileWall_Sprite,OBJ_SIZ E_16X16,1,2,x2,y2);
break;
case 2 :
PA_CreateSprite(1,i,(void*)TileGround_Sprite,OBJ_S IZE_16X16,1,3,x2,y2);
break;
case 3 :
PA_CreateSprite(1,i,(void*)TileExit_Sprite,OBJ_SIZ E_16X16,1,4,x2,y2);
PlayerExitX=x;
PlayerExitY=y;
break;
case 4 :
PA_CreateSprite(1,i,(void*)TileEnter_Sprite,OBJ_SI ZE_16X16,1,5,x2,y2);
PlayerPositionX=x2;
PlayerPositionY=y2;
PlayerStartX=x;
PlayerStartY=y;
PlayerTileX=x;
PlayerTileY=y;
PA_CreateSprite(1,6,(void*)Dragon_Sprite,OBJ_SIZE_ 16X16,1,6,PlayerPositionX,PlayerPositionY);
break;
}
sprites[y][x]=i;
y2+=16;
i++;
}
x2+=16;
y2=32;
}
}
la compilation s'effectue sans problème mais à l'affichage je n'ai que 124 tiles qui s'affiche
quelqu'un peut-il me dépanner svp ?
merci d'avance
je débute à la fois en C et avec PAlib, et je souhaite faire un portage d'un jeu existant sous DOS, Atari et Amiga (un projet surement trop "grand" pour un premier essai :( )
j'ai un problème d'affichage de sprites lors de la création de mon niveau
j'ai un tableau contenant pour l'instant 2 niveaux de 16 tiles (16X16pixels) en X et 10 en Y
s32 Levels[20][16] = {
// Level 1
{0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0},
{0,0,1,2,2,2,2,2,2,2,2,2,2,1,0,0},
{0,1,2,2,2,2,2,2,2,2,2,2,2,2,1,0},
{1,2,2,2,2,2,2,0,0,2,2,2,2,2,2,1},
{1,2,2,4,2,2,0,0,0,0,2,2,3,2,2,1},
{1,2,2,2,2,2,0,0,0,0,2,2,2,2,2,1},
{1,2,2,2,2,2,2,0,0,2,2,2,2,2,2,1},
{0,1,2,2,2,2,2,2,2,2,2,2,2,2,1,0},
{0,0,1,2,2,2,2,2,2,2,2,2,2,1,0,0},
{0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0},
// Level 2
{0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0},
{0,0,1,2,2,2,2,2,2,2,2,2,2,1,0,0},
{0,1,2,2,2,0,2,2,2,2,0,2,2,2,1,0},
{1,2,0,2,2,2,0,2,2,0,2,2,2,0,2,1},
{1,2,0,3,2,2,2,0,0,2,2,2,4,0,2,1},
{1,2,0,2,2,2,2,0,0,2,2,2,2,0,2,1},
{1,2,2,2,2,2,0,2,2,0,2,2,2,2,2,1},
{0,1,2,2,2,0,2,2,2,2,0,2,2,2,1,0},
{0,0,1,2,2,2,2,2,2,2,2,2,2,1,0,0},
{0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0},
};
je l'affiche ensuite :
void LoadLevel(s32 LevelNumber) {
s32 x=0,y=0,x2=0,y2=32;
s32 i=4;
PA_ResetSpriteSys();
PA_LoadSpritePal(1,1,(void*)TileEmpty_Pal);
PA_LoadSpritePal(1,2,(void*)TileWall_Pal);
PA_LoadSpritePal(1,3,(void*)TileGround_Pal);
PA_LoadSpritePal(1,4,(void*)TileExit_Pal);
PA_LoadSpritePal(1,5,(void*)TileEnter_Pal);
PA_LoadSpritePal(1,6,(void*)Dragon_Pal);
for (x=0;x<16;x++)
for (y=0;y<10;y++)
Level[y][x]=Levels[y+10*(LevelNumber-1)][x];
for (x=0;x<16;x++) {
for (y=0;y<10;y++) {
switch(Level[y][x]) {
case 0 :
PA_CreateSprite(1,i,(void*)TileEmpty_Sprite,OBJ_SI ZE_16X16,1,1,x2,y2);
break;
case 1 :
PA_CreateSprite(1,i,(void*)TileWall_Sprite,OBJ_SIZ E_16X16,1,2,x2,y2);
break;
case 2 :
PA_CreateSprite(1,i,(void*)TileGround_Sprite,OBJ_S IZE_16X16,1,3,x2,y2);
break;
case 3 :
PA_CreateSprite(1,i,(void*)TileExit_Sprite,OBJ_SIZ E_16X16,1,4,x2,y2);
PlayerExitX=x;
PlayerExitY=y;
break;
case 4 :
PA_CreateSprite(1,i,(void*)TileEnter_Sprite,OBJ_SI ZE_16X16,1,5,x2,y2);
PlayerPositionX=x2;
PlayerPositionY=y2;
PlayerStartX=x;
PlayerStartY=y;
PlayerTileX=x;
PlayerTileY=y;
PA_CreateSprite(1,6,(void*)Dragon_Sprite,OBJ_SIZE_ 16X16,1,6,PlayerPositionX,PlayerPositionY);
break;
}
sprites[y][x]=i;
y2+=16;
i++;
}
x2+=16;
y2=32;
}
}
la compilation s'effectue sans problème mais à l'affichage je n'ai que 124 tiles qui s'affiche
quelqu'un peut-il me dépanner svp ?
merci d'avance