From a568d3cebf3e922e954aa56714ceda335f681bde Mon Sep 17 00:00:00 2001 From: Semih Date: Fri, 3 Feb 2023 08:07:41 +0300 Subject: [PATCH 01/13] theme --- .DS_Store | Bin 0 -> 6148 bytes old/double.html | 357 ---------------------------- old/public/css/backgammon-board.css | 77 ------ old/public/js/backgammon.js | 276 --------------------- old/public/play.html | 26 -- play/.DS_Store | Bin 0 -> 6148 bytes play/css/ui.css | 169 ++++++++----- play/img/.DS_Store | Bin 0 -> 6148 bytes play/img/wood.jpg | Bin 0 -> 38628 bytes play/js/backgammon.js | 39 +-- src/.DS_Store | Bin 0 -> 8196 bytes 11 files changed, 126 insertions(+), 818 deletions(-) create mode 100644 .DS_Store delete mode 100644 old/double.html delete mode 100644 old/public/css/backgammon-board.css delete mode 100644 old/public/js/backgammon.js delete mode 100644 old/public/play.html create mode 100644 play/.DS_Store create mode 100644 play/img/.DS_Store create mode 100644 play/img/wood.jpg create mode 100644 src/.DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..9a99ffad37e4467969b0382bce788455ace568ab GIT binary patch literal 6148 zcmeH~&2G~`5XWbel&*siIUuzcq`h#9s)P^%2P8L54v_#MjNkyMwd;sla_uN~8kG>_ zJ5K;_#1rr=oZ!D7t@6zDw+#S&P!jj zk{NNJOkLwSdDI`o>0uDBW!nKuz!JD_1mw57Nl$4&d(@|e?>7xFBbS9;_|7k7h_Fo1 zh+^{TRDb7ZdF<|GdBHRr1+mKe9*p8B%Nva!tW>US+}Py2%B#1k@4cgR>g9eu$-4gd zt?a$<^P|ATuhKL=kNx0vG@S0&?(C&W?nlXRtcs&>h?IA4q9jbG-E@+KnYxarCpdSw zvtQeu&03vST{JuGd0osNx7&5`p!IM*clg%5=99s}@#)9er}^iv>QRYdSyOh~=$U*& za1P?c8z*s^e88B@cjzTh?oyAQL3ikw!WC3skhO@kOc{;oa3$;K#aY)3XS34)&ekJ^ z^FHD~#c3d{z}%pmhQO0kwv4AFaW6td*V>f`n3tR1yi%1-wgfDJ|ABy99|T;gYqZd+ zmJT%P2mq~MSQ%pZ(;#bvQP*gp6*DlVOQE`ynIi_%= z>h8F{Q0c^6t+urUEP-VLW! - - - Backgammon Tutorial: When to double/take in race conditions - - - -

- Backgammon Tutorial:

-

- When to double/take in race conditions

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

- Question:

