+++ /dev/null
-<svg xmlns="http://www.w3.org/2000/svg" id="flag-icon-css-de" viewBox="0 0 640 480">
- <path fill="#ffce00" d="M0 320h640v160H0z"/>
- <path d="M0 0h640v160H0z"/>
- <path fill="#d00" d="M0 160h640v160H0z"/>
-</svg>
+++ /dev/null
-<svg xmlns="http://www.w3.org/2000/svg" id="flag-icon-css-it" viewBox="0 0 640 480">
- <g fill-rule="evenodd" stroke-width="1pt">
- <path fill="#fff" d="M0 0h640v480H0z"/>
- <path fill="#009246" d="M0 0h213.3v480H0z"/>
- <path fill="#ce2b37" d="M426.7 0H640v480H426.7z"/>
- </g>
-</svg>
h('button',
{
on: { click: () => { this.mycolor = this.vr.getOppCol(this.mycolor) } },
- attrs: { "aria-label": translations['Flip'] },
+ attrs: { "aria-label": translations['Flip board'] },
"class": {
"play": true,
"spaceleft": true,
{
attrs: { "id": "titleFenedit" },
"class": { "section": true },
- domProps: { innerHTML: translations["Position + flags (FEN):"] },
+ domProps: { innerHTML: translations["Game state (FEN):"] },
}
),
h('input',
<fieldset>
<label for="newpbFen">FEN</label>
<input id="newpbFen" type="text" v-model="newProblem.fen"
- :placeholder='translate("Full FEN string")'/>
+ :placeholder='translate("Full FEN description")'/>
</fieldset>
<fieldset>
<p class="emphasis">{{ translate("Safe HTML tags allowed") }}</p>
},
previewNewProblem: function() {
if (!V.IsGoodFen(this.newProblem.fen))
- return alert(translations["Bad FEN string"]);
+ return alert(translations["Bad FEN description"]);
if (this.newProblem.instructions.trim().length == 0)
return alert(translations["Empty instructions"]);
if (this.newProblem.solution.trim().length == 0)
const sanitizeHtml = require('sanitize-html');
const MaxNbProblems = 20;
-const supportedLang = ["fr","en"];
+const supportedLang = ["en","es","fr"];
function selectLanguage(req, res)
{
// If preferred language already set:
block content
.container#indexPage
- // Modals
+ include langNames.pug
case lang
when "en"
include translations/en.pug
- include langNames/en.pug
include welcome/en.pug
include modal-lang/en.pug
include modal-help/en.pug
+ when "es"
+ include translations/es.pug
+ include welcome/es.pug
+ include modal-lang/es.pug
+ include modal-help/es.pug
when "fr"
include translations/fr.pug
- include langNames/fr.pug
include welcome/fr.pug
include modal-lang/fr.pug
include modal-help/fr.pug
-
var langName = {
+ "en": "English",
+ "es": "Español",
"fr": "Français",
- "en": "Anglais",
};
+++ /dev/null
--
- var langName = {
- "en": "English",
- "fr": "French",
- };
ol
li Click on a variant,
li Read the rules (in the upper left corner),
- li Back to playing mode (click on "Play!")
+ li Back to playing mode (click on "Play")
li Click on "new live game", and then, while waiting
li Click on "new computer game" (just next).
p Reminder:
--- /dev/null
+input#modalHelp.modal(type="checkbox")
+div(role="dialog")
+ #help.card
+ label.modal-close(for="modalHelp")
+ .section
+ ol
+ li Haga clic en una variante,
+ li Lee las reglas (arriba a la izquierda),
+ li Volver al modo de juego (haga clic en "Jugar"),
+ li Haga clic en "nuevo juego en vivo", luego, mientras tanto,
+ li Haga clic en "nuevo juego contra la computadora" (siguiente).
+ p Recordatorio :
+ ul
+ li Todas las partes comienzan con una posición aleatoria asimétrica.
+ li Los juegos no están cronometrados, y se juegan anónimamente.
+ li No charla durante el juego, para concentrarse en los movimientos.
+ .section
+ h3.red Informe de bug
+ p
+ | Por favor envíe un correo electrónico (en inglés o francés) a
+ a(href="mailto:contact@vchess.club?subject=[vchess.club] bug report")
+ | contact@vchess.club
+ | .
ol
li Cliquez sur une variante,
li Lisez les règles (en haut à gauche),
- li Revenez en mode jeu (cliquer sur "Jouer!")
+ li Revenez en mode jeu (cliquer sur "Jouer")
li Cliquez sur "nouvelle partie en direct", puis, en attendant
li Cliquez sur "nouvelle partie contre l'ordinateur" (à côté).
p Rappel :
--- /dev/null
+input#modalLang.modal(type="checkbox")
+div(role="dialog")
+ #language.card
+ label.modal-close(for="modalLang")
+ .section
+ fieldset
+ label(for="langSelect") ¿ Idioma preferido ?
+ select#langSelect(onChange="setLanguage(event)")
+ each langCode in languages
+ option(value=langCode selected=(lang==langCode))
+ =langName[langCode]
+ .section
+ h3.blue Contribuir
+ p
+ | ¿ Tu idioma favorito no está disponible ? Entonces...
+ | Navegar por el
+ a(href="https://github.com/yagu0/vchess/tree/master/views")
+ | repositorio github
+ | : tiene que traducir todos los ficheros en los archivos langNames/,
+ | modal-help/, modal-lang/, translations/ y welcome/.
+ | Además, y esa es la parte principal del trabajo, tiene que traducir todas
+ | las reglas en rules/. Una vez hecho esto, envíame los archivos :
+ a(href="mailto:contact@vchess.club?subject=[vchess.club] translation")
+ | contact@vchess.club
+ | . ¡ Gracias !
occur on board 2, because it would mean king and rook moved). Moreover, the
king cannot be in check on board 2 after castling.
-h3 Credits
+h3 More information
p
- | Alice chess pages on
+ | See the Alice chess pages on
a(href="https://www.chessvariants.com/other.dir/alice.html") chessvariants.com
| and on
a(href="https://www.schemingmind.com/journalarticle.aspx?article_id=9")
--- /dev/null
+p.boxed
+ | Cada pieza movida llega a otra tabla ("en el otro lado del espejo").
+ | Hay dos tableros. Todas las piezas comienzan en el tablero 1.
+
+h3 Especificaciones
+
+ul
+ li Tablero : estándar.
+ li Matériel : estándar + piezas Alice.
+ li Movimientos simples : estándar.
+ li Movimientos especiales : estándar.
+ li Capturas : estándar (en el mismo tablero).
+ li Final de partida : estándar.
+
+h3 Lo esencial
+
+p.
+ En esta variante se utilizan dos tableros.
+ Las piezas del tablero 2 están representadas al revés.
+ Cada movimiento jugado debe ser válido en su tablero (en el sentido habitual)
+ Además, la casilla de llegada no debe estar ocupado por una pieza en el otro
+ tablero (es lo que hace posible representar todo en 64 cajas).
+
+p La notación de las "piezas Alice" es la siguiente :
+ul
+ li Peon : S
+ li Torre : U
+ li Caballo : O
+ li Alfil : C
+ li Dama : T
+ li Rey : L
+
+figure.diagram-container
+ .diagram
+ | fen:rnbqkbnr/ppp1pppp/8/8/2p5/5O2/PP1PPPPP/RNBQKB1R:
+ figcaption Despues de los movimientos 1.Nf3 Pd5 2.Pc4 Sxc4
+
+h3 Final de partida
+
+p.
+ Al igual que con el ajedrez ortodoxo, jaque mate es una victoria.
+ El rey contrario no debe ser capaz de contrarrestar el jaque, ni siquiera mientras
+ se escapa en el otro tablero de ajedrez.
+
+p.
+ Nota : la captura en-passant y el enroque se hacen como en el juego ortodoxo.
+ Más precisamente, uno puede tomar en-passant cualquiera que sea el mundo de
+ salida y llegada de los peones.
+ Esto se justifica por el paso de los peones "a través del espejo": se pueden
+ capturar justo antes o después del espejo. El enroque debe ser legal en el
+ tablero de partida (necesariamente 1, de lo contrario el rey se ha movido y el
+ enroque ya no es legal), y el rey no debe estar bajo control en el tablero de llegada.
+
+h3 Más información
+
+p
+ | Ver las páginas dedicadas a esta variante en
+ a(href="https://www.chessvariants.com/other.dir/alice.html") chessvariants.com
+ | y
+ a(href="https://www.schemingmind.com/journalarticle.aspx?article_id=9")
+ | schemingmind.com
+ | .
(forcément le 1, sinon le roi a bougé et le roque n'est plus légal),
et le roi ne doit pas être en échec sur l'échiquier d'arrivée.
-h3 Liens
+h3 Plus d'information
p
- | Les pages dédiées à cette variante sur
+ | Voir les pages dédiées à cette variante sur
a(href="https://www.chessvariants.com/other.dir/alice.html") chessvariants.com
| et
a(href="https://www.schemingmind.com/journalarticle.aspx?article_id=9")
Note 2: since it would allow a basic tactic (keep antiking touching opponent's
king), kings do not attack antikings.
-h3 Credits
+h3 Source
p
a(href="https://www.chessvariants.com/diffobjective.dir/anti-king-chess.html")
En effet ceci permettrait d'appliquer une méthode simple pour ne jamais
être en "anti-échec" : rester collé au roi adverse.
-h3 Liens
+h3 Source
p
| La
Note: suicide is forbidden. Thus a king can touch the opponent king -
and become immune to checks.
-h3 Credits
+h3 More information
p.
- Many resources can be found on the web (this variation is played on lichess and
- FICS, among others).
+ Many resources can be found on the web ("Google it"; this variation is played on
+ lichess and FICS, among others).
This game was played first in 1995 at the German Internet Chess Server (GICS)
according to Wikipedia.
Note : le suicide est interdit. Ainsi, le roi peut toucher le roi adverse
et devenir invulnérable aux échecs.
-h3 Liens
+h3 Plus d'information
p.
- Beaucoup d'informations sont disponibles sur cette variante
+ Beaucoup d'informations sont disponibles sur cette variante : "Google it"
(elle est jouée sur lichess et sur FICS, entre autres).
Celle-ci est née en 1995 sur le German Internet Chess Server (GICS)
à en croire Wikipedia.
not the promoted piece. This is to allow to gain material on last rank without
fear of giving a queen to the opponent.
-h3 Credits
+h3 More information
p
| This variant is very popular, a possible starting point is
joueur capturant, et non pas la pièce capturée. Ceci permet de promouvoir
ses pions sans craindre de donner une dame à l'adversaire.
-h3 Liens
+h3 Plus d'information
p
| Cette variante est très populaire ; vous pouvez par exemple commencer par
| fen:n3brk1/5ppp/3q4/8/8/8/1Q3PPP/K1R1B1N1:
figcaption White can win in 2 moves: 1.Qb7, 2.QxN
-h3 Credits
+h3 Source
p
a(href="https://www.chessvariants.com/winning.dir/extinction.html") Extinction chess
| fen:n3brk1/5ppp/3q4/8/8/8/1Q3PPP/K1R1B1N1:
figcaption Les blancs peuvent gagner en deux coups : 1.Qb7, 2.QxN
-h3 Liens
+h3 Source
p
| La
Thus the castling rule was introduced compared to the rules described
on chessvariants.com.
-h3 Credits
+h3 Source
p
| Grand chess page on
variantes). Du coup la règle du roque a été ajoutée comparée aux règles
décrites initialement.
-h3 Liens
+h3 Source
p
| La page dédiée à la variante Grand sur
Win by losing all material or be stalemated (for example with only blocked pawns
remaining on board).
-h3 Credits
+h3 More information
p
| This is a popular variant, played in many places on the web.
Gagnez en perdant tout votre matériel ou en étant pat (par exemple avec
uniquement des pions bloqués restant sur l'échiquier).
-h3 Liens
+h3 Plus d'information
p
| Cette variante est très populaire, et est jouée en divers endroits sur internet.
p Note: while castling, the changes are made by the rook movement.
-h3 Credits
+h3 Source
p
a(href="https://www.chessvariants.com/other.dir/magnetic.html") Magnetic chess
p Note : lors du roque, les effets magnétiques sont appliqués par la tour en mouvement.
-h3 Liens
+h3 Source
p
| La
from the king are triggered in the same way. Castling takes priority:
if you wanna switch, use the rook.
-h3 Credits
+h3 Source
p
a(href="https://www.chessvariants.com/diffmove.dir/switching.html") Switching chess
l'échange peuvent parfois être déclenchés de la même façon. Le roque étant
prioritaire, l'échange s'effectue en sélectionnant d'abord la tour.
-h3 Liens
+h3 Source
p
| La
| fen:7k/8/8/p4r/4K3/8/8/8 e5:
figcaption 1.Ke5 is impossible
-h3 Credits
+h3 More information
p.
| A good starting point is the
| fen:7k/8/8/p4r/4K3/8/8/8 e5:
figcaption 1.Ke5 est impossible
-h3 Liens
+h3 Plus d'information
p
| La
Note: the castling rule is more restrictive than described in the original rules.
The game seems OK like that, but this may change soon enough.
-h3 Credits
+h3 Source
p
| The
Note : la règle du roque est plus restrictive que celle décrite par les règles
originelles. Le jeu semble OK comme ça, mais cela pourrait changer assez vite.
-h3 Liens
+h3 Source
p
| La
figcaption.
The king cannot take on a8 because it's guarded by the knight: it's checkmate
-h3 Credits
+h3 Source
p.
Very few resources about this variation:
figcaption.
Le roi ne peut prendre en a8, case gardée par le cavalier : c'est mat
-h3 Liens
+h3 Source
p.
Très peu d'informations sur le web à propos de cette variante :
"New game": "New game",
"Waiting for opponent...": "Waiting for opponent...",
"Rules": "Rules",
- "Play!": "Play!",
+ "Play": "Play",
"Problems": "Problems",
"White win": "White win",
"Black win": "Black win",
"Settings": "Settings",
"Resign": "Resign",
"Undo": "Undo",
- "Play": "Play",
- "Flip": "Flip",
- "Position + flags (FEN):": "Position + flags (FEN):",
+ "Flip board": "Flip board",
+ "Game state (FEN):": "Game state (FEN):",
"Ok": "Ok",
"Random": "Random",
"Preferences": "Preferences",
"blue": "blue",
"Play sounds?": "Play sounds?",
"None": "None",
- "New game": "New game",
"All": "All",
"Chat with ": "Chat with ",
"Type here": "Type here",
"Load next problems": "Load next problems",
"New": "New",
"Add a problem": "Add a problem",
- "Full FEN string": "Full FEN string",
+ "Full FEN description": "Full FEN description",
"Safe HTML tags allowed": "Safe HTML tags allowed",
"Instructions": "Instructions",
"Describe the problem goal": "Describe the problem goal",
"Preview": "Preview",
"Cancel": "Cancel",
"Solve": "Solve",
- "Bad FEN string": "Bad FEN string",
+ "Bad FEN description": "Bad FEN description",
"Empty instructions": "Empty instructions",
"Empty solution": "Empty solution",
"Already playing a game in this variant on another tab!":
--- /dev/null
+-
+ var translations =
+ {
+ // Index page:
+ "Help": "Ayuda",
+ "First visit?": "¿ Primera visita ?",
+ ">>> Please read this <<<": ">>> Por favor lee esto <<<",
+ // Variants boxes:
+ "Both sides of the mirror": "Ambos lados del espejo",
+ "Keep antiking in check": "Mantener el antirey en jaque",
+ "Explosive captures": "Capturas explosivas",
+ "Shared pieces": "Piezas compartidas",
+ "Standard rules": "Reglas estandar",
+ "Captures reborn": "Las capturas renacen",
+ "Capture all of a kind": "Capturar todo del mismo tipo",
+ "Big board": "Gran tablero",
+ "Lose all pieces": "Perder todas las piezas",
+ "Laws of attraction": "Las leyes de las atracciones",
+ "Exchange pieces positions": "Intercambiar las posiciones de las piezas",
+ "Exotic captures": "Capturas exóticas",
+ "Balanced sliders & leapers": "Modos de desplazamiento equilibrados",
+ "Reverse captures": "Capturas invertidas",
+
+ // Variant page:
+ "New game": "Nueva partida",
+ "Waiting for opponent...": "Esperando a un oponente...",
+ "Rules": "Reglas",
+ "Play": "Jugar",
+ "Problems": "Problemas",
+ "White win": "Las blancas ganan",
+ "Black win": "Las negras ganan",
+ "Draw": "Empate",
+ "New live game": "Nueva partida en vivo",
+ "New game versus computer": "Nueva partida contra la computadora",
+ "Analysis mode": "Modo de análisis",
+ "Start chat": "Iniciar chat",
+ "Clear game versus computer": "Borrar la partida contra la computadora",
+ "Settings": "Ajustes",
+ "Resign": "Abandonar",
+ "Undo": "Deshacer",
+ "Flip board": "Girar el tablero",
+ "Game state (FEN):": "Estado del juego (FEN) :",
+ "Ok": "Ok",
+ "Random": "Aleatorio",
+ "Preferences": "Preferencias",
+ "My name is...": "Mi nombre es...",
+ "Show hints?": "Ayudas visuales ?",
+ "Board colors": "Colores del tablero",
+ "brown": "marrón",
+ "green": "verde",
+ "blue": "azul",
+ "Play sounds?": "¿ Tocar los sonidos ?",
+ "None": "No",
+ "All": "Todos",
+ "Chat with ": "Hablar con ",
+ "Type here": "Escribe aqui",
+ "Send": "Enviar",
+ "Download game": "Descargar la partida",
+ "Show solution": "Mostrar la solucion",
+ "Load previous problems": "Cargar los problemas anteriores",
+ "Load next problems": "Cargar los siguientes problemas",
+ "New": "Nuevo",
+ "Add a problem": "Añadir un problema",
+ "Full FEN description": "Descripción FEN completa",
+ "Safe HTML tags allowed": "HTML 'seguro' autorizado",
+ "Instructions": "Instrucciones",
+ "Describe the problem goal": "Describe el objetivo del problema",
+ "Solution": "Solución",
+ "How to solve the problem?": "¿ Como resolver el problema ?",
+ "Preview": "Previsualizar",
+ "Cancel": "Anular",
+ "Solve": "Resolver",
+ "Bad FEN string": "Mala descripción FEN",
+ "Empty instructions": "Instrucciones vacias",
+ "Empty solution": "Solución vacía",
+ "Already playing a game in this variant on another tab!":
+ "¡ Una partida está en progreso en esta variante en otra pestaña !",
+ "Finish your ": "¡ Termina tu ",
+ " game first!": " partida primero !",
+ ": unfinished computer game will be erased":
+ " : una partida inconclusa contra la computadora será borrado",
+ };
"Explosive captures": "Captures explosives",
"Shared pieces": "Pièces partagées",
"Standard rules": "Règles usuelles",
- "Captures reborn": "Captures ressucitées",
+ "Captures reborn": "Les captures renaissent",
"Capture all of a kind": "Capturez tout d'un même type",
"Big board": "Grand échiquier",
"Lose all pieces": "Perdez toutes les pièces",
"New game": "Nouvelle partie",
"Waiting for opponent...": "En attente d'un adversaire...",
"Rules": "Règles",
- "Play!": "Jouer!",
+ "Play": "Jouer",
"Problems": "Problèmes",
"White win": "Les blancs gagnent",
"Black win": "Les noirs gagnent",
"Settings": "Réglages",
"Resign": "Abandonner",
"Undo": "Annuler",
- "Play": "Jouer",
- "Flip": "Retourner",
- "Position + flags (FEN):": "Position + drapeaux (FEN) :",
+ "Flip board": "Tourner l'échiquier",
+ "Game state (FEN):": "État de la partie (FEN) :",
"Ok": "Ok",
"Random": "Aléatoire",
"Preferences": "Préférences",
"blue": "bleu",
"Play sounds?": "Jouer les sons ?",
"None": "Aucun",
- "New game": "Nouvelle partie",
"All": "Tous",
"Chat with ": "Discuter avec ",
"Type here": "Écrivez ici",
"Load next problems": "Charger les problèmes suivants",
"New": "Nouveau",
"Add a problem": "Ajouter un problème",
- "Full FEN string": "Chaîne FEN complète",
+ "Full FEN description": "Description FEN complète",
"Safe HTML tags allowed": "HTML 'sûr' autorisé",
"Instructions": "Instructions",
"Describe the problem goal": "Décrire le but du problème",
block content
.container#variantPage
- // Modals
+ include langNames.pug
case lang
when "en"
include translations/en.pug
- include langNames/en.pug
include modal-lang/en.pug
include modal-help/en.pug
+ when "es"
+ include translations/es.pug
+ include modal-lang/es.pug
+ include modal-help/es.pug
when "fr"
include translations/fr.pug
- include langNames/fr.pug
include modal-lang/fr.pug
include modal-help/fr.pug
input#modal-newgame.modal(type="checkbox")
a(href="#rules" @click="setDisplay('rules')")
=translations["Rules"]
a(href="#play" @click="setDisplay('play')")
- =translations["Play!"]
+ =translations["Play"]
a(href="#problems" @click="setDisplay('problems')")
=translations["Problems"]
#flagMenu.clickable(
--- /dev/null
+input#modalWelcome.modal(type="checkbox")
+div(role="dialog")
+ #welcome.card.text-center
+ label.modal-close(for="modalWelcome")
+ h3.blue.section ¡ Bienvenido a v[ariant]chess.club !
+ .section
+ p Un sitio donde jugar variantes del juego de ajedrez en vivo.
+ p Pero espera... ¿ qué es una "variante" ?
+ img(src="/images/Hexagonal_chess.svg")
+ p.
+ Como lo sugiere la imagen, el punto de inicio de una variante generalmente
+ se ve como un tablero de ajedrez con las piezas habituales.
+ (sino ya no es una variante, pero un nuevo juego).
+ p.emphasis.purple Sin embargo...
+ p Cada variante tiene sus propias reglas, que pueden definir
+ table.list-table
+ tbody
+ tr
+ td * diferentes desplazamientos de piezas
+ tr
+ td * differentes(s) tablero(s)
+ tr
+ td * nuevas piezas
+ tr
+ td * efectos de borde en los movimientos
+ tr
+ td ...etc
+ .section
+ p.
+ Ejemplo : Imagina que una captura es una explosión atómica que destruye
+ todo en los 8 hexes cercanos, excepto los peones, que como las cucarachas
+ se resisten a este tipo de cosas.
+ p Define también un objetivo : hacer explotar al rey del adversario.
+ p.
+ → ¡ Bien hecho, acabas de describir el ajedrez atómico !
+ (Se puede jugar aquí)
+ .section
+ p.emphasis.purple
+ | OK, parece interesante, pero ¿ por qué sería divertido ?!
+ p.
+ Como todas las partidas comienzan con una posición aleatoria :
+ ¡ terminadas las laboriosas memorizaciones de aperturas, puedes expresar
+ tus habilidades de ajedrez desde el primer movimiento ! Ninguna partida
+ es como otra.
+ -
+ var wikipediaUrl = "https://en.wikipedia.org/wiki/" +
+ "List_of_chess_variants#/media/File:Hexagonal_chess.svg";
+ p.
+ Pour s'informer sur des centaines de variantes (au moins), je vous invite à
+ visiter l'excellent site
+ #[a(href="https://www.chessvariants.com/") chessvariants].
+ p#disableMsg.clickable(@click="markAsVisited")
+ | Haga clic aquí para no mostrar este mensaje la próxima vez.
+ p.smallfont Credito de imagen : #[a(href=wikipediaUrl) Wikipedia]
#[a(href="https://www.chessvariants.com/") chessvariants].
p#disableMsg.clickable(@click="markAsVisited")
| Cliquer ici pour ne pas montrer ce message la prochaine fois
- p.smallfont Crédit image: #[a(href=wikipediaUrl) Wikipedia]
+ p.smallfont Crédit image : #[a(href=wikipediaUrl) Wikipedia]