a5
This commit is contained in:
parent
5db238596a
commit
b75fa3ccba
125
a5/game.c
Normal file
125
a5/game.c
Normal file
@ -0,0 +1,125 @@
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "game.h"
|
||||
|
||||
#define MOUSE_COUNT 5
|
||||
|
||||
struct game {
|
||||
int catx;
|
||||
int caty;
|
||||
|
||||
int mousex[MOUSE_COUNT];
|
||||
int mousey[MOUSE_COUNT];
|
||||
|
||||
int alive[MOUSE_COUNT];
|
||||
|
||||
int score;
|
||||
|
||||
char message[100];
|
||||
};
|
||||
|
||||
void* init_game() {
|
||||
|
||||
srand(time(NULL));
|
||||
|
||||
struct game* game = calloc(1, sizeof(struct game));
|
||||
|
||||
game->catx = 10;
|
||||
game->caty = 10;
|
||||
|
||||
for (int i = 0; i < MOUSE_COUNT; i++) {
|
||||
game->mousex[i] = rand() % 20;
|
||||
game->mousey[i] = rand() % 20;
|
||||
game->alive[i] = 1;
|
||||
}
|
||||
|
||||
return game;
|
||||
}
|
||||
|
||||
int world_event(struct event* event, void* g) {
|
||||
|
||||
struct game* game = (struct game*)g;
|
||||
|
||||
if (event->type == EVENT_KEY) {
|
||||
|
||||
if (event->key == KEY_UP) {
|
||||
game->caty--;
|
||||
}
|
||||
|
||||
if (event->key == KEY_DOWN) {
|
||||
game->caty++;
|
||||
}
|
||||
|
||||
if (event->key == KEY_LEFT) {
|
||||
game->catx--;
|
||||
}
|
||||
|
||||
if (event->key == KEY_RIGHT) {
|
||||
game->catx++;
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < MOUSE_COUNT; i++) {
|
||||
|
||||
if (game->alive[i] == 1) {
|
||||
|
||||
if (game->catx == game->mousex[i] &&
|
||||
game->caty == game->mousey[i]) {
|
||||
|
||||
game->alive[i] = 0;
|
||||
game->score++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for (int i = 0; i < MOUSE_COUNT; i++) {
|
||||
|
||||
if (game->alive[i] == 1) {
|
||||
|
||||
int m = rand() % 4;
|
||||
|
||||
if (m == 0) {
|
||||
game->mousex[i]++;
|
||||
}
|
||||
|
||||
if (m == 1) {
|
||||
game->mousex[i]--;
|
||||
}
|
||||
|
||||
if (m == 2) {
|
||||
game->mousey[i]++;
|
||||
}
|
||||
|
||||
if (m == 3) {
|
||||
game->mousey[i]--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
clear();
|
||||
|
||||
set_cell('c', game->catx, game->caty);
|
||||
|
||||
// vykreslenie myšiek
|
||||
for (int i = 0; i < MOUSE_COUNT; i++) {
|
||||
|
||||
if (game->alive[i] == 1) {
|
||||
set_cell('m', game->mousex[i], game->mousey[i]);
|
||||
}
|
||||
}
|
||||
|
||||
// koniec hry
|
||||
if (game->score == MOUSE_COUNT) {
|
||||
|
||||
strcpy(game->message, "Koniec hry");
|
||||
|
||||
set_str(game->message, 1, 1);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user