Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
agile-java
/
ChessAndroid
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
e73c7a32
authored
6 years ago
by
Paktalin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Lesson 5 exercise 6 done + refactoring
parent
1642774c
master
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
73 additions
and
45 deletions
app/src/main/java/com/example/paktalin/agilejava_exercises/Board.java
app/src/main/java/com/example/paktalin/agilejava_exercises/util/StringUtil.java
app/src/test/java/com/example/paktalin/agilejava_exercises/BoardTest.java
app/src/test/java/com/example/paktalin/agilejava_exercises/PieceTest.java
app/src/main/java/com/example/paktalin/agilejava_exercises/Board.java
View file @
e73c7a32
...
@@ -10,7 +10,7 @@ class Board {
...
@@ -10,7 +10,7 @@ class Board {
static
final
int
ROW_COUNT
=
8
;
static
final
int
ROW_COUNT
=
8
;
static
final
int
COLUMN_COUNT
=
8
;
static
final
int
COLUMN_COUNT
=
8
;
private
Piece
[][]
positionState
=
new
Piece
[
ROW_COUNT
][
COLUMN_COUNT
];
private
Piece
[][]
board
=
new
Piece
[
ROW_COUNT
][
COLUMN_COUNT
];
void
initialize
()
{
void
initialize
()
{
initializeKingRank
(
Piece
.
Color
.
Black
,
0
);
initializeKingRank
(
Piece
.
Color
.
Black
,
0
);
...
@@ -20,34 +20,38 @@ class Board {
...
@@ -20,34 +20,38 @@ class Board {
}
}
private
void
initializeKingRank
(
Piece
.
Color
color
,
int
rank
)
{
private
void
initializeKingRank
(
Piece
.
Color
color
,
int
rank
)
{
setPosition
(
Piece
.
createRook
(
color
),
rank
,
'a'
);
placePiece
(
Piece
.
createRook
(
color
),
rank
,
'a'
);
setPosition
(
Piece
.
createKnight
(
color
),
rank
,
'b'
);
placePiece
(
Piece
.
createKnight
(
color
),
rank
,
'b'
);
setPosition
(
Piece
.
createBishop
(
color
),
rank
,
'c'
);
placePiece
(
Piece
.
createBishop
(
color
),
rank
,
'c'
);
setPosition
(
Piece
.
createQueen
(
color
),
rank
,
'd'
);
placePiece
(
Piece
.
createQueen
(
color
),
rank
,
'd'
);
setPosition
(
Piece
.
createKing
(
color
),
rank
,
'e'
);
placePiece
(
Piece
.
createKing
(
color
),
rank
,
'e'
);
setPosition
(
Piece
.
createBishop
(
color
),
rank
,
'f'
);
placePiece
(
Piece
.
createBishop
(
color
),
rank
,
'f'
);
setPosition
(
Piece
.
createKnight
(
color
),
rank
,
'g'
);
placePiece
(
Piece
.
createKnight
(
color
),
rank
,
'g'
);
setPosition
(
Piece
.
createRook
(
color
),
rank
,
'h'
);
placePiece
(
Piece
.
createRook
(
color
),
rank
,
'h'
);
}
}
private
void
initializePawnRank
(
Piece
.
Color
color
,
int
rank
)
{
private
void
initializePawnRank
(
Piece
.
Color
color
,
int
rank
)
{
for
(
int
i
=
0
;
i
<
COLUMN_COUNT
;
i
++)
for
(
int
i
=
0
;
i
<
COLUMN_COUNT
;
i
++)
setPosition
(
Piece
.
createPawn
(
color
),
rank
,
i
);
placePiece
(
Piece
.
createPawn
(
color
),
rank
,
i
);
}
}
private
void
setPosition
(
Piece
piece
,
int
rank
,
char
file
)
{
private
void
placePiece
(
Piece
piece
,
int
row
,
char
file
)
{
setPosition
(
piece
,
rank
,
fileToColumn
(
file
));
placePiece
(
piece
,
row
,
fileToColumn
(
file
));
}
}
private
void
setPosition
(
Piece
piece
,
int
rank
,
int
column
)
{
private
void
placePiece
(
Piece
piece
,
int
row
,
int
column
)
{
positionState
[
rank
][
column
]
=
piece
;
board
[
row
][
column
]
=
piece
;
}
void
placePiece
(
Piece
piece
,
String
position
)
{
placePiece
(
piece
,
retrieveRow
(
position
),
retrieveColumn
(
position
));
}
}
int
pieceCount
()
{
int
pieceCount
()
{
int
count
=
0
;
int
count
=
0
;
for
(
int
i
=
0
;
i
<
ROW_COUNT
;
i
++)
for
(
int
i
=
0
;
i
<
ROW_COUNT
;
i
++)
for
(
int
j
=
0
;
j
<
COLUMN_COUNT
;
j
++)
for
(
int
j
=
0
;
j
<
COLUMN_COUNT
;
j
++)
if
(
positionState
[
i
][
j
]
!=
null
)
if
(
board
[
i
][
j
]
!=
null
)
count
++;
count
++;
return
count
;
return
count
;
...
@@ -57,8 +61,8 @@ class Board {
...
@@ -57,8 +61,8 @@ class Board {
int
counter
=
0
;
int
counter
=
0
;
for
(
int
i
=
0
;
i
<
ROW_COUNT
;
i
++)
for
(
int
i
=
0
;
i
<
ROW_COUNT
;
i
++)
for
(
int
j
=
0
;
j
<
COLUMN_COUNT
;
j
++)
{
for
(
int
j
=
0
;
j
<
COLUMN_COUNT
;
j
++)
{
if
(
positionState
[
i
][
j
]
!=
null
)
if
(
board
[
i
][
j
]
!=
null
)
if
(
positionState
[
i
][
j
].
getColor
()
==
color
)
if
(
board
[
i
][
j
].
getColor
()
==
color
)
counter
++;
counter
++;
}
}
return
counter
;
return
counter
;
...
@@ -68,8 +72,8 @@ class Board {
...
@@ -68,8 +72,8 @@ class Board {
int
count
=
0
;
int
count
=
0
;
for
(
int
i
=
0
;
i
<
ROW_COUNT
;
i
++)
{
for
(
int
i
=
0
;
i
<
ROW_COUNT
;
i
++)
{
for
(
int
j
=
0
;
j
<
COLUMN_COUNT
;
j
++)
{
for
(
int
j
=
0
;
j
<
COLUMN_COUNT
;
j
++)
{
if
(
positionState
[
i
][
j
]
!=
null
)
if
(
board
[
i
][
j
]
!=
null
)
if
(
positionState
[
i
][
j
].
isType
(
type
)
&&
positionState
[
i
][
j
].
getColor
()
==
color
)
if
(
board
[
i
][
j
].
isType
(
type
)
&&
board
[
i
][
j
].
getColor
()
==
color
)
count
++;
count
++;
}
}
}
}
...
@@ -80,10 +84,10 @@ class Board {
...
@@ -80,10 +84,10 @@ class Board {
StringBuilder
buffer
=
new
StringBuilder
();
StringBuilder
buffer
=
new
StringBuilder
();
for
(
int
i
=
0
;
i
<
ROW_COUNT
;
i
++)
{
for
(
int
i
=
0
;
i
<
ROW_COUNT
;
i
++)
{
for
(
int
j
=
0
;
j
<
COLUMN_COUNT
;
j
++)
{
for
(
int
j
=
0
;
j
<
COLUMN_COUNT
;
j
++)
{
if
(
positionState
[
i
][
j
]
==
null
)
if
(
board
[
i
][
j
]
==
null
)
buffer
.
append
(
"."
);
buffer
.
append
(
"."
);
else
else
buffer
.
append
(
positionState
[
i
][
j
].
getRepresentation
());
buffer
.
append
(
board
[
i
][
j
].
getRepresentation
());
}
}
buffer
.
append
(
NEW_LINE
);
buffer
.
append
(
NEW_LINE
);
}
}
...
@@ -95,12 +99,18 @@ class Board {
...
@@ -95,12 +99,18 @@ class Board {
return
(
int
)
file
-
(
int
)
firstColumnLetter
;
return
(
int
)
file
-
(
int
)
firstColumnLetter
;
}
}
Piece
getPieceAtLocation
(
String
loca
tion
)
{
private
int
retrieveRow
(
String
posi
tion
)
{
int
row
=
Integer
.
parseInt
(
loca
tion
.
split
(
""
)[
1
])
-
1
;
return
Integer
.
parseInt
(
posi
tion
.
split
(
""
)[
1
])
-
1
;
int
column
=
fileToColumn
(
location
.
toCharArray
()[
0
]);
}
return
positionState
[
row
][
column
];
private
int
retrieveColumn
(
String
position
)
{
return
fileToColumn
(
position
.
toCharArray
()[
0
]);
}
}
Piece
getPieceAtPosition
(
String
position
)
{
int
row
=
retrieveRow
(
position
);
int
column
=
retrieveColumn
(
position
);
return
board
[
row
][
column
];
}
}
}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
app/src/main/java/com/example/paktalin/agilejava_exercises/util/StringUtil.java
View file @
e73c7a32
...
@@ -13,4 +13,6 @@ public class StringUtil {
...
@@ -13,4 +13,6 @@ public class StringUtil {
public
static
String
appendNewLine
(
String
string
)
{
public
static
String
appendNewLine
(
String
string
)
{
return
string
+
NEW_LINE
;
return
string
+
NEW_LINE
;
}
}
}
}
This diff is collapsed.
Click to expand it.
app/src/test/java/com/example/paktalin/agilejava_exercises/BoardTest.java
View file @
e73c7a32
...
@@ -4,6 +4,9 @@ import com.example.paktalin.agilejava_exercises.util.StringUtil;
...
@@ -4,6 +4,9 @@ import com.example.paktalin.agilejava_exercises.util.StringUtil;
import
junit.framework.TestCase
;
import
junit.framework.TestCase
;
import
static
com
.
example
.
paktalin
.
agilejava_exercises
.
Piece
.
Color
.*;
import
static
com
.
example
.
paktalin
.
agilejava_exercises
.
Piece
.
Type
.*;
/**
/**
* Created by Paktalin on 23/05/2018.
* Created by Paktalin on 23/05/2018.
*/
*/
...
@@ -28,31 +31,40 @@ public class BoardTest extends TestCase {
...
@@ -28,31 +31,40 @@ public class BoardTest extends TestCase {
StringUtil
.
appendNewLine
(
"rnbqkbnr"
),
StringUtil
.
appendNewLine
(
"rnbqkbnr"
),
board
.
print
());
board
.
print
());
assertEquals
(
16
,
board
.
pieceCount
(
Piece
.
Color
.
Black
));
assertEquals
(
16
,
board
.
pieceCount
(
Black
));
assertEquals
(
16
,
board
.
pieceCount
(
Piece
.
Color
.
White
));
assertEquals
(
16
,
board
.
pieceCount
(
White
));
}
}
public
void
testCountPieces
()
{
public
void
testCountPieces
()
{
board
.
initialize
();
board
.
initialize
();
assertEquals
(
8
,
board
.
pieceCount
(
P
iece
.
Type
.
Pawn
,
Piece
.
Color
.
White
));
assertEquals
(
8
,
board
.
pieceCount
(
P
awn
,
White
));
assertEquals
(
1
,
board
.
pieceCount
(
Piece
.
Type
.
King
,
Piece
.
Color
.
Black
));
assertEquals
(
1
,
board
.
pieceCount
(
King
,
Black
));
assertEquals
(
1
,
board
.
pieceCount
(
Piece
.
Type
.
Queen
,
Piece
.
Color
.
White
));
assertEquals
(
1
,
board
.
pieceCount
(
Queen
,
White
));
assertEquals
(
2
,
board
.
pieceCount
(
Piece
.
Type
.
Bishop
,
Piece
.
Color
.
Black
));
assertEquals
(
2
,
board
.
pieceCount
(
Bishop
,
Black
));
assertEquals
(
2
,
board
.
pieceCount
(
Piece
.
Type
.
Knight
,
Piece
.
Color
.
White
));
assertEquals
(
2
,
board
.
pieceCount
(
Knight
,
White
));
assertEquals
(
2
,
board
.
pieceCount
(
Piece
.
Type
.
Rook
,
Piece
.
Color
.
Black
));
assertEquals
(
2
,
board
.
pieceCount
(
Rook
,
Black
));
}
}
public
void
testPieceLocation
()
{
public
void
testPieceLocation
()
{
board
.
initialize
();
board
.
initialize
();
Piece
piece
=
board
.
getPieceAtLocation
(
"a8"
);
Piece
piece
=
board
.
getPieceAtPosition
(
"a8"
);
assertEquals
(
Rook
,
piece
.
getType
());
assertEquals
(
White
,
piece
.
getColor
());
assertEquals
(
Piece
.
Type
.
Rook
,
piece
.
getType
());
piece
=
board
.
getPieceAtPosition
(
"e1"
);
assertEquals
(
Piece
.
Color
.
White
,
piece
.
getColor
());
assertEquals
(
King
,
piece
.
getType
());
assertEquals
(
Black
,
piece
.
getColor
());
}
public
void
testPlacePieces
()
{
board
.
initialize
();
piece
=
board
.
getPieceAtLocation
(
"e1"
);
board
.
placePiece
(
Piece
.
createBishop
(
Black
),
"a8"
);
assertEquals
(
Piece
.
Type
.
King
,
piece
.
getType
());
Piece
bishop
=
board
.
getPieceAtPosition
(
"a8"
);
assertEquals
(
Piece
.
Color
.
Black
,
piece
.
getColor
());
assertEquals
(
Bishop
,
bishop
.
getType
());
assertEquals
(
Black
,
bishop
.
getColor
());
}
}
}
}
This diff is collapsed.
Click to expand it.
app/src/test/java/com/example/paktalin/agilejava_exercises/PieceTest.java
View file @
e73c7a32
...
@@ -2,6 +2,9 @@ package com.example.paktalin.agilejava_exercises;
...
@@ -2,6 +2,9 @@ package com.example.paktalin.agilejava_exercises;
import
junit.framework.TestCase
;
import
junit.framework.TestCase
;
import
static
com
.
example
.
paktalin
.
agilejava_exercises
.
Piece
.
Type
.*;
import
static
com
.
example
.
paktalin
.
agilejava_exercises
.
Piece
.
Color
.*;
/**
/**
* Created by Paktalin on 23/05/2018.
* Created by Paktalin on 23/05/2018.
*/
*/
...
@@ -9,12 +12,12 @@ import junit.framework.TestCase;
...
@@ -9,12 +12,12 @@ import junit.framework.TestCase;
public
class
PieceTest
extends
TestCase
{
public
class
PieceTest
extends
TestCase
{
public
void
testCreate
()
{
public
void
testCreate
()
{
verifyCreation
(
Piece
.
createPawn
(
Piece
.
Color
.
White
),
Piece
.
createPawn
(
Piece
.
Color
.
Black
),
Piece
.
Type
.
Pawn
,
'p'
);
verifyCreation
(
Piece
.
createPawn
(
White
),
Piece
.
createPawn
(
Black
),
Pawn
,
'p'
);
verifyCreation
(
Piece
.
createKing
(
Piece
.
Color
.
White
),
Piece
.
createKing
(
Piece
.
Color
.
Black
),
Piece
.
Type
.
King
,
'k'
);
verifyCreation
(
Piece
.
createKing
(
White
),
Piece
.
createKing
(
Black
),
King
,
'k'
);
verifyCreation
(
Piece
.
createBishop
(
Piece
.
Color
.
White
),
Piece
.
createBishop
(
Piece
.
Color
.
Black
),
Piece
.
Type
.
Bishop
,
'b'
);
verifyCreation
(
Piece
.
createBishop
(
White
),
Piece
.
createBishop
(
Black
),
Bishop
,
'b'
);
verifyCreation
(
Piece
.
createRook
(
Piece
.
Color
.
White
),
Piece
.
createRook
(
Piece
.
Color
.
Black
),
Piece
.
Type
.
Rook
,
'r'
);
verifyCreation
(
Piece
.
createRook
(
White
),
Piece
.
createRook
(
Black
),
Rook
,
'r'
);
verifyCreation
(
Piece
.
createKnight
(
Piece
.
Color
.
White
),
Piece
.
createKnight
(
Piece
.
Color
.
Black
),
Piece
.
Type
.
Knight
,
'n'
);
verifyCreation
(
Piece
.
createKnight
(
White
),
Piece
.
createKnight
(
Black
),
Knight
,
'n'
);
verifyCreation
(
Piece
.
createQueen
(
Piece
.
Color
.
White
),
Piece
.
createQueen
(
Piece
.
Color
.
Black
),
Piece
.
Type
.
Queen
,
'q'
);
verifyCreation
(
Piece
.
createQueen
(
White
),
Piece
.
createQueen
(
Black
),
Queen
,
'q'
);
}
}
private
void
verifyCreation
(
Piece
whitePiece
,
Piece
blackPiece
,
Piece
.
Type
type
,
char
representation
)
{
private
void
verifyCreation
(
Piece
whitePiece
,
Piece
blackPiece
,
Piece
.
Type
type
,
char
representation
)
{
...
...
This diff is collapsed.
Click to expand it.
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