use flicker free drawing piece technique

This commit is contained in:
nino-porcino 2021-12-21 16:40:40 +01:00
parent 07906ea3c1
commit b8bf064b18
2 changed files with 20 additions and 20 deletions

View File

@ -206,13 +206,13 @@ void gr_erasepiece_unmarked(sprite *p) {
px += STARTBOARD_X;
py += STARTBOARD_Y;
for(byte t=0; t<4; t++) {
int x = px + data->offset_x;
int y = py + data->offset_y;
int x = px; byte x1 = data->offset_x; x+= (int) x1;
int y = py; byte y1 = data->offset_y; y+= (int) y1;
int cx = zx + data->offset_x;
int cy = zy + data->offset_y;
int cx = p->x; cx += (int) x1;
int cy = p->y; cy += (int) y1;
data++;

View File

@ -152,13 +152,13 @@ void handle_player_input() {
if(collides(&new_pos)) {
break;
}
gr_erasepiece(&player);
gr_drawpiece(&new_pos);
// gr_erasepiece(&player);
// gr_drawpiece(&new_pos);
// flicker-free version
// ck_markpiece(&new_pos);
// gr_erasepiece_unmarked(&player);
// gr_drawpiece(&new_pos);
ck_markpiece(&new_pos);
gr_erasepiece_unmarked(&player);
gr_drawpiece(&new_pos);
ck_drawpiece(&new_pos);
sprite_copy(&player,&new_pos);
@ -168,13 +168,13 @@ void handle_player_input() {
}
if(allowed == 1) {
gr_erasepiece(&player);
gr_drawpiece(&new_pos);
// gr_erasepiece(&player);
// gr_drawpiece(&new_pos);
// flicker-free version
// ck_markpiece(&new_pos);
// gr_erasepiece_unmarked(&player);
// gr_drawpiece(&new_pos);
ck_markpiece(&new_pos);
gr_erasepiece_unmarked(&player);
gr_drawpiece(&new_pos);
sprite_copy(&player, &new_pos);
}
@ -207,13 +207,13 @@ void gameLoop() {
}
else {
// automatic drop does not collide, simply draw it
gr_erasepiece(&player); // erase and draw are as close as possible
gr_drawpiece(&new_pos);
// gr_erasepiece(&player); // erase and draw are as close as possible
// gr_drawpiece(&new_pos);
// flicker-free version
// ck_markpiece(&new_pos);
// gr_erasepiece_unmarked(&player);
// gr_drawpiece(&new_pos);
ck_markpiece(&new_pos);
gr_erasepiece_unmarked(&player);
gr_drawpiece(&new_pos);
sprite_copy(&player, &new_pos);
ck_drawpiece(&player);