feat: player movement

This commit is contained in:
Robert Fry 2025-04-14 17:15:05 +01:00
parent a9fc1c3a74
commit a2f32fba9a
Signed by: robertfry
GPG Key ID: E89FFC8597BFE26C

View File

@ -12,12 +12,16 @@ typedef struct {
player_t *player_malloc(void);
void player_free(player_t *player);
int player_move_by(player_t *player, int pos_dx, int pos_dy);
int screen_setup(void);
int screen_teardown(void);
int draw_map(void);
int draw_player(player_t *player);
int on_key_pressed(player_t *player, char key);
int main(void)
{
player_t *player = player_malloc();
@ -35,6 +39,7 @@ int main(void)
if (key_pressed == 'q') {
break;
}
on_key_pressed(player, key_pressed);
}
screen_teardown();
@ -88,8 +93,44 @@ void player_free(player_t *player)
free(player);
}
int player_move_by(player_t *player, int pos_dx, int pos_dy)
{
player->pos_x += pos_dx;
player->pos_y += pos_dy;
return 0;
}
int draw_player(player_t *player)
{
mvprintw(player->pos_y, player->pos_x, "@");
return 0;
}
int on_key_pressed(player_t *player, char key)
{
switch (key)
{
case 'w':
case 'W':
return player_move_by(player, 0, -1);
break;
case 's':
case 'S':
return player_move_by(player, 0, +1);
break;
case 'a':
case 'A':
return player_move_by(player, -1, 0);
break;
case 'd':
case 'D':
return player_move_by(player, +1, 0);
break;
default:
return 0;
}
}