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;
for(i=1; i<MAX_ENTITIES; i++){
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]};
return collisionEvent;
}
@ -60,6 +60,7 @@ void checkPlayerCollision(){
struct CollisionEvent collisionEvent = collisionDetect(allEntities[0].curYpos, allEntities[0].curXpos);
if(collisionEvent.collidedWithEntity){
if(!strcmp(collisionEvent.collidedWithEntity->type,"zombie")){
allEntities[0].isAlive=0;
updateViewportWin();
sleep(1);
drawGameOverWin();

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

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

@ -15,7 +15,7 @@ void initializeWorld() {
keypad(stdscr, TRUE);
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="-\\|/-\\|/"};
passableChars="#";

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

Loading…
Cancel
Save