Commit 9dfb84e8 authored by kimia's avatar kimia

logic with checkMate

parent c7036982
public class Bishop extends Piece {
public Bishop(Cell cell, Color color) {
super(cell, color) ;
}
@Override
public boolean isValidMove(Cell c, Cell board[][]) {
public boolean isValidMove(Cell c, Cell board[][], Piece pw[], Piece pb[]) {
if (super.isDeleted()) return false ;
int sw=0 ;
if (super.getColor() == Color.BLACK) {
for (Piece p:pw) {
if (!p.isDeleted() && p.getCell().getRow()==c.getRow() && p.getCell().getCol()==c.getCol()) sw=1 ;
}
}
else {
for (Piece p:pb) {
if (!p.isDeleted() && p.getCell().getRow()==c.getRow() && p.getCell().getCol()==c.getCol()) sw=1 ;
}
}
if ( (
(Math.abs(this.getCell().getCol()-c.getCol()) == Math.abs(this.getCell().getRow()-c.getRow()))
) && c.isEmpty() ) {
) && (c.isEmpty() || (!c.isEmpty() && sw==1)) ) {
if (this.getCell().getCol() < c.getCol() && this.getCell().getRow() < c.getRow()) {
for (int i=-1 ; i>-8 ; --i) {
if (!board[this.getCell().getRow()-i][this.getCell().getCol()-i].isEmpty()) return false;
......@@ -42,4 +55,4 @@ public class Bishop extends Piece {
return false ;
}
}
}
\ No newline at end of file
}
public class Cell {
class Cell {
private int row, col ;
private boolean empty ;
......
......@@ -4,13 +4,24 @@ public class King extends Piece {
}
@Override
public boolean isValidMove(Cell c, Cell board[][]) {
public boolean isValidMove(Cell c, Cell board[][], Piece pw[], Piece pb[]) {
if (super.isDeleted()) return false ;
int sw=0 ;
if (super.getColor() == Color.BLACK) {
for (Piece p:pw) {
if (!p.isDeleted() && p.getCell().getRow()==c.getRow() && p.getCell().getCol()==c.getCol()) sw=1 ;
}
}
else {
for (Piece p:pb) {
if (!p.isDeleted() && p.getCell().getRow()==c.getRow() && p.getCell().getCol()==c.getCol()) sw=1 ;
}
}
return ( (
(this.getCell().getCol() == c.getCol() && Math.abs(this.getCell().getRow() - c.getRow()) == 1) ||
(this.getCell().getRow() == c.getRow() && Math.abs(this.getCell().getCol() - c.getCol()) == 1) ||
(Math.abs(this.getCell().getCol()-c.getCol())==1 && Math.abs(this.getCell().getRow()-c.getRow())==1)
)
&& c.isEmpty()
) && (c.isEmpty() || (!c.isEmpty() && sw==1))
) ;
}
}
\ No newline at end of file
}
/**
* knight class show the knight's moves that is like L
*@author kimiadorani
*@version 1.0
*@since 2019-5-7
*/
public class Knight extends Piece {
......@@ -6,13 +13,26 @@ public class Knight extends Piece {
}
@Override
public boolean isValidMove(Cell c, Cell board[][]) {
public boolean isValidMove(Cell c, Cell board[][], Piece pw[], Piece pb[]) {
if (super.isDeleted()) return false ;
int sw=0 ;
if (super.getColor() == Color.BLACK) {
for (Piece p:pw) {
if (!p.isDeleted() && p.getCell().getRow()==c.getRow() && p.getCell().getCol()==c.getCol()) sw=1 ;
}
}
else {
for (Piece p:pb) {
if (!p.isDeleted() && p.getCell().getRow()==c.getRow() && p.getCell().getCol()==c.getCol()) sw=1 ;
}
}
return ( (
(Math.abs(this.getCell().getCol()-c.getCol()) + Math.abs(this.getCell().getRow() - c.getRow()) == 3) &&
(Math.abs(this.getCell().getCol()-c.getCol()) != 0 && Math.abs(this.getCell().getRow() - c.getRow()) != 0)
)
&& c.isEmpty()
&& (c.isEmpty() || (!c.isEmpty() && sw==1))
) ;
}
}
This diff is collapsed.
public class Pawn extends Piece{
boolean once, end ;
private boolean once, end ;
public Pawn(Cell cell, Color color) {
super(cell, color) ;
this.once = true ;
this.end = false ;
public Pawn(Cell cell, Color color) {
super(cell, color) ;
this.once = true ;
this.end = false ;
}
public void setOnce(boolean once) {
this.once = once;
public void setOnce(boolean once) {
this.once = once;
}
public void setEnd(boolean end) {
this.end = end;
public void setEnd(boolean end) {
this.end = end;
}
@Override
public boolean isValidMove(Cell c, Cell board[][]) {
if (super.getColor()==Color.BLACK && super.getCell().getRow()==0) end = true ;
if (super.getColor()==Color.WHITE && super.getCell().getRow()==7) end = true ;
@Override
public boolean isValidMove(Cell c, Cell board[][], Piece pw[], Piece pb[]) {
if (super.isDeleted()) return false ;
if (super.getColor()==Color.BLACK && super.getCell().getRow()==0) end = true ;
if (super.getColor()==Color.WHITE && super.getCell().getRow()==7) end = true ;
if (once) {
//once = false ;
//System.out.println("row: " + this.getCell().getRow()) ;
//System.out.println("col: " + this.getCell().getCol()) ;
if ((this.getCell().getCol() == c.getCol()) &&
(Math.abs(this.getCell().getRow()-c.getRow())==1 || Math.abs(this.getCell().getRow()-c.getRow())==2)
&& c.isEmpty())
return true ;
else return false ;
}
else {
if (end) {
if(
((this.getCell().getCol() == c.getCol()) &&
(Math.abs(this.getCell().getRow()-c.getRow())==1)) ||
(Math.abs(this.getCell().getCol()-c.getCol())==Math.abs(this.getCell().getRow()-c.getRow()) &&
this.getCell().getRow()-c.getRow()==1)
) return true ;
else return false ;
}
else {
if(
(this.getCell().getCol() == c.getCol() &&
((this.getCell().getRow()-c.getRow()==1 && super.getColor()==Color.BLACK) ||
(this.getCell().getRow()-c.getRow()==-1 && super.getColor()==Color.WHITE)) )
||
(Math.abs(this.getCell().getCol()-c.getCol())==Math.abs(this.getCell().getRow()-c.getRow()) &&
((this.getCell().getRow()-c.getRow()==1 && super.getColor()==Color.BLACK) ||
(this.getCell().getRow()-c.getRow()==-1 && super.getColor()==Color.WHITE)) )
) return true ;
else return false ;
}
}
}
int sw=0 ;
if (super.getColor() == Color.BLACK) {
for (Piece p:pw) {
if (!p.isDeleted() && p.getCell().getRow()==c.getRow() && p.getCell().getCol()==c.getCol()) sw=1 ;
}
}
else {
for (Piece p:pb) {
if (!p.isDeleted() && p.getCell().getRow()==c.getRow() && p.getCell().getCol()==c.getCol()) sw=1 ;
}
}
if (once) {
//once = false ;
//System.out.println("row: " + this.getCell().getRow()) ;
//System.out.println("col: " + this.getCell().getCol()) ;
if ((this.getCell().getCol() == c.getCol()) &&
(Math.abs(this.getCell().getRow()-c.getRow())==1 || Math.abs(this.getCell().getRow()-c.getRow())==2)
&& c.isEmpty())
return true ;
else return false ;
}
else {
if (end) {
if(
((this.getCell().getCol() == c.getCol()) &&
(Math.abs(this.getCell().getRow()-c.getRow())==1)) ||
(Math.abs(this.getCell().getCol()-c.getCol())==Math.abs(this.getCell().getRow()-c.getRow()) &&
Math.abs(this.getCell().getCol()-c.getCol())==1 && sw==1)
) return true ;
else return false ;
}
else {
if(
(this.getCell().getCol() == c.getCol() &&
((this.getCell().getRow()-c.getRow()==1 && super.getColor()==Color.BLACK) ||
(this.getCell().getRow()-c.getRow()==-1 && super.getColor()==Color.WHITE)) )
||
(Math.abs(this.getCell().getCol()-c.getCol())==Math.abs(this.getCell().getRow()-c.getRow()) &&
((this.getCell().getRow()-c.getRow()==1 && super.getColor()==Color.BLACK && sw==1) ||
(this.getCell().getRow()-c.getRow()==-1 && super.getColor()==Color.WHITE && sw==1)) )
) return true ;
else return false ;
}
}
}
}
......@@ -11,7 +11,7 @@ public abstract class Piece {
this.deleted = false ;
}
public abstract boolean isValidMove (Cell cell, Cell board[][]) ;
public abstract boolean isValidMove(Cell c, Cell board[][], Piece pw[], Piece pb[]) ;
public Cell getCell() {
return cell;
......@@ -37,4 +37,4 @@ public abstract class Piece {
this.deleted = deleted;
}
}
\ No newline at end of file
}
......@@ -2,18 +2,86 @@
public class Queen extends Piece {
public Queen(Cell cell, Color color) {
super(cell, color) ;
}
public Queen(Cell cell, Color color) {
super(cell, color);
@Override
public boolean isValidMove(Cell c, Cell board[][], Piece pw[], Piece pb[]) {
if (super.isDeleted()) return false ;
int sw=0 ;
if (super.getColor() == Color.BLACK) {
for (Piece p:pw) {
if (!p.isDeleted() && p.getCell().getRow()==c.getRow() && p.getCell().getCol()==c.getCol()) sw=1 ;
}
}
else {
for (Piece p:pb) {
if (!p.isDeleted() && p.getCell().getRow()==c.getRow() && p.getCell().getCol()==c.getCol()) sw=1 ;
}
}
if ( (
(this.getCell().getCol() == c.getCol()) || (this.getCell().getRow() == c.getRow() ) ||
( Math.abs(this.getCell().getCol()-c.getCol()) == Math.abs(this.getCell().getRow()-c.getRow()))
) && (c.isEmpty() || (!c.isEmpty() && sw==1))
) {
if (this.getCell().getCol() < c.getCol() && this.getCell().getRow() < c.getRow()) {
for (int i=-1 ; i>-8 ; --i) {
if (!board[this.getCell().getRow()-i][this.getCell().getCol()-i].isEmpty()) return false;
if (this.getCell().getRow()-i == c.getRow()) break ;
}
}
if (this.getCell().getCol() < c.getCol() && this.getCell().getRow() > c.getRow()) {
for (int i=-1 ; i>-8 ; --i) {
if (!board[this.getCell().getRow()+i][this.getCell().getCol()-i].isEmpty()) {
//System.out.println("294 294") ;
return false ;
}
if (this.getCell().getRow()+i == c.getRow()) break ;
}
}
if (this.getCell().getCol() > c.getCol() && this.getCell().getRow() < c.getRow()) {
for (int i=1 ; i<8 ; ++i) {
if (!board[this.getCell().getRow()+i][this.getCell().getCol()-i].isEmpty()) return false;
if (this.getCell().getCol()-i == c.getCol()) break ;
}
}
if (this.getCell().getCol() > c.getCol() && this.getCell().getRow() > c.getRow()) {
for (int i=-1 ; i>-8 ; --i) {
if (!board[this.getCell().getRow()+i][this.getCell().getCol()+i].isEmpty()) return false;
if (this.getCell().getCol()+i == c.getCol()) break ;
}
}
@Override
public boolean isValidMove(Cell c, Cell board[][]) {
return ((
(this.getCell().getCol() == c.getCol()) || (this.getCell().getRow() == c.getRow()) ||
(Math.abs(this.getCell().getCol() - c.getCol()) == Math.abs(this.getCell().getRow() - c.getRow()))
)
&& c.isEmpty()
);
if (this.getCell().getCol() == c.getCol() && this.getCell().getRow() < c.getRow()) {
for (int i=1 ; i<8 ; ++i) {
if (!board[this.getCell().getRow()+i][c.getCol()].isEmpty()) return false;
if (this.getCell().getRow()+i == c.getRow()) break ;
}
}
if (this.getCell().getCol() == c.getCol() && this.getCell().getRow() > c.getRow()) {
for (int i=-1 ; i>-8 ; --i) {
if (!board[this.getCell().getRow()+i][c.getCol()].isEmpty()) {
//System.out.println("294 294") ;
return false;
}
if (this.getCell().getRow()+i == c.getRow()) break ;
}
}
if (this.getCell().getCol() < c.getCol() && this.getCell().getRow() == c.getRow()) {
for (int i=1 ; i<8 ; ++i) {
if (!board[c.getRow()][this.getCell().getCol()+i].isEmpty()) return false;
if (this.getCell().getCol()+i == c.getCol()) break ;
}
}
if (this.getCell().getCol() > c.getCol() && this.getCell().getRow() == c.getRow()) {
for (int i=-1 ; i>-8 ; --i) {
if (!board[c.getRow()][this.getCell().getCol()+i].isEmpty()) return false;
if (this.getCell().getCol()+i == c.getCol()) break ;
}
}
return true ;
}
else return false ;
}
}
/**
* shows the moves of the rook , it can move straight
* @author kimiadorani
* @version 1.0
*/
public class Rook extends Piece {
public Rook(Cell cell, Color color) {
super(cell, color) ;
}
@Override
public boolean isValidMove(Cell c, Cell board[][]) {
public boolean isValidMove(Cell c, Cell board[][], Piece pw[], Piece pb[]) {
if (super.isDeleted()) return false ;
int sw=0 ;
if (super.getColor() == Color.BLACK) {
for (Piece p:pw) {
if (!p.isDeleted() && p.getCell().getRow()==c.getRow() && p.getCell().getCol()==c.getCol()) sw=1 ;
}
}
else {
for (Piece p:pb) {
if (!p.isDeleted() && p.getCell().getRow()==c.getRow() && p.getCell().getCol()==c.getCol()) sw=1 ;
}
}
if ( (
(this.getCell().getCol() == c.getCol()) || (this.getCell().getRow() == c.getRow())
) && c.isEmpty()
) && (c.isEmpty() || (!c.isEmpty() && sw==1))
) {
if (this.getCell().getCol() == c.getCol() && this.getCell().getRow() < c.getRow()) {
for (int i=1 ; i<8 ; ++i) {
......@@ -42,4 +60,5 @@ public class Rook extends Piece {
}
else return false ;
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment