Advertisement
Guest User

Untitled

a guest
May 24th, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.79 KB | None | 0 0
  1. public class Controller {
  2.  
  3.     // These are ENUM?
  4.     private final int offenseSuccess = -100;
  5.     private int offensiveCritical = -95;
  6.     private final int defenseSuccess = 100;
  7.     private int defensiveCritical = 99;
  8.     private int breakingPoint = 0;
  9.     private final static double smallSuccessPercentage = .65;
  10.     private final static double mediumSuccessPercentage = .85;
  11.  
  12.     private final Range shortSuccessOffenseRange = new Range(2, 4);
  13.     private final Range shortSuccessDefenseRange = new Range(1, 2);
  14.     private final Range mediumSuccessOffenseRange = new Range(shortSuccessOffenseRange.maximumPoint, 10);
  15.     private final Range mediumSuccessDefenseRange = new Range(-2, shortSuccessDefenseRange.minimumPoint);
  16.     private boolean hasBeenSimulated = false;
  17.     private PlayResults mResults;
  18.  
  19.     // These are ENUM?
  20.     public final static int OFFENSIVE_WIN = 0x111111;
  21.     public final static int DEFENSIVE_WIN = 0x222222;
  22.     public final static int LARGE_SUCCESS = 0x333333;
  23.     public final static int MEDIUM_SUCCESS = 0x444444;
  24.     public final static int SMALL_SUCCESS = 0x555555;
  25.  
  26.     Controller() {
  27.         reset();
  28.     }
  29.  
  30.     final void simulate() {
  31.         if (!hasBeenSimulated) return;
  32.         // this should be Result Class maybe?
  33.         final int result = new Random().nextInt(defenseSuccess - offenseSuccess) + offenseSuccess;
  34.         // should be: mResults.offensiveWin();
  35.         if (result <= offensiveCritical) mResults.setTouchdownStatus(true).setFinalResult(OFFENSIVE_WIN);
  36.         // should be: mResults.defensiveWin();
  37.         if (result >= defensiveCritical) mResults.setTouchdownStatus(true).setFinalResult(DEFENSIVE_WIN);
  38.         int minYardRange = 0;
  39.         int maxYardRange = 0;
  40.  
  41.         // should be mresults.isDone()? isFinal?
  42.         if (mResults.getFinalResult() == 0) {
  43.             boolean dun = false;
  44.             // if new Result class result.isOffensiveWin()?
  45.             if (result < breakingPoint) {
  46.                 // move these to a method
  47.                 mResults.setFinalResult(OFFENSIVE_WIN);
  48.                 if (result < (breakingPoint - (breakingPoint() * mediumSuccessPercentage))) {
  49.                     minYardRange = mediumSuccessOffenseRange.maximumPoint;
  50.                     maxYardRange = 100;
  51.                     dun = true;
  52.                 }
  53.                 if (!dun && result < breakingPoint - (breakingPoint() * smallSuccessPercentage)) {
  54.                     minYardRange = shortSuccessOffenseRange.maximumPoint;
  55.                     maxYardRange = mediumSuccessOffenseRange.maximumPoint;
  56.                     dun = true;
  57.                 }
  58.                 if (!dun) {
  59.                     minYardRange = shortSuccessOffenseRange.minimumPoint;
  60.                     maxYardRange = shortSuccessOffenseRange.maximumPoint;
  61.                 }
  62.             } else {
  63.                 // move this to a method
  64.                 final int breakingPointGap = Math.abs(defenseSuccess) - Math.abs(breakingPoint);
  65.                 mResults.setFinalResult(DEFENSIVE_WIN);
  66.                 if (result > breakingPoint + (breakingPointGap * mediumSuccessPercentage)) {
  67.                     minYardRange = mediumSuccessDefenseRange.maximumPoint;
  68.                     maxYardRange = -100;
  69.                     dun = true;
  70.                 }
  71.                 if (!dun && result > breakingPoint + (breakingPointGap * smallSuccessPercentage)) {
  72.                     minYardRange = mediumSuccessDefenseRange.maximumPoint;
  73.                     maxYardRange = shortSuccessDefenseRange.maximumPoint;
  74.                     dun = true;
  75.                 }
  76.                 if (!dun) {
  77.                     minYardRange = shortSuccessDefenseRange.maximumPoint;
  78.                     maxYardRange = shortSuccessDefenseRange.minimumPoint;
  79.                 }
  80.             }
  81.         }
  82.         final int rangeModifier = 100;
  83.         final int bound = (((maxYardRange - minYardRange) + rangeModifier) + minYardRange) - rangeModifier;
  84.         mResults.setYardsGainedOnPlay(bound == 0 ? 0 :
  85.                 new Random().nextInt(Math.abs(bound)) * (bound < 0 ? -1 : 1));
  86.         hasBeenSimulated = true;
  87.     }
  88.  
  89.     public int breakingPoint() {
  90.         return Math.abs(offenseSuccess) - Math.abs(breakingPoint);
  91.     }
  92.  
  93.     final boolean isTouchdown() {
  94.         return mResults.getTouchdownStatus();
  95.     }
  96.  
  97.     final int resultStatus() {
  98.         return mResults.getFinalResult();
  99.     }
  100.  
  101.     final int getYardsGained() {
  102.         return mResults.getYardsGained();
  103.     }
  104.  
  105.     final void reset() {
  106.         mResults = new PlayResults();
  107.         hasBeenSimulated = false;
  108.     }
  109.  
  110.     private class Range {
  111.         private final int minimumPoint;
  112.         private final int maximumPoint;
  113.  
  114.         private Range(final int minPoint, final int maxPoint) {
  115.             minimumPoint = minPoint;
  116.             maximumPoint = maxPoint;
  117.         }
  118.     }
  119.  
  120.     final class PlayResults {
  121.         private boolean wasTouchdown = false;
  122.         private int finalResult = 0;
  123.         private int yardsGainedOnPlay = 0;
  124.  
  125.         PlayResults() {
  126.         }
  127.  
  128.         private final PlayResults setTouchdownStatus(final boolean isTouchdown) {
  129.             wasTouchdown = isTouchdown;
  130.             return this;
  131.         }
  132.  
  133.         private final PlayResults setFinalResult(final int result) {
  134.             finalResult = result;
  135.             return this;
  136.         }
  137.  
  138.         private final PlayResults setYardsGainedOnPlay(final int yardsGained) {
  139.             yardsGainedOnPlay = yardsGained;
  140.             return this;
  141.         }
  142.  
  143.         public final boolean getTouchdownStatus() {
  144.             return wasTouchdown;
  145.         }
  146.  
  147.         public final int getFinalResult() {
  148.             return finalResult;
  149.         }
  150.  
  151.         public final int getYardsGained() {
  152.             return yardsGainedOnPlay;
  153.         }
  154.     }
  155. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement