Browse Source

* Added preliminary score counting system (ok it sucks), and down key (ok, it sucks as well) (but I'm drunk AHAH)

git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/cacatris/trunk@1111 92316355-f0b4-4df1-b90c-862c8a59935f
master
jylam 18 years ago
parent
commit
9e66f3f958
2 changed files with 35 additions and 7 deletions
  1. +1
    -1
      src/cacatris.h
  2. +34
    -6
      src/main.c

+ 1
- 1
src/cacatris.h View File

@@ -49,7 +49,7 @@ typedef struct piece_t_ {
} piece_t; } piece_t;




void infos_populate(cucul_canvas_t *);
void infos_populate(cucul_canvas_t *, unsigned int score);
void playfield_draw(cucul_canvas_t *); void playfield_draw(cucul_canvas_t *);
void put_piece(unsigned int, unsigned int, unsigned int, unsigned int); void put_piece(unsigned int, unsigned int, unsigned int, unsigned int);
void remove_piece(unsigned int id, unsigned int x, unsigned int y, unsigned int rot); void remove_piece(unsigned int id, unsigned int x, unsigned int y, unsigned int rot);


+ 34
- 6
src/main.c View File

@@ -20,7 +20,9 @@ int main(int argc, char *argv[])
unsigned long long int curTime = 0; unsigned long long int curTime = 0;
unsigned int speed = 32; unsigned int speed = 32;
unsigned int fixed_y = 0; unsigned int fixed_y = 0;

unsigned char lost = 0;
unsigned int score = 0;
unsigned int lines = 0;


field = cucul_create_canvas(0, 0); field = cucul_create_canvas(0, 0);
infos = cucul_create_canvas(0, 0); infos = cucul_create_canvas(0, 0);
@@ -79,6 +81,14 @@ int main(int argc, char *argv[])
} }
} }


if(lost) continue;


if(y==0 && has_landed(current_piece, x ,y, rotation)) {
lost = 1;
continue;
}

if(left) if(left)
{ {
if(movable(current_piece, x-1, y, rotation)) if(movable(current_piece, x-1, y, rotation))
@@ -89,6 +99,14 @@ int main(int argc, char *argv[])
if(movable(current_piece, x+1, y, rotation)) if(movable(current_piece, x+1, y, rotation))
x++; x++;
} }
if(down)
{
while((movable(current_piece, x-1, y, rotation)) && (!has_landed(current_piece, x-1, y, rotation)))
{
fixed_y+=speed;
y = fixed_y>>8;
}
}


if(!last_has_landed) if(!last_has_landed)
{ {
@@ -110,7 +128,7 @@ int main(int argc, char *argv[])




/* Populate info canvas */ /* Populate info canvas */
infos_populate(infos);
infos_populate(infos, score);
/* Draw everything on playfield */ /* Draw everything on playfield */
put_piece(current_piece, x ,y, rotation); put_piece(current_piece, x ,y, rotation);
playfield_draw(field); playfield_draw(field);
@@ -136,8 +154,12 @@ int main(int argc, char *argv[])
old_y = 0; old_y = 0;
} }


lines = maybe_remove_line();
if(lines)
{
score += (lines*40);


maybe_remove_line();
}


if(!baseTime) if(!baseTime)
{ {
@@ -153,16 +175,20 @@ int main(int argc, char *argv[])
} }




void infos_populate(cucul_canvas_t *inf)
void infos_populate(cucul_canvas_t *inf, unsigned int score)
{ {
unsigned int i; unsigned int i;
char scoreline[1024];

sprintf(scoreline, " Score : %05d ", score);

cucul_set_color(inf, CUCUL_COLOR_WHITE, CUCUL_COLOR_BLUE); cucul_set_color(inf, CUCUL_COLOR_WHITE, CUCUL_COLOR_BLUE);
cucul_putstr(inf, 0, 0," =Cacatris= "); cucul_putstr(inf, 0, 0," =Cacatris= ");
cucul_putstr(inf, 0, 1," Arrows : move "); cucul_putstr(inf, 0, 1," Arrows : move ");
cucul_putstr(inf, 0, 2," Space : pouf "); cucul_putstr(inf, 0, 2," Space : pouf ");
cucul_putstr(inf, 0, 3," __________________ "); cucul_putstr(inf, 0, 3," __________________ ");
cucul_putstr(inf, 0, 4," "); cucul_putstr(inf, 0, 4," ");
cucul_putstr(inf, 0, 5," Score : NXXXX ");
cucul_putstr(inf, 0, 5,scoreline);
cucul_putstr(inf, 0, 6," Time : XX:XX "); cucul_putstr(inf, 0, 6," Time : XX:XX ");


for(i = 6; i < cucul_get_canvas_height(inf); i++) for(i = 6; i < cucul_get_canvas_height(inf); i++)
@@ -286,13 +312,15 @@ unsigned char maybe_remove_line(void)
{ {
int x, v=0; int x, v=0;
unsigned char *p = &playfield[(FIELD_HEIGHT-1)*FIELD_WIDTH]; unsigned char *p = &playfield[(FIELD_HEIGHT-1)*FIELD_WIDTH];
int ret = 0;
for(x = 0; x < FIELD_WIDTH ; x++) for(x = 0; x < FIELD_WIDTH ; x++)
if(*p++) if(*p++)
v++; v++;


if(v==FIELD_WIDTH) { if(v==FIELD_WIDTH) {
memmove(&playfield[FIELD_WIDTH], playfield, (FIELD_HEIGHT-1)*FIELD_WIDTH); memmove(&playfield[FIELD_WIDTH], playfield, (FIELD_HEIGHT-1)*FIELD_WIDTH);
return 1;
ret += maybe_remove_line();
return ret;
} }
return 0; return 0;
} }

Loading…
Cancel
Save