#include #define PLAYER_SIDES 5 #define BG_COLOR 0 #define LEVEL_WIDTH 28 #define DRAW_OFFSET_Y -24 #define DRAW_OFFSET_X -27 extern image_t img_player; //player texture, 12x12 void draw_player(int old_x, int old_y, int x, int y) { if (old_x != x || old_y != y) { drect(old_x * 2 + DRAW_OFFSET_X, old_y * 2 + DRAW_OFFSET_Y, (old_x + PLAYER_SIDES) * 2 + 1 + DRAW_OFFSET_X, (old_y + PLAYER_SIDES) * 2 + 1 + DRAW_OFFSET_Y, BG_COLOR); dimage(x * 2 + DRAW_OFFSET_X, y * 2 + DRAW_OFFSET_Y, &img_player); } } void draw_level(char level[]) { dclear(BG_COLOR); extern image_t img_ground; //ground texture, 16x16 extern image_t img_spike; //spike texture, 16x16 unsigned int i = 0; unsigned int x = 0; unsigned int y = 0; while (i != LEVEL_WIDTH*17) { switch (level[i]) { case '0': dimage(x * 2 + DRAW_OFFSET_X, y * 2 + DRAW_OFFSET_Y, &img_ground); break; case 'v': dimage(x * 2 + DRAW_OFFSET_X, y * 2 + DRAW_OFFSET_Y, &img_spike); break; } x += 8; if (x == 8*LEVEL_WIDTH) { x = 0; y += 8; } i++; } }