109 lines
2.8 KiB
C
109 lines
2.8 KiB
C
extern "C"{
|
|
#include <gint/display.h>
|
|
#include <gint/keyboard.h>
|
|
//#include <gint/std/string.h>
|
|
}
|
|
#define MAP_X 100
|
|
|
|
using namespace std;
|
|
|
|
int sx = 0;
|
|
int x = 1000;
|
|
int y = 30;
|
|
extern bopti_image_t img_tilemap;
|
|
int game_map[MAP_X+1][7];
|
|
int opt = GETKEY_DEFAULT | GETKEY_REP_ARROWS | GETKEY_MENU;
|
|
int optd = GETKEY_DEFAULT | GETKEY_MENU;
|
|
int timeout = 1;
|
|
int key;
|
|
int rwalk =0;
|
|
int can_move = 1;
|
|
int dir = 1;
|
|
int vdir;
|
|
|
|
int isMultipleof5 (int n)
|
|
{
|
|
while ( n > 0 )
|
|
n = n - 5;
|
|
|
|
if ( n == 0 )
|
|
return 1;
|
|
|
|
return 0;
|
|
}
|
|
|
|
void PrintSblock(int num,int x,int y){
|
|
dsubimage(x*10, y*10+4 ,&img_tilemap,num*10,10,10, 10, DIMAGE_NONE);
|
|
}
|
|
|
|
void PrintMap(){
|
|
int cx = MAP_X;
|
|
int cy = 6;
|
|
while(cx>0){
|
|
cy = 6;
|
|
while(cy>0){
|
|
dsubimage(cx*10-sx, cy*10+4 ,&img_tilemap,game_map[cx][cy]*10,0,10, 10, DIMAGE_NONE);
|
|
/*if(game_map[cx][cy]==2&&game_map[cx][cy]>1&&game_map[cx][cy]<MAP_X){
|
|
if(game_map[cx-1][cy]==2&&game_map[cx+1][cy]==2){PrintSblock(4,cx,cy);}
|
|
if(game_map[cx-1][cy]!=2&&game_map[cx+1][cy]==2){PrintSblock(3,cx,cy);}
|
|
if(game_map[cx-1][cy]==2&&game_map[cx+1][cy]!=2){PrintSblock(5,cx,cy);}
|
|
}*/
|
|
cy--;
|
|
}
|
|
cx--;
|
|
}
|
|
if(dir==0){dsubimage(x-sx, y+4 ,&img_tilemap,5*10,0,10, 10, DIMAGE_NONE);}
|
|
if(dir==1){dsubimage(x-sx, y+4 ,&img_tilemap,4*10,0,10, 10, DIMAGE_NONE);}
|
|
}
|
|
|
|
int main(void)
|
|
{
|
|
int i = 10;
|
|
while(i<MAP_X-10){
|
|
game_map[i][5] = 1;
|
|
game_map[i][4] = 2;
|
|
i++;
|
|
if(i>5 && i<MAP_X-5 && isMultipleof5(i) == 1){
|
|
game_map[i][3] = 15;
|
|
game_map[i][2] = 15;
|
|
game_map[i][1] = 15;
|
|
game_map[i][0] = 17;
|
|
game_map[i-1][0] = 17;
|
|
game_map[i+1][0] = 17;
|
|
game_map[i-1][1] = 17;
|
|
game_map[i+1][1] = 17;
|
|
game_map[i-2][1] = 17;
|
|
game_map[i+2][1] = 17;
|
|
}
|
|
}
|
|
game_map[5][3] = 9;
|
|
game_map[6][3] = 10;
|
|
game_map[7][3] = 11;
|
|
while(1==1){
|
|
sx = x-60;
|
|
dclear(C_WHITE);
|
|
dtext(12, 1, C_BLACK, "item");
|
|
PrintMap();
|
|
dupdate();
|
|
key = getkey_opt(opt, &timeout).key;
|
|
if(can_move == 1 && game_map[x/10][y/10+1] != 0){
|
|
if(keydown(KEY_RIGHT)&&game_map[x/10+1][y/10]==(0 || 3 || 13 || 14 || 15)){rwalk = 10;can_move=0;dir=1;vdir=1;}
|
|
if(keydown(KEY_LEFT)&&game_map[x/10-1][y/10]==(0 || 3 || 13 || 14 || 15)){rwalk = 10;can_move=0;dir=0;vdir=3;}
|
|
}
|
|
if(can_move == 1 && game_map[x/10][y/10+1] == 0){
|
|
can_move = 0;
|
|
rwalk=10;
|
|
vdir=2;
|
|
}
|
|
if(can_move==0&&rwalk>0){
|
|
rwalk--;
|
|
if(vdir==1){x++;}
|
|
if(vdir==2){y++;}
|
|
if(vdir==3){x--;}
|
|
if(rwalk==0){can_move = 1;}
|
|
}
|
|
}
|
|
getkey();
|
|
return 1;
|
|
}
|