Advertisement
Guest User

Untitled

a guest
Feb 8th, 2016
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.06 KB | None | 0 0
  1. package encapsulation;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5.  
  6. public class Nim {
  7.     private List<Integer> size = new ArrayList<Integer>();
  8.    
  9.     Nim(int pileSize) {
  10.         size.add(pileSize);
  11.         size.add(pileSize);
  12.         size.add(pileSize);
  13.     }
  14.    
  15.     Nim() {
  16.         size.add(10);
  17.         size.add(10);
  18.         size.add(10);
  19.     }
  20.    
  21.     void removePieces(int number, int targetPile) {
  22.         //check that we use a valid target pile 0, 1, 2.
  23.         if (targetPile >= 0 && targetPile < 3) {
  24.         }
  25.         else {
  26.             throw new IllegalArgumentException("targetpile isnt between 0 and 2");
  27.         }
  28.        
  29.         //cant remover less than 1 piece
  30.         if (number < 1) {
  31.             throw new IllegalArgumentException("number cant be less than 1");
  32.         }
  33.        
  34.         //check if game is over
  35.         if (isGameOver() == true) {
  36.             throw new IllegalStateException("game is over");
  37.         }
  38.        
  39.         //remove pieces if valid move
  40.         if (isValidMove(number, targetPile) == true) {
  41.             System.out.println("REMOVE BEFORE: number: " + number + " targetpile: " + targetPile + " pilesize: " + size.get(targetPile) + " " + ((size.get(targetPile) - number) >= 0));
  42.             size.set(targetPile, size.get(targetPile) - number);
  43.             System.out.println("REMOVE AFTER: number: " + number + " targetpile: " + targetPile + " pilesize: " + size.get(targetPile) + " " + ((size.get(targetPile) - number) == 0));
  44.  
  45.         }
  46.         else {
  47.             throw new IllegalArgumentException("cant remove more pieces than the object has");
  48.         }
  49.     }
  50.    
  51.     boolean isValidMove(int number, int targetPile) {
  52.        
  53.         System.out.println("number: " + number + " targetpile: " + targetPile + " pilesize: " + size.get(targetPile) + " " + ((size.get(targetPile) - number) >= 0));
  54.        
  55.         //test if valid move.
  56.         if (number < 1) {
  57.             return false;
  58.         }
  59.         if ((size.get(targetPile) - number) >= 0) {
  60.  
  61.             return true;
  62.         }
  63.         else {
  64.             return false;
  65.         }
  66.     }
  67.    
  68.     boolean isGameOver() {
  69.         if (size.get(0) == 0 || size.get(1) == 0 || size.get(2) == 0) {
  70.             return true;
  71.         }
  72.         else {
  73.             return false;
  74.         }
  75.     }
  76.    
  77.     int getPile(int targetPile) {
  78.         return size.get(targetPile);
  79.     }
  80.    
  81.     public String toString() {
  82.         return "";
  83.     }
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement