Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package pl.polsl.java.kamil.zietek.lab2.model;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.List;
- /**
- * Database class, contains array of players and list of drawings.
- *
- * @author Kamil Zietek
- * @version 2.0
- */
- public class Database {
- /**
- * Number of players in game.
- */
- private final int numberOfPlayers;
- /**
- * Dynamic list of drawing results, new drawing means new element on list.
- */
- private final List<Lottery> drawings;
- /**
- * Static table of players, size set in constructor.
- */
- private final Player[] players;
- /**
- * Constructor of database
- *
- * @param numberOfPlayers
- */
- public Database(int numberOfPlayers) {
- this.numberOfPlayers = numberOfPlayers;
- this.drawings = new ArrayList<>();
- this.players = new Player[numberOfPlayers];
- }
- /**
- * Add new player to database
- *
- * @param id of player
- * @param name of player
- * @param surname of player
- * @param age of player
- */
- public void addNewPlayer(int id, String name, String surname, int age) {
- players[id] = new Player(name, surname, age);
- }
- /**
- * Number of players getter
- *
- * @return the numberOfPlayers
- */
- public int getNumberOfPlayers() {
- return numberOfPlayers;
- }
- /**
- * Array of players getter
- *
- * @return array of players
- */
- public Player[] getPlayers() {
- return players;
- }
- /**
- * List of drawings getter
- *
- * @return list of drawings
- */
- public List<Lottery> getDrawings() {
- return drawings;
- }
- /**
- * Buy lottery ticket for chosen player
- *
- * @param player ID of player
- * @return true id success, false if failed
- */
- public boolean buyLotteryTicket(int player) {
- //System.out.print(players[0].getTicket().getResults()[0]);
- return players[player].randomLotteryTicket();
- }
- /**
- * Get lottery ticket bought by given player (only numbers)
- *
- * @param player ID of player
- * @return ticket owned by player (chosen numbers)
- */
- public int[] getLotteryTicket(int player) {
- return players[player].getTicket().getResults();
- }
- /**
- * Adds new drawing to database and return results of it.
- *
- * @return results of drawing
- */
- public int[] newDrawing() {
- Lottery tmp = new Lottery();
- tmp.fillResultsWithRandomNumbers();
- drawings.add(tmp);
- return tmp.getResults();
- }
- /**
- * Calculates reward for player after drawing
- *
- * @param id of player
- * @return hit numbers if any numbers hit, zero when no numbers hit,
- * negative value if no ticket bought
- */
- public int checkPlayerReward(int id) {
- if (players[id].getTicket().getResults()[0] != 0) {
- int reward = matchingNumbers(drawings.get(drawings.size() - 1).getResults(), players[id].getTicket().getResults());
- if (reward != 0) {
- players[id].changeCredits((int) Math.pow(10, reward));
- }
- players[id].getTicket().deleteTicket();
- return reward;
- } else {
- return -1;
- }
- }
- /**
- * Compares two arrays and looks for mathing numbers.
- *
- * @param first 1st array to check
- * @param second 2nd array to ckeck
- * @return amount of identical numbers
- */
- private int matchingNumbers(int[] first, int[] second) {
- int result = 0;
- for (int i = 0; i < 6; i++) {
- if (Arrays.binarySearch(first, second[i]) >= 0) {
- result++;
- }
- }
- return result;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement