draw line
This commit is contained in:
parent
2665f29f72
commit
abad63970f
34
inc/lzy.h
34
inc/lzy.h
|
@ -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>
|
||||
|
|
19
src/main.c
19
src/main.c
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue