Main Page
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
lib
effect
boardBitMask.cc
Go to the documentation of this file.
1
#include "
osl/effect/boardBitMask.h
"
2
#include "
osl/ptype.h
"
3
#include "
osl/ptypeTable.h
"
4
#include <iostream>
5
6
namespace
osl
7
{
8
namespace
effect
9
{
10
11
std::ostream&
operator<<
(std::ostream& os,
BoardBitMask
const
& boardBitMask){
12
os <<
"["
;
13
for
(
int
i=15;i>=0;i--){
14
unsigned
char
uc=boardBitMask.
bMask
[i];
15
for
(
int
j=7;j>=0;j--){
16
if
((uc&(1<<j))!=0) os <<
"1"
;
17
else
os<<
"0"
;
18
}
19
os<<
" "
;
20
}
21
return
os <<
"]"
;
22
}
23
24
25
void
BoardBitMaskTable::initMaskOfSquare
(){
26
for
(
int
i=0;i<
Square::SIZE
;i++){
27
maskOfSquare
[i].clearAll();
28
}
29
for
(
int
y=1;y<=9;y++)
30
for
(
int
x=1;x<=9;x++){
31
Square
pos(x,y);
32
maskOfSquare
[pos.
index
()].setBit(
BoardBitMask::positionToOffset
(pos));
33
}
34
}
35
36
static
void
setBetweenMask
(
BoardBitMask
& mask,
Square
from,
Square
to,
37
Ptype
ptype){
38
const
EffectContent
effect=
Ptype_Table
.
getEffect
(
newPtypeO
(
BLACK
,ptype),
Offset32
(to,from));
39
if
(!effect.
hasBlockableEffect
())
return
;
40
const
Offset
offset=effect.
offset
();
41
mask.
clearAll
();
42
for
(
Square
pos=from+offset;pos!=to;pos+=offset){
43
mask.
setBit
(pos);
44
}
45
}
46
void
BoardBitMaskTable::initBetweenMask
(){
47
for
(
int
j=0;j<
Square::SIZE
;j++){
48
for
(
int
i=0;i<
Square::SIZE
;i++){
49
rookBetweenMask
[i][j].setAll();
50
lanceBetweenMask
[i][j].setAll();
51
bishopBetweenMask
[i][j].setAll();
52
}
53
}
54
for
(
int
y1=1;y1<=9;y1++)
55
for
(
int
x1=1;x1<=9;x1++){
56
Square
from(x1,y1);
57
for
(
int
y2=1;y2<=9;y2++)
58
for
(
int
x2=1;x2<=9;x2++){
59
Square
to(x2,y2);
63
setBetweenMask
(
lanceBetweenMask
[from.
index
()][to.
index
()],from,to,
LANCE
);
64
setBetweenMask
(
bishopBetweenMask
[from.
index
()][to.index()],from,to,
BISHOP
);
65
setBetweenMask
(
rookBetweenMask
[from.index()][to.index()],from,to,
ROOK
);
66
}
67
}
68
}
69
70
BoardBitMaskTable::BoardBitMaskTable
(){
71
initMaskOfSquare
();
72
initBetweenMask
();
73
}
74
}
// namespace effect
75
}
// namespace osl
Generated on Sun Jul 21 2013 13:37:23 by
1.8.4