Add screen size and add accuracy to Game Over win

main
Jerry Aldrich 11 years ago
parent 881d6f8873
commit 673dd55d48
  1. 1
      collisionDetection.c
  2. 14
      drawWindows.c
  3. 3
      gameLoop.c
  4. 1
      getPos.c
  5. 29
      initializeWorld.c
  6. 13
      screen.h
  7. 1
      structs.h
  8. 1
      weaponsSystem.c
  9. 10
      world.h
  10. 1
      zombies.c

@ -28,6 +28,7 @@ void checkProjectileCollision(struct Projectile *projectileRef ){
projectileRef->isAlive=0; projectileRef->isAlive=0;
collisionEvent.collidedWithEntity->isAlive=0; collisionEvent.collidedWithEntity->isAlive=0;
allEntities[0].killCount++; allEntities[0].killCount++;
allEntities[0].hitCount++;
if (allEntities[0].killCount != 0 && allEntities[0].killCount%5==0){ if (allEntities[0].killCount != 0 && allEntities[0].killCount%5==0){
itemModifier++; itemModifier++;
if(zombieModifier>5){ if(zombieModifier>5){

@ -1,11 +1,9 @@
#include <world.h> #include <world.h>
#include <screen.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <weaponsSystem.h> #include <weaponsSystem.h>
void drawViewport(){ void drawViewport(){
// box(viewportWin,0,0);
int i; int i;
for(i=0; i<MAX_ITEMS; i++){ for(i=0; i<MAX_ITEMS; i++){
if(allItems[i].isAlive){ if(allItems[i].isAlive){
@ -55,13 +53,19 @@ void drawScore(){
void drawGameOverWin(){ void drawGameOverWin(){
getmaxyx(stdscr,scrRows,scrCols); gameOverWin=newwin(viewportWinRows/2,viewportWinCols/2,viewportWinRows/4,viewportWinCols/4);
gameOverWin=newwin(scrRows/2,scrCols/2,scrRows/4,scrCols/4);
int gameOverWinRows, gameOverWinCols; int gameOverWinRows, gameOverWinCols;
getmaxyx(gameOverWin,gameOverWinRows,gameOverWinCols); getmaxyx(gameOverWin,gameOverWinRows,gameOverWinCols);
mvwprintw(gameOverWin,1,(gameOverWinCols-strlen("GAME OVER"))/2,"%s","GAME OVER"); 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,1,"Shots Fired: %i",allEntities[0].projectilesFired);
mvwprintw(gameOverWin,(gameOverWinRows/2),1,"Zombies Killed: %i",allEntities[0].killCount); mvwprintw(gameOverWin,(gameOverWinRows/2)-2,1,"Zombies Killed: %i",allEntities[0].killCount);
if (allEntities[0].projectilesFired!=0){
float hitPercent = (((float)allEntities[0].hitCount/(float)allEntities[0].projectilesFired)*100);
mvwprintw(gameOverWin,(gameOverWinRows/2),1,"Accuracy: %.0f%%",hitPercent);
}
else {
mvwprintw(gameOverWin,(gameOverWinRows/2),1,"Accuracy: N/A");
}
mvwprintw(gameOverWin,(gameOverWinRows)-2,(gameOverWinCols-strlen("Press 'q' to quit or 'r' to restart"))/2,"%s","Press 'q' to quit or 'r' to restart"); 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); nodelay(stdscr, FALSE);
box(gameOverWin,0,0); box(gameOverWin,0,0);

@ -1,5 +1,4 @@
#include <world.h> #include <world.h>
#include <screen.h>
#include <collisionDetection.h> #include <collisionDetection.h>
#include <events.h> #include <events.h>
#include <getPos.h> #include <getPos.h>
@ -48,7 +47,7 @@ void gameLoop(){
} }
case 'd': case 'd':
case 'D':{ case 'D':{
if(allEntities[0].curXpos < scrCols-2){ if(allEntities[0].curXpos < stdscrCols-2){
allEntities[0].nextXpos++; allEntities[0].nextXpos++;
if(allEntities[0].nextXpos > viewportWinCols-1){ if(allEntities[0].nextXpos > viewportWinCols-1){
allEntities[0].nextXpos = viewportWinCols-1; allEntities[0].nextXpos = viewportWinCols-1;

@ -1,4 +1,3 @@
#include <screen.h>
#include <world.h> #include <world.h>
#include <getPos.h> #include <getPos.h>
struct OpenPos getOpenPos(){ struct OpenPos getOpenPos(){

@ -1,15 +1,12 @@
#include <structs.h> #include <structs.h>
#include <stdlib.h>
#include <string.h> #include <string.h>
#include <ncurses.h> #include <ncurses.h>
#include <world.h> #include <world.h>
#include <screen.h>
#include <getPos.h> #include <getPos.h>
void initializeWorld() { void initializeWorld() {
struct Entity player = {.type="player",.symbol='@', .curYpos=1, .curXpos=1, .nextYpos=1, .nextXpos=1 ,.isAlive=1};
struct Weapon pistol = {.type="Pistol", .isAlive=1, .range=3, .maxCapacity=12, .curCapacity=12, .symbols="-\\|/-\\|/"};
srand(time(NULL)); srand(time(NULL));
initscr(); initscr();
curs_set(0); curs_set(0);
@ -17,10 +14,26 @@ void initializeWorld() {
nodelay(stdscr, TRUE); nodelay(stdscr, TRUE);
keypad(stdscr, TRUE); keypad(stdscr, TRUE);
noecho(); noecho();
getmaxyx(stdscr,scrRows,scrCols);
viewportWin=newwin(scrRows-10,scrCols,0,0); struct Entity player = {.type="player",.symbol='@', .curYpos=1, .curXpos=1, .nextYpos=1, .nextXpos=1 ,.isAlive=1};
getmaxyx(viewportWin,viewportWinRows,viewportWinCols); struct Weapon pistol = {.type="Pistol", .isAlive=1, .range=3, .maxCapacity=12, .curCapacity=12, .symbols="-\\|/-\\|/"};
scoreWin=newwin(10,scrCols,scrRows-10,0);
viewportWinRows = 21;
viewportWinCols = 87;
scoreWinRows = 7;
scoreWinCols = 87;
getmaxyx(stdscr,stdscrRows,stdscrCols);
if (stdscrRows < viewportWinRows+scoreWinRows || stdscrCols < viewportWinCols){
endwin();
printf("ERROR: Terminal too small\n");
printf("Minimum size is: %dx%d\n",viewportWinRows+scoreWinRows,viewportWinCols);
printf("Terminal size is: %dx%d\n",stdscrRows,stdscrCols);
exit(0);
}
viewportWin=newwin(viewportWinRows,viewportWinCols,0,0);
scoreWin=newwin(scoreWinRows,scoreWinCols,viewportWinRows,0);
allEntities[0]=player; allEntities[0]=player;
allEntities[0].curYpos=viewportWinRows/2; allEntities[0].curYpos=viewportWinRows/2;

@ -1,13 +0,0 @@
#ifndef _SCREEN
#define _SCREEN
#include <ncurses.h>
WINDOW* viewportWin;
WINDOW* scoreWin;
WINDOW* gameOverWin;
int scrRows,scrCols;
int viewportWinRows,viewportWinCols;
#endif

@ -21,6 +21,7 @@ struct Entity {
struct Weapon weapons[9]; struct Weapon weapons[9];
int curWeapon; int curWeapon;
int isAlive; int isAlive;
int hitCount;
int killCount; int killCount;
int projectilesFired; int projectilesFired;

@ -1,4 +1,3 @@
#include <screen.h>
#include <world.h> #include <world.h>
#include <collisionDetection.h> #include <collisionDetection.h>
#include <weaponsSystem.h> #include <weaponsSystem.h>

@ -4,10 +4,18 @@
#define MAX_ENTITIES 10000 #define MAX_ENTITIES 10000
#define MAX_ITEMS 100 #define MAX_ITEMS 100
#include <structs.h> #include <structs.h>
#include <screen.h> #include <ncurses.h>
#include <time.h> #include <time.h>
WINDOW* viewportWin;
WINDOW* scoreWin;
WINDOW* gameOverWin;
int stdscrRows,stdscrCols;
int viewportWinRows,viewportWinCols;
int scoreWinRows,scoreWinCols;
struct Entity allEntities[MAX_ENTITIES]; struct Entity allEntities[MAX_ENTITIES];
struct Item allItems[MAX_ITEMS]; struct Item allItems[MAX_ITEMS];

@ -1,6 +1,5 @@
#include <world.h> #include <world.h>
#include <getPos.h> #include <getPos.h>
#include <screen.h>
#include <collisionDetection.h> #include <collisionDetection.h>
void addZombie(int y, int x){ void addZombie(int y, int x){
if (y && x){ if (y && x){

Loading…
Cancel
Save