Tweak drawWindows

main
Jerry Aldrich 11 years ago
parent df56f8a14a
commit bb671c886d
  1. 3
      collisionDetection.c
  2. 19
      drawWindows.c
  3. 19
      gameLoop.c
  4. 2
      initializeWorld.c
  5. 4
      zombies.c

@ -4,7 +4,7 @@ struct CollisionEvent collisionDetect(int objYpos, int objXpos){
int i; int i;
for(i=1; i<MAX_ENTITIES; i++){ for(i=1; i<MAX_ENTITIES; i++){
if(allEntities[i].isAlive){ if(allEntities[i].isAlive){
if(objYpos==allEntities[i].curYpos && objXpos==allEntities[i].curXpos){ if(objYpos==allEntities[i].curYpos && objXpos==allEntities[i].curXpos || (objYpos==allEntities[i].prevYpos && objXpos==allEntities[i].prevXpos && mvwinch(viewportWin,objYpos,objXpos)==allEntities[i].symbol)){
struct CollisionEvent collisionEvent = {.collidedWithEntity=&allEntities[i]}; struct CollisionEvent collisionEvent = {.collidedWithEntity=&allEntities[i]};
return collisionEvent; return collisionEvent;
} }
@ -60,6 +60,7 @@ void checkPlayerCollision(){
struct CollisionEvent collisionEvent = collisionDetect(allEntities[0].curYpos, allEntities[0].curXpos); struct CollisionEvent collisionEvent = collisionDetect(allEntities[0].curYpos, allEntities[0].curXpos);
if(collisionEvent.collidedWithEntity){ if(collisionEvent.collidedWithEntity){
if(!strcmp(collisionEvent.collidedWithEntity->type,"zombie")){ if(!strcmp(collisionEvent.collidedWithEntity->type,"zombie")){
allEntities[0].isAlive=0;
updateViewportWin(); updateViewportWin();
sleep(1); sleep(1);
drawGameOverWin(); drawGameOverWin();

@ -23,19 +23,30 @@ void updateViewportWin(){
else if(!allProjectiles[i].isAlive && mvwinch(viewportWin,allProjectiles[i].curYpos,allProjectiles[i].curXpos)==allProjectiles[i].symbol){ else if(!allProjectiles[i].isAlive && mvwinch(viewportWin,allProjectiles[i].curYpos,allProjectiles[i].curXpos)==allProjectiles[i].symbol){
mvwaddch(viewportWin, allProjectiles[i].curYpos, allProjectiles[i].curXpos, ' '); mvwaddch(viewportWin, allProjectiles[i].curYpos, allProjectiles[i].curXpos, ' ');
} }
if(mvwinch(viewportWin,allProjectiles[i].prevYpos, allProjectiles[i].prevXpos)==allProjectiles[i].symbol){ if(allProjectiles[i].isAlive && mvwinch(viewportWin,allProjectiles[i].prevYpos, allProjectiles[i].prevXpos)==allProjectiles[i].symbol){
mvwaddch(viewportWin, allProjectiles[i].prevYpos, allProjectiles[i].prevXpos, ' ');
}
else if(!allProjectiles[i].isAlive && mvwinch(viewportWin,allProjectiles[i].prevYpos,allProjectiles[i].prevXpos)==allProjectiles[i].symbol){
mvwaddch(viewportWin, allProjectiles[i].prevYpos, allProjectiles[i].prevXpos, ' '); mvwaddch(viewportWin, allProjectiles[i].prevYpos, allProjectiles[i].prevXpos, ' ');
} }
} }
for(i=0; i<MAX_ENTITIES; i++){ for(i=0; i<MAX_ENTITIES; i++){
if(allEntities[i].isAlive){ if(allEntities[i].isAlive && mvwinch(viewportWin,allEntities[i].curYpos,allEntities[i].curXpos)==' '){
mvwaddch(viewportWin, allEntities[i].prevYpos, allEntities[i].prevXpos, ' ');
mvwaddch(viewportWin, allEntities[i].curYpos, allEntities[i].curXpos, allEntities[i].symbol); mvwaddch(viewportWin, allEntities[i].curYpos, allEntities[i].curXpos, allEntities[i].symbol);
} }
else if(mvwinch(viewportWin,allEntities[i].curYpos,allEntities[i].curXpos)==allEntities[i].symbol){ else if(allEntities[i].isAlive==0 && mvwinch(viewportWin,allEntities[i].curYpos,allEntities[i].curXpos)==allEntities[i].symbol){
mvwaddch(viewportWin, allEntities[i].curYpos, allEntities[i].curXpos, ' '); mvwaddch(viewportWin, allEntities[i].curYpos, allEntities[i].curXpos, ' ');
} }
if(allEntities[i].isAlive && mvwinch(viewportWin,allEntities[i].prevYpos, allEntities[i].prevXpos)==allEntities[i].symbol){
if(allEntities[i].prevYpos != allEntities[i].curYpos || allEntities[i].prevXpos != allEntities[i].curXpos){
mvwaddch(viewportWin, allEntities[i].prevYpos, allEntities[i].prevXpos, ' ');
}
} }
else if(allEntities[i].isAlive==0 && mvwinch(viewportWin,allEntities[i].prevYpos,allEntities[i].prevXpos)==allEntities[i].symbol){
mvwaddch(viewportWin, allEntities[i].prevYpos, allEntities[i].prevXpos, ' ');
}
}
box(viewportWin,0,0); box(viewportWin,0,0);
wnoutrefresh(viewportWin); wnoutrefresh(viewportWin);
doupdate(); doupdate();

@ -3,14 +3,14 @@
#include <events.h> #include <events.h>
#include <getPos.h> #include <getPos.h>
#include <weaponsSystem.h> #include <weaponsSystem.h>
void gameLoop(){ void gameLoop(){
int lastPressed;
while(1) { while(1) {
updateInfoWin();
updateViewportWin();
moveProjectiles(); moveProjectiles();
moveZombies();
randomEvents(); randomEvents();
moveZombies();
updateInfoWin();
updateViewportWin();
doupdate(); doupdate();
int ch; int ch;
ch = getch(); ch = getch();
@ -19,8 +19,8 @@ void gameLoop(){
case 'W':{ case 'W':{
struct CollisionEvent collisionEvent = collisionDetect(allEntities[0].curYpos-1,allEntities[0].curXpos); struct CollisionEvent collisionEvent = collisionDetect(allEntities[0].curYpos-1,allEntities[0].curXpos);
if(!collisionEvent.collidedWithUnPassableChar && !collisionEvent.collidedWithBoundary){ if(!collisionEvent.collidedWithUnPassableChar && !collisionEvent.collidedWithBoundary){
allEntities[0].prevYpos=allEntities[0].curYpos;
allEntities[0].prevXpos=allEntities[0].curXpos; allEntities[0].prevXpos=allEntities[0].curXpos;
allEntities[0].prevYpos=allEntities[0].curYpos;
allEntities[0].curYpos--; allEntities[0].curYpos--;
}; };
break; break;
@ -29,8 +29,8 @@ void gameLoop(){
case 'S':{ case 'S':{
struct CollisionEvent collisionEvent = collisionDetect(allEntities[0].curYpos+1,allEntities[0].curXpos); struct CollisionEvent collisionEvent = collisionDetect(allEntities[0].curYpos+1,allEntities[0].curXpos);
if(!collisionEvent.collidedWithUnPassableChar && !collisionEvent.collidedWithBoundary){ if(!collisionEvent.collidedWithUnPassableChar && !collisionEvent.collidedWithBoundary){
allEntities[0].prevYpos=allEntities[0].curYpos;
allEntities[0].prevXpos=allEntities[0].curXpos; allEntities[0].prevXpos=allEntities[0].curXpos;
allEntities[0].prevYpos=allEntities[0].curYpos;
allEntities[0].curYpos++; allEntities[0].curYpos++;
}; };
break; break;
@ -41,7 +41,6 @@ void gameLoop(){
if(!collisionEvent.collidedWithUnPassableChar && !collisionEvent.collidedWithBoundary){ if(!collisionEvent.collidedWithUnPassableChar && !collisionEvent.collidedWithBoundary){
allEntities[0].prevYpos=allEntities[0].curYpos; allEntities[0].prevYpos=allEntities[0].curYpos;
allEntities[0].prevXpos=allEntities[0].curXpos; allEntities[0].prevXpos=allEntities[0].curXpos;
allEntities[0].prevXpos=allEntities[0].curXpos;
allEntities[0].curXpos--; allEntities[0].curXpos--;
}; };
break; break;
@ -52,7 +51,6 @@ void gameLoop(){
if(!collisionEvent.collidedWithUnPassableChar && !collisionEvent.collidedWithBoundary){ if(!collisionEvent.collidedWithUnPassableChar && !collisionEvent.collidedWithBoundary){
allEntities[0].prevYpos=allEntities[0].curYpos; allEntities[0].prevYpos=allEntities[0].curYpos;
allEntities[0].prevXpos=allEntities[0].curXpos; allEntities[0].prevXpos=allEntities[0].curXpos;
allEntities[0].prevXpos=allEntities[0].curXpos;
allEntities[0].curXpos++; allEntities[0].curXpos++;
}; };
break; break;
@ -88,10 +86,13 @@ void gameLoop(){
} }
} }
default: default:
if (ch != ERR) {lastPressed=ch;}; allEntities[0].prevYpos=allEntities[0].curYpos;
allEntities[0].prevXpos=allEntities[0].curXpos;
break; break;
} }
checkPlayerCollision(); checkPlayerCollision();
usleep(30000); usleep(30000);
updateInfoWin();
updateViewportWin();
} }
} }

@ -15,7 +15,7 @@ void initializeWorld() {
keypad(stdscr, TRUE); keypad(stdscr, TRUE);
noecho(); noecho();
struct Entity player = {.type="player",.symbol='@', .curYpos=1, .curXpos=1, .prevYpos=1, .prevXpos=1 ,.isAlive=1}; 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, .range=3, .maxCapacity=12, .curCapacity=12, .symbols="-\\|/-\\|/"};
passableChars="#"; passableChars="#";

@ -25,6 +25,8 @@ void addZombie(int y, int x){
void moveZombies(){ void moveZombies(){
int i; int i;
for(i=1;i<MAX_ENTITIES;i++){ for(i=1;i<MAX_ENTITIES;i++){
allEntities[i].prevYpos = allEntities[i].curYpos;
allEntities[i].prevXpos = allEntities[i].curXpos;
if(allEntities[i].isAlive){ if(allEntities[i].isAlive){
int moveCheck = rand()%20; int moveCheck = rand()%20;
if(moveCheck==1){ if(moveCheck==1){
@ -39,8 +41,6 @@ void moveZombies(){
} }
} }
else{ else{
allEntities[i].prevYpos = allEntities[i].curYpos;
allEntities[i].prevXpos = allEntities[i].curXpos;
allEntities[i].curYpos = nextPos.y; allEntities[i].curYpos = nextPos.y;
allEntities[i].curXpos = nextPos.x; allEntities[i].curXpos = nextPos.x;
} }

Loading…
Cancel
Save