Commit 3296e09

mo khan <mo@mokhan.ca>
2019-08-04 22:07:14
work towards bridging ArrayList with 2d array
1 parent 7f13704
src/Q8/BadmintonScoring.java
@@ -3,7 +3,7 @@ package Q8;
 import java.util.*;
 
 public class BadmintonScoring {
-  private int[][] scores;
+  protected int[][] scores;
   private static final int PLAYER1 = 0;
   private static final int PLAYER2 = 1;
 
src/Q8/BadmintonScoringWithStroke.java
@@ -3,15 +3,14 @@ package Q8;
 import java.util.*;
 
 public class BadmintonScoringWithStroke extends BadmintonScoring {
-  private ArrayList<Point> scores;
-  private int score1;
-  private int score2;
+  private ArrayList<Point> points;
   private static final int PLAYER1 = 0;
   private static final int PLAYER2 = 1;
 
-  public BadmintonScoringWithStroke(ArrayList<Point> scores) {
+  public BadmintonScoringWithStroke(ArrayList<Point> points) {
     super(new int[0][0]);
-    this.scores = scores;
+    this.points = points;
+    this.scores = to2DArray(points);
   }
 
   public String getMostUsedStrokePlayer1() {
@@ -24,7 +23,8 @@ public class BadmintonScoringWithStroke extends BadmintonScoring {
 
   private String maxStrokeFor(int player) {
     int[] strokes = new int[] {0, 0, 0, 0, 0};
-    for (Point point : this.scores) {
+
+    for (Point point : this.points) {
       if (point.getPlayer() != player) continue;
 
       switch (point.getStroke()) {
@@ -70,4 +70,18 @@ public class BadmintonScoringWithStroke extends BadmintonScoring {
         return "unknown";
     }
   }
+
+  private int[][] to2DArray(ArrayList<Point> points) {
+    int[][] scores = new int[points.size()][2];
+
+    for (int i = 0; i < points.size(); i++) {
+      Point point = points.get(i);
+
+      scores[i][Point.PLAYER1] = i == 0 ? 0 : scores[i - 1][Point.PLAYER1];
+      scores[i][Point.PLAYER2] = i == 0 ? 0 : scores[i - 1][Point.PLAYER2];
+      scores[i][point.getPlayer()] = point.getScore();
+    }
+
+    return scores;
+  }
 }
src/Q8/BadmintonScoringWithStrokeTest.java
@@ -58,4 +58,20 @@ public class BadmintonScoringWithStrokeTest extends TestCase {
   public void test_getMostUsedStrokePlayer2() {
     assertEquals("net-shot", subject.getMostUsedStrokePlayer2());
   }
+
+  public void test_getPlayer1Points() {
+    assertEquals(5, this.subject.getPlayer1Points());
+  }
+
+  // public void test_getPlayer2Points() {
+  // assertEquals(21, this.subject.getPlayer2Points());
+  // }
+
+  // public void test_getContinuousPointsPlayer1() {
+  // assertEquals(2, this.subject.getContinuousPointsPlayer1());
+  // }
+
+  // public void test_getContinuousPointsPlayer2() {
+  // assertEquals(9, this.subject.getContinuousPointsPlayer2());
+  // }
 }