pvjc20/final/game.c

48 lines
1.5 KiB
C
Raw Normal View History

2020-05-21 16:06:40 +00:00
#include <curses.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include "game.h"
#include "commands.h"
// Start is called one in the beginning
struct game* init_game(){
// Allocate memory for the state
struct game* st = calloc(1,(sizeof(struct game)));
// Initialize state
st->score = 0;
st->x = (rand() % (COLS - 5) + 2) / 2 * 2;
st->y = rand() % (LINES - 5) + 2;
// Store pointer to the state to the world variable
return st;
}
// It should modify the state and draw it.
int world_event(struct game* game){
//Wait for input to start the game
do{
game->direction = getch();
}while(game->direction != 'w' && game->direction != 'a' && game->direction != 's' && game->direction != 'd');
for(int i = -1; i < 2; i++){
for(int q = -2; q < 4; q += 2){
mvaddch(game->y + i, game->x + q, ' ');
}
}
//The loop of the game
while(1){
if(rand() % 10 == 0){
spawn_blocks(game);
move(game->y, game->x);
}
int save = game->direction;
flushinp();
game->direction = getch();
//If wrong input- ignore it and change to the old one
if(game->direction != 'w' && game->direction != 'a' && game->direction != 's' && game->direction != 'd' && game->direction != 'q') game->direction = save;
if(game->direction == 'q') break;
if(movement(game) == 0) break;
game->score += 1;
}
getch();
game_over(game);
}