예제 #1
0
파일: snake.c 프로젝트: g-d-l/snaker
// Moves the snake for each iteration
void snake_move_player(pos head) {
    attrset(COLOR_PAIR(1)) ;
    
    int idx = snake_cooridinate_to_index(head);
    if (spaces[idx])
        snake_game_over();
    spaces[idx] = true;
    enqueue(head);
    g_score += 10;
    
    if (head.x == fruit.x && head.y == fruit.y) {
        snake_draw_fruit();
        g_score += 1000;
    }
    else {
        pos* tail = dequeue();
        spaces[snake_cooridinate_to_index(*tail)] = false;
        snake_write_text(tail->y, tail->x, " ");
    }
    
    snake_write_text(head.y, head.x, "S");

    char buffer[25];
    sprintf(buffer, "%d", g_score);
    attrset(COLOR_PAIR(2));
    snake_write_text(g_height + 1, 9, buffer);

}
예제 #2
0
파일: snake.c 프로젝트: g-d-l/snaker
// Draws the borders
void snake_draw_board(void) {
    int i;
    for (i = 0; i < g_height; i++) {
        snake_write_text(i, 0, "#");
        snake_write_text(i, g_width - 1, "#");
    }
    for (i = 1; i < g_width - 1; i++) {
        snake_write_text(0, i, "#");
        snake_write_text(g_height - 1, i, "#");
    }
    snake_write_text(g_height + 1, 2, "Score:");
}
예제 #3
0
파일: snake.c 프로젝트: g-d-l/snaker
// Draw the fruit somewhere randomly on the board
void snake_draw_fruit(void) {
    attrset(COLOR_PAIR(3));
    int idx;
    do {
        idx = rand() % (g_width * g_height);
        fruit = snake_index_to_coordinate(idx);
    }
    while(spaces[idx] || !snake_in_bounds(fruit));    
    snake_write_text(fruit.y, fruit.x, "F");
}
예제 #4
0
파일: snake.c 프로젝트: mnisjk/snake
// Handles moving the snake for each iteration
bool snake_move_player( pos head )
{
    attrset( COLOR_PAIR( 1 ) ) ;
    
    // Check if we ran into ourself
    int idx = snake_cooridinate_to_index( head );
    if( spaces[idx] )
        snake_game_over( );
    spaces[idx] = true; // Mark the space as occupied
    enqueue( head );
    g_score += 10;
    
    // Check if we're eating the fruit
    if( head.x == fruit.x && head.y == fruit.y )
    {
        snake_draw_fruit( );
        g_score += 1000;
    }
    else
    {
        // Handle the tail
        pos *tail = dequeue( );
        spaces[snake_cooridinate_to_index( *tail )] = false;
        snake_write_text( tail->y, tail->x, " " );
    }
    
    // Draw the new head 
    snake_write_text( head.y, head.x, "S" );
    
    // Update scoreboard
    char buffer[25];
    sprintf( buffer, "%d", g_score );
    attrset( COLOR_PAIR( 2 ) );
    snake_write_text( g_height+1, 9, buffer );

}