palib/examples/Math/Pathfinding/source/main.c
2025-01-06 22:43:23 +00:00

81 lines
1.6 KiB
C

//copyright smealum http://jvteamds.free.fr
// Les Includes
#include <PA9.h>
const unsigned short master_Palette[256];
const unsigned char vaisseau_Bitmap[1024];
//Fonction principale du code
int main(void){
//Initialision de PAlib
PA_Init();
PA_LoadDefaultText(0,0);
PA_LoadPal(PAL_SPRITE0, master_Palette);
PA_CreateSprite(0, 0,(void*)vaisseau_Bitmap, OBJ_SIZE_32X32,1, 0, 0, 0);
int x = 0,y = 0,a=1,i,j, arriveex = 4, arriveey = 4;
PA_LoadDefaultText(1,2);
PA_LoadDefaultText(0,2);
while(1){
if(Pad.Held.Up) a++;
if(x == arriveex && y == arriveey){
x=0;
y=0;
}
for(j=0;j<5+a;j++)
for(i=0;i<5+a;i++){
PA_OutputText(1,i*2,j,"0");
}
PA_OutputText(1,x*2,y,"1");
PA_OutputText(1,1*2,0,"5");
PA_OutputText(1,1*2,1,"5");
PA_OutputText(1,2*2,2,"5");
PA_OutputText(1,2*2,3,"5");
PA_OutputText(1,arriveex*2,arriveey,"2");
PA_InitAstar(5+a, 5+a); // Initialise to the size of the mase you want...
for(j=0;j<5+a;j++)
for(i=0;i<5+a;i++)
maze[i][j]=0;
maze[x][y]=1;
maze[arriveex][arriveey]=2;
maze[1][0]=5;
maze[1][1]=5;
maze[2][2]=5;
maze[2][3]=5;
PA_OutputText(0,1,1," ");
PA_OutputText(0,1,2,"%d",a);
switch(PA_Astar(5+a,5+a)){
case 1: {
PA_OutputText(0,1,1,"Left ");
x--;
break;
}
case 2: {
PA_OutputText(0,1,1,"Right ");
x++;
break;
}
case 3:{
PA_OutputText(0,1,1,"Up ");
y--;
break;
}
case 4:{
PA_OutputText(0,1,1,"Down ");
y++;
break;
}
}
PA_SetSpriteXY(0,0,x*10,y*10);
for(i=0;i<30; i++) PA_WaitForVBL(); // wait half a second
}
return 0;
}