1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
Public Class clsPion
Public piece As clsPiece
Public Function CheckMouvement(ByVal nNewLigne As Integer, ByVal nNewColonne As Integer, ByRef caseTo As clsCase) As Boolean
Dim bRetour As Boolean = False
'------------------------------
' <a href="http://www.chessvariants.com/d.chess/echec.html" target="_blank">http://www.chessvariants.com/d.chess/echec.html</a>
'Les Pions se déplacent différemment selon qu'ils vont sur une case libre ou qu'ils se déplacent pour prendre une pièce adverse.
'Quand un Pion ne prend pas de pièce adverse, il avance d'une case verticalement (il ne peut reculer).
'Toutefois, si un Pion n'a pas encore bougé depuis le début de la partie (autrement dit, s'il est toujours sur sa ligne de départ), le Pion est autorisé à avancer
'verticalement de deux cases d'un coup. Par exemple, un Pion blanc en d2 peut au choix aller en d3 ou en d4.
'Quand il prend une pièce adverse, le Pion se déplace en avançant en diagonale d'une case (il ne peut prendre en reculant). Par exemple un Pion blanc en d2 peut
'prendre un Cavalier noir se trouvant en e3.
'------------------------------
'--- si case destination occupée alors refus (pour exemple...)
If Not caseTo.objPiece Is Nothing Then
bRetour = False
Exit Function
End If
'--- si abs dep sup a 1 refus
If Math.Abs(piece.nLigne - nNewLigne) <= 1 And Math.Abs(piece.nColonne - nNewColonne) <= 1 Then
bRetour = True
Else
bRetour = False
End If
Return bRetour
End Function |
Partager