-
- What should Red do if Black doubles?
- - -
-
- What if it is Red's turn to play?
- - - -
-
- - - - - - diff --git a/old/public/css/backgammon-board.css b/old/public/css/backgammon-board.css deleted file mode 100644 index d7a310c..0000000 --- a/old/public/css/backgammon-board.css +++ /dev/null @@ -1,77 +0,0 @@ - -DIV.board -{ - width: 392px; - border: 4px solid brown; -} -DIV.counter -{ - float: left; - width: 20px; - height: 20px; - -moz-border-radius: 10px; - -webkit-border-radius: 10px; - border-radius: 10px; -} -DIV.red -{ - background: red; - text-align: center; - color: Black; - font-weight: bold; -} -DIV.black -{ - background: black; - text-align: center; - color: Red; - font-weight: bold; -} -DIV.pip -{ - float: left; - width: 20px; - height: 110px; - padding: 4px; -} -DIV.bar -{ - background: brown; -} -DIV.home -{ - border: none; - border-left: 4px solid brown; - padding-left: 2px; - padding-right: 2px; -} -DIV.bottom-pip -{ - -moz-transform:rotate(180deg); - -webkit-transform:rotate(180deg); - -ms-transform:rotate(180deg); -} -DIV.top-pip -{ - /* - border-left: 10px solid transparent; - border-right: 10px solid transparent; - border-top: 100px solid; - */ -} -DIV.red-pip -{ - background: #F99; - border-top-color: #F99; - border-bottom-color: #F99; -} -DIV.black-pip -{ - background: #999; - border-top-color: #999; - border-bottom-color: #999; -} -BR.clear -{ - clear: both; -} diff --git a/old/public/js/backgammon.js b/old/public/js/backgammon.js deleted file mode 100644 index 0c86170..0000000 --- a/old/public/js/backgammon.js +++ /dev/null @@ -1,276 +0,0 @@ -'use strict'; - -var Backgammon = { - - CONSTANTS: Object.freeze({ - HOME: 0, - BAR: 25, - RED: 0, - BLACK: 1 - }), - - Dice: function() { - this.rollOne = function() { - return Math.floor(Math.random() * 6) + 1; - } - this.rollTwo = function() { - return [this.rollOne(), this.rollOne()]; - } - }, - - BoardData: function() { - var _data = new Array(26); - for (var i = 0; i < 26; i++) { - _data[i] = [0, 0]; - } - function getPipIndex(pipNumber, player) { - // special pips: - if ((pipNumber == Backgammon.CONSTANTS.HOME) || (pipNumber == Backgammon.CONSTANTS.BAR)) { - return pipNumber; - } - // otherwise invert board if we are black - return player == Backgammon.CONSTANTS.RED ? pipNumber : 25 - pipNumber; - } - this.increment = function(pipNumber, player) { - return ++_data[getPipIndex(pipNumber, player)][player]; - } - this.decrement = function(pipNumber, player) { - return --_data[getPipIndex(pipNumber, player)][player]; - } - this.getCounters = function(pipNumber, player) { - return _data[getPipIndex(pipNumber, player)][player]; - } - }, - - BoardGui: function(boardElementId) { - - var _playerNames = ["red", "black"]; - var $board = $('#' + boardElementId); - - function init() { - $board.empty(); - $board.addClass('board') - .append($('
')) - .append($('
')) - .append($('
')) - .append($('
')) - .append($('
')) - .append($('
')) - .append($('
')) - .append($('
')) - .append($('
')) - .append($('
')) - .append($('
')) - .append($('
')) - .append($('
')) - .append($('
')) - .append($('
')) - .append($('
')) - .append($('
')) - .append($('
')) - .append($('
')) - .append($('
')) - .append($('
')) - .append($('
')) - .append($('
')) - .append($('
')) - .append($('
')) - .append($('
')) - .append($('
')) - .append($('
')) - .append($('
')) - .append($('
')); - } - init(); - - function getPipDiv(pipNumber, player) { - var playerName = _playerNames[player]; - switch (pipNumber) { - case Backgammon.CONSTANTS.HOME : { - return $('div#' + playerName + '-home'); - } - case Backgammon.CONSTANTS.BAR: { - return $('div#' + playerName + '-bar'); - } - default: { - return $('div#' + pipNumber); - } - } - } - - function getCounters($pipDiv) { - var totalCounters = parseInt($('.counter-total', $pipDiv).text()); - if (isNaN(totalCounters)) { - totalCounters = $('.counter', $pipDiv).length; - } - return totalCounters; - } - - this.addCounter = function(pipNumber, player) { - var playerName = _playerNames[player]; - var $pipDiv = getPipDiv(pipNumber, player); - var totalCounters = getCounters($pipDiv) + 1; - if (totalCounters > 5) { - $('.counter-total', $pipDiv).text(totalCounters); - } else if (totalCounters == 5) { - $pipDiv.append($('
').addClass(playerName)); - } else { - $pipDiv.append($('
').addClass(playerName)); - } - } - this.removeCounter = function(pipNumber, player) { - - var $pipDiv = getPipDiv(pipNumber, player); - var totalCounters = getCounters($pipDiv) - 1; - if (totalCounters > 5) { - $('.counter-total', $pipDiv).text(totalCounters); - } else if (totalCounters == 5) { - // remove number on the counter total - $('.counter-total', $pipDiv).text(''); - } else { - $('.counter', $pipDiv).first().remove(); - } - } - }, - - Board: function(boardElementId) { - - var _boardData, _boardGui; - var _boardElementId = boardElementId; - - function init() { - _boardData = new Backgammon.BoardData(); - _boardGui = new Backgammon.BoardGui(_boardElementId); - - addCounterToPip(24, Backgammon.CONSTANTS.RED); - addCounterToPip(24, Backgammon.CONSTANTS.RED); - addCounterToPip(1, Backgammon.CONSTANTS.BLACK); - addCounterToPip(1, Backgammon.CONSTANTS.BLACK); - addCounterToPip(6, Backgammon.CONSTANTS.RED); - addCounterToPip(6, Backgammon.CONSTANTS.RED); - addCounterToPip(6, Backgammon.CONSTANTS.RED); - addCounterToPip(6, Backgammon.CONSTANTS.RED); - addCounterToPip(6, Backgammon.CONSTANTS.RED); - addCounterToPip(19, Backgammon.CONSTANTS.BLACK); - addCounterToPip(19, Backgammon.CONSTANTS.BLACK); - addCounterToPip(19, Backgammon.CONSTANTS.BLACK); - addCounterToPip(19, Backgammon.CONSTANTS.BLACK); - addCounterToPip(19, Backgammon.CONSTANTS.BLACK); - addCounterToPip(8, Backgammon.CONSTANTS.RED); - addCounterToPip(8, Backgammon.CONSTANTS.RED); - addCounterToPip(8, Backgammon.CONSTANTS.RED); - addCounterToPip(17, Backgammon.CONSTANTS.BLACK); - addCounterToPip(17, Backgammon.CONSTANTS.BLACK); - addCounterToPip(17, Backgammon.CONSTANTS.BLACK); - addCounterToPip(13, Backgammon.CONSTANTS.RED); - addCounterToPip(13, Backgammon.CONSTANTS.RED); - addCounterToPip(13, Backgammon.CONSTANTS.RED); - addCounterToPip(13, Backgammon.CONSTANTS.RED); - addCounterToPip(13, Backgammon.CONSTANTS.RED); - addCounterToPip(12, Backgammon.CONSTANTS.BLACK); - addCounterToPip(12, Backgammon.CONSTANTS.BLACK); - addCounterToPip(12, Backgammon.CONSTANTS.BLACK); - addCounterToPip(12, Backgammon.CONSTANTS.BLACK); - addCounterToPip(12, Backgammon.CONSTANTS.BLACK); - } - init(); - - function addCounterToPip(pipNumber, player) { - // todo: check for legal moves - - _boardData.increment(pipNumber, player); - _boardGui.addCounter(pipNumber, player); - } - function removeCounterFromPip(pipNumber, player) { - // todo: check for legal moves - - _boardData.decrement(pipNumber, player); - _boardGui.removeCounter(pipNumber, player); - } - - function getDestinationPipNumber(player, pipNumber, moves) { - if (pipNumber == Backgammon.CONSTANTS.BAR && player == Backgammon.CONSTANTS.BLACK) { - // when coming off bar - return moves; - } - - var direction = (player == 0) ? -1 : 1; - var dest = pipNumber + (moves*direction); - if (dest > 24 || dest < 0) return 0; // when bearing off to home - return dest; - } - - this.isMoveLegal = function(player, pipNumber, moves) { - var startPip = this.getPip(pipNumber); - - // case: there is no counter to move: fail - if (startPip[player] == 0) { - console.info('no counter at ' + pipNumber); - return false; - } - - // case: there is a counter on the bar, and this is not it - if ((pipNumber != Backgammon.CONSTANTS.BAR) && (this.getPip(Backgammon.CONSTANTS.BAR)[player] > 0)) { - console.info('must move counter off bar first'); - return false; - } - - var destPipNumber = getDestinationPipNumber(player, pipNumber, moves); - if (destPipNumber == 0) { - // check all pieces are in home board - // REVIEW: this code is fiddly, should be extracted away somewhere - var p1 = 1, p2 = 18; - if (player == 0) { - p1 += 6; - p2 += 6; - } - for (var p = p1; p <= p2; p++) { - if (_boardData.getCounters(p, player) > 0) { - return false; - } - } - // already checked bar above - return true; - } - - var opponent = (player == 0) ? 1 : 0; - var destPip = this.getPip(destPipNumber); - - // case: there is a counter, but opponent blocks the end pip - if (destPip[opponent] >= 2) { - console.info('pip is blocked'); - return false; - } - // todo: more checks, eg player can bear off etc - return true; - } - - this.move = function(player, pipNumber, moves) { - // check it's legal first - if (!this.isMoveLegal(player, pipNumber, moves)) { - return false; - } - - var startPip = this.getPip(pipNumber); - - var opponent = (player == 0) ? 1 : 0; - - var destPipNumber = getDestinationPipNumber(player, pipNumber, moves); - - var destPip = this.getPip(destPipNumber); - if (destPip[opponent] == 1) { - removeCounterFromPip(destPipNumber, opponent); - addCounterToPip(Backgammon.CONSTANTS.BAR, opponent); - } - - removeCounterFromPip(pipNumber, player); - addCounterToPip(destPipNumber, player); - - return true; - } - - this.getPip = function(pipNumber) { - return [_boardData.getCounters(pipNumber, 0), _boardData.getCounters(pipNumber, 1)]; - } - } -}; \ No newline at end of file diff --git a/old/public/play.html b/old/public/play.html deleted file mode 100644 index 8d661f8..0000000 --- a/old/public/play.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - Backgammon - - - - - - -

- Backgammon

