Compare commits

..

8 Commits

Author SHA1 Message Date
Nakidai f89b46a60d
Add help 2023-10-30 03:27:47 +03:00
Nakidai 42bddb2ee4
Fix configure 2023-10-30 03:17:54 +03:00
Nakidai b51afc628f
Autocreate config dir attempt 2 2023-10-30 03:15:24 +03:00
Nakidai d241321aff
Autocreate config dir 2023-10-30 03:10:21 +03:00
Nakidai 40dc962d5e
Add code configuraction in configure 2023-10-30 03:09:32 +03:00
Nakidai ad64867b40
Remove config from make clean 2023-10-30 03:05:29 +03:00
Nakidai 35669794a7
Move config to config/ 2023-10-30 03:00:39 +03:00
Nakidai d6eef4c404
Add configure for make 2023-10-30 02:33:30 +03:00
11 changed files with 33 additions and 33 deletions

1
.gitignore vendored
View File

@ -1,2 +1,3 @@
obj/
game
config/

View File

@ -1,6 +1,11 @@
include config.mk
include config/config.mk
INCLUDE = -Iinclude
OUT = game
CFLAGS =
LDFLAGS =
INCLUDE = -Iinclude -Iconfig
CC = cc
LD = ld
RM = rm -f
SRCDIR = src
OBJDIR = obj

View File

@ -1,4 +0,0 @@
CC = cc
CFLAGS =
LDFLAGS =
OUT = game

14
configure vendored
View File

@ -14,6 +14,7 @@ then
fi
CC=${CC:-cc}
RM=${RM:-rm -f}
CFLAGS=${CFLAGS:-}
LDFLAGS=${LDFLAGS:-}
OUT=${OUT:-game}
@ -23,6 +24,7 @@ DEFY=${DEFY:-0}
echo "Makefile configuration:"
echo "Compiler: $CC"
echo "Remove: $RM"
echo "CFLAGS: $CFLAGS"
echo "LDFLAGS: $LDFLAGS"
echo "Out file: $OUT"
@ -32,11 +34,19 @@ echo "Size: $SIZE"
echo "Start x: $DEFX"
echo "Start y: $DEFY"
if ! test -d config; then
if test -f config; then
rm config
fi
mkdir config
fi
echo "CC = $CC
RM = $RM
CFLAGS = $CFLAGS
LDFLAGS = $LDFLAGS
OUT = $OUT" > config.mk
OUT = $OUT" > config/config.mk
echo "#define SIZE $SIZE
#define DEFX $DEFX
#define DEFY $DEFY" > include/config.h
#define DEFY $DEFY" > config/config.h

View File

@ -1,3 +0,0 @@
#define SIZE 10
#define DEFX 0
#define DEFY 0

View File

@ -9,6 +9,6 @@ typedef struct input_args_t
bool *alive;
} InputArgs;
int input(void *vargp);
void *input(void *vargp);
#endif /* __INPUT_H__ */

View File

@ -1,13 +1,13 @@
#ifndef __SCREEN_H__
#define __SCREEN_H__
typedef char Point;
typedef struct screen_t
{
int width;
int height;
Point *screen;
char *screen;
} Screen;
typedef char Point;
Screen *screenCreate(int width, int height, Point fill_value);
void screenFree(Screen *screen);

View File

@ -22,7 +22,7 @@ char getch(void)
return buf;
}
int input(void *vargp)
void *input(void *vargp)
{
char *out = ((InputArgs *)vargp)->out;
bool *alive = ((InputArgs *)vargp)->alive;
@ -31,5 +31,5 @@ int input(void *vargp)
{
*out = getch();
}
return 0;
return NULL;
}

View File

@ -1,7 +1,8 @@
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <threads.h>
#include <pthread.h>
#include <unistd.h>
#include <time.h>
#include "input.h"
@ -27,19 +28,13 @@ Food generateFood(Player *player)
return food;
}
void resetCoordinates(void)
{
printf("\e[1;1H\e[2J");
}
int main(int argc, char **argv)
{
srandom(time(NULL));
Player *player = playerCreate(DOWN, DEFX, DEFY, 0);
Screen *screen = screenCreate(SIZE, SIZE, ' ');
PlayerNode *node;
thrd_t input_thread;
int i;
pthread_t input_thread;
int head_x, head_y;
Food food = generateFood(player);
@ -47,7 +42,7 @@ int main(int argc, char **argv)
char *key = malloc(sizeof(char)); *key = 0;
InputArgs input_args = (InputArgs){ key, running };
thrd_create(&input_thread, input, &input_args);
pthread_create(&input_thread, NULL, input, &input_args);
while (*running)
{
switch (*key)
@ -62,6 +57,7 @@ int main(int argc, char **argv)
player->direction = DOWN; break;
case 'a':
player->direction = LEFT; break;
sleep(1);
}
if (playerDoTick(player, food))
@ -82,12 +78,9 @@ int main(int argc, char **argv)
screenSet(screen, ' ');
drawPlayer(player, screen);
*screenGetPoint(screen, food.x, food.y) = '@';
resetCoordinates();
screenShow(screen);
for (i = 0; i < SIZE*2; ++i) putchar('-');
printf("\nScore: %d\n", player->score);
thrd_sleep(&(struct timespec){.tv_sec=1}, NULL);
sleep(1);
}
return 0;
}

View File

@ -15,8 +15,6 @@ Player *playerCreate(Direction direction, int x, int y, int score)
player->head = head;
player->score = score;
player->direction = direction;
return player;
}
void playerFree(Player *player)
@ -36,7 +34,7 @@ bool playerCheckSelfCollision(Player *player)
PlayerNode *nodei, *nodej;
for (nodei = player->tail; nodei != NULL; nodei = nodei->next)
for (nodej = nodei->next; nodej != NULL; nodej = nodej->next)
if (nodei->x == nodej->x && nodei->y == nodej->y)
if (nodei->x == nodej->x && nodei->y == nodej->x)
return true;
return false;
}

View File

@ -44,7 +44,7 @@ void screenShow(Screen *screen)
}
}
void screenSet(Screen *screen, Point fill_value)
void screenSet(Screen *screen, char fill_value)
{
memset(screen->screen, fill_value, screen->width * screen->height * sizeof(char));
}