One of my first programming projects. I tried to learn C and use curses...it is quite embarrassing looking back at it now :D
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

84 lines
2.2 KiB

#include <structs.h>
#include <stdlib.h>
#include <string.h>
#include <ncurses.h>
#include <world.h>
#include <drawWindows.h>
#include <zombies.h>
#include <nZombies.h>
#include <getPos.h>
void initializeWorld() {
srand(time(NULL));
initscr();
curs_set(0);
cbreak();
nodelay(stdscr, TRUE);
keypad(stdscr, TRUE);
noecho();
zombieModifier=0;
itemModifier=0;
struct Entity player = {.type="player", .symbol='@', .isAlive=1};
struct Weapon fists = {.type="Fists", .isAlive=1, .projectileRange=1, .maxCapacity=0, .curCapacity=0, .symbols="-\\|/-\\|/", .projectileSpeed=.03};
struct Weapon pistol = {.type="Pistol", .isAlive=0, .projectileRange=10, .maxCapacity=12, .curCapacity=12, .symbols="-\\|/-\\|/", .projectileSpeed=.03};
struct Weapon shotgun = {.type="Shotgun", .isAlive=0, .projectileRange=1, .maxCapacity=5, .curCapacity=5, .symbols="-\\|/-\\|/", .projectileSpeed=.05};
passableChars="#";
unpassableChars="+";
viewportWinRows = 19;
viewportWinCols = 80;
infoWinRows = 5;
infoWinCols = 80;
getmaxyx(stdscr,stdscrRows,stdscrCols);
if (stdscrRows < viewportWinRows+infoWinRows || stdscrCols < viewportWinCols){
endwin();
printf("ERROR: Terminal too small\n");
printf("Minimum size is: %dx%d\n",viewportWinRows+infoWinRows,viewportWinCols);
printf("Terminal size is: %dx%d\n",stdscrRows,stdscrCols);
exit(0);
}
drawGameStartWin();
viewportWin=newwin(viewportWinRows,viewportWinCols,0,0);
infoWin=newwin(infoWinRows,infoWinCols,viewportWinRows,0);
allEntities[0]=player;
allEntities[0].curYpos=viewportWinRows/2;
allEntities[0].curXpos=viewportWinCols/2;
allEntities[0].prevYpos=allEntities[0].curYpos;
allEntities[0].prevXpos=allEntities[0].curXpos;
allEntities[0].weapons[0]=fists;
allEntities[0].weapons[1]=pistol;
allEntities[0].weapons[2]=shotgun;
allEntities[0].curWeapon=0;
updateInfoWin();
updateViewportWin();
int i;
for(i=0;i<INITIAL_SPAWN_NUM;i++){
struct OpenPos openPos = getOpenPos();
addZombie(openPos.y,openPos.x);
}
startTime=clock();
timerStart=clock();
}
void restartGame(){
int i;
for(i=0;i<MAX_ENTITIES;i++){
allEntities[i].isAlive=0;
}
for(i=0;i<MAX_ITEMS;i++){
allItems[i].isAlive=0;
}
zombieModifier=0;
itemModifier=0;
endwin();
main();
}