- -
- - - - diff --git a/play/.DS_Store b/play/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..4547152894a431c8dbd95b770cd94ac37eeee5f5 GIT binary patch literal 6148 zcmeHKL2uJA6n<_CxB)~DNZSP|7jD(mP)f%EDJ$i$8&VKE0NRqKYJ<|aYEsG;it;zu zpV%+phLHFLT=*~WY`;!q9XoJ96Z4bo@7eD?$Nrvd#{j^3^Uwik0074#v1Va)j!3&K zYf_<}TZl}KAqGJ#0&L0Qj2H$C1DBlvxp%8DfE3c*xU_$F(6aSYiCP4C1&ee_yZl=) zjiWScwZ5}TwRY|L4bClY-L~F%W3liuKbxmLfA&hYp8MH2ApM09@u}_yFQegNzj61e zNHRZ4hBFl$g+p|Cy%!~+SoFj^2~#zWrwyFfd40dJndeTo)wG@V_OfZ`j~}4^u>EMc ztn-cg&Xe7P$>CA{Vfpcs&H}?jO359<6&#~N%X{a|l2{}o?2+D8h+qPvGBqqmOPLzw z6^|TmASP3^u7u(zqTeUd_~##;=HAyYlHOBmc!6~~UK`cIStSs{5Z=QUj3L80#^pJ} z36B5!94qklY>L^v^L#E@g4^9TCb-*C3GQ_MKEaBBGwEHW>1rZv2Y&NvF5j%$Fkl$C zfB|_v*jOaGgoQ?RbYP{P0Ejj0R)V_v`A4*62ck<@Xv7{Arb7{RD5EC^qqhUo;b?cs zztE_|fvGR!IP_&kFBC>k4`wTOV6H|}8wLymWd^Fc*^u}Dvp>K8%R#1P7%&X{R}8RP z-|P2qNp!caEl%FGHkJb{Qlwv@QH5Yd*RfLMRlJEs3EFI_Ai9KwM(jZ`KLUydQyB*S HDFeR%bWhgb literal 0 HcmV?d00001 diff --git a/play/css/ui.css b/play/css/ui.css index 768fb06..a15ff5d 100644 --- a/play/css/ui.css +++ b/play/css/ui.css @@ -1,157 +1,196 @@ DIV.game-container { font-family: Arial; + } -DIV.game-container > DIV { + +DIV.game-container>DIV { float: left; } + DIV.game-container::after { content: " "; display: block; height: 0; clear: both; } + DIV.board { - width: 392px; - border: 4px solid brown; + width: 675px; + border: 4px solid #140d07c4; + background-image: url('../img/wood.jpg'); } + DIV.checker { float: left; - width: 20px; - height: 20px; - -moz-border-radius: 10px; - -webkit-border-radius: 10px; - border-radius: 10px; -} -DIV.red { - background: red; + width: 40px; + height: 40px; + -moz-border-radius: 20px; + -webkit-border-radius: 20px; + border-radius: 20px; + display: flex; + align-items: center; + justify-content: center; +} + +DIV.white { + background: linear-gradient(-30deg, #ddd, #fff); text-align: center; color: black; font-weight: bold; } + DIV.black { - background: black; + background: linear-gradient(-30deg, #000, #333); text-align: center; - color: red; + color: white; font-weight: bold; } + DIV.checker-container { float: left; - width: 20px; - height: 110px; + width: 40px; + height: 220px; padding: 4px; } + DIV.checker-container.valid-source:hover { - background: green; + background-color: rgb(0, 128, 0,0.5); cursor: pointer; } + DIV.checker-container.valid-source:active, DIV.checker-container.valid-source.selected { - background: darkgreen; + background-color: rgb(0, 100, 0,0.5); } + DIV.checker-container.valid-destination { - background: yellow; + background-color: rgba(255, 255, 0, 0.5); cursor: pointer; } + DIV.checker-container.valid-destination:hover { - background: gold; + background-color: rgba(255, 183, 0, 0.5); } + DIV.checker-container.valid-destination:active { - background: goldenrod; + background-color: rgba(255, 183, 0, 0.5); } + DIV.bar { - background: brown; + background-color: #140d07c4; } + DIV.home { border: none; - padding-left: 2px; - padding-right: 2px; + -webkit-box-shadow:inset 0px 0px 0px 6px #140d07c4; + -moz-box-shadow:inset 0px 0px 0px 6px #140d07c4; + box-shadow:inset 0px 0px 0px 6px #140d07c4; + } + DIV.home.checker-container-top { - border-left: 4px solid brown; + border-left: 8px solid #140d07c4; + } + DIV.home.checker-container-bottom { - border-right: 4px solid brown; + border-right: 8px solid #140d07c4; } -DIV.checker-container-bottom, DIV.checker-container-bottom > DIV { - -moz-transform:rotate(180deg); - -webkit-transform:rotate(180deg); - -ms-transform:rotate(180deg); + +DIV.checker-container-bottom, +DIV.checker-container-bottom>DIV { + -moz-transform: rotate(180deg); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + } + DIV.checker-container-top { - /* - border-left: 10px solid transparent; - border-right: 10px solid transparent; - border-top: 100px solid; - */ -} -DIV.point-red { - background: #F99; - border-top-color: #F99; - border-bottom-color: #F99; -} -DIV.point-black { - background: #999; - border-top-color: #999; - border-bottom-color: #999; + +} +DIV.checker-container-bottom { + } + +.point-white { + background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 600' preserveAspectRatio='none'%3E%3Cpolygon points='50 500 100 0 0 0 50 500' fill='%23fcd18082'/%3E%3C/svg%3E"); +} + +.point-black { + background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 600' preserveAspectRatio='none'%3E%3Cpolygon points='50 500 100 0 0 0 50 500' fill='%23140d0782'/%3E%3C/svg%3E"); +} + BR.clear { clear: both; } DIV.side-container { - background: lightgray; + background: lightgray; } -DIV.dice-container.active > DIV.die { - box-shadow: 0 0 100px yellow; + +DIV.dice-container.active>DIV.die { + box-shadow: 0 0 50px rgb(0, 255, 0); } -DIV.dice-container.dice-container-black > DIV.die { + +DIV.dice-container.dice-container-black>DIV.die { background: black; - color: red; + color: white; } -DIV.dice-container.dice-container-red > DIV.die { - background: red; + +DIV.dice-container.dice-container-white>DIV.die { + background: white; color: black; } + DIV.dice-container DIV.die { - width: 20px; - height: 20px; - border-radius: 8px; - padding: 6px; - margin: 5px; + width: 15px; + height: 15px; + border-radius: 15px; + padding: 12px; + margin: 10px; float: left; } + DIV.dice-container DIV.die.die-uses-0 { opacity: 0.3; } -DIV.dice-container DIV.die.die-uses-1, DIV.dice-container DIV.die.die-uses-2 { + +DIV.dice-container DIV.die.die-uses-1, +DIV.dice-container DIV.die.die-uses-2 { opacity: 1.0; } + DIV.dice-container DIV.die.die-uses-2::after { content: 'x2'; font-size: x-small; } + DIV.status-container { - height: 144px; + height: 330; overflow-y: scroll; - float: left; - margin: 8px 2px; + margin: 16px 4px; width: 100px; } + DIV.status-container::-webkit-scrollbar { width: 1em; } + DIV.status-container::-webkit-scrollbar-track { - -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); + -webkit-box-shadow: inset 0 0 12px rgba(0, 0, 0, 0.3); } + DIV.status-container::-webkit-scrollbar-thumb { - background-color: darkgrey; - outline: 1px solid slategrey; + background-color: darkgrey; + outline: 1px solid slategrey; } .highlight { - text-shadow: 0px 0px 20px red; + text-shadow: 0px 0px 40px white; } + .highlight.highlight-end { transition: all 1s ease-in-out; text-shadow: inherit; -} \ No newline at end of file +} + diff --git a/play/img/.DS_Store b/play/img/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..43df02aa3a563d1c32fcda55bfdf0c8958027a64 GIT binary patch literal 6148 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 literal 0 HcmV?d00001 diff --git a/play/js/backgammon.js b/play/js/backgammon.js index 39025cd..b975e27 100644 --- a/play/js/backgammon.js +++ b/play/js/backgammon.js @@ -7,7 +7,7 @@ define("Enums", ["require", "exports"], function (require, exports) { "use strict"; (function (PlayerId) { PlayerId[PlayerId["BLACK"] = 0] = "BLACK"; - PlayerId[PlayerId["RED"] = 1] = "RED"; + PlayerId[PlayerId["WHITE"] = 1] = "WHITE"; })(exports.PlayerId || (exports.PlayerId = {})); var PlayerId = exports.PlayerId; (function (PointId) { @@ -181,16 +181,16 @@ define("DiceComponents/Dice", ["require", "exports", "DiceComponents/Die", "Enum var die2 = new Die_1.Die(this.diceRollGenerator.generateDiceRoll()); if (this.onSetStartingDiceRoll) { this.onSetStartingDiceRoll(Enums_3.PlayerId.BLACK, die1); - this.onSetStartingDiceRoll(Enums_3.PlayerId.RED, die2); + this.onSetStartingDiceRoll(Enums_3.PlayerId.WHITE, die2); } statusLogger.logInfo("BLACK rolls " + die1.value); - statusLogger.logInfo("RED rolls " + die2.value); + statusLogger.logInfo("WHITE rolls " + die2.value); if (die1.value === die2.value) { statusLogger.logInfo('DRAW! Roll again'); setTimeout(function () { _this.rollToStart(statusLogger, onSuccess); }, 1000); } else { - var successfulPlayerId_1 = die1.value > die2.value ? Enums_3.PlayerId.BLACK : Enums_3.PlayerId.RED; + var successfulPlayerId_1 = die1.value > die2.value ? Enums_3.PlayerId.BLACK : Enums_3.PlayerId.WHITE; statusLogger.logInfo(Enums_3.PlayerId[successfulPlayerId_1] + " wins the starting roll"); setTimeout(function () { _this.die1 = die1; @@ -218,7 +218,7 @@ define("DiceComponents/Dice", ["require", "exports", "DiceComponents/Die", "Enum } if (this.onSetActive) { this.onSetActive(playerId, true); - var otherPlayerId = playerId === Enums_3.PlayerId.BLACK ? Enums_3.PlayerId.RED : Enums_3.PlayerId.BLACK; + var otherPlayerId = playerId === Enums_3.PlayerId.BLACK ? Enums_3.PlayerId.WHITE : Enums_3.PlayerId.BLACK; this.onSetActive(otherPlayerId, false); } }; @@ -247,7 +247,7 @@ define("Move", ["require", "exports", "Enums"], function (require, exports, Enum } return destinationPointId; } - case Enums_4.PlayerId.RED: { + case Enums_4.PlayerId.WHITE: { if (this.sourcePointId === Enums_4.PointId.BAR) { return Enums_4.PointId.BAR - this.numberOfPointsToMove; } @@ -366,7 +366,7 @@ define("Analysis/BoardAnalyser", ["require", "exports", "BoardComponents/Board", var clone = new Board_1.Board(); var layout = new Array(); for (var pointId = 0; pointId < 26; pointId++) { - layout[pointId] = [source.checkerContainers[pointId].checkers[Enums_5.PlayerId.BLACK], source.checkerContainers[pointId].checkers[Enums_5.PlayerId.RED]]; + layout[pointId] = [source.checkerContainers[pointId].checkers[Enums_5.PlayerId.BLACK], source.checkerContainers[pointId].checkers[Enums_5.PlayerId.WHITE]]; } clone.initialise(layout); return clone; @@ -504,7 +504,7 @@ define("Game", ["require", "exports", "BoardComponents/Bar", "BoardComponents/Ho this.dice = dice; this.statusLogger = statusLogger; this.players = new Array(2); - for (var _i = 0, _a = [Enums_7.PlayerId.BLACK, Enums_7.PlayerId.RED]; _i < _a.length; _i++) { + for (var _i = 0, _a = [Enums_7.PlayerId.BLACK, Enums_7.PlayerId.WHITE]; _i < _a.length; _i++) { var playerId = _a[_i]; this.players[playerId] = (isComputerPlayer[playerId]) ? new ComputerPlayer_1.ComputerPlayer(playerId, this.board) : new HumanPlayer_1.HumanPlayer(playerId, this.board); } @@ -528,7 +528,10 @@ define("Game", ["require", "exports", "BoardComponents/Bar", "BoardComponents/Ho } }; this.board.onPointSelected = function (pointId) { + console.log(pointId); + console.log(_this.currentPlayerId); var checkerContainer = _this.board.checkerContainers[pointId]; + if (_this.currentSelectedCheckerContainer == undefined) { if (checkerContainer.checkers[_this.currentPlayerId] == 0) { // if no pieces here, exit @@ -666,7 +669,7 @@ define("Game", ["require", "exports", "BoardComponents/Bar", "BoardComponents/Ho } }; Game.getOtherPlayerId = function (player) { - return player === Enums_7.PlayerId.BLACK ? Enums_7.PlayerId.RED : Enums_7.PlayerId.BLACK; + return player === Enums_7.PlayerId.BLACK ? Enums_7.PlayerId.WHITE : Enums_7.PlayerId.BLACK; }; Game.prototype.switchPlayer = function () { this.currentPlayerId = (this.currentPlayerId + 1) % 2; @@ -779,7 +782,7 @@ define("BoardComponents/Board", ["require", "exports", "Enums", "Game", "BoardCo [0, 0]]; } for (var pointId = 0; pointId < 26; pointId++) { - for (var _i = 0, _a = [Enums_8.PlayerId.BLACK, Enums_8.PlayerId.RED]; _i < _a.length; _i++) { + for (var _i = 0, _a = [Enums_8.PlayerId.BLACK, Enums_8.PlayerId.WHITE]; _i < _a.length; _i++) { var playerId = _a[_i]; var checkerCount = layout[pointId][playerId]; if (checkerCount > 0) { @@ -871,7 +874,7 @@ define("BoardComponents/Board", ["require", "exports", "Enums", "Game", "BoardCo this.checkerContainers[pointId].setValidDestination(false); } this.checkerContainers[Enums_8.PointId.HOME].setValidDestination(Enums_8.PlayerId.BLACK, false); - this.checkerContainers[Enums_8.PointId.HOME].setValidDestination(Enums_8.PlayerId.RED, false); + this.checkerContainers[Enums_8.PointId.HOME].setValidDestination(Enums_8.PlayerId.WHITE, false); }; return Board; }()); @@ -907,6 +910,8 @@ define("UI/CheckerContainerUI", ["require", "exports", "Enums", "UI/Utils"], fun var _this = this; this.containerDiv = document.createElement('div'); var side = (isTopSide ? 'top' : 'bottom'); + containerType == 'bar' && (side = null); + containerType == 'home' && (side = null); this.containerDiv.className = "checker-container checker-container-" + side + " " + containerType; this.containerDiv.onclick = function () { _this.onSelected(); }; } @@ -945,7 +950,7 @@ define("UI/BarUI", ["require", "exports", "Enums", "UI/CheckerContainerUI"], fun __extends(BarUI, _super); function BarUI(player) { var _this = this; - _super.call(this, 'bar', player === Enums_10.PlayerId.RED); + _super.call(this, 'bar', player === Enums_10.PlayerId.WHITE); this.containerDiv.onmouseover = function () { _this.onInspected(true); }; this.containerDiv.onmouseout = function () { _this.onInspected(false); }; } @@ -987,17 +992,17 @@ define("UI/BoardUI", ["require", "exports", "Enums", "UI/BarUI", "UI/HomeUI", "U this.containerDiv.className = 'board'; this.blackHomeUI = new HomeUI_1.HomeUI(Enums_12.PlayerId.BLACK); this.blackHomeUI.containerDiv.id = gameContainerId + "_blackhome"; - this.redHomeUI = new HomeUI_1.HomeUI(Enums_12.PlayerId.RED); + this.redHomeUI = new HomeUI_1.HomeUI(Enums_12.PlayerId.WHITE); this.redHomeUI.containerDiv.id = gameContainerId + "_redhome"; this.pointUIs = new Array(24); for (var i = 0; i < this.pointUIs.length; i++) { - var colour = (i % 2 == 0) ? 'black' : 'red'; + var colour = (i % 2 == 0) ? 'black' : 'white'; var isTopSide = i >= 12; this.pointUIs[i] = new PointUI_1.PointUI(colour, isTopSide); this.pointUIs[i].containerDiv.id = gameContainerId + "_point" + (i + 1); } this.blackBarUI = new BarUI_1.BarUI(Enums_12.PlayerId.BLACK); - this.redBarUI = new BarUI_1.BarUI(Enums_12.PlayerId.RED); + this.redBarUI = new BarUI_1.BarUI(Enums_12.PlayerId.WHITE); // append all elements in the correct order this.containerDiv.appendChild(this.pointUIs[12].containerDiv); this.containerDiv.appendChild(this.pointUIs[13].containerDiv); @@ -1170,7 +1175,7 @@ define("UI/EventBinders", ["require", "exports", "Enums"], function (require, ex var getDiceUI = function (playerId) { switch (playerId) { case Enums_14.PlayerId.BLACK: return blackDiceUI; - case Enums_14.PlayerId.RED: return redDiceUI; + case Enums_14.PlayerId.WHITE: return redDiceUI; default: throw "Unknown PlayerId: " + playerId; } }; @@ -1194,7 +1199,7 @@ define("UI/GameUI", ["require", "exports", "UI/BoardUI", "UI/DiceUI", "Enums", " Utils_5.Utils.removeAllChildren(container); this.boardUI = new BoardUI_1.BoardUI(containerElementId); this.blackDiceUI = new DiceUI_1.DiceUI(Enums_15.PlayerId.BLACK); - this.redDiceUI = new DiceUI_1.DiceUI(Enums_15.PlayerId.RED); + this.redDiceUI = new DiceUI_1.DiceUI(Enums_15.PlayerId.WHITE); this.statusUI = new StatusUI_1.StatusUI(); container.appendChild(this.boardUI.containerDiv); var sideContainer = document.createElement('div'); diff --git a/src/.DS_Store b/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..f49c8e5160f7a823b225ce52b1d300d346908094 GIT binary patch literal 8196 zcmeHM-A)rh6h2eXE*OLh6S*Qc4VoCM4_6g&NqlYg^s!Hr5%xgJNQicvRG6jGf$FMBuBM*=mTg$wb10^LCYpU!)XsFOBhEQcHnHOP9m?QX$=F0fiwf^0$`N_a>ys1Mt;*Tb)%-%|5|GL^{BnD@Lgoa#xGpVTGpgBIW_s*sfAsq?Y28n!EHU| zr%ktAE9w5jF!YCgxAeH~b+=}&tc5|_tp{F9g6kCzD$kzOgG$&fgq@%g$#onxVObN_ z#MaDgueZ3oJZI;YZuRHv-tEPOIs3-a&3=Evx_Ui#XJfmu`?~k0|MtDy3JD!gXj(lF z+YjiaHoD`q0zV9@m}A@&6+l~=UQrdYflmlx=Bcf&Kw=brf_9w3X&^&jT2!Gm^cvKZ zSP%FVT3kz@FH;fMEM@Zk0Q>H5u;szvKCLI);^MwwFVCkV~bJ!yPzly-() zC2sgJ7_LE8z9Bnw5Ag$9A7dv>Yx&ijQw|$V%pMdy(+G=2jkos7`*+vAeCAU+oUI%) z+pMKl&C&z7-wqsVg!5*;VdeN9vb2d<;UZdiaA0}cceocBE%su2Nob!}7fWn2;Z)P) z;9R??9k|tfkX^-x=^H^fakPk2IK?pm=bfX=3ph{}sFxVQbHb50QpAxNdPExu9gYYo zoik>Z+zP_>NrZ4oK*AWGn95W!si%zkC4Ica!PVSX+ zZ5wqPl?&?)l#~!OG98DM={V%@4@2~As4^z6Y{p#1ZT08S!KAy+W(|C3DN%==#+ Ij#F%Y0e*F1RR910 literal 0 HcmV?d00001 From e749c3ce3cc8d40c4d381eb8777c1c51dd262012 Mon Sep 17 00:00:00 2001 From: Semih Date: Fri, 3 Feb 2023 08:49:15 +0300 Subject: [PATCH 02/13] size --- play/css/ui.css | 21 ++++++++++----------- play/index.html | 2 +- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/play/css/ui.css b/play/css/ui.css index a15ff5d..be11116 100644 --- a/play/css/ui.css +++ b/play/css/ui.css @@ -15,15 +15,15 @@ DIV.game-container::after { } DIV.board { - width: 675px; - border: 4px solid #140d07c4; + width: 616px; + border: 3px solid #140d07c4; background-image: url('../img/wood.jpg'); } DIV.checker { float: left; - width: 40px; - height: 40px; + width: 36px; + height: 36px; -moz-border-radius: 20px; -webkit-border-radius: 20px; border-radius: 20px; @@ -33,7 +33,7 @@ DIV.checker { } DIV.white { - background: linear-gradient(-30deg, #ddd, #fff); + background: linear-gradient(-30deg, #777, #fff); text-align: center; color: black; font-weight: bold; @@ -48,7 +48,7 @@ DIV.black { DIV.checker-container { float: left; - width: 40px; + width: 36px; height: 220px; padding: 4px; } @@ -129,7 +129,7 @@ DIV.side-container { } DIV.dice-container.active>DIV.die { - box-shadow: 0 0 50px rgb(0, 255, 0); + box-shadow: 0 0 10px rgb(0, 255, 0); } DIV.dice-container.dice-container-black>DIV.die { @@ -146,9 +146,8 @@ DIV.dice-container DIV.die { width: 15px; height: 15px; border-radius: 15px; - padding: 12px; + padding: 10px; margin: 10px; - float: left; } DIV.dice-container DIV.die.die-uses-0 { @@ -166,10 +165,10 @@ DIV.dice-container DIV.die.die-uses-2::after { } DIV.status-container { - height: 330; + height: 250; overflow-y: scroll; margin: 16px 4px; - width: 100px; + width: 70px; } DIV.status-container::-webkit-scrollbar { diff --git a/play/index.html b/play/index.html index bdf04a0..a58d62a 100644 --- a/play/index.html +++ b/play/index.html @@ -4,7 +4,7 @@ Backgammon - + From 8edc098b8073becb6fe5bd0646ebd7b03814137d Mon Sep 17 00:00:00 2001 From: Semih Date: Sat, 4 Feb 2023 01:56:57 +0300 Subject: [PATCH 03/13] theme --- play/css/ui.css | 66 ++++++++++++++++++++++++++++--------------- play/js/backgammon.js | 40 +++++++++++++------------- 2 files changed, 64 insertions(+), 42 deletions(-) diff --git a/play/css/ui.css b/play/css/ui.css index be11116..82da9e4 100644 --- a/play/css/ui.css +++ b/play/css/ui.css @@ -1,5 +1,7 @@ DIV.game-container { font-family: Arial; + background-image: url('../img/wood.jpg'); + width: 600px; } @@ -15,15 +17,14 @@ DIV.game-container::after { } DIV.board { - width: 616px; - border: 3px solid #140d07c4; - background-image: url('../img/wood.jpg'); + /* width: 518px;*/ + border: 4px solid #000000; } DIV.checker { float: left; - width: 36px; - height: 36px; + width: 37px; + height: 37px; -moz-border-radius: 20px; -webkit-border-radius: 20px; border-radius: 20px; @@ -33,14 +34,14 @@ DIV.checker { } DIV.white { - background: linear-gradient(-30deg, #777, #fff); + background-image: url('data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%20100%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22base%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23ccc%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23fff%22%2F%3E%3C%2FlinearGradient%3E%3CradialGradient%20id%3D%22center%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23fff%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23eee%22%2F%3E%3C%2FradialGradient%3E%3ClinearGradient%20id%3D%22ring%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23fff%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23ccc%22%2F%3E%3C%2FlinearGradient%3E%3Cstyle%3E%3C%21%5BCDATA%5B%23base%20%7B%20fill%3A%20url%28%23base%29%3B%20%7D%23ring%20%7B%20fill%3A%20url%28%23ring%29%3B%20%7D%23center%20%7B%20fill%3A%20url%28%23center%29%3B%20%7D%20%5D%5D%3E%3C%2Fstyle%3E%3C%2Fdefs%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20id%3D%22base%22%2F%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2230%22%20id%3D%22ring%22%2F%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2225%22%20id%3D%22center%22%2F%3E%3C%2Fsvg%3E'); text-align: center; color: black; font-weight: bold; } DIV.black { - background: linear-gradient(-30deg, #000, #333); + background-image: url('data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%20100%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22base%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23444%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23000%22%2F%3E%3C%2FlinearGradient%3E%3CradialGradient%20id%3D%22center%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23333%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23222%22%2F%3E%3C%2FradialGradient%3E%3ClinearGradient%20id%3D%22ring%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23222%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23444%22%2F%3E%3C%2FlinearGradient%3E%3Cstyle%3E%3C%21%5BCDATA%5B%23base%20%7B%20fill%3A%20url%28%23base%29%3B%20%7D%23ring%20%7B%20fill%3A%20url%28%23ring%29%3B%20%7D%23center%20%7B%20fill%3A%20url%28%23center%29%3B%20%7D%20%5D%5D%3E%3C%2Fstyle%3E%3C%2Fdefs%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20id%3D%22base%22%2F%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2230%22%20id%3D%22ring%22%2F%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2225%22%20id%3D%22center%22%2F%3E%3C%2Fsvg%3E'); text-align: center; color: white; font-weight: bold; @@ -48,9 +49,9 @@ DIV.black { DIV.checker-container { float: left; - width: 36px; + width: 37px; height: 220px; - padding: 4px; + padding: 0px; } DIV.checker-container.valid-source:hover { @@ -82,9 +83,9 @@ DIV.bar { DIV.home { border: none; - -webkit-box-shadow:inset 0px 0px 0px 6px #140d07c4; - -moz-box-shadow:inset 0px 0px 0px 6px #140d07c4; - box-shadow:inset 0px 0px 0px 6px #140d07c4; + -webkit-box-shadow:inset 0px 0px 0px 4px #140d07c4; + -moz-box-shadow:inset 0px 0px 0px 4px #140d07c4; + box-shadow:inset 0px 0px 0px 4px #140d07c4; } @@ -125,11 +126,11 @@ BR.clear { } DIV.side-container { - background: lightgray; + background: rgba(211, 211, 211, 0.2); } DIV.dice-container.active>DIV.die { - box-shadow: 0 0 10px rgb(0, 255, 0); + box-shadow: 0 0 5px rgb(0, 255, 0); } DIV.dice-container.dice-container-black>DIV.die { @@ -143,11 +144,12 @@ DIV.dice-container.dice-container-white>DIV.die { } DIV.dice-container DIV.die { - width: 15px; - height: 15px; - border-radius: 15px; - padding: 10px; - margin: 10px; + width: 20px; + height: 20px; + border-radius: 5px; + padding: 1px; + margin: 4px; + float: left; } DIV.dice-container DIV.die.die-uses-0 { @@ -165,14 +167,14 @@ DIV.dice-container DIV.die.die-uses-2::after { } DIV.status-container { - height: 250; + height: 385px; overflow-y: scroll; - margin: 16px 4px; + /* margin: 16px 4px;*/ width: 70px; } DIV.status-container::-webkit-scrollbar { - width: 1em; + width: 0.5em; } DIV.status-container::-webkit-scrollbar-track { @@ -193,3 +195,23 @@ DIV.status-container::-webkit-scrollbar-thumb { text-shadow: inherit; } +/* + * Dice.css v1.0 + * Code - MIT License - https://github.com/diafygi/dice-css + * Images - Public Domain - https://openclipart.org/detail/105931/sixsided-dice-faces-lio-01 + */ + .dice{display:inline-block;min-height:1em;padding-left:1em;background-size:1em;background-repeat:no-repeat;} + + .dice-container-white .dice-1{content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' version='1.1' viewBox='0 0 77 77' height='21.6' width='21.6'%3E%3Cpath d='M1,26Q1,1 26,1h25Q76,1 76,26v25Q76,76 51,76h-25Q1,76 1,51z' style='fill:%23fff;stroke-width:1.5;stroke:%23000'/%3E%3Ccircle cx='38' cy='38' r='7.2' style='fill:%23000;stroke:none'/%3E%3C/svg%3E");} + .dice-container-white .dice-2{content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' version='1.1' viewBox='0 0 77 77' height='21.6' width='21.6'%3E%3Cpath d='M1,26Q1,1 26,1h25Q76,1 76,26v25Q76,76 51,76h-25Q1,76 1,51z' style='fill:%23fff;stroke-width:1.5;stroke:%23000'/%3E%3Cg style='fill:%23000;stroke:none'%3E%3Ccircle cx='20' cy='20' r='7.2'/%3E%3Ccircle cx='57' cy='57' r='7.2'/%3E%3C/g%3E%3C/svg%3E");} + .dice-container-white .dice-3{content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' version='1.1' viewBox='0 0 77 77' height='21.6' width='21.6'%3E%3Cpath d='M1,26Q1,1 26,1h25Q76,1 76,26v25Q76,76 51,76h-25Q1,76 1,51z' style='fill:%23fff;stroke-width:1.5;stroke:%23000'/%3E%3Cg style='fill:%23000;stroke:none'%3E%3Ccircle cx='20' cy='20' r='7.2'/%3E%3Ccircle cx='38' cy='38' r='7.2'/%3E%3Ccircle cx='57' cy='57' r='7.2'/%3E%3C/g%3E%3C/svg%3E");} + .dice-container-white .dice-4{content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' version='1.1' viewBox='0 0 77 77' height='21.6' width='21.6'%3E%3Cpath d='M1,26Q1,1 26,1h25Q76,1 76,26v25Q76,76 51,76h-25Q1,76 1,51z' style='fill:%23fff;stroke-width:1.5;stroke:%23000'/%3E%3Cg style='fill:%23000;stroke:none'%3E%3Ccircle cx='20' cy='20' r='7.2'/%3E%3Ccircle cx='57' cy='57' r='7.2'/%3E%3Ccircle cx='57' cy='20' r='7.2'/%3E%3Ccircle cx='20' cy='57' r='7.2'/%3E%3C/g%3E%3C/svg%3E");} + .dice-container-white .dice-5{content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' version='1.1' viewBox='0 0 77 77' height='21.6' width='21.6'%3E%3Cpath d='M1,26Q1,1 26,1h25Q76,1 76,26v25Q76,76 51,76h-25Q1,76 1,51z' style='fill:%23fff;stroke-width:1.5;stroke:%23000'/%3E%3Cg style='fill:%23000;stroke:none'%3E%3Ccircle cx='20' cy='20' r='7.2'/%3E%3Ccircle cx='57' cy='57' r='7.2'/%3E%3Ccircle cx='57' cy='20' r='7.2'/%3E%3Ccircle cx='20' cy='57' r='7.2'/%3E%3Ccircle cx='38' cy='38' r='7.2'/%3E%3C/g%3E%3C/svg%3E");} + .dice-container-white .dice-6{content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' version='1.1' viewBox='0 0 77 77' height='21.6' width='21.6'%3E%3Cpath d='M1,26Q1,1 26,1h25Q76,1 76,26v25Q76,76 51,76h-25Q1,76 1,51z' style='fill:%23fff;stroke-width:1.5;stroke:%23000'/%3E%3Cg style='fill:%23000;stroke:none'%3E%3Ccircle cx='20' cy='20' r='7.2'/%3E%3Ccircle cx='57' cy='57' r='7.2'/%3E%3Ccircle cx='57' cy='20' r='7.2'/%3E%3Ccircle cx='20' cy='57' r='7.2'/%3E%3Ccircle cx='20' cy='38' r='7.2'/%3E%3Ccircle cx='57' cy='38' r='7.2'/%3E%3C/g%3E%3C/svg%3E");} + + .dice-container-black .dice-1{content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' version='1.1' viewBox='0 0 77 77' height='21.6' width='21.6'%3E%3Cpath d='M1,26Q1,1 26,1h25Q76,1 76,26v25Q76,76 51,76h-25Q1,76 1,51z' style='fill:%23000;stroke-width:1.5;stroke:%23fff'/%3E%3Ccircle cx='38' cy='38' r='7.2' style='fill:%23fff;stroke:none'/%3E%3C/svg%3E");} + .dice-container-black .dice-2{content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' version='1.1' viewBox='0 0 77 77' height='21.6' width='21.6'%3E%3Cpath d='M1,26Q1,1 26,1h25Q76,1 76,26v25Q76,76 51,76h-25Q1,76 1,51z' style='fill:%23000;stroke-width:1.5;stroke:%23fff'/%3E%3Cg style='fill:%23fff;stroke:none'%3E%3Ccircle cx='20' cy='20' r='7.2'/%3E%3Ccircle cx='57' cy='57' r='7.2'/%3E%3C/g%3E%3C/svg%3E");} + .dice-container-black .dice-3{content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' version='1.1' viewBox='0 0 77 77' height='21.6' width='21.6'%3E%3Cpath d='M1,26Q1,1 26,1h25Q76,1 76,26v25Q76,76 51,76h-25Q1,76 1,51z' style='fill:%23000;stroke-width:1.5;stroke:%23fff'/%3E%3Cg style='fill:%23fff;stroke:none'%3E%3Ccircle cx='20' cy='20' r='7.2'/%3E%3Ccircle cx='38' cy='38' r='7.2'/%3E%3Ccircle cx='57' cy='57' r='7.2'/%3E%3C/g%3E%3C/svg%3E");} + .dice-container-black .dice-4{content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' version='1.1' viewBox='0 0 77 77' height='21.6' width='21.6'%3E%3Cpath d='M1,26Q1,1 26,1h25Q76,1 76,26v25Q76,76 51,76h-25Q1,76 1,51z' style='fill:%23000;stroke-width:1.5;stroke:%23fff'/%3E%3Cg style='fill:%23fff;stroke:none'%3E%3Ccircle cx='20' cy='20' r='7.2'/%3E%3Ccircle cx='57' cy='57' r='7.2'/%3E%3Ccircle cx='57' cy='20' r='7.2'/%3E%3Ccircle cx='20' cy='57' r='7.2'/%3E%3C/g%3E%3C/svg%3E");} + .dice-container-black .dice-5{content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' version='1.1' viewBox='0 0 77 77' height='21.6' width='21.6'%3E%3Cpath d='M1,26Q1,1 26,1h25Q76,1 76,26v25Q76,76 51,76h-25Q1,76 1,51z' style='fill:%23000;stroke-width:1.5;stroke:%23fff'/%3E%3Cg style='fill:%23fff;stroke:none'%3E%3Ccircle cx='20' cy='20' r='7.2'/%3E%3Ccircle cx='57' cy='57' r='7.2'/%3E%3Ccircle cx='57' cy='20' r='7.2'/%3E%3Ccircle cx='20' cy='57' r='7.2'/%3E%3Ccircle cx='38' cy='38' r='7.2'/%3E%3C/g%3E%3C/svg%3E");} + .dice-container-black .dice-6{content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' version='1.1' viewBox='0 0 77 77' height='21.6' width='21.6'%3E%3Cpath d='M1,26Q1,1 26,1h25Q76,1 76,26v25Q76,76 51,76h-25Q1,76 1,51z' style='fill:%23000;stroke-width:1.5;stroke:%23fff'/%3E%3Cg style='fill:%23fff;stroke:none'%3E%3Ccircle cx='20' cy='20' r='7.2'/%3E%3Ccircle cx='57' cy='57' r='7.2'/%3E%3Ccircle cx='57' cy='20' r='7.2'/%3E%3Ccircle cx='20' cy='57' r='7.2'/%3E%3Ccircle cx='20' cy='38' r='7.2'/%3E%3Ccircle cx='57' cy='38' r='7.2'/%3E%3C/g%3E%3C/svg%3E");} \ No newline at end of file diff --git a/play/js/backgammon.js b/play/js/backgammon.js index b975e27..b635763 100644 --- a/play/js/backgammon.js +++ b/play/js/backgammon.js @@ -910,7 +910,7 @@ define("UI/CheckerContainerUI", ["require", "exports", "Enums", "UI/Utils"], fun var _this = this; this.containerDiv = document.createElement('div'); var side = (isTopSide ? 'top' : 'bottom'); - containerType == 'bar' && (side = null); + // containerType == 'bar' && (side = null); containerType == 'home' && (side = null); this.containerDiv.className = "checker-container checker-container-" + side + " " + containerType; this.containerDiv.onclick = function () { _this.onSelected(); }; @@ -992,8 +992,8 @@ define("UI/BoardUI", ["require", "exports", "Enums", "UI/BarUI", "UI/HomeUI", "U this.containerDiv.className = 'board'; this.blackHomeUI = new HomeUI_1.HomeUI(Enums_12.PlayerId.BLACK); this.blackHomeUI.containerDiv.id = gameContainerId + "_blackhome"; - this.redHomeUI = new HomeUI_1.HomeUI(Enums_12.PlayerId.WHITE); - this.redHomeUI.containerDiv.id = gameContainerId + "_redhome"; + this.whiteHomeUI = new HomeUI_1.HomeUI(Enums_12.PlayerId.WHITE); + this.whiteHomeUI.containerDiv.id = gameContainerId + "_whitehome"; this.pointUIs = new Array(24); for (var i = 0; i < this.pointUIs.length; i++) { var colour = (i % 2 == 0) ? 'black' : 'white'; @@ -1002,7 +1002,7 @@ define("UI/BoardUI", ["require", "exports", "Enums", "UI/BarUI", "UI/HomeUI", "U this.pointUIs[i].containerDiv.id = gameContainerId + "_point" + (i + 1); } this.blackBarUI = new BarUI_1.BarUI(Enums_12.PlayerId.BLACK); - this.redBarUI = new BarUI_1.BarUI(Enums_12.PlayerId.WHITE); + this.whiteBarUI = new BarUI_1.BarUI(Enums_12.PlayerId.WHITE); // append all elements in the correct order this.containerDiv.appendChild(this.pointUIs[12].containerDiv); this.containerDiv.appendChild(this.pointUIs[13].containerDiv); @@ -1010,7 +1010,7 @@ define("UI/BoardUI", ["require", "exports", "Enums", "UI/BarUI", "UI/HomeUI", "U this.containerDiv.appendChild(this.pointUIs[15].containerDiv); this.containerDiv.appendChild(this.pointUIs[16].containerDiv); this.containerDiv.appendChild(this.pointUIs[17].containerDiv); - this.containerDiv.appendChild(this.redBarUI.containerDiv); + this.containerDiv.appendChild(this.whiteBarUI.containerDiv); this.containerDiv.appendChild(this.pointUIs[18].containerDiv); this.containerDiv.appendChild(this.pointUIs[19].containerDiv); this.containerDiv.appendChild(this.pointUIs[20].containerDiv); @@ -1032,7 +1032,7 @@ define("UI/BoardUI", ["require", "exports", "Enums", "UI/BarUI", "UI/HomeUI", "U this.containerDiv.appendChild(this.pointUIs[2].containerDiv); this.containerDiv.appendChild(this.pointUIs[1].containerDiv); this.containerDiv.appendChild(this.pointUIs[0].containerDiv); - this.containerDiv.appendChild(this.redHomeUI.containerDiv); + this.containerDiv.appendChild(this.whiteHomeUI.containerDiv); this.containerDiv.appendChild(BoardUI.createClearBreak()); } BoardUI.createClearBreak = function () { @@ -1078,7 +1078,7 @@ define("UI/DiceUI", ["require", "exports", "UI/Utils", "Enums"], function (requi }; DiceUI.createDie = function (die) { var div = document.createElement('div'); - div.className = 'die die-uses-' + die.remainingUses; + div.className = 'die dice die-uses-' + die.remainingUses +' dice-'+die.value.toString(); div.innerText = die.value.toString(); return div; }; @@ -1111,24 +1111,24 @@ define("UI/EventBinders", ["require", "exports", "Enums"], function (require, ex } EventBinders.bindGame = function (game, gameUI) { EventBinders.bindBoardEvents(game.board, gameUI.boardUI); - EventBinders.bindDiceEvents(game.dice, gameUI.blackDiceUI, gameUI.redDiceUI); + EventBinders.bindDiceEvents(game.dice, gameUI.blackDiceUI, gameUI.whiteDiceUI); EventBinders.bindStatusLoggerEvents(game.statusLogger, gameUI.statusUI); }; EventBinders.bindBoardEvents = function (board, boardUI) { // helpers var getBarUI = function (playerId) { - return (playerId === Enums_14.PlayerId.BLACK) ? boardUI.blackBarUI : boardUI.redBarUI; + return (playerId === Enums_14.PlayerId.BLACK) ? boardUI.blackBarUI : boardUI.whiteBarUI; }; var getHomeUI = function (playerId) { - return (playerId === Enums_14.PlayerId.BLACK) ? boardUI.blackHomeUI : boardUI.redHomeUI; + return (playerId === Enums_14.PlayerId.BLACK) ? boardUI.blackHomeUI : boardUI.whiteHomeUI; }; // wire up UI events boardUI.blackHomeUI.onSelected = function () { return board.onPointSelected(Enums_14.PointId.HOME); }; - boardUI.redHomeUI.onSelected = function () { return board.onPointSelected(Enums_14.PointId.HOME); }; + boardUI.whiteHomeUI.onSelected = function () { return board.onPointSelected(Enums_14.PointId.HOME); }; boardUI.blackBarUI.onInspected = function (on) { return board.onPointInspected(Enums_14.PointId.BAR, on); }; boardUI.blackBarUI.onSelected = function () { return board.onPointSelected(Enums_14.PointId.BAR); }; - boardUI.redBarUI.onInspected = function (on) { return board.onPointInspected(Enums_14.PointId.BAR, on); }; - boardUI.redBarUI.onSelected = function () { return board.onPointSelected(Enums_14.PointId.BAR); }; + boardUI.whiteBarUI.onInspected = function (on) { return board.onPointInspected(Enums_14.PointId.BAR, on); }; + boardUI.whiteBarUI.onSelected = function () { return board.onPointSelected(Enums_14.PointId.BAR); }; var bindPointUIEvents = function (pointId) { var pointUI = boardUI.pointUIs[pointId - 1]; pointUI.onInspected = function (on) { board.onPointInspected(pointId, on); }; @@ -1171,11 +1171,11 @@ define("UI/EventBinders", ["require", "exports", "Enums"], function (require, ex boardUI.pointUIs[pointId - 1].setValidSource(on); }; }; - EventBinders.bindDiceEvents = function (dice, blackDiceUI, redDiceUI) { + EventBinders.bindDiceEvents = function (dice, blackDiceUI, whiteDiceUI) { var getDiceUI = function (playerId) { switch (playerId) { case Enums_14.PlayerId.BLACK: return blackDiceUI; - case Enums_14.PlayerId.WHITE: return redDiceUI; + case Enums_14.PlayerId.WHITE: return whiteDiceUI; default: throw "Unknown PlayerId: " + playerId; } }; @@ -1199,14 +1199,14 @@ define("UI/GameUI", ["require", "exports", "UI/BoardUI", "UI/DiceUI", "Enums", " Utils_5.Utils.removeAllChildren(container); this.boardUI = new BoardUI_1.BoardUI(containerElementId); this.blackDiceUI = new DiceUI_1.DiceUI(Enums_15.PlayerId.BLACK); - this.redDiceUI = new DiceUI_1.DiceUI(Enums_15.PlayerId.WHITE); + this.whiteDiceUI = new DiceUI_1.DiceUI(Enums_15.PlayerId.WHITE); this.statusUI = new StatusUI_1.StatusUI(); container.appendChild(this.boardUI.containerDiv); var sideContainer = document.createElement('div'); sideContainer.className = 'side-container'; sideContainer.appendChild(this.blackDiceUI.containerDiv); sideContainer.appendChild(this.statusUI.containerDiv); - sideContainer.appendChild(this.redDiceUI.containerDiv); + sideContainer.appendChild(this.whiteDiceUI.containerDiv); container.appendChild(sideContainer); EventBinders_1.EventBinders.bindGame(game, this); } @@ -1217,13 +1217,13 @@ define("UI/GameUI", ["require", "exports", "UI/BoardUI", "UI/DiceUI", "Enums", " define("Backgammon", ["require", "exports", "BoardComponents/Board", "DiceComponents/Dice", "DiceComponents/DiceRollGenerator", "UI/GameUI", "Game", "StatusLogger"], function (require, exports, Board_2, Dice_1, DiceRollGenerator_1, GameUI_1, Game_2, StatusLogger_1) { "use strict"; var Backgammon = (function () { - function Backgammon(containerId, blackIsComputer, redIsComputer) { + function Backgammon(containerId, blackIsComputer, whiteIsComputer) { if (blackIsComputer === void 0) { blackIsComputer = false; } - if (redIsComputer === void 0) { redIsComputer = false; } + if (whiteIsComputer === void 0) { whiteIsComputer = false; } var board = new Board_2.Board(); var dice = new Dice_1.Dice(new DiceRollGenerator_1.DiceRollGenerator()); var statusLogger = new StatusLogger_1.StatusLogger(); - var game = new Game_2.Game(board, dice, statusLogger, [blackIsComputer, redIsComputer]); + var game = new Game_2.Game(board, dice, statusLogger, [blackIsComputer, whiteIsComputer]); var ui = new GameUI_1.GameUI(containerId, game); board.initialise(); // TODO: UI trigger game to begin From 7b3733715bee5a50138d7de4fcad78f5f1f03808 Mon Sep 17 00:00:00 2001 From: Semih Date: Sat, 4 Feb 2023 02:08:24 +0300 Subject: [PATCH 04/13] up --- play/index.html | 4 ++-- screen.png | Bin 0 -> 273874 bytes 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 screen.png diff --git a/play/index.html b/play/index.html index a58d62a..6bd1f2c 100644 --- a/play/index.html +++ b/play/index.html @@ -24,9 +24,9 @@

diff --git a/screen.png b/screen.png new file mode 100644 index 0000000000000000000000000000000000000000..39899e6177979a5f6cf00cee0719a1dfd4d42740 GIT binary patch literal 273874 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