Move all drawing functions to drawWindows

main
Jerry Aldrich 11 years ago
parent 3edc2f3054
commit 881d6f8873
  1. 4
      collisionDetection.c
  2. 47
      drawWindows.c
  3. 4
      initializeWorld.c
  4. 36
      weaponsSystem.c
  5. 4
      world.h
  6. 3
      zombies.c

@ -26,7 +26,7 @@ void checkProjectileCollision(struct Projectile *projectileRef ){
if(collisionEvent.collidedWithEntity){ if(collisionEvent.collidedWithEntity){
if(!strcmp(collisionEvent.collidedWithEntity->type,"zombie")){ if(!strcmp(collisionEvent.collidedWithEntity->type,"zombie")){
projectileRef->isAlive=0; projectileRef->isAlive=0;
collisionEvent.collidedWithEntity->isAlive=0; collisionEvent.collidedWithEntity->isAlive=0;
allEntities[0].killCount++; allEntities[0].killCount++;
if (allEntities[0].killCount != 0 && allEntities[0].killCount%5==0){ if (allEntities[0].killCount != 0 && allEntities[0].killCount%5==0){
itemModifier++; itemModifier++;
@ -34,7 +34,6 @@ void checkProjectileCollision(struct Projectile *projectileRef ){
zombieModifier-=5; zombieModifier-=5;
} }
} }
mvwaddch(viewportWin, collisionEvent.collidedWithEntity->curYpos, collisionEvent.collidedWithEntity->curXpos, ' ');
} }
} }
} }
@ -44,7 +43,6 @@ void checkPlayerCollision(){
if(collisionEvent.collidedWithEntity){ if(collisionEvent.collidedWithEntity){
if(!strcmp(collisionEvent.collidedWithEntity->type,"zombie")){ if(!strcmp(collisionEvent.collidedWithEntity->type,"zombie")){
collisionEvent.collidedWithEntity->isAlive=0; collisionEvent.collidedWithEntity->isAlive=0;
mvwaddch(viewportWin, allEntities[0].curYpos, allEntities[0].curXpos, ' ');
drawGameOverWin(); drawGameOverWin();
} }
} }

@ -2,21 +2,10 @@
#include <screen.h> #include <screen.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <weaponsSystem.h>
void drawScore(){
werase(scoreWin);
box(scoreWin, 0, 0);
mvwprintw(scoreWin, 1, 1, "Current Weapon: %s",allEntities[0].weapons[allEntities[0].curWeapon].type);
mvwprintw(scoreWin, 2, 1, "Ammo: %d/%d:%d",allEntities[0].weapons[allEntities[0].curWeapon].curCapacity,allEntities[0].weapons[allEntities[0].curWeapon].maxCapacity,allEntities[0].weapons[allEntities[0].curWeapon].curMags);
mvwprintw(scoreWin,3,1,"Zombies Killed: %d",allEntities[0].killCount);
mvwprintw(scoreWin,4,1,"Projectiles Fired: %d",allEntities[0].projectilesFired);
mvwprintw(scoreWin,5,1,"Zombies Modifier: %d",zombieModifier);
mvwprintw(scoreWin,6,1,"Item Modifier: %d",itemModifier);
wnoutrefresh(scoreWin);
}
void drawViewport(){ void drawViewport(){
box(viewportWin,0,0); // box(viewportWin,0,0);
int i; int i;
for(i=0; i<MAX_ITEMS; i++){ for(i=0; i<MAX_ITEMS; i++){
if(allItems[i].isAlive){ if(allItems[i].isAlive){
@ -31,14 +20,43 @@ void drawViewport(){
allEntities[i].curXpos = allEntities[i].nextXpos; allEntities[i].curXpos = allEntities[i].nextXpos;
} }
} }
for(i=0; i<MAX_PROJECTILES; i++){
if(allProjectiles[i].isAlive){
mvwaddch(viewportWin, allProjectiles[i].curYpos, allProjectiles[i].curXpos, allProjectiles[i].symbol);
}
else if(mvwinch(viewportWin,allProjectiles[i].curYpos,allProjectiles[i].curXpos)==allProjectiles[i].symbol){
mvwaddch(viewportWin, allProjectiles[i].curYpos, allProjectiles[i].curXpos, ' ');
}
checkProjectileCollision(&allProjectiles[i]);
if(mvwinch(viewportWin,allProjectiles[i].prevYpos, allProjectiles[i].prevXpos)==allProjectiles[i].symbol){
mvwaddch(viewportWin, allProjectiles[i].prevYpos, allProjectiles[i].prevXpos, ' ');
}
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;
mvwaddch(viewportWin, allProjectiles[i].curYpos, allProjectiles[i].curXpos, ' ');
}
}
box(viewportWin,0,0);
wnoutrefresh(viewportWin); wnoutrefresh(viewportWin);
doupdate(); doupdate();
} }
void drawScore(){
werase(scoreWin);
mvwprintw(scoreWin, 1, 1, "Current Weapon: %s",allEntities[0].weapons[allEntities[0].curWeapon].type);
mvwprintw(scoreWin, 2, 1, "Ammo: %d/%d:%d",allEntities[0].weapons[allEntities[0].curWeapon].curCapacity,allEntities[0].weapons[allEntities[0].curWeapon].maxCapacity,allEntities[0].weapons[allEntities[0].curWeapon].curMags);
mvwprintw(scoreWin,3,1,"Zombies Killed: %d",allEntities[0].killCount);
mvwprintw(scoreWin,4,1,"Projectiles Fired: %d",allEntities[0].projectilesFired);
mvwprintw(scoreWin,5,1,"Zombies Modifier: %d",zombieModifier);
mvwprintw(scoreWin,6,1,"Item Modifier: %d",itemModifier);
box(scoreWin, 0, 0);
wnoutrefresh(scoreWin);
}
void drawGameOverWin(){ void drawGameOverWin(){
getmaxyx(stdscr,scrRows,scrCols); getmaxyx(stdscr,scrRows,scrCols);
gameOverWin=newwin(scrRows/2,scrCols/2,scrRows/4,scrCols/4); gameOverWin=newwin(scrRows/2,scrCols/2,scrRows/4,scrCols/4);
box(gameOverWin,0,0);
int gameOverWinRows, gameOverWinCols; int gameOverWinRows, gameOverWinCols;
getmaxyx(gameOverWin,gameOverWinRows,gameOverWinCols); getmaxyx(gameOverWin,gameOverWinRows,gameOverWinCols);
mvwprintw(gameOverWin,1,(gameOverWinCols-strlen("GAME OVER"))/2,"%s","GAME OVER"); mvwprintw(gameOverWin,1,(gameOverWinCols-strlen("GAME OVER"))/2,"%s","GAME OVER");
@ -46,6 +64,7 @@ void drawGameOverWin(){
mvwprintw(gameOverWin,(gameOverWinRows/2),1,"Zombies Killed: %i",allEntities[0].killCount); mvwprintw(gameOverWin,(gameOverWinRows/2),1,"Zombies Killed: %i",allEntities[0].killCount);
mvwprintw(gameOverWin,(gameOverWinRows)-2,(gameOverWinCols-strlen("Press 'q' to quit or 'r' to restart"))/2,"%s","Press 'q' to quit or 'r' to restart"); 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); nodelay(stdscr, FALSE);
box(gameOverWin,0,0);
wnoutrefresh(gameOverWin); wnoutrefresh(gameOverWin);
doupdate(); doupdate();
while(true){ while(true){

@ -23,8 +23,8 @@ void initializeWorld() {
scoreWin=newwin(10,scrCols,scrRows-10,0); scoreWin=newwin(10,scrCols,scrRows-10,0);
allEntities[0]=player; allEntities[0]=player;
allEntities[0].curYpos=(rand()%(viewportWinRows-2))+1; allEntities[0].curYpos=viewportWinRows/2;
allEntities[0].curXpos=(rand()%(viewportWinCols-2))+1; allEntities[0].curXpos=viewportWinCols/2;
allEntities[0].nextYpos=allEntities[0].curYpos; allEntities[0].nextYpos=allEntities[0].curYpos;
allEntities[0].nextXpos=allEntities[0].curXpos; allEntities[0].nextXpos=allEntities[0].curXpos;
allEntities[0].weapons[1]=pistol; allEntities[0].weapons[1]=pistol;

@ -5,42 +5,32 @@
void moveProjectiles(){ void moveProjectiles(){
int i; int i;
for(i=0; i<MAX_PROJECTILES; i++){ for(i=0; i<MAX_PROJECTILES; i++){
if(projectiles[i].isAlive){ if(allProjectiles[i].isAlive){
projectiles[i].prevYpos=projectiles[i].curYpos; allProjectiles[i].prevYpos=allProjectiles[i].curYpos;
projectiles[i].prevXpos=projectiles[i].curXpos; allProjectiles[i].prevXpos=allProjectiles[i].curXpos;
switch(allProjectiles[i].direction){
switch(projectiles[i].direction){
case 'w':{ case 'w':{
projectiles[i].curYpos--; allProjectiles[i].curYpos--;
break; break;
} }
case 'a':{ case 'a':{
projectiles[i].curXpos--; allProjectiles[i].curXpos--;
break; break;
} }
case 's':{ case 's':{
projectiles[i].curYpos++; allProjectiles[i].curYpos++;
break; break;
} }
case 'd':{ case 'd':{
projectiles[i].curXpos++; allProjectiles[i].curXpos++;
break; break;
} }
} }
projectiles[i].distanceTraveled++; allProjectiles[i].distanceTraveled++;
mvwaddch(viewportWin, projectiles[i].curYpos, projectiles[i].curXpos, projectiles[i].symbol);
checkProjectileCollision(&projectiles[i]);
if(mvwinch(viewportWin,projectiles[i].prevYpos, projectiles[i].prevXpos)==projectiles[i].symbol){
mvwaddch(viewportWin, projectiles[i].prevYpos, projectiles[i].prevXpos, ' ');
}
if(projectiles[i].distanceTraveled>=projectiles[i].range || projectiles[i].curYpos > viewportWinRows || projectiles[i].curYpos < 0 || projectiles[i].curXpos > viewportWinCols || projectiles[i].curXpos < 0){
projectiles[i].isAlive=0;
mvwaddch(viewportWin, projectiles[i].curYpos, projectiles[i].curXpos, ' ');
}
} }
} }
} }
@ -57,26 +47,30 @@ void fireWeapon(struct Weapon *weaponRef, char *direction){
if(!strcmp(direction,"up")){ if(!strcmp(direction,"up")){
projectile.range*=.4; projectile.range*=.4;
projectile.direction='w'; projectile.direction='w';
projectile.curYpos--;
projectile.symbol=weaponRef->symbols[2]; projectile.symbol=weaponRef->symbols[2];
} }
if(!strcmp(direction,"left")){ if(!strcmp(direction,"left")){
projectile.direction='a'; projectile.direction='a';
projectile.curXpos--;
projectile.symbol=weaponRef->symbols[0]; projectile.symbol=weaponRef->symbols[0];
} }
if(!strcmp(direction,"down")){ if(!strcmp(direction,"down")){
projectile.range*=.4; projectile.range*=.4;
projectile.direction='s'; projectile.direction='s';
projectile.curYpos++;
projectile.symbol=weaponRef->symbols[6]; projectile.symbol=weaponRef->symbols[6];
} }
if(!strcmp(direction,"right")){ if(!strcmp(direction,"right")){
projectile.direction='d'; projectile.direction='d';
projectile.curXpos++;
projectile.symbol=weaponRef->symbols[4]; projectile.symbol=weaponRef->symbols[4];
} }
int i; int i;
for(i=0;i<MAX_PROJECTILES;i++){ for(i=0;i<MAX_PROJECTILES;i++){
if(!projectiles[i].isAlive && !projectiles[i+1].isAlive){ if(!allProjectiles[i].isAlive && !allProjectiles[i+1].isAlive){
allEntities[0].projectilesFired++; allEntities[0].projectilesFired++;
projectiles[i]=projectile; allProjectiles[i]=projectile;
allEntities[0].weapons[allEntities[0].curWeapon].curCapacity--; allEntities[0].weapons[allEntities[0].curWeapon].curCapacity--;
break; break;
} }

@ -11,8 +11,8 @@
struct Entity allEntities[MAX_ENTITIES]; struct Entity allEntities[MAX_ENTITIES];
struct Item allItems[MAX_ITEMS]; struct Item allItems[MAX_ITEMS];
#define MAX_PROJECTILES 2 #define MAX_PROJECTILES 5
struct Projectile projectiles[MAX_PROJECTILES]; struct Projectile allProjectiles[MAX_PROJECTILES];
#define INITIAL_SPAWN_NUM 10 #define INITIAL_SPAWN_NUM 10

@ -16,9 +16,6 @@ void addZombie(int y, int x){
zombie.symbol='Z'; zombie.symbol='Z';
zombie.isAlive=1; zombie.isAlive=1;
allEntities[i]=zombie; allEntities[i]=zombie;
mvwaddch(viewportWin, allEntities[i].curYpos, allEntities[i].curXpos, allEntities[i].symbol);
wnoutrefresh(viewportWin);
doupdate();
break; break;
} }
} }

Loading…
Cancel
Save