#include #include #include #include #include void drawViewport(){ // box(viewportWin,0,0); int i; for(i=0; i=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); 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(){ getmaxyx(stdscr,scrRows,scrCols); gameOverWin=newwin(scrRows/2,scrCols/2,scrRows/4,scrCols/4); int gameOverWinRows, gameOverWinCols; getmaxyx(gameOverWin,gameOverWinRows,gameOverWinCols); mvwprintw(gameOverWin,1,(gameOverWinCols-strlen("GAME OVER"))/2,"%s","GAME OVER"); mvwprintw(gameOverWin,(gameOverWinRows/2)-1,1,"Shots Fired: %i",allEntities[0].projectilesFired); 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"); nodelay(stdscr, FALSE); box(gameOverWin,0,0); wnoutrefresh(gameOverWin); doupdate(); while(true){ char input = getch(); if (input == 'q' || input == 'Q'){ endwin(); exit(0); } if (input == 'r' || input == 'R'){ restartGame(); } } }