added playergame into its own repo
This commit is contained in:
parent
88fbd0c2d8
commit
80e6ca1a8a
1 changed files with 126 additions and 0 deletions
126
playergame.c
Normal file
126
playergame.c
Normal file
|
@ -0,0 +1,126 @@
|
|||
#include <stdio.h> //printf and shit
|
||||
#include <curses.h>
|
||||
#include <time.h>
|
||||
|
||||
|
||||
int main( int argc, char *argv[] ) { //yoinked from the internet argc is number of args and argv is a "array of arguments"
|
||||
clock_t prevtime, currenttime;
|
||||
prevtime = clock();
|
||||
int delay = 1000;
|
||||
int dosspin = 0;
|
||||
|
||||
|
||||
bool gamerun = true;
|
||||
|
||||
struct entity {
|
||||
int x;
|
||||
int y;
|
||||
int xold;
|
||||
int yold;
|
||||
}
|
||||
|
||||
player = {0, 0, 0, 0},
|
||||
enemy = {24, 16, 0, 0},
|
||||
debugent_x = {0, 0, 0, 0},
|
||||
debugent_y = {0, 0, 0, 0};
|
||||
|
||||
initscr();
|
||||
//cbreak();
|
||||
nodelay(stdscr, true);//cbreak would wait for you to press a key this doesnt
|
||||
noecho();
|
||||
|
||||
clear();
|
||||
|
||||
while(gamerun) {
|
||||
currenttime = clock();
|
||||
dosspin = clock() % 4;
|
||||
if ((currenttime - prevtime) > delay) {
|
||||
player.xold = player.x;
|
||||
player.yold = player.y;
|
||||
enemy.xold = enemy.x;
|
||||
enemy.yold = enemy.y;
|
||||
debugent_x.xold = debugent_x.x;
|
||||
debugent_x.yold = debugent_x.y;
|
||||
debugent_y.xold = debugent_y.x;
|
||||
debugent_y.yold = debugent_y.y;
|
||||
|
||||
switch (getch()) {
|
||||
case 'a':
|
||||
player.y--;
|
||||
break;
|
||||
|
||||
case 'w':
|
||||
player.x--;
|
||||
break;
|
||||
|
||||
case 'd':
|
||||
player.y++;
|
||||
break;
|
||||
|
||||
case 's':
|
||||
player.x++;
|
||||
break;
|
||||
|
||||
case 'q':
|
||||
gamerun = false;
|
||||
break;
|
||||
case 't':
|
||||
player.x = 9;
|
||||
player.y = 9;
|
||||
break;
|
||||
//debug case
|
||||
case 'l':
|
||||
debugent_x.x++;
|
||||
debugent_y.y++;
|
||||
break;
|
||||
}
|
||||
//game logic not kb dependent
|
||||
if ((enemy.x == player.x) && (enemy.y == player.y)){
|
||||
endwin();
|
||||
puts("you lose :(");
|
||||
return 0; //TODO fix this this should not be here...
|
||||
}
|
||||
//TODO fix enemy movement (it works but its kinda broken)
|
||||
if ((clock() % 100) == 1) {
|
||||
if (enemy.x > player.x) {
|
||||
enemy.x--;
|
||||
} else {enemy.x++;}
|
||||
if (enemy.y > player.y) {
|
||||
enemy.y--;
|
||||
} else {enemy.y++;}
|
||||
}
|
||||
prevtime = currenttime;
|
||||
}
|
||||
//entity rendering
|
||||
mvaddch(enemy.xold, enemy.yold, ' ');
|
||||
switch (dosspin) {
|
||||
case 0:
|
||||
mvaddch(enemy.x, enemy.y, '-');
|
||||
break;
|
||||
case 1:
|
||||
mvaddch(enemy.x, enemy.y, '/');
|
||||
break;
|
||||
case 2:
|
||||
mvaddch(enemy.x, enemy.y, '|');
|
||||
break;
|
||||
case 3:
|
||||
mvaddch(enemy.x, enemy.y, '\\');
|
||||
break;
|
||||
}
|
||||
|
||||
mvaddch(player.xold, player.yold, ' ');
|
||||
mvaddch(player.x, player.y, '#');
|
||||
mvaddch(debugent_x.xold, debugent_x.yold, ' ');
|
||||
mvaddch(debugent_x.x, debugent_x.y, 'X');
|
||||
mvaddch(debugent_y.xold, debugent_y.yold, ' ');
|
||||
mvaddch(debugent_y.x, debugent_y.y, 'Y');
|
||||
}
|
||||
|
||||
//cleanup
|
||||
endwin();
|
||||
|
||||
printf("Args %d",argc); //anti Wall Werror Wextra
|
||||
|
||||
puts(argv[0]);//anti Wall Werror Wextra
|
||||
return 0;
|
||||
}
|
Loading…
Reference in a new issue