Compare commits
No commits in common. "3af2f2fd21f4b9a08e093a6d27f55c78f7eb6760" and "97aac296262d6ffddd75d6a993c4f57c1eb2e9aa" have entirely different histories.
3af2f2fd21
...
97aac29626
5 changed files with 68 additions and 88 deletions
|
@ -5,6 +5,5 @@ project('playergame', 'c',
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
cursesdep = dependency('curses')
|
cursesdep = dependency('curses')
|
||||||
#pdcursesdep = [dependency('pdcurses'), dependency('SDL')]
|
|
||||||
executable('playergame', 'src/main.c', dependencies: cursesdep)
|
executable('playergame', 'src/main.c', dependencies: cursesdep)
|
||||||
|
|
||||||
|
|
114
src/main.c
114
src/main.c
|
@ -3,68 +3,25 @@
|
||||||
#include "linux.h" //TODO make this detect and change depending on os
|
#include "linux.h" //TODO make this detect and change depending on os
|
||||||
#include "maptest.h"
|
#include "maptest.h"
|
||||||
#include "map.h"
|
#include "map.h"
|
||||||
//######################################################
|
|
||||||
//######################################################
|
|
||||||
//######################################################
|
|
||||||
//HOLY FUCK MOVE THIS NOW!!! TODO
|
|
||||||
//HOLY FUCK MOVE THIS NOW!!! TODO
|
|
||||||
//HOLY FUCK MOVE THIS NOW!!! TODO
|
|
||||||
//HOLY FUCK MOVE THIS NOW!!! TODO
|
|
||||||
//HOLY FUCK MOVE THIS NOW!!! TODO
|
|
||||||
//HOLY FUCK MOVE THIS NOW!!! TODO
|
|
||||||
//HOLY FUCK MOVE THIS NOW!!! TODO
|
|
||||||
//HOLY FUCK MOVE THIS NOW!!! TODO
|
|
||||||
//HOLY FUCK MOVE THIS NOW!!! TODO
|
|
||||||
struct entity {
|
|
||||||
int x;
|
|
||||||
int y;
|
|
||||||
int xold; //i kinda dont like tbid xold yold shit
|
|
||||||
int yold;
|
|
||||||
char under_char; //the char that is under the entity so when it moves off of it it wont be erased
|
|
||||||
char under_charold;
|
|
||||||
}
|
|
||||||
player = {0, 0, 0, 0, ' ', ' '},
|
|
||||||
enemy = {24, 16, 0, 0, ' ', ' '},
|
|
||||||
debugent_x = {0, 0, 0, 0, ' ', ' '},
|
|
||||||
debugent_y = {0, 0, 0, 0, ' ', ' '};
|
|
||||||
|
|
||||||
//HOLY FUCK MOVE THIS NOW!!! TODO
|
|
||||||
//HOLY FUCK MOVE THIS NOW!!! TODO
|
|
||||||
//HOLY FUCK MOVE THIS NOW!!! TODO
|
|
||||||
//HOLY FUCK MOVE THIS NOW!!! TODO
|
|
||||||
//HOLY FUCK MOVE THIS NOW!!! TODO
|
|
||||||
//HOLY FUCK MOVE THIS NOW!!! TODO
|
|
||||||
//HOLY FUCK MOVE THIS NOW!!! TODO
|
|
||||||
//HOLY FUCK MOVE THIS NOW!!! TODO
|
|
||||||
//HOLY FUCK MOVE THIS NOW!!! TODO
|
|
||||||
//HOLY FUCK MOVE THIS NOW!!! TODO
|
|
||||||
//HOLY FUCK MOVE THIS NOW!!! TODO
|
|
||||||
//HOLY FUCK MOVE THIS NOW!!! TODO
|
|
||||||
//HOLY FUCK MOVE THIS NOW!!! TODO
|
|
||||||
//######################################################
|
|
||||||
//######################################################
|
|
||||||
//######################################################
|
|
||||||
//######################################################
|
|
||||||
|
|
||||||
#include "movement.h"
|
#include "movement.h"
|
||||||
int scrwidth = 80;
|
int scrwidth = 80;
|
||||||
int scrheight = 40;
|
int scrheight = 40;
|
||||||
|
|
||||||
int render_border (int width, int height) {
|
int render_border (int width, int height) {
|
||||||
// width++;
|
width++;
|
||||||
// height--;
|
height++;
|
||||||
|
|
||||||
// int widthold = width;
|
// int widthold = width;
|
||||||
int heightold = height;
|
int heightold = height;
|
||||||
|
|
||||||
|
|
||||||
while(height >= 0){
|
while(height > 0){
|
||||||
zom_putcharat(width, height, '&');
|
zom_putcharat(width, height, '&');
|
||||||
height--;
|
height--;
|
||||||
}
|
}
|
||||||
height = heightold;
|
height = heightold;
|
||||||
|
|
||||||
while(width >= 0){
|
while(width > 0){
|
||||||
zom_putcharat(width, height, '&');
|
zom_putcharat(width, height, '&');
|
||||||
width--;
|
width--;
|
||||||
}
|
}
|
||||||
|
@ -82,6 +39,19 @@ int main( int argc, char *argv[] ) { //yoinked from the internet argc is number
|
||||||
//here it js being stolen from curses
|
//here it js being stolen from curses
|
||||||
bool gamerun = true;
|
bool gamerun = true;
|
||||||
|
|
||||||
|
struct entity {
|
||||||
|
int x;
|
||||||
|
int y;
|
||||||
|
int xold; //i kinda dont like tbid xold yold shit
|
||||||
|
int yold;
|
||||||
|
char under_char; //the char that is under the entity so when it moves off of it it wont be erased
|
||||||
|
char under_charold;
|
||||||
|
}
|
||||||
|
|
||||||
|
player = {0, 0, 0, 0, ' ', ' '},
|
||||||
|
enemy = {24, 16, 0, 0, ' ', ' '},
|
||||||
|
debugent_x = {0, 0, 0, 0, ' ', ' '},
|
||||||
|
debugent_y = {0, 0, 0, 0, ' ', ' '};
|
||||||
|
|
||||||
zom_scrinit();
|
zom_scrinit();
|
||||||
|
|
||||||
|
@ -107,19 +77,31 @@ int main( int argc, char *argv[] ) { //yoinked from the internet argc is number
|
||||||
|
|
||||||
switch (zom_getch()) {
|
switch (zom_getch()) {
|
||||||
case 'a':
|
case 'a':
|
||||||
attempt_move(&player, 1, 2);
|
if (attempt_move(player.x, player.y, 1, 2) == 1) {
|
||||||
|
player.x--;
|
||||||
|
player.under_char = readmap(player.x, player.y);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'w':
|
case 'w':
|
||||||
attempt_move(&player, 1, 1);
|
if (attempt_move(player.x, player.y, 1, 1) == 1) {
|
||||||
|
player.y--;
|
||||||
|
player.under_char = readmap(player.x, player.y);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'd':
|
case 'd':
|
||||||
attempt_move(&player, 1, 0);
|
if (attempt_move(player.x, player.y, 1, 0) == 1) {
|
||||||
|
player.x++;
|
||||||
|
player.under_char = readmap(player.x, player.y);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 's':
|
case 's':
|
||||||
attempt_move(&player, 1, 3);
|
if (attempt_move(player.x, player.y, 1, 3) == 1) {
|
||||||
|
player.y++;
|
||||||
|
player.under_char = readmap(player.x, player.y);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'q':
|
case 'q':
|
||||||
|
@ -131,13 +113,12 @@ int main( int argc, char *argv[] ) { //yoinked from the internet argc is number
|
||||||
break;
|
break;
|
||||||
//debug case
|
//debug case
|
||||||
case 'l':
|
case 'l':
|
||||||
// debugent_x.x++;
|
debugent_x.x++;
|
||||||
debugent_y.y++;
|
debugent_y.y++;
|
||||||
all_entity(&debugent_x);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
//game logic not kb dependent
|
//game logic not kb dependent
|
||||||
if ((enemy.x == player.x) && (enemy.y == player.y)) {
|
if ((enemy.x == player.x) && (enemy.y == player.y)){
|
||||||
zom_screxit();
|
zom_screxit();
|
||||||
puts("you lose :(");
|
puts("you lose :(");
|
||||||
return 0; //TODO fix this this should not be here...
|
return 0; //TODO fix this this should not be here...
|
||||||
|
@ -152,6 +133,31 @@ int main( int argc, char *argv[] ) { //yoinked from the internet argc is number
|
||||||
} else {enemy.y++;}
|
} else {enemy.y++;}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
TODO clean this shit up
|
||||||
|
this should apply to everything not just the player
|
||||||
|
it should also be generalized to all entitys using a for loop or somthing
|
||||||
|
*/
|
||||||
|
|
||||||
|
//anti go off screen
|
||||||
|
if (player.x < 0) {
|
||||||
|
player.x = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (player.x > 80) {
|
||||||
|
player.x = 80;
|
||||||
|
}
|
||||||
|
if (player.y < 0) {
|
||||||
|
player.y = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (player.y > 40) {
|
||||||
|
player.y = 40;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
prevtime = currenttime;
|
prevtime = currenttime;
|
||||||
}
|
}
|
||||||
|
|
14
src/map.h
14
src/map.h
|
@ -1,22 +1,10 @@
|
||||||
char readmap(int x, int y) {
|
char readmap(int x, int y) {
|
||||||
if (x > (mapwidth - 1)) {
|
|
||||||
return '&';
|
|
||||||
}
|
|
||||||
if (y > (mapheight - 1)) {
|
|
||||||
return '&';
|
|
||||||
}
|
|
||||||
if (x < 0) {
|
|
||||||
return '&';
|
|
||||||
}
|
|
||||||
if (y < 0) {
|
|
||||||
return '&';
|
|
||||||
}
|
|
||||||
|
|
||||||
return maptest[y][x]; //TODO make it be able to rrad feom multiple maps but idk how to do that
|
return maptest[y][x]; //TODO make it be able to rrad feom multiple maps but idk how to do that
|
||||||
}
|
}
|
||||||
int render_map(void) {
|
int render_map(void) {
|
||||||
int x;
|
int x;
|
||||||
int y;
|
int y;
|
||||||
|
//I think this is broken but maybe with with the border code idk TODO fix
|
||||||
for(y = 0; y < 40; y++) {
|
for(y = 0; y < 40; y++) {
|
||||||
for(x = 0; x < 80; x++) {
|
for(x = 0; x < 80; x++) {
|
||||||
zom_putcharat(x, y, readmap(x, y));
|
zom_putcharat(x, y, readmap(x, y));
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
//TODO make this read from a file instead of from this array pile
|
//TODO make this read from a file instead of from this array pile
|
||||||
int mapwidth = 80;
|
|
||||||
int mapheight = 40;
|
|
||||||
char maptest[40][80] = {
|
char maptest[40][80] = {
|
||||||
{'1', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '2'},
|
{'1', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '2'},
|
||||||
{'2', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '2'},
|
{'2', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '2'},
|
||||||
|
|
|
@ -1,53 +1,42 @@
|
||||||
//TODO fix this bug
|
//TODO fix this bug
|
||||||
//there is a bug with the units arg
|
//there is a bug with the units arg
|
||||||
//it doesnt check weather EVERY spot in its path is vaiid so it allows the possibity of going thru walls if units is more than 1
|
//it doesnt check weather EVERY spot in its path is vaiid so it allows the possibity of going thru walls if units is more than 1
|
||||||
int attempt_move(struct entity *fuck, int units, int direction) {
|
int attempt_move(int x, int y, int units, int direction) {
|
||||||
int xfuture = fuck->x;
|
int xfuture = x;
|
||||||
int yfuture = fuck->y;
|
int yfuture = y;
|
||||||
switch (direction) {
|
switch (direction) {
|
||||||
case 0: // right
|
case 0: // right
|
||||||
xfuture = xfuture + units;
|
xfuture = xfuture + units;
|
||||||
if (readmap(xfuture, fuck->y) == '&') {
|
if (readmap(xfuture, y) == '&') {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
fuck->x++;
|
|
||||||
fuck->under_char = readmap(fuck->x, fuck->y);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
case 1: // up
|
case 1: // up
|
||||||
yfuture = yfuture - units; // we subtract because moving up
|
yfuture = yfuture - units; // we subtract because moving up
|
||||||
if (readmap(fuck->x, yfuture) == '&') {
|
if (readmap(x, yfuture) == '&') {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
fuck->y--;
|
|
||||||
fuck->under_char = readmap(fuck->x, fuck->y);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
case 2: // left
|
case 2: // left
|
||||||
xfuture = xfuture - units;
|
xfuture = xfuture - units;
|
||||||
if (readmap(xfuture, fuck->y) == '&') {
|
if (readmap(xfuture, y) == '&') {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
fuck->x--;
|
|
||||||
fuck->under_char = readmap(fuck->x, fuck->y);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
case 3: // down
|
case 3: // down
|
||||||
yfuture = yfuture + units;
|
yfuture = yfuture + units;
|
||||||
if (readmap(fuck->x, yfuture) == '&') {
|
if (readmap(x, yfuture) == '&') {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
fuck->y++;
|
|
||||||
fuck->under_char = readmap(fuck->x, fuck->y);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
void all_entity(struct entity *fuck) {
|
|
||||||
fuck->x++;
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in a new issue