Changeset 1125 for cacatris/trunk


Ignore:
Timestamp:
Sep 28, 2006, 10:29:45 AM (14 years ago)
Author:
Jean-Yves Lamoureux
Message:
  • Scoring and levels implementation (following standard Tetris(c)(tm) rules)
Location:
cacatris/trunk/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • cacatris/trunk/src/cacatris.h

    r1118 r1125  
    2929#define FIELD_CANVAS_WIDTH 20
    3030#define FIELD_CANVAS_HEIGHT 20
     31
     32#define LEVEL_COUNT 11
     33
     34unsigned int points[LEVEL_COUNT*4] = {
     35        40,     80,     120,    160,    200,    240,    280,    320,    360,    400,    440,
     36        100,    200,    300,    400,    500,    600,    700,    800,    900,    1000,   1100,
     37        300,    600,    900,    1200,   1500,   1800,   2100,   2400,   2700,   3000,   3300,
     38        1200,   2400,   3600,   4800,   6000,   7200,   8400,   9600,   10800,  12000,  13200
     39};
     40
    3141
    3242unsigned char playfield[FIELD_WIDTH*FIELD_HEIGHT];
     
    5060
    5161
    52 void infos_populate(cucul_canvas_t *, unsigned int score);
     62void infos_populate(cucul_canvas_t *, unsigned int score, unsigned char level);
    5363void playfield_draw(cucul_canvas_t *);
    5464void put_piece(unsigned int, unsigned int, unsigned int, unsigned int);
  • cacatris/trunk/src/main.c

    r1124 r1125  
    2424    unsigned int  score = 0;
    2525    unsigned int lines = 0;
     26    unsigned char level = 0;
     27    unsigned char total_lines = 0;
    2628
    2729    field = cucul_create_canvas(0, 0);
     
    129131
    130132        /* Populate info canvas */
    131         infos_populate(infos, score);
     133        infos_populate(infos, score, level);
    132134        /* Draw everything on playfield */
    133135        put_piece(current_piece, x ,y, rotation);
     
    158160        if(lines)
    159161        {
    160             score += (lines*40);
    161 
     162            score += points[level+(lines-1)*LEVEL_COUNT];
     163            total_lines += lines;
     164            if(total_lines >=10 && level<=10)
     165            {
     166                level++;
     167                total_lines = 0;
     168                speed+=2;
     169                memset(playfield, 0, FIELD_WIDTH*FIELD_HEIGHT);
     170            }
    162171        }
    163172
     
    176185
    177186
    178 void infos_populate(cucul_canvas_t *inf, unsigned int score)
     187void infos_populate(cucul_canvas_t *inf, unsigned int score, unsigned char level)
    179188{
    180189    unsigned int i;
    181190    char scoreline[1024];
     191    char levelline[1024];
    182192
    183193    sprintf(scoreline, " Score    :   %05d ", score);
     194    sprintf(levelline, " Level    :   %02d    ", level);
    184195
    185196    cucul_set_color(inf, CUCUL_COLOR_WHITE, CUCUL_COLOR_BLUE);
    186     cucul_putstr(inf, 0, 0,"      =Cacatris=    ");
    187     cucul_putstr(inf, 0, 1,"  Arrows  :    move ");
    188     cucul_putstr(inf, 0, 2,"  Space :      pouf ");
    189     cucul_putstr(inf, 0, 3," __________________ ");
    190     cucul_putstr(inf, 0, 4,"                    ");
    191     cucul_putstr(inf, 0, 5,scoreline);
    192     cucul_putstr(inf, 0, 6," Time     :   XX:XX ");
    193 
    194     for(i = 6; i < cucul_get_canvas_height(inf); i++)
     197    cucul_putstr(inf, 0, 0, "      =Cacatris=    ");
     198    cucul_putstr(inf, 0, 1, "  Arrows  :    move ");
     199    cucul_putstr(inf, 0, 2, "  Space :      pouf ");
     200    cucul_putstr(inf, 0, 3, " __________________ ");
     201    cucul_putstr(inf, 0, 4, "                    ");
     202    cucul_putstr(inf, 0, 5, levelline);
     203    cucul_putstr(inf, 0, 6, scoreline);
     204    cucul_putstr(inf, 0, 7, " Time     :   XX:XX ");
     205
     206    for(i = 7; i < cucul_get_canvas_height(inf); i++)
    195207    {
    196208        cucul_putstr(inf, 0, i,"                     ");
Note: See TracChangeset for help on using the changeset viewer.