001 /** 002 * A GameSettings object encapsulates the options for a new game of Antichess. 003 * 004 * @specfield whiteHuman : true if white will be a human player, else false 005 * @specfield whiteTime : the time allotted to white, in milliseconds 006 * @specfield blackHuman : true if black will be a human player, else false 007 * @specfield blackTime : the time allotted to black, in milliseconds 008 * @specfield powerups : determines the location of powerups on the board 009 */ 010 011 package ui; 012 013 import core.*; 014 015 public class GameSettings { 016 private boolean whiteHuman; // True if the white player is human 017 private int whiteTime; // Time in milliseconds allotted to White 018 private boolean blackHuman; 019 private int blackTime; 020 private String powerupString; 021 022 /** 023 * Abstraction Function AF(r) = gs 024 * gs.whiteHuman = r.whiteHuman 025 * gs.whiteTime = r.whiteTime 026 * gs.blackHuman = r.blackHuman 027 * gs.blackTime = r.blackTime 028 * gs.powerups : determined by r.powerupString 029 */ 030 031 /** 032 * Constructor that does not specify number of powerups. The default is 0. 033 */ 034 public GameSettings(boolean wHuman, int wTime, 035 boolean bHuman, int bTime) { 036 this(wHuman, wTime, bHuman, bTime, 0); 037 } 038 039 /** 040 * @param wHuman : true if white is human 041 * @param wTime :Time in milliseconds allotted to white player 042 * @param bHuman : true if black player is human 043 * @param bTime : Time in milliseconds allotted to black player 044 * @param numPairs : The number of pairs of powerups on the board. Defaults 045 * to 0 if numPairs < 0; defaults to 16 if numPairs > 16. 046 */ 047 public GameSettings(boolean wHuman, int wTime, 048 boolean bHuman, int bTime, int numPairs) { 049 whiteHuman = wHuman; 050 whiteTime = wTime; 051 blackHuman = bHuman; 052 blackTime = bTime; 053 054 if (numPairs < 0) { 055 numPairs = 0; 056 } 057 else if (numPairs > 16) { 058 numPairs = 16; 059 } 060 061 powerupString = PowerupHelper.randomPowerupString(numPairs); 062 } 063 064 /** 065 * @return true if the white side will be played by a human 066 */ 067 public boolean isWhiteHuman() { 068 return whiteHuman; 069 } 070 071 /** 072 * @return true if the black side will be played by a human 073 */ 074 public boolean isBlackHuman() { 075 return blackHuman; 076 } 077 078 /** 079 * @return the time in milliseconds white will have in this game 080 */ 081 public int getWhiteTime() { 082 return whiteTime; 083 } 084 085 /** 086 * @return the time in milliseconds black will have in this game 087 */ 088 public int getBlackTime() { 089 return blackTime; 090 } 091 092 /** 093 * @return the string describing the positions of this.powerups 094 */ 095 public String getPowerupString() { 096 return powerupString; 097 } 098 }