draw line

This commit is contained in:
KikooDX 2022-03-02 23:32:07 +01:00
parent 2665f29f72
commit abad63970f
2 changed files with 49 additions and 4 deletions

View File

@ -51,6 +51,7 @@ void LZY_DrawSetColor(uint8_t r, uint8_t g, uint8_t b);
void LZY_DrawSetColorNone(void);
int LZY_DrawClear(void);
int LZY_DrawPoint(int x, int y);
int LZY_DrawLine(int x0, int y0, int x1, int y1);
int LZY_DrawRect(int x, int y, unsigned int w, unsigned int h);
int LZY_DrawFillRect(int x, int y, unsigned int w, unsigned int h);
int LZY_DrawTile(unsigned int id, int x, int y);
@ -128,6 +129,39 @@ enum LZY_ScanCode {
#define LZY_FIRST_CHR ' '
#endif
int LZY_DrawLine(int x0, int y0, int x1, int y1) {
int dx, dy, sx, sy, err, e2;
int rc = 0;
dx = x1 - x0;
dx = (dx < 0) ? (-dx) : (dx);
dy = y1 - y0;
dy = (dy < 0) ? (dy) : (-dy);
sx = (x0 < x1) ? (1) : (-1);
sy = (y0 < y1) ? (1) : (-1);
err = dx + dy;
for (;;) {
if (LZY_DrawPoint(x0, y0))
rc = -1;
if (x0 == x1 && y0 == y1)
break;
e2 = 2 * err;
if (e2 >= dy) {
err += dy;
x0 += sx;
}
if (e2 <= dx) {
err += dx;
y0 += sy;
}
}
return rc;
}
#ifdef FXCG50
#include <gint/cpu.h>
#include <gint/display.h>

View File

@ -27,16 +27,18 @@ int main(void) {
LZY_MusicPlay(music, 0);
do {
const int speed = 2;
/* update */
LZY_CycleEvents();
if (LZY_KeyDown(LZYK_LEFT))
x--;
x -= speed;
if (LZY_KeyDown(LZYK_RIGHT))
x++;
x += speed;
if (LZY_KeyDown(LZYK_UP))
y--;
y -= speed;
if (LZY_KeyDown(LZYK_DOWN))
y++;
y += speed;
/* draw */
LZY_DrawBegin();
@ -58,6 +60,15 @@ int main(void) {
}
static void draw_player(int x, int y) {
const int cx = x + 8;
const int cy = y + 8;
if (LZY_DrawTile(14, x, y))
LZY_Log(LZY_GetError());
LZY_DrawSetColor(0x00, 0xff, 0xff);
LZY_DrawLine(0, 0, cx - 1, cy - 1);
LZY_DrawLine(395, 0, cx, cy - 1);
LZY_DrawLine(0, 223, cx - 1, cy);
LZY_DrawLine(395, 223, cx, cy);
}