From 8e877539fb5a47e2fdad737987e6d183ba28a387 Mon Sep 17 00:00:00 2001 From: Jerry Aldrich Date: Thu, 26 Mar 2015 20:06:35 -0500 Subject: [PATCH] Commit for GitHub --- moveable.c | 272 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 272 insertions(+) create mode 100644 moveable.c diff --git a/moveable.c b/moveable.c new file mode 100644 index 0000000..a9b9740 --- /dev/null +++ b/moveable.c @@ -0,0 +1,272 @@ +#include +#include + +#define MAX_PROJECTILES 2 +#define MAX_ZOMBIES 1000 + +int scrRows,scrCols; +int viewportWinRows,viewportWinCols; +int lastPressed; + +WINDOW* viewportWin; + +WINDOW* scoreWin; + + + +struct Projectile{ + int isAlive; + char symbol; + int curXpos; + int curYpos; + int prevYpos; + int prevXpos; + int nextYpos; + int nextXpos; + int range; + char direction; + int distanceTraveled; +}; +struct Projectile projectiles[MAX_PROJECTILES]; + +struct Weapon{ + char name[10]; + int range; + int maxCapacity; + int curCapacity; + char projectileSymbol; + char symbols[8]; +}; + +struct Player { + char symbol; + int curYpos, curXpos; + int nextYpos, nextXpos; + struct Weapon weapons[8]; + int curWeapon; + int isAlive; +}; + + +struct Player player = {.symbol='@', .curYpos=1, .curXpos=1, .nextYpos=1, .nextXpos=1 ,.isAlive=1}; + +struct Player zombies[MAX_ZOMBIES]; +struct Player 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="-\\|/-\\|/"}; + + + +void collisionDetect(int objYpos, int objXpos){ + +} + +void movePlayer(struct Player *playerRef); + +void moveProjectiles(){ + int i; + for(i=0; i=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, ' '); + } + + usleep(30000); + } + } +} + +void fireWeapon(struct Weapon *weaponRef, char *direction){ + struct Projectile projectile; + if (!strcmp(weaponRef->name,"Pistol")){ + projectile.range=20; + } + projectile.isAlive=1; + projectile.distanceTraveled=0; + projectile.curYpos=player.curYpos; + projectile.curXpos=player.curXpos; + if(direction=="up"){ + projectile.range*=.4; + projectile.direction='w'; + projectile.symbol=weaponRef->symbols[2]; + } + if(direction=="left"){ + projectile.direction='a'; + projectile.symbol=weaponRef->symbols[0]; + } + if(direction=="down"){ + projectile.range*=.4; + projectile.direction='s'; + projectile.symbol=weaponRef->symbols[6]; + } + if(direction=="right"){ + projectile.direction='d'; + projectile.symbol=weaponRef->symbols[4]; + } + int i; + for(i=0;icurYpos, playerRef->curXpos, ' '); + mvwaddch(viewportWin, playerRef->nextYpos, playerRef->nextXpos, playerRef->symbol); + playerRef->curYpos = playerRef->nextYpos; + playerRef->curXpos = playerRef->nextXpos; + wnoutrefresh(viewportWin); +} + +void initializeWorld() { + curs_set(0); + getmaxyx(stdscr,scrRows,scrCols); + viewportWin=newwin(scrRows-10,scrCols,0,0); + getmaxyx(viewportWin,viewportWinRows,viewportWinCols); + scoreWin=newwin(10,scrCols,scrRows-10,0); + mvwaddch(viewportWin, player.curYpos, player.curXpos, player.symbol); + mvwaddch(viewportWin, zombie.curYpos, zombie.curXpos, zombie.symbol); +} + +int main() { + initscr(); + cbreak(); + keypad(stdscr, TRUE); + noecho(); + initializeWorld(); + nodelay(stdscr, TRUE); + int ch; + + player.weapons[0]=pistol; + player.curWeapon=0; + while(1) { + drawScore(); + drawViewport(); + moveProjectiles(); + doupdate(); + ch = getch(); + switch(ch){ + case 'w': + case 'W':{ + if(player.curYpos > 1){ + player.nextYpos--; + if(player.nextYpos < 0){ + player.nextYpos = 0; + } + movePlayer(&player); + } + break; + } + case 's': + case 'S':{ + if(player.curYpos < viewportWinRows - 2){ + player.nextYpos++; + if(player.nextYpos > viewportWinRows-1){ + player.nextYpos = viewportWinRows-1; + } + movePlayer(&player); + } + break; + } + case 'a': + case 'A':{ + if(player.curXpos > 1){ + player.nextXpos--; + if(player.nextXpos < 0){ + player.nextXpos = 0; + } + movePlayer(&player); + } + break; + } + case 'd': + case 'D':{ + if(player.curXpos < scrCols-2){ + player.nextXpos++; + if(player.nextXpos > viewportWinCols-1){ + player.nextXpos = viewportWinCols-1; + } + movePlayer(&player); + } + break; + } + case KEY_UP:{ + if(player.weapons[player.curWeapon].curCapacity>0){ + fireWeapon(&pistol, "up"); + } + break; + } + case KEY_LEFT:{ + if(player.weapons[player.curWeapon].curCapacity>0){ + fireWeapon(&pistol, "left"); + } + break; + } + case KEY_DOWN:{ + if(player.weapons[player.curWeapon].curCapacity>0){ + fireWeapon(&pistol, "down"); + } + break; + } + case KEY_RIGHT:{ + if(player.weapons[player.curWeapon].curCapacity>0){ + fireWeapon(&pistol, "right"); + } + break; + } + + default: + if (ch != ERR) {lastPressed=ch;}; + break; + } + } + return 0; +}