2020-06-25 23:53:57 +02:00
|
|
|
#include <gint/display.h>
|
|
|
|
#include <gint/keyboard.h>
|
|
|
|
#include "setlevel.h"
|
|
|
|
#include "drawlevel.h"
|
2020-06-26 19:08:51 +02:00
|
|
|
#include "collide.h"
|
2020-06-25 23:53:57 +02:00
|
|
|
|
2020-06-27 14:47:58 +02:00
|
|
|
#include "define.h"
|
2020-06-25 23:53:57 +02:00
|
|
|
|
|
|
|
int main(void)
|
|
|
|
{
|
|
|
|
dclear(C_WHITE);
|
2020-06-26 19:08:51 +02:00
|
|
|
int player_x=30, player_y=35;
|
2020-06-26 01:46:28 +02:00
|
|
|
char level[351];
|
|
|
|
char gravity = 0; //0 down 1 up
|
2020-06-25 23:53:57 +02:00
|
|
|
int id_level = 1;
|
|
|
|
set_level(id_level,level);
|
|
|
|
draw_level(level);
|
|
|
|
while(1)
|
|
|
|
{
|
|
|
|
dupdate();
|
|
|
|
pollevent();
|
2020-06-27 14:47:58 +02:00
|
|
|
if(keydown(KEY_RIGHT) && collide_solid(player_x, player_y, '1', level)!=1)
|
2020-06-25 23:53:57 +02:00
|
|
|
{
|
|
|
|
player_x+=PLAYER_SPEED;
|
|
|
|
if(player_x>390) player_x=0;
|
|
|
|
|
|
|
|
}
|
2020-06-27 14:47:58 +02:00
|
|
|
else if(keydown(KEY_LEFT) && collide_solid(player_x, player_y, '1', level)!=2)
|
2020-06-25 23:53:57 +02:00
|
|
|
{
|
|
|
|
player_x-=PLAYER_SPEED;
|
|
|
|
if(player_x<-9) player_x=386;
|
|
|
|
}
|
2020-06-26 01:46:28 +02:00
|
|
|
else if(keydown(KEY_SHIFT))
|
2020-06-25 23:53:57 +02:00
|
|
|
{
|
2020-06-27 02:16:38 +02:00
|
|
|
player_y-=PLAYER_SPEED;
|
2020-06-26 19:08:51 +02:00
|
|
|
}
|
|
|
|
else if(keydown(KEY_ALPHA))
|
|
|
|
{
|
2020-06-27 02:16:38 +02:00
|
|
|
player_y+=PLAYER_SPEED;
|
2020-06-25 23:53:57 +02:00
|
|
|
}
|
|
|
|
if(keydown(KEY_EXIT))
|
|
|
|
{
|
|
|
|
break;
|
|
|
|
}
|
2020-06-27 14:47:58 +02:00
|
|
|
if(keydown(KEY_OPTN)) gravity=1;
|
|
|
|
else if(keydown(KEY_VARS)) gravity=0;
|
|
|
|
switch (collide(player_x, player_y, '1', level, gravity))
|
2020-06-26 19:08:51 +02:00
|
|
|
{
|
2020-06-27 14:47:58 +02:00
|
|
|
case 0:
|
|
|
|
if(gravity) player_y+=PLAYER_GRAVITY;
|
|
|
|
else player_y-=PLAYER_GRAVITY;
|
|
|
|
break;
|
|
|
|
case 1:
|
|
|
|
if((player_y-4)%16!=0 && gravity) player_y--;
|
|
|
|
else if((player_y)%16!=0 && !gravity) player_y++;
|
|
|
|
break;
|
|
|
|
/*case '2':
|
|
|
|
if((player_x+PLAYER_HEIGHT)%16!=0) player_x--;
|
|
|
|
case '3':
|
|
|
|
if((player_x+PLAYER_HEIGHT)%16!=0) player_x--;*/
|
2020-06-26 01:46:28 +02:00
|
|
|
}
|
2020-06-25 23:53:57 +02:00
|
|
|
draw_level(level);
|
|
|
|
draw_player(player_x,player_y);
|
2020-06-27 02:16:38 +02:00
|
|
|
int x = player_x;
|
|
|
|
int y = player_y;
|
2020-06-26 01:46:28 +02:00
|
|
|
dprint(150,100,C_BLACK,"%d",player_x);
|
|
|
|
dprint(150,150,C_BLACK,"%d",player_y);
|
2020-06-27 14:47:58 +02:00
|
|
|
dprint(100,180,C_BLACK,"%c",level[(int)((x+PLAYER_HEIGHT+1)/16)+(int)(y/16*25)]);
|
|
|
|
dprint(120,180,C_BLACK,"%c",level[(int)((x+PLAYER_HEIGHT+1)/16)+(int)((y+PLAYER_HEIGHT-1)/16*25)]);
|
|
|
|
dprint(100,120,C_BLACK,"%d",collide(player_x, player_y, '1', level, gravity));
|
|
|
|
dprint(100,140,C_BLACK,"%d",collide_solid(player_x, player_y, '1', level));
|
2020-06-27 02:16:38 +02:00
|
|
|
dprint(200,120,C_BLACK,"%c",level[(int)(x/16)+(int)(y/16*25)]);
|
|
|
|
dprint(200,140,C_BLACK,"%c",level[(int)(x/16)+(int)((y+12)/16*25)]);
|
|
|
|
dprint(200,160,C_BLACK,"%c",level[(int)((x+12)/16)+(int)((y+12)/16*25)]);
|
|
|
|
dprint(200,180,C_BLACK,"%c",level[(int)((x+12)/16)+(int)(y/16*25)]);
|
2020-06-25 23:53:57 +02:00
|
|
|
}
|
2020-06-26 01:46:28 +02:00
|
|
|
return 0;
|
2020-06-25 23:53:57 +02:00
|
|
|
}
|