Add timer and remove usleep

main
Jerry Aldrich 11 years ago
parent bb671c886d
commit 70c511c26e
  1. 11
      drawWindows.c
  2. 11
      events.c
  3. 2
      events.h
  4. 11
      gameLoop.c
  5. 8
      initializeWorld.c
  6. 1
      nZombies.c
  7. 10
      structs.h
  8. 12
      weaponsSystem.c
  9. 2
      world.h
  10. 8
      zombies.c

@ -142,9 +142,10 @@ void updateInfoWin(){
mvwaddch(infoWin, 3, 56, ACS_LRCORNER);
mvwprintw(infoWin, 1, 66, "Cash: 0");
mvwprintw(infoWin, 2, 64, "Killed: %d", allEntities[0].killCount);
mvwprintw(infoWin, 3, 66, "Time: 00:00");
//mvwprintw(infoWin, 2, 65, "Kills: %d", allEntities[0].killCount);
int mins=secsElapsed/60;
int secs=(int)secsElapsed%60;
//mvwprintw(infoWin,3,66,"Time: %02d:%02d",mins,secs);
wnoutrefresh(infoWin);
}
@ -164,7 +165,9 @@ void drawGameOverWin(){
else {
mvwprintw(gameOverWin,6,11,"Accuracy: N/A");
}
mvwprintw(gameOverWin,7,15,"Time: 00:00");
int mins=secsElapsed/60;
int secs=(int)secsElapsed%60;
mvwprintw(gameOverWin,7,15,"Time: %02d:%02d",mins,secs);
mvwprintw(gameOverWin,(gameOverWinRows)-2,(gameOverWinCols-strlen("Press 'q' to quit or 'r' to restart"))/2,"%s","Press 'q' to quit or 'r' to restart");
nodelay(stdscr, FALSE);
box(gameOverWin,0,0);

@ -6,9 +6,6 @@
#include <stdlib.h>
#include <zombies.h>
int zombieModifer=10;
int itemModifier=0;
void addItem(char *type, int yPos, int xPos){
if(!strcmp(type,"Pistol Magazine")){
struct Item pistolMag = {.type="Pistol Magazine", .symbol='=', .isAlive=1, .curXpos=xPos, .curYpos=yPos};
@ -21,15 +18,15 @@ void addItem(char *type, int yPos, int xPos){
}
}
}
void randomEvents(){
int eventTrigger = rand()%1000+1;
if (eventTrigger < 2+itemModifier){
void tryRandomEvent(){
int eventTrigger = (rand()%100)+1;
if (eventTrigger < 10+itemModifier){
struct OpenPos openPos = getOpenPos();
addItem("Pistol Magazine", openPos.y, openPos.x);
}
if (eventTrigger < 10+zombieModifier){
struct OpenPos openPos = getOpenPos();
addZombie(openPos.y, openPos.x);
zombieModifier++;
}
}

@ -2,5 +2,5 @@
#define _EVENTS
void addItem(char *type, int yPos, int xPos);
void randomEvent();
#endif

@ -6,8 +6,15 @@
void gameLoop(){
while(1) {
secsElapsed = (float)(clock() - startTime)/CLOCKS_PER_SEC;
moveProjectiles();
randomEvents();
if((float)(clock() - timerStart)/CLOCKS_PER_SEC > 1){
tryRandomEvent();
timerStart=clock();
}
if((int)secsElapsed%10){
zombieModifier++;
}
moveZombies();
updateInfoWin();
updateViewportWin();
@ -91,7 +98,7 @@ void gameLoop(){
break;
}
checkPlayerCollision();
usleep(30000);
// usleep(30000);
updateInfoWin();
updateViewportWin();
}

@ -7,6 +7,9 @@
void initializeWorld() {
startTime=clock();
timerStart=clock();
srand(time(NULL));
initscr();
curs_set(0);
@ -14,9 +17,12 @@ void initializeWorld() {
nodelay(stdscr, TRUE);
keypad(stdscr, TRUE);
noecho();
zombieModifier=0;
itemModifier=0;
struct Entity player = {.type="player", .symbol='@', .isAlive=1};
struct Weapon pistol = {.type="Pistol", .isAlive=1, .range=3, .maxCapacity=12, .curCapacity=12, .symbols="-\\|/-\\|/"};
struct Weapon pistol = {.type="Pistol", .isAlive=1, .projectileRange=10, .maxCapacity=12, .curCapacity=12, .symbols="-\\|/-\\|/", .projectileSpeed=.02};
passableChars="#";
unpassableChars="+\\|";

@ -1,3 +1,4 @@
#include <time.h>
int main() {
initializeWorld();
gameLoop();

@ -1,15 +1,16 @@
#ifndef _STRUCTS
#define _STRUCTS
#include <time.h>
struct Weapon{
char *type;
int isAlive;
int range;
int projectileRange;
int maxCapacity;
int curCapacity;
int curMags;
char projectileSymbol;
char symbols[8];
float projectileSpeed;
};
struct Entity {
@ -24,7 +25,8 @@ struct Entity {
int hitCount;
int killCount;
int projectilesFired;
clock_t lastMoveClock;
float speed;
};
struct Item{
@ -48,6 +50,8 @@ struct Projectile{
int range;
char direction;
int distanceTraveled;
clock_t lastMoveClock;
float speed;
};
struct CollisionEvent{

@ -4,10 +4,7 @@
void moveProjectiles(){
int i;
for(i=0; i<MAX_PROJECTILES; i++){
if(allProjectiles[i].isAlive){
//if(allProjectiles[i].distanceTraveled>=allProjectiles[i].range || allProjectiles[i].curYpos > viewportWinRows || allProjectiles[i].curYpos < 0 || allProjectiles[i].curXpos > viewportWinCols || allProjectiles[i].curXpos < 0){
// allProjectiles[i].isAlive=0;
//}
if(allProjectiles[i].isAlive && ((float)(clock() - allProjectiles[i].lastMoveClock)/CLOCKS_PER_SEC) > allProjectiles[i].speed){
allProjectiles[i].prevYpos=allProjectiles[i].curYpos;
allProjectiles[i].prevXpos=allProjectiles[i].curXpos;
switch(allProjectiles[i].direction){
@ -37,19 +34,20 @@ void moveProjectiles(){
if(allProjectiles[i].distanceTraveled>=allProjectiles[i].range){
allProjectiles[i].isAlive=0;
}
allProjectiles[i].lastMoveClock = clock();
}
}
}
void fireWeapon(struct Weapon *weaponRef, char *direction){
struct Projectile projectile;
if (!strcmp(weaponRef->type,"Pistol")){
projectile.range=20;
}
projectile.range=weaponRef->projectileRange;
projectile.speed=weaponRef->projectileSpeed;
projectile.isAlive=1;
projectile.distanceTraveled=0;
projectile.curYpos=allEntities[0].curYpos;
projectile.curXpos=allEntities[0].curXpos;
projectile.lastMoveClock=clock();
if(!strcmp(direction,"up")){
projectile.range*=.4;
projectile.direction='w';

@ -7,6 +7,8 @@
#include <ncurses.h>
#include <time.h>
clock_t startTime, timerStart, timerEnd;
float secsElapsed;
WINDOW* viewportWin;
WINDOW* infoWin;

@ -14,6 +14,8 @@ void addZombie(int y, int x){
zombie.type="zombie";
zombie.symbol='Z';
zombie.isAlive=1;
zombie.lastMoveClock = clock();
zombie.speed = (float)((rand()%10)+3)/10;
allEntities[i]=zombie;
break;
}
@ -25,12 +27,11 @@ void addZombie(int y, int x){
void moveZombies(){
int i;
for(i=1;i<MAX_ENTITIES;i++){
float maxZombieSpeed=.10;
allEntities[i].prevYpos = allEntities[i].curYpos;
allEntities[i].prevXpos = allEntities[i].curXpos;
if(allEntities[i].isAlive){
int moveCheck = rand()%20;
if(moveCheck==1){
if(((float)(clock() - allEntities[i].lastMoveClock)/CLOCKS_PER_SEC) > allEntities[i].speed ){
getNextPos(allEntities[i].curYpos,allEntities[i].curXpos,allEntities[0].curYpos,allEntities[0].curXpos);
struct CollisionEvent collisionEvent = collisionDetect(nextPos.y,nextPos.x);
@ -44,6 +45,7 @@ void moveZombies(){
allEntities[i].curYpos = nextPos.y;
allEntities[i].curXpos = nextPos.x;
}
allEntities[i].lastMoveClock=clock();
}
}
}

Loading…
Cancel
Save