Advertisement
Guest User

Untitled

a guest
Oct 31st, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 3.81 KB | None | 0 0
  1. package pl.polsl.java.kamil.zietek.lab2.model;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Arrays;
  5. import java.util.List;
  6.  
  7. /**
  8.  * Database class, contains array of players and list of drawings.
  9.  *
  10.  * @author Kamil Zietek
  11.  * @version 2.0
  12.  */
  13. public class Database {
  14.  
  15.     /**
  16.      * Number of players in game.
  17.      */
  18.     private final int numberOfPlayers;
  19.  
  20.     /**
  21.      * Dynamic list of drawing results, new drawing means new element on list.
  22.      */
  23.     private final List<Lottery> drawings;
  24.  
  25.     /**
  26.      * Static table of players, size set in constructor.
  27.      */
  28.     private final Player[] players;
  29.  
  30.     /**
  31.      * Constructor of database
  32.      *
  33.      * @param numberOfPlayers
  34.      */
  35.     public Database(int numberOfPlayers) {
  36.         this.numberOfPlayers = numberOfPlayers;
  37.         this.drawings = new ArrayList<>();
  38.         this.players = new Player[numberOfPlayers];
  39.     }
  40.  
  41.     /**
  42.      * Add new player to database
  43.      *
  44.      * @param id of player
  45.      * @param name of player
  46.      * @param surname of player
  47.      * @param age of player
  48.      */
  49.     public void addNewPlayer(int id, String name, String surname, int age) {
  50.         players[id] = new Player(name, surname, age);
  51.     }
  52.  
  53.     /**
  54.      * Number of players getter
  55.      *
  56.      * @return the numberOfPlayers
  57.      */
  58.     public int getNumberOfPlayers() {
  59.         return numberOfPlayers;
  60.     }
  61.  
  62.     /**
  63.      * Array of players getter
  64.      *
  65.      * @return array of players
  66.      */
  67.     public Player[] getPlayers() {
  68.         return players;
  69.     }
  70.  
  71.     /**
  72.      * List of drawings getter
  73.      *
  74.      * @return list of drawings
  75.      */
  76.     public List<Lottery> getDrawings() {
  77.         return drawings;
  78.     }
  79.  
  80.     /**
  81.      * Buy lottery ticket for chosen player
  82.      *
  83.      * @param player ID of player
  84.      * @return true id success, false if failed
  85.      */
  86.     public boolean buyLotteryTicket(int player) {
  87.        //System.out.print(players[0].getTicket().getResults()[0]);
  88.         return players[player].randomLotteryTicket();
  89.     }
  90.  
  91.     /**
  92.      * Get lottery ticket bought by given player (only numbers)
  93.      *
  94.      * @param player ID of player
  95.      * @return ticket owned by player (chosen numbers)
  96.      */
  97.     public int[] getLotteryTicket(int player) {
  98.         return players[player].getTicket().getResults();
  99.     }
  100.  
  101.     /**
  102.      * Adds new drawing to database and return results of it.
  103.      *
  104.      * @return results of drawing
  105.      */
  106.     public int[] newDrawing() {
  107.         Lottery tmp = new Lottery();
  108.         tmp.fillResultsWithRandomNumbers();
  109.         drawings.add(tmp);
  110.         return tmp.getResults();
  111.     }
  112.  
  113.     /**
  114.      * Calculates reward for player after drawing
  115.      *
  116.      * @param id of player
  117.      * @return hit numbers if any numbers hit, zero when no numbers hit,
  118.      * negative value if no ticket bought
  119.      */
  120.     public int checkPlayerReward(int id) {
  121.         if (players[id].getTicket().getResults()[0] != 0) {
  122.             int reward = matchingNumbers(drawings.get(drawings.size() - 1).getResults(), players[id].getTicket().getResults());
  123.             if (reward != 0) {
  124.                 players[id].changeCredits((int) Math.pow(10, reward));
  125.             }
  126.             players[id].getTicket().deleteTicket();
  127.             return reward;
  128.         } else {
  129.             return -1;
  130.         }
  131.     }
  132.  
  133.     /**
  134.      * Compares two arrays and looks for mathing numbers.
  135.      *
  136.      * @param first 1st array to check
  137.      * @param second 2nd array to ckeck
  138.      * @return amount of identical numbers
  139.      */
  140.     private int matchingNumbers(int[] first, int[] second) {
  141.         int result = 0;
  142.         for (int i = 0; i < 6; i++) {
  143.             if (Arrays.binarySearch(first, second[i]) >= 0) {
  144.                 result++;
  145.             }
  146.         }
  147.         return result;
  148.     }
  149.  
  150. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement