//MoveList,
},
// "vr": VariantRules object, describing the game state + rules
- props: ["vname","analyze","vr","fenStart","players","mycolor"],
+ // fenStart, players, mycolor
+ props: ["vname","analyze","vr","gameInfo"],
data: function() {
return {
st: store.state,
// NOTE: all following variables must be reset at the beginning of a game
endgameMessage: "",
orientation: "w",
+ // TODO: score and moves could be also in gameInfo (when resuming)
score: "*", //'*' means 'unfinished'
moves: [],
cursor: -1, //index of the move just played
fenStart: function() {
// Reset all variables
this.endgameMessage = "";
- this.orientation = this.mycolor;
+ this.orientation = this.gameInfo.mycolor || "w";
this.score = "*";
this.moves = [];
this.cursor = -1;
pgn += '[Site "vchess.club"]\n';
pgn += '[Variant "' + this.vname + '"]\n';
pgn += '[Date "' + getDate(new Date()) + '"]\n';
- pgn += '[White "' + this.players[0] + '"]\n';
- pgn += '[Black "' + this.players[1] + '"]\n';
+ pgn += '[White "' + this.game.players[0] + '"]\n';
+ pgn += '[Black "' + this.game.players[1] + '"]\n';
pgn += '[Fen "' + this.fenStart + '"]\n';
pgn += '[Result "' + this.score + '"]\n\n';
let counter = 1;
<script>
-// This can work for squared boards (2 or 4 players), with some adaptations (TODO)
-// TODO: for 3 players, write a "board3.js"
-
-// TODO: current clicked square + moving square as parameters, + highlight
+// TODO: for 3 or 4 players, write a "board3.js" (board4.js)
import { getSquareId, getSquareFromId } from "@/utils/squareId";
import { ArrayFun } from "@/utils/array";
<template lang="pug">
.row
.col-sm-12.col-md-10.col-md-offset-1.col-lg-8.col-lg-offset-2
- BaseGame(:vname="vname" :analyze="analyze"
- :vr="vr" :fen-start="fenStart" :players="players" :mycolor="mycolor"
- ref="basegame" @newmove="processMove")
+ BaseGame(:vname="vname" :analyze="analyze" :vr="vr"
+ :game-info="gameInfo" ref="basegame" @newmove="processMove")
</template>
<script>
return {
st: store.state,
// variables passed to BaseGame:
- fenStart: "",
+ gameInfo: {
+ fenStart: "",
+ players: ["Myself","Computer"], //playing as white
+ mycolor: "w",
+ },
vr: null,
- players: ["Myself","Computer"], //always playing white for now
- mycolor: "w",
// Web worker to play computer moves without freezing interface:
timeStart: undefined, //time when computer starts thinking
lockCompThink: false, //to avoid some ghost moves
},
newGameFromFen: function(fen) {
this.vr = new V(fen);
- this.fenStart = fen;
- this.mycolor = (Math.random() < 0.5 ? "w" : "b");
- console.log(this.mycolor);
- this.players = ["Myself","Computer"];
- if (this.mycolor == "b")
- this.players = this.players.reverse();
+ this.gameInfo.fenStart = fen;
+ this.gameInfo.mycolor = (Math.random() < 0.5 ? "w" : "b");
+ this.gameInfo.players = ["Myself","Computer"];
+ if (this.gameInfo.mycolor == "b")
+ this.gameInfo.players = this.gameInfo.players.reverse();
this.compWorker.postMessage(["init",fen]);
- if (this.mycolor != "w" || this.mode == "auto")
+ if (this.gameInfo.mycolor != "w" || this.mode == "auto")
this.playComputerMove();
},
playComputerMove: function() {
import ComputerGame from "@/components/ComputerGame.vue";
import { store } from "@/store";
import { getDiagram } from "@/utils/printDiagram";
+
export default {
name: 'my-rules',
components: {
display: "rules",
mode: "versus",
gameInProgress: false,
- mycolor: "w",
fen: "",
};
},