Nantes Université
Skip to content
GitLab
Explorer
Connexion
S'inscrire
Navigation principale
Rechercher ou aller à…
Projet
É
Échecs féeriques
Gestion
Activité
Membres
Labels
Programmation
Tickets
Tableaux des tickets
Jalons
Wiki
Code
Requêtes de fusion
Dépôt
Branches
Validations
Étiquettes
Graphe du dépôt
Comparer les révisions
Extraits de code
Compilation
Pipelines
Jobs
Planifications de pipeline
Artéfacts
Déploiement
Releases
Registre de conteneurs
Registre de modèles
Opération
Environnements
Surveillance
Incidents
Service d'assistance
Analyse
Données d'analyse des chaînes de valeur
Analyse des contributeurs
Données d'analyse CI/CD
Données d'analyse du dépôt
Expériences du modèle
Aide
Aide
Support
Documentation de GitLab
Comparer les forfaits GitLab
Forum de la communauté
Contribuer à GitLab
Donner votre avis
Raccourcis clavier
?
Extraits de code
Groupes
Projets
Afficher davantage de fils d'Ariane
Stewan Lheureux
Échecs féeriques
Validations
adea0437
Valider
adea0437
rédigé
5 years ago
par
Stewan Lheureux
Parcourir les fichiers
Options
Téléchargements
Correctifs
Plain Diff
Ajout de fonctions
parent
2d306101
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Modifications
1
Masquer les modifications d'espaces
En ligne
Côte à côte
Affichage de
1 fichier modifié
src/main/ts/move-validation.ts
+161
-10
161 ajouts, 10 suppressions
src/main/ts/move-validation.ts
avec
161 ajouts
et
10 suppressions
src/main/ts/move-validation.ts
+
161
−
10
Voir le fichier @
adea0437
...
@@ -120,7 +120,7 @@ export function queenMove(board: Chessboard, move: Move): boolean {
...
@@ -120,7 +120,7 @@ export function queenMove(board: Chessboard, move: Move): boolean {
*/
*/
export
function
empressMove
(
board
:
Chessboard
,
move
:
Move
):
boolean
{
export
function
empressMove
(
board
:
Chessboard
,
move
:
Move
):
boolean
{
/* Comme la Tour mais avec en plus les mouvements du chevalier */
/* Comme la Tour mais avec en plus les mouvements du chevalier */
/*
// Mouvements du Chevalier
// Mouvements du Chevalier
// Mouvement vers le bas
// Mouvement vers le bas
...
@@ -143,21 +143,21 @@ export function empressMove(board: Chessboard, move: Move): boolean {
...
@@ -143,21 +143,21 @@ export function empressMove(board: Chessboard, move: Move): boolean {
let
destination
:
Square
=
squareAtPosition
(
board
,
move
.
to
!
);
let
destination
:
Square
=
squareAtPosition
(
board
,
move
.
to
!
);
return
(
destination
.
isEmpty
||
isValidEat
(
board
,
move
))
return
(
destination
.
isEmpty
||
isValidEat
(
board
,
move
))
}
}
*/
// Mouvements de la Tour haut et bas
// Mouvements de la Tour haut et bas
if
(
move
.
from
!
.
file
==
move
.
to
!
.
file
)
{
// Le déplacement se fait-il sur la même colonne ?
if
(
move
.
from
!
.
file
==
move
.
to
!
.
file
)
{
// Le déplacement se fait-il sur la même colonne ?
let
moveRange
=
Math
.
abs
(
move
.
from
!
.
file
-
move
.
to
!
.
file
!
);
// combien de cases on veut traverser ?
let
moveRange
=
Math
.
abs
(
move
.
from
!
.
rank
-
move
.
to
!
.
rank
!
);
// combien de cases on veut traverser en haut ou en bas ?
let
moveFromTop
=
move
.
from
!
;
let
moveFromTop
=
move
.
from
!
;
let
moveFromBottom
=
move
.
from
!
;
for
(
let
i
=
1
;
i
<=
moveRange
;
i
++
)
{
for
(
let
i
=
1
;
i
<=
moveRange
;
i
++
)
{
// Si on va en haut
// Si on va en haut
if
(
move
.
from
!
.
file
!-
move
.
to
!
.
file
!
<
0
)
{
if
(
move
.
from
!
.
rank
!-
move
.
to
!
.
rank
!
<
0
)
{
if
(
equals
(
move
.
to
!
,
top
(
move
.
f
rom
!
)))
{
if
(
equals
(
move
.
to
!
,
top
(
move
F
rom
Top
)))
{
let
destination
:
Square
=
squareAtPosition
(
board
,
move
.
to
!
);
let
destination
:
Square
=
squareAtPosition
(
board
,
move
.
to
!
);
return
(
destination
.
isEmpty
||
isValidEat
(
board
,
move
));
return
(
destination
.
isEmpty
||
isValidEat
(
board
,
move
));
}
}
...
@@ -168,13 +168,75 @@ export function empressMove(board: Chessboard, move: Move): boolean {
...
@@ -168,13 +168,75 @@ export function empressMove(board: Chessboard, move: Move): boolean {
return
false
;
return
false
;
}
}
}
}
}
// Si on va en bas
if
(
move
.
from
!
.
rank
!-
move
.
to
!
.
rank
!
>
0
)
{
moveFromTop
=
top
(
moveFromTop
);
if
(
equals
(
move
.
to
!
,
bottom
(
moveFromBottom
)))
{
let
destination
:
Square
=
squareAtPosition
(
board
,
move
.
to
!
);
return
(
destination
.
isEmpty
||
isValidEat
(
board
,
move
));
}
}
else
{
let
destination
:
Square
=
squareAtPosition
(
board
,
bottom
(
moveFromBottom
));
if
(
!
destination
.
isEmpty
)
{
return
false
;
}
}
}
moveFromTop
=
top
(
moveFromTop
);
moveFromBottom
=
bottom
(
moveFromBottom
);
}
}
if
(
move
.
from
!
.
rank
==
move
.
to
!
.
rank
)
{
// Le déplacement se fait-il sur la même ligne ?
let
moveRange
=
Math
.
abs
(
move
.
from
!
.
file
-
move
.
to
!
.
file
!
);
// combien de cases on veut traverser à gauche ou à droite ?
let
moveFromRight
=
move
.
from
!
;
let
moveFromLeft
=
move
.
from
!
;
for
(
let
i
=
1
;
i
<=
moveRange
;
i
++
)
{
// Si on va à droite
if
(
move
.
from
!
.
file
!-
move
.
to
!
.
file
!
<
0
)
{
if
(
equals
(
move
.
to
!
,
right
(
moveFromRight
)))
{
let
destination
:
Square
=
squareAtPosition
(
board
,
move
.
to
!
);
return
(
destination
.
isEmpty
||
isValidEat
(
board
,
move
));
}
else
{
let
destination
:
Square
=
squareAtPosition
(
board
,
right
(
moveFromRight
));
if
(
!
destination
.
isEmpty
)
{
return
false
;
}
}
}
// Si on va à gauche
if
(
move
.
from
!
.
file
!-
move
.
to
!
.
file
!
>
0
)
{
if
(
equals
(
move
.
to
!
,
left
(
moveFromLeft
)))
{
let
destination
:
Square
=
squareAtPosition
(
board
,
move
.
to
!
);
return
(
destination
.
isEmpty
||
isValidEat
(
board
,
move
));
}
else
{
let
destination
:
Square
=
squareAtPosition
(
board
,
left
(
moveFromLeft
));
if
(
!
destination
.
isEmpty
)
{
return
false
;
}
}
}
moveFromRight
=
right
(
moveFromRight
);
moveFromLeft
=
left
(
moveFromLeft
);
}
}
}
}
return
false
;
return
false
;
}
}
...
@@ -191,8 +253,97 @@ export function empressMove(board: Chessboard, move: Move): boolean {
...
@@ -191,8 +253,97 @@ export function empressMove(board: Chessboard, move: Move): boolean {
* @param move
* @param move
*/
*/
export
function
princessMove
(
board
:
Chessboard
,
move
:
Move
):
boolean
{
export
function
princessMove
(
board
:
Chessboard
,
move
:
Move
):
boolean
{
// #TODO: Implement this function
return
true
;
// Mouvements du Fou
if
(
Math
.
abs
(
move
.
to
!
.
rank
-
move
.
from
!
.
rank
)
==
Math
.
abs
(
move
.
to
!
.
file
-
move
.
from
!
.
file
))
{
let
moveRange
=
Math
.
abs
(
move
.
from
!
.
rank
-
move
.
to
!
.
rank
);
let
moveFrom11pm
=
move
.
from
!
;
let
moveFrom8pm
=
move
.
from
!
;
let
moveFrom5pm
=
move
.
from
!
;
let
moveFrom2pm
=
move
.
from
!
;
for
(
let
i
=
1
;
i
<=
moveRange
;
i
++
)
{
// Si on va en haut à gauche (11pm)
if
(
move
.
to
!
.
file
>
move
.
from
!
.
file
&&
move
.
to
!
.
rank
<
move
.
from
!
.
rank
)
{
if
(
equals
(
move
.
to
!
,
left
(
top
(
moveFrom11pm
))))
{
let
destination
:
Square
=
squareAtPosition
(
board
,
move
.
to
!
);
return
(
destination
.
isEmpty
||
isValidEat
(
board
,
move
));
}
else
{
let
destination
:
Square
=
squareAtPosition
(
board
,
left
(
top
(
moveFrom11pm
)));
if
(
!
destination
.
isEmpty
)
{
return
false
;
}
}
}
// Si on va en haut à droite (2pm)
if
(
move
.
to
!
.
file
>
move
.
from
!
.
file
&&
move
.
to
!
.
rank
>
move
.
from
!
.
rank
)
{
if
(
equals
(
move
.
to
!
,
right
(
top
(
moveFrom2pm
))))
{
let
destination
:
Square
=
squareAtPosition
(
board
,
move
.
to
!
);
return
(
destination
.
isEmpty
||
isValidEat
(
board
,
move
));
}
else
{
let
destination
:
Square
=
squareAtPosition
(
board
,
right
(
top
(
moveFrom2pm
)));
if
(
!
destination
.
isEmpty
)
{
return
false
;
}
}
}
// Si on va en bas à gauche (8pm)
if
(
move
.
to
!
.
file
<
move
.
from
!
.
file
&&
move
.
to
!
.
rank
<
move
.
from
!
.
rank
)
{
if
(
equals
(
move
.
to
!
,
left
(
bottom
(
moveFrom8pm
))))
{
let
destination
:
Square
=
squareAtPosition
(
board
,
move
.
to
!
);
return
(
destination
.
isEmpty
||
isValidEat
(
board
,
move
));
}
else
{
let
destination
:
Square
=
squareAtPosition
(
board
,
left
(
bottom
(
moveFrom8pm
)));
if
(
!
destination
.
isEmpty
)
{
return
false
;
}
}
}
// Si on va en bas à droite (5pm)
if
(
move
.
to
!
.
file
<
move
.
from
!
.
file
&&
move
.
to
!
.
rank
>
move
.
from
!
.
rank
)
{
if
(
equals
(
move
.
to
!
,
right
(
bottom
(
moveFrom5pm
))))
{
let
destination
:
Square
=
squareAtPosition
(
board
,
move
.
to
!
);
return
(
destination
.
isEmpty
||
isValidEat
(
board
,
move
));
}
else
{
let
destination
:
Square
=
squareAtPosition
(
board
,
right
(
bottom
(
moveFrom5pm
)));
if
(
!
destination
.
isEmpty
)
{
return
false
;
}
}
}
moveFrom11pm
=
left
(
top
(
moveFrom11pm
));
moveFrom8pm
=
left
(
bottom
(
moveFrom8pm
));
moveFrom5pm
=
right
(
bottom
(
moveFrom5pm
));
moveFrom2pm
=
right
(
top
(
moveFrom2pm
));
}
}
return
false
;
}
}
/**
/**
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
Aperçu
0%
Chargement en cours
Veuillez réessayer
ou
joindre un nouveau fichier
.
Annuler
You are about to add
0
people
to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Enregistrer le commentaire
Annuler
Veuillez vous
inscrire
ou vous
se connecter
pour commenter