Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Zombie2021;
- public class Apoc {
- private int numZombies;
- private int daysLeft;
- private Person p;
- private int zombiesKilled=0;
- private int numGunHits=0;
- private int numBluntHits=0;
- private int numRoundsCombat=0;
- public Apoc(int days, Person p){
- this.p=p;
- daysLeft=days;
- }
- public void runSimulation(){
- while( daysLeft>0&&p.getPersonCount()>0&&p.getNumFood()>0){
- eatFood();
- fight();
- if(p.getPersonCount()>0) {
- daysLeft--;
- }
- }
- if(p.getPersonCount()>0&&p.getNumFood()>0){
- System.out.println("You win!");
- }
- else if(p.getNumFood()<=0){
- System.out.println("You all starved");
- }
- else{
- System.out.println("everyone died!");
- }
- System.out.printf("Days survived: %d%n", Utilities.NUM_DAYS-daysLeft);
- System.out.printf("Zombies killed: %d%n", zombiesKilled);
- System.out.printf("Rounds of combat: %d%n", numRoundsCombat);
- System.out.printf("Num gun hits: %d%n", numGunHits);
- System.out.printf("Num blunt hits: %d%n", numBluntHits);
- }
- public void eatFood(){
- p.setNumFood(p.getNumFood()-p.getPersonCount());
- }
- public boolean fight(){
- boolean peopleLeft=p.getPersonCount()>0;
- //generate zombies
- numZombies=Utilities.randomInRange(10,25);
- if(p.getAmmo()>0){
- peopleLeft=gunFight(numZombies);
- }
- else{
- peopleLeft=bluntFight(numZombies);
- }
- return peopleLeft;
- }
- public boolean gunFight(int numZed){
- //fight until all zombies are dead
- //person shoots
- int zHits=0;
- while(numZed>0&&p.getPersonCount()>0){
- if(p.getAmmo()>0) {//shoot
- p.setAmmo(p.getAmmo()-1);//consume ammo
- if (Utilities.randomInRange(1,5)==2) {//hit
- numGunHits++;
- zHits++;
- if(Utilities.randomInRange(1,3)==1||zHits==2){
- numZed--;
- zHits=0;
- zombiesKilled++;
- }
- }else{//miss with gun
- if(Utilities.randomInRange(1,3)==1){
- p.killPerson();
- }
- }//end gun miss
- numRoundsCombat++;
- }else{//no ammo do blunt fight
- return bluntFight(numZed);
- }
- }
- return p.getPersonCount()>0;
- }
- public boolean bluntFight(int numZed){
- int zHits=0;
- while(p.getPersonCount()>0&&numZed>0){//each iteration is a single hit
- if(Utilities.randomInRange(1,3)==1){
- zHits++;
- numBluntHits++;
- if(Utilities.randomInRange(1,10)==1 || zHits==3){
- numZed--;
- zHits=0;
- zombiesKilled++;
- }
- }else{//miss
- if(Utilities.randomInRange(1,2)==1){
- p.killPerson();
- }//person dies
- }//end miss
- numRoundsCombat++;
- }//end fight loop
- return p.getPersonCount()>0;
- }//end blunt fight
- }
Advertisement
Add Comment
Please, Sign In to add comment