beautify
This commit is contained in:
parent
daf638d060
commit
c5af2046e2
211
main.c
211
main.c
@ -1,10 +1,17 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
|
||||||
#include <time.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#include <ncurses.h>
|
#include <ncurses.h>
|
||||||
|
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
uint16_t Hole_Div = 40;
|
uint16_t Hole_Div = 40;
|
||||||
uint16_t SCR_X;
|
uint16_t SCR_X;
|
||||||
uint16_t SCR_Y;
|
uint16_t SCR_Y;
|
||||||
@ -44,116 +51,113 @@ uint16_t goal_y = 0;
|
|||||||
uint16_t rng_tmp = 0;
|
uint16_t rng_tmp = 0;
|
||||||
uint16_t orient = 0;
|
uint16_t orient = 0;
|
||||||
uint16_t inputs_tmp = 0;
|
uint16_t inputs_tmp = 0;
|
||||||
struct Object *rendered;
|
struct Object * rendered;
|
||||||
struct Bullet *bullets;
|
struct Bullet * bullets;
|
||||||
char *playfield;
|
char * playfield;
|
||||||
int randomInt(int lower, int upper) {
|
int randomInt(int lower, int upper) {
|
||||||
return rand() % (upper - lower + 1) + lower;
|
return rand() % (upper - lower + 1) + lower;
|
||||||
}
|
}
|
||||||
void generate_maze(){
|
void generate_maze() {
|
||||||
//fill playfield with blank
|
//fill playfield with blank
|
||||||
for (uint16_t y = 0; y < SCR_Y; y++) {
|
for (uint16_t y = 0; y < SCR_Y; y++) {
|
||||||
for (uint16_t x = 0; x < SCR_X; x++) {
|
for (uint16_t x = 0; x < SCR_X; x++) {
|
||||||
playfield[y*SCR_X + x] = blank_char;
|
playfield[y * SCR_X + x] = blank_char;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//fill every other row with walls
|
//fill every other row with walls
|
||||||
for (uint16_t y = 0; y < SCR_Y; y += 2) {
|
for (uint16_t y = 0; y < SCR_Y; y += 2) {
|
||||||
for (uint16_t x = 0; x < SCR_X; x++) {
|
for (uint16_t x = 0; x < SCR_X; x++) {
|
||||||
playfield[y*SCR_X + x] = wall_char;
|
playfield[y * SCR_X + x] = wall_char;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//punch holes in the walls
|
//punch holes in the walls
|
||||||
for (uint16_t y = 0; y < SCR_Y; y++) {
|
for (uint16_t y = 0; y < SCR_Y; y++) {
|
||||||
//punch holes in the walls depending on the SCR_X
|
//punch holes in the walls depending on the SCR_X
|
||||||
for (uint16_t ix = 0; ix < ((SCR_X-(SCR_X%Hole_Div))/Hole_Div); ix += 1) {
|
for (uint16_t ix = 0; ix < ((SCR_X - (SCR_X % Hole_Div)) / Hole_Div); ix += 1) {
|
||||||
rng_tmp = randomInt(1, SCR_X);
|
rng_tmp = randomInt(1, SCR_X);
|
||||||
|
|
||||||
playfield[y*SCR_X + rng_tmp] = blank_char;
|
playfield[y * SCR_X + rng_tmp] = blank_char;
|
||||||
}
|
}
|
||||||
if (orient == 0) {
|
if (orient == 0) {
|
||||||
if(y == 0){
|
if (y == 0) {
|
||||||
|
|
||||||
playfield[y*SCR_X + rng_tmp] = goal_char;
|
playfield[y * SCR_X + rng_tmp] = goal_char;
|
||||||
goal_x = rng_tmp;
|
goal_x = rng_tmp;
|
||||||
goal_y = y;
|
goal_y = y;
|
||||||
}
|
}
|
||||||
if (y == SCR_Y -1){
|
if (y == SCR_Y - 1) {
|
||||||
|
|
||||||
playfield[y*SCR_X + rng_tmp] = player_char;
|
playfield[y * SCR_X + rng_tmp] = player_char;
|
||||||
player_x = rng_tmp;
|
player_x = rng_tmp;
|
||||||
player_y = y;
|
player_y = y;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if(y == SCR_Y -1){
|
if (y == SCR_Y - 1) {
|
||||||
|
|
||||||
playfield[y*SCR_X + rng_tmp] = goal_char;
|
playfield[y * SCR_X + rng_tmp] = goal_char;
|
||||||
goal_x = rng_tmp;
|
goal_x = rng_tmp;
|
||||||
goal_y = y;
|
goal_y = y;
|
||||||
}
|
}
|
||||||
if (y == 0){
|
if (y == 0) {
|
||||||
|
|
||||||
playfield[y*SCR_X + rng_tmp] = player_char;
|
playfield[y * SCR_X + rng_tmp] = player_char;
|
||||||
player_x = rng_tmp;
|
player_x = rng_tmp;
|
||||||
player_y = y;
|
player_y = y;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void render_maze(){
|
void render_maze() {
|
||||||
//fill rendered with blank
|
//fill rendered with blank
|
||||||
for (uint16_t y = 0; y < SCR_Y; y++) {
|
for (uint16_t y = 0; y < SCR_Y; y++) {
|
||||||
for (uint16_t x = 0; x < SCR_X; x++) {
|
for (uint16_t x = 0; x < SCR_X; x++) {
|
||||||
|
|
||||||
rendered[y*SCR_X + x].letter = blank_char;
|
rendered[y * SCR_X + x].letter = blank_char;
|
||||||
rendered[y*SCR_X + x].color = blank_color;
|
rendered[y * SCR_X + x].color = blank_color;
|
||||||
rendered[y*SCR_X + x].x = x;
|
rendered[y * SCR_X + x].x = x;
|
||||||
rendered[y*SCR_X + x].y = y;
|
rendered[y * SCR_X + x].y = y;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (uint16_t y = 0; y < SCR_Y; y++) {
|
for (uint16_t y = 0; y < SCR_Y; y++) {
|
||||||
for (uint16_t x = 0; x < SCR_X; x++) {
|
for (uint16_t x = 0; x < SCR_X; x++) {
|
||||||
|
|
||||||
letter = playfield[(y)*SCR_X + (x)];
|
letter = playfield[(y) * SCR_X + (x)];
|
||||||
|
|
||||||
rendered[(y)*SCR_X + (x)].letter = letter;
|
rendered[(y) * SCR_X + (x)].letter = letter;
|
||||||
|
|
||||||
rendered[(y)*SCR_X + (x)].x = x;
|
rendered[(y) * SCR_X + (x)].x = x;
|
||||||
|
|
||||||
rendered[(y)*SCR_X + (x)].y = y;
|
rendered[(y) * SCR_X + (x)].y = y;
|
||||||
if (letter == goal_char){
|
if (letter == goal_char) {
|
||||||
|
|
||||||
rendered[(y)*SCR_X + (x)].color = goal_color;
|
rendered[(y) * SCR_X + (x)].color = goal_color;
|
||||||
}
|
} else if (letter == player_char) {
|
||||||
else if (letter == player_char){
|
|
||||||
|
rendered[(y) * SCR_X + (x)].color = player_color;
|
||||||
rendered[(y)*SCR_X + (x)].color = player_color;
|
} else if (letter == blank_char) {
|
||||||
}
|
|
||||||
else if (letter == blank_char){
|
rendered[(y) * SCR_X + (x)].color = blank_color;
|
||||||
|
} else if (letter == wall_char) {
|
||||||
rendered[(y)*SCR_X + (x)].color = blank_color;
|
|
||||||
}
|
rendered[(y) * SCR_X + (x)].color = wall_color;
|
||||||
else if (letter == wall_char){
|
|
||||||
|
|
||||||
rendered[(y)*SCR_X + (x)].color = wall_color;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void draw_maze(){
|
void draw_maze() {
|
||||||
for (uint16_t y = 0; y < SCR_Y; y++) {
|
for (uint16_t y = 0; y < SCR_Y; y++) {
|
||||||
for (uint16_t x = 0; x < SCR_X; x++) {
|
for (uint16_t x = 0; x < SCR_X; x++) {
|
||||||
|
|
||||||
attron(COLOR_PAIR(rendered[(y)*SCR_X + (x)].color));
|
attron(COLOR_PAIR(rendered[(y) * SCR_X + (x)].color));
|
||||||
|
|
||||||
mvaddch(y, x, rendered[(y)*SCR_X + (x)].letter);
|
mvaddch(y, x, rendered[(y) * SCR_X + (x)].letter);
|
||||||
|
|
||||||
attroff(COLOR_PAIR(rendered[(y)*SCR_X + (x)].color));
|
attroff(COLOR_PAIR(rendered[(y) * SCR_X + (x)].color));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
refresh();
|
refresh();
|
||||||
}
|
}
|
||||||
void init(){
|
void init() {
|
||||||
initscr();
|
initscr();
|
||||||
//get screen size
|
//get screen size
|
||||||
getmaxyx(stdscr, SCR_Y, SCR_X);
|
getmaxyx(stdscr, SCR_Y, SCR_X);
|
||||||
@ -174,74 +178,74 @@ void init(){
|
|||||||
clear();
|
clear();
|
||||||
srand(time(NULL));
|
srand(time(NULL));
|
||||||
}
|
}
|
||||||
int keyinput(){
|
int keyinput() {
|
||||||
inchar = getch();
|
inchar = getch();
|
||||||
if (inchar == 'q'){
|
if (inchar == 'q') {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if (inchar == 'w'){
|
if (inchar == 'w') {
|
||||||
//if (playfield[player_y - 1][player_x] == blank_char){
|
//if (playfield[player_y - 1][player_x] == blank_char){
|
||||||
if (player_y > 0&&playfield[(player_y-1)*SCR_X + player_x] == blank_char){
|
if (player_y > 0 && playfield[(player_y - 1) * SCR_X + player_x] == blank_char) {
|
||||||
|
|
||||||
playfield[(player_y)*SCR_X + player_x] = blank_char;
|
playfield[(player_y) * SCR_X + player_x] = blank_char;
|
||||||
player_y--;
|
player_y--;
|
||||||
|
|
||||||
playfield[(player_y)*SCR_X + player_x] = player_char;
|
playfield[(player_y) * SCR_X + player_x] = player_char;
|
||||||
//}else if (playfield[player_y - 1][player_x] == goal_char){
|
//}else if (playfield[player_y - 1][player_x] == goal_char){
|
||||||
}else if (playfield[(player_y-1)*SCR_X + player_x] == goal_char){
|
} else if (playfield[(player_y - 1) * SCR_X + player_x] == goal_char) {
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (inchar == 'a'){
|
if (inchar == 'a') {
|
||||||
//if (playfield[player_y][player_x - 1] == blank_char){
|
//if (playfield[player_y][player_x - 1] == blank_char){
|
||||||
if (player_x > 0 &&playfield[(player_y)*SCR_X + (player_x-1)] == blank_char){
|
if (player_x > 0 && playfield[(player_y) * SCR_X + (player_x - 1)] == blank_char) {
|
||||||
|
|
||||||
playfield[(player_y)*SCR_X + player_x] = blank_char;
|
playfield[(player_y) * SCR_X + player_x] = blank_char;
|
||||||
player_x--;
|
player_x--;
|
||||||
|
|
||||||
playfield[(player_y)*SCR_X + player_x] = player_char;
|
playfield[(player_y) * SCR_X + player_x] = player_char;
|
||||||
}
|
}
|
||||||
//else if (playfield[player_y][player_x - 1] == goal_char){
|
//else if (playfield[player_y][player_x - 1] == goal_char){
|
||||||
else if (playfield[(player_y)*SCR_X + (player_x-1)] == goal_char){
|
else if (playfield[(player_y) * SCR_X + (player_x - 1)] == goal_char) {
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (inchar == 's'){
|
if (inchar == 's') {
|
||||||
//if (playfield[player_y + 1][player_x] == blank_char){
|
//if (playfield[player_y + 1][player_x] == blank_char){
|
||||||
if (player_x < SCR_X - 1 &&playfield[(player_y+1)*SCR_X + player_x] == blank_char){
|
if (player_x < SCR_X - 1 && playfield[(player_y + 1) * SCR_X + player_x] == blank_char) {
|
||||||
playfield[(player_y)*SCR_X + player_x] = blank_char;
|
playfield[(player_y) * SCR_X + player_x] = blank_char;
|
||||||
player_y++;
|
player_y++;
|
||||||
playfield[(player_y)*SCR_X + player_x] = player_char;
|
playfield[(player_y) * SCR_X + player_x] = player_char;
|
||||||
// }else if (playfield[player_y + 1][player_x] == goal_char){
|
// }else if (playfield[player_y + 1][player_x] == goal_char){
|
||||||
}else if (playfield[(player_y+1)*SCR_X + player_x] == goal_char){
|
} else if (playfield[(player_y + 1) * SCR_X + player_x] == goal_char) {
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
if (inchar == 'd'){
|
if (inchar == 'd') {
|
||||||
// if (playfield[player_y][player_x + 1] == blank_char){
|
// if (playfield[player_y][player_x + 1] == blank_char){
|
||||||
if (player_x < SCR_X - 1 &&playfield[(player_y)*SCR_X + (player_x+1)] == blank_char){
|
if (player_x < SCR_X - 1 && playfield[(player_y) * SCR_X + (player_x + 1)] == blank_char) {
|
||||||
playfield[(player_y)*SCR_X + player_x] = blank_char;
|
playfield[(player_y) * SCR_X + player_x] = blank_char;
|
||||||
player_x++;
|
player_x++;
|
||||||
playfield[(player_y)*SCR_X + player_x] = player_char;
|
playfield[(player_y) * SCR_X + player_x] = player_char;
|
||||||
}
|
}
|
||||||
//else if (playfield[player_y][player_x + 1] == goal_char){
|
//else if (playfield[player_y][player_x + 1] == goal_char){
|
||||||
else if (playfield[(player_y)*SCR_X + (player_x+1)] == goal_char){
|
else if (playfield[(player_y) * SCR_X + (player_x + 1)] == goal_char) {
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int main(int argc, char *argv[]){
|
int main(int argc, char * argv[]) {
|
||||||
init();
|
init();
|
||||||
//parse the command line arguments for width and height
|
//parse the command line arguments for width and height
|
||||||
if (argc == 3){
|
if (argc == 3) {
|
||||||
SCR_X = atoi(argv[1]);
|
SCR_X = atoi(argv[1]);
|
||||||
SCR_Y = atoi(argv[2]);
|
SCR_Y = atoi(argv[2]);
|
||||||
}
|
}
|
||||||
if (argc == 2){
|
if (argc == 2) {
|
||||||
Hole_Div = atoi(argv[1]);
|
Hole_Div = atoi(argv[1]);
|
||||||
}
|
}
|
||||||
if (argc == 4){
|
if (argc == 4) {
|
||||||
SCR_X = atoi(argv[1]);
|
SCR_X = atoi(argv[1]);
|
||||||
SCR_Y = atoi(argv[2]);
|
SCR_Y = atoi(argv[2]);
|
||||||
Hole_Div = atoi(argv[3]);
|
Hole_Div = atoi(argv[3]);
|
||||||
@ -249,14 +253,13 @@ int main(int argc, char *argv[]){
|
|||||||
generate_maze();
|
generate_maze();
|
||||||
render_maze();
|
render_maze();
|
||||||
draw_maze();
|
draw_maze();
|
||||||
while (1)
|
while (1) {
|
||||||
{
|
|
||||||
inputs_tmp = keyinput();
|
inputs_tmp = keyinput();
|
||||||
if (inputs_tmp == 1){
|
if (inputs_tmp == 1) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (inputs_tmp == 2){
|
if (inputs_tmp == 2) {
|
||||||
if (orient == 0){
|
if (orient == 0) {
|
||||||
orient = 1;
|
orient = 1;
|
||||||
} else {
|
} else {
|
||||||
orient = 0;
|
orient = 0;
|
||||||
@ -265,7 +268,7 @@ int main(int argc, char *argv[]){
|
|||||||
}
|
}
|
||||||
render_maze();
|
render_maze();
|
||||||
draw_maze();
|
draw_maze();
|
||||||
usleep(round(1000000/FPS));
|
usleep(round(1000000 / FPS));
|
||||||
}
|
}
|
||||||
endwin();
|
endwin();
|
||||||
free(playfield);
|
free(playfield);
|
||||||
|
Loading…
Reference in New Issue
Block a user