Move Entities and Player

All Entities now in allEntities
Player should be in allEntities[0].
main
Jerry Aldrich 11 years ago
parent cdd853e840
commit 611a46bdd7
  1. 85
      moveable.c

@ -51,8 +51,8 @@ struct Entity {
struct Entity player = {.type="player",.symbol='@', .curYpos=1, .curXpos=1, .nextYpos=1, .nextXpos=1 ,.isAlive=1};
struct Entity *zombies[MAX_ZOMBIES];
struct Entity *allEntities[MAX_ALIVE];
struct Entity zombies[MAX_ZOMBIES];
struct Entity allEntities[MAX_ALIVE];
struct Entity zombie = {.type="zombie", .symbol='Z', .curYpos=5, .curXpos=5, .nextYpos=5, .nextXpos=5 ,.isAlive=1};
struct Weapon pistol = {.name="Pistol", .range=3, .maxCapacity=12, .curCapacity=12, .symbols="-\\|/-\\|/"};
@ -62,9 +62,9 @@ struct Weapon pistol = {.name="Pistol", .range=3, .maxCapacity=12, .curCapacity=
struct Entity * collisionDetect(int objYpos, int objXpos){
int i;
for(i=0; i<MAX_ALIVE; i++){
if(allEntities[i] && allEntities[i]->isAlive){
if(objYpos==allEntities[i]->curYpos && objXpos==allEntities[i]->curXpos){
return allEntities[i];
if(allEntities[i].isAlive){
if(objYpos==allEntities[i].curYpos && objXpos==allEntities[i].curXpos){
return &allEntities[i];
}
}
}
@ -107,7 +107,7 @@ void moveProjectiles(){
if(hitEntity->type=="zombie"){
projectiles[i].isAlive=0;
hitEntity->isAlive=0;
mvwaddch(viewportWin, allEntities[i]->curYpos, allEntities[i]->curXpos, ' ');
mvwaddch(viewportWin, allEntities[i].curYpos, allEntities[i].curXpos, ' ');
}
}
if(mvwinch(viewportWin,projectiles[i].prevYpos, projectiles[i].prevXpos)==projectiles[i].symbol){
@ -132,8 +132,8 @@ void fireWeapon(struct Weapon *weaponRef, char *direction){
}
projectile.isAlive=1;
projectile.distanceTraveled=0;
projectile.curYpos=player.curYpos;
projectile.curXpos=player.curXpos;
projectile.curYpos=allEntities[0].curYpos;
projectile.curXpos=allEntities[0].curXpos;
if(direction=="up"){
projectile.range*=.4;
projectile.direction='w';
@ -156,7 +156,7 @@ void fireWeapon(struct Weapon *weaponRef, char *direction){
for(i=0;i<MAX_PROJECTILES;i++){
if(!projectiles[i].isAlive && !projectiles[i+1].isAlive){
projectiles[i]=projectile;
player.weapons[player.curWeapon].curCapacity--;
allEntities[0].weapons[allEntities[0].curWeapon].curCapacity--;
break;
}
}
@ -165,8 +165,8 @@ void fireWeapon(struct Weapon *weaponRef, char *direction){
void drawScore(){
werase(scoreWin);
box(scoreWin, 0, 0);
mvwprintw(scoreWin, 1, 1, "Current Weapon: %s",player.weapons[player.curWeapon].name);
mvwprintw(scoreWin, 2, 1, "Ammo: %d/%d",player.weapons[player.curWeapon].curCapacity,player.weapons[player.curWeapon].maxCapacity);
mvwprintw(scoreWin, 1, 1, "Current Weapon: %s",allEntities[0].weapons[allEntities[0].curWeapon].name);
mvwprintw(scoreWin, 2, 1, "Ammo: %d/%d",allEntities[0].weapons[allEntities[0].curWeapon].curCapacity,allEntities[0].weapons[allEntities[0].curWeapon].maxCapacity);
wnoutrefresh(scoreWin);
}
@ -174,11 +174,11 @@ void drawViewport(){
box(viewportWin,0,0);
int i;
for(i=0; i<MAX_ALIVE; i++){
if(allEntities[i] && allEntities[i]->isAlive){
mvwaddch(viewportWin, allEntities[i]->curYpos, allEntities[i]->curXpos, ' ');
mvwaddch(viewportWin, allEntities[i]->nextYpos, allEntities[i]->nextXpos, allEntities[i]->symbol);
allEntities[i]->curYpos = allEntities[i]->nextYpos;
allEntities[i]->curXpos = allEntities[i]->nextXpos; }
if(allEntities[i].isAlive){
mvwaddch(viewportWin, allEntities[i].curYpos, allEntities[i].curXpos, ' ');
mvwaddch(viewportWin, allEntities[i].nextYpos, allEntities[i].nextXpos, allEntities[i].symbol);
allEntities[i].curYpos = allEntities[i].nextYpos;
allEntities[i].curXpos = allEntities[i].nextXpos; }
}
wnoutrefresh(viewportWin);
doupdate();
@ -191,10 +191,10 @@ void initializeWorld() {
getmaxyx(viewportWin,viewportWinRows,viewportWinCols);
scoreWin=newwin(10,scrCols,scrRows-10,0);
allEntities[0]=&player;
allEntities[1]=&zombie;
player.curYpos=10;
player.curXpos=10;
allEntities[0]=player;
allEntities[1]=zombie;
allEntities[0].curYpos=10;
allEntities[0].curXpos=10;
zombie.curYpos=rand()%viewportWinRows;
zombie.curYpos=rand()%viewportWinCols;
}
@ -209,9 +209,8 @@ int main() {
initializeWorld();
nodelay(stdscr, TRUE);
int ch;
player.weapons[0]=pistol;
player.curWeapon=0;
allEntities[0].weapons[0]=pistol;
allEntities[0].curWeapon=0;
while(1) {
drawScore();
drawViewport();
@ -221,64 +220,64 @@ int main() {
switch(ch){
case 'w':
case 'W':{
if(player.curYpos > 1){
player.nextYpos--;
if(player.nextYpos < 0){
player.nextYpos = 0;
if(allEntities[0].curYpos > 1){
allEntities[0].nextYpos--;
if(allEntities[0].nextYpos < 0){
allEntities[0].nextYpos = 0;
}
}
break;
}
case 's':
case 'S':{
if(player.curYpos < viewportWinRows - 2){
player.nextYpos++;
if(player.nextYpos > viewportWinRows-1){
player.nextYpos = viewportWinRows-1;
if(allEntities[0].curYpos < viewportWinRows - 2){
allEntities[0].nextYpos++;
if(allEntities[0].nextYpos > viewportWinRows-1){
allEntities[0].nextYpos = viewportWinRows-1;
}
}
break;
}
case 'a':
case 'A':{
if(player.curXpos > 1){
player.nextXpos--;
if(player.nextXpos < 0){
player.nextXpos = 0;
if(allEntities[0].curXpos > 1){
allEntities[0].nextXpos--;
if(allEntities[0].nextXpos < 0){
allEntities[0].nextXpos = 0;
}
}
break;
}
case 'd':
case 'D':{
if(player.curXpos < scrCols-2){
player.nextXpos++;
if(player.nextXpos > viewportWinCols-1){
player.nextXpos = viewportWinCols-1;
if(allEntities[0].curXpos < scrCols-2){
allEntities[0].nextXpos++;
if(allEntities[0].nextXpos > viewportWinCols-1){
allEntities[0].nextXpos = viewportWinCols-1;
}
}
break;
}
case KEY_UP:{
if(player.weapons[player.curWeapon].curCapacity>0){
if(allEntities[0].weapons[allEntities[0].curWeapon].curCapacity>0){
fireWeapon(&pistol, "up");
}
break;
}
case KEY_LEFT:{
if(player.weapons[player.curWeapon].curCapacity>0){
if(allEntities[0].weapons[allEntities[0].curWeapon].curCapacity>0){
fireWeapon(&pistol, "left");
}
break;
}
case KEY_DOWN:{
if(player.weapons[player.curWeapon].curCapacity>0){
if(allEntities[0].weapons[allEntities[0].curWeapon].curCapacity>0){
fireWeapon(&pistol, "down");
}
break;
}
case KEY_RIGHT:{
if(player.weapons[player.curWeapon].curCapacity>0){
if(allEntities[0].weapons[allEntities[0].curWeapon].curCapacity>0){
fireWeapon(&pistol, "right");
}
break;

Loading…
Cancel
Save