cgorrillaha

Untitled

Dec 3rd, 2021
766
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package Zombie2021;
  2.  
  3. public class Apoc {
  4.     private int numZombies;
  5.     private int daysLeft;
  6.     private Person p;
  7.     private int zombiesKilled=0;
  8.     private int numGunHits=0;
  9.     private int numBluntHits=0;
  10.     private int numRoundsCombat=0;
  11.  
  12.     public Apoc(int days, Person p){
  13.         this.p=p;
  14.         daysLeft=days;
  15.     }
  16.  
  17.     public void runSimulation(){
  18.         while( daysLeft>0&&p.getPersonCount()>0&&p.getNumFood()>0){
  19.             eatFood();
  20.             fight();
  21.             if(p.getPersonCount()>0) {
  22.                 daysLeft--;
  23.             }
  24.         }
  25.         if(p.getPersonCount()>0&&p.getNumFood()>0){
  26.            System.out.println("You win!");
  27.         }
  28.         else if(p.getNumFood()<=0){
  29.             System.out.println("You all starved");
  30.         }
  31.         else{
  32.             System.out.println("everyone died!");
  33.         }
  34.         System.out.printf("Days survived: %d%n", Utilities.NUM_DAYS-daysLeft);
  35.         System.out.printf("Zombies killed: %d%n", zombiesKilled);
  36.         System.out.printf("Rounds of combat: %d%n", numRoundsCombat);
  37.         System.out.printf("Num gun hits: %d%n", numGunHits);
  38.         System.out.printf("Num blunt hits: %d%n", numBluntHits);
  39.  
  40.     }
  41.  
  42.     public void eatFood(){
  43.         p.setNumFood(p.getNumFood()-p.getPersonCount());
  44.     }
  45.  
  46.     public boolean fight(){
  47.         boolean peopleLeft=p.getPersonCount()>0;
  48.         //generate zombies
  49.         numZombies=Utilities.randomInRange(10,25);
  50.         if(p.getAmmo()>0){
  51.             peopleLeft=gunFight(numZombies);
  52.         }
  53.         else{
  54.             peopleLeft=bluntFight(numZombies);
  55.         }
  56.         return peopleLeft;
  57.     }
  58.  
  59.     public boolean gunFight(int numZed){
  60.         //fight until all zombies are dead
  61.         //person shoots
  62.         int zHits=0;
  63.         while(numZed>0&&p.getPersonCount()>0){
  64.             if(p.getAmmo()>0) {//shoot
  65.                 p.setAmmo(p.getAmmo()-1);//consume ammo
  66.                 if (Utilities.randomInRange(1,5)==2) {//hit
  67.                     numGunHits++;
  68.                     zHits++;
  69.                     if(Utilities.randomInRange(1,3)==1||zHits==2){
  70.                         numZed--;
  71.                         zHits=0;
  72.                         zombiesKilled++;
  73.                     }
  74.                 }else{//miss with gun
  75.                     if(Utilities.randomInRange(1,3)==1){
  76.                         p.killPerson();
  77.                     }
  78.                 }//end gun miss
  79.                 numRoundsCombat++;
  80.             }else{//no ammo do blunt fight
  81.                 return bluntFight(numZed);
  82.             }
  83.         }
  84.         return p.getPersonCount()>0;
  85.     }
  86.  
  87.     public boolean bluntFight(int numZed){
  88.         int zHits=0;
  89.         while(p.getPersonCount()>0&&numZed>0){//each iteration is a single hit
  90.             if(Utilities.randomInRange(1,3)==1){
  91.                 zHits++;
  92.                 numBluntHits++;
  93.                 if(Utilities.randomInRange(1,10)==1 || zHits==3){
  94.                     numZed--;
  95.                     zHits=0;
  96.                     zombiesKilled++;
  97.                 }
  98.             }else{//miss
  99.                 if(Utilities.randomInRange(1,2)==1){
  100.                     p.killPerson();
  101.                 }//person dies
  102.             }//end miss
  103.             numRoundsCombat++;
  104.         }//end fight loop
  105.         return p.getPersonCount()>0;
  106.     }//end blunt fight
  107.  
  108. }
  109.  
RAW Paste Data