Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Stewan Lheureux
Échecs féeriques
Commits
adea0437
Commit
adea0437
authored
Apr 08, 2020
by
Stewan Lheureux
Browse files
Ajout de fonctions
parent
2d306101
Changes
1
Show whitespace changes
Inline
Side-by-side
src/main/ts/move-validation.ts
View file @
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
)
{
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
);
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
;
}
}
/**
/**
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment