Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Christopher League
FloodGame
Commits
15c50471
Commit
15c50471
authored
Jul 06, 2019
by
Christopher League
Browse files
Glyphs for connected colors working well!
parent
e5325a70
Changes
5
Show whitespace changes
Inline
Side-by-side
app/src/main/java/edu/liu/floodgame/GridActivity.java
View file @
15c50471
...
...
@@ -69,6 +69,8 @@ public class GridActivity extends AppCompatActivity implements FloodGrid {
gameOver
=
FloodGridOps
.
gameOver
(
this
);
setNumMoves
(
savedInstanceState
.
getInt
(
NUM_MOVES_KEY
));
}
recordNeighborsThroughout
();
}
@Override
...
...
@@ -93,6 +95,49 @@ public class GridActivity extends AppCompatActivity implements FloodGrid {
return
getColorAt
(
row
*
edgeSize
()
+
column
);
}
// Uses -1 for off-the-board
public
int
safeGetColorAt
(
int
row
,
int
column
)
{
if
(
row
<
0
||
row
>=
edgeSize
()
||
column
<
0
||
column
>=
edgeSize
())
return
-
1
;
return
getColorAt
(
row
,
column
);
}
void
recordNeighborsThroughout
()
{
for
(
int
r
=
0
;
r
<
edgeSize
();
r
++)
{
for
(
int
c
=
0
;
c
<
edgeSize
();
c
++)
{
recordNeighborsAt
(
r
,
c
);
}
}
}
public
void
recordNeighborsAt
(
int
row
,
int
column
)
{
int
index
=
row
*
edgeSize
()
+
column
;
GridCellView
cell
=
(
GridCellView
)
gridLayout
.
getChildAt
(
index
);
int
color
=
cell
.
color
;
boolean
west
=
color
==
safeGetColorAt
(
row
,
column
-
1
);
boolean
northwest
=
color
==
safeGetColorAt
(
row
-
1
,
column
-
1
);
boolean
north
=
color
==
safeGetColorAt
(
row
-
1
,
column
);
boolean
northeast
=
color
==
safeGetColorAt
(
row
-
1
,
column
+
1
);
boolean
east
=
color
==
safeGetColorAt
(
row
,
column
+
1
);
boolean
southeast
=
color
==
safeGetColorAt
(
row
+
1
,
column
+
1
);
boolean
south
=
color
==
safeGetColorAt
(
row
+
1
,
column
);
boolean
southwest
=
color
==
safeGetColorAt
(
row
+
1
,
column
-
1
);
cell
.
setNeighbors
(
// NW
GridCellView
.
corner
(
west
,
northwest
,
north
),
// NE
GridCellView
.
corner
(
east
,
northeast
,
north
),
// SE
GridCellView
.
corner
(
east
,
southeast
,
south
),
// SW
GridCellView
.
corner
(
west
,
southwest
,
south
));
}
@Override
public
int
getColorAt
(
int
index
)
{
GridCellView
cell
=
(
GridCellView
)
gridLayout
.
getChildAt
(
index
);
...
...
@@ -138,5 +183,7 @@ public class GridActivity extends AppCompatActivity implements FloodGrid {
}
setNumMoves
(
numMoves
+
1
);
}
recordNeighborsThroughout
();
}
}
app/src/main/java/edu/liu/floodgame/GridCellView.java
View file @
15c50471
package
edu.liu.floodgame
;
import
android.graphics.Canvas
;
import
android.graphics.Paint
;
import
android.support.v7.widget.GridLayout
;
import
android.view.View
;
...
...
@@ -17,7 +19,108 @@ public class GridCellView extends View {
void
setColor
(
int
color
)
{
this
.
color
=
color
;
//GridActivity activity = (GridActivity) getContext();
//setBackgroundColor(activity.colorFromPalette(color));
invalidate
();
}
enum
Quadrant
{
NW
(
0
),
NE
(
1
),
SE
(
2
),
SW
(
3
);
final
int
value
;
Quadrant
(
int
value
)
{
this
.
value
=
value
;
}
}
enum
Corner
{
NO_NO
,
NO_YES
,
YES_NO
,
YES_NO_YES
,
YES_YES_YES
}
static
Corner
corner
(
boolean
adjacent1
,
boolean
diagonal
,
boolean
adjacent2
)
{
if
(
adjacent1
)
{
if
(!
adjacent2
)
return
Corner
.
YES_NO
;
else
if
(
diagonal
)
return
Corner
.
YES_YES_YES
;
else
return
Corner
.
YES_NO_YES
;
}
else
if
(
adjacent2
)
return
Corner
.
NO_YES
;
else
return
Corner
.
NO_NO
;
}
private
Paint
paint
=
new
Paint
();
private
Corner
[]
neighbors
=
new
Corner
[]
{
Corner
.
NO_NO
,
Corner
.
NO_NO
,
Corner
.
NO_NO
,
Corner
.
NO_NO
};
void
setNeighbors
(
Corner
nw
,
Corner
ne
,
Corner
se
,
Corner
sw
)
{
boolean
changed
=
false
;
if
(
neighbors
[
0
]
!=
nw
)
{
neighbors
[
0
]
=
nw
;
changed
=
true
;
}
if
(
neighbors
[
1
]
!=
ne
)
{
neighbors
[
1
]
=
ne
;
changed
=
true
;
}
if
(
neighbors
[
2
]
!=
se
)
{
neighbors
[
2
]
=
se
;
changed
=
true
;
}
if
(
neighbors
[
3
]
!=
sw
)
{
neighbors
[
3
]
=
sw
;
changed
=
true
;
}
if
(
changed
)
invalidate
();
}
@Override
protected
void
onDraw
(
Canvas
canvas
)
{
super
.
onDraw
(
canvas
);
GridActivity
activity
=
(
GridActivity
)
getContext
();
setBackgroundColor
(
activity
.
colorFromPalette
(
color
));
paint
.
setStyle
(
Paint
.
Style
.
FILL
);
paint
.
setColor
(
activity
.
colorFromPalette
(
color
));
final
float
z
=
getWidth
();
final
float
c
=
z
*
0.5f
;
final
float
m
=
z
*
0.1f
;
for
(
Quadrant
q
:
Quadrant
.
values
())
{
System
.
out
.
print
(
" "
+
q
.
value
+
"="
+
q
+
":"
+
neighbors
[
q
.
value
]);
switch
(
neighbors
[
q
.
value
])
{
case
NO_NO:
drawRect
(
canvas
,
q
,
m
,
m
,
c
,
c
,
paint
);
// corner (nn)
break
;
case
NO_YES:
drawRect
(
canvas
,
q
,
m
,
0
,
c
,
c
,
paint
);
// vert (ny)
break
;
case
YES_NO:
drawRect
(
canvas
,
q
,
0
,
m
,
c
,
c
,
paint
);
// horiz (yn)
break
;
case
YES_YES_YES:
drawRect
(
canvas
,
q
,
0
,
0
,
c
,
c
,
paint
);
// full (yyy)
break
;
case
YES_NO_YES:
drawRect
(
canvas
,
q
,
m
,
0
,
c
,
c
,
paint
);
// vert
drawRect
(
canvas
,
q
,
0
,
m
,
c
,
c
,
paint
);
// horiz
break
;
}
}
System
.
out
.
println
();
}
void
drawRect
(
Canvas
canvas
,
Quadrant
quadrant
,
float
left
,
float
top
,
float
right
,
float
bottom
,
Paint
paint
)
{
// Maybe flip horizontal coordinates
float
tmp
;
switch
(
quadrant
)
{
case
NE:
case
SE:
tmp
=
left
;
left
=
right
;
right
=
getWidth
()
-
tmp
;
}
// Maybe flip vertical coordinates
switch
(
quadrant
)
{
case
SW:
case
SE:
tmp
=
top
;
top
=
bottom
;
bottom
=
getHeight
()
-
tmp
;
}
// Now draw
canvas
.
drawRect
(
left
,
top
,
right
,
bottom
,
paint
);
}
}
app/src/main/java/edu/liu/floodgame/PaletteSwatchesView.java
View file @
15c50471
...
...
@@ -5,7 +5,6 @@ import android.content.res.TypedArray;
import
android.graphics.Canvas
;
import
android.graphics.Color
;
import
android.graphics.Paint
;
import
android.hardware.camera2.params.BlackLevelPattern
;
import
android.util.AttributeSet
;
import
android.view.View
;
...
...
app/src/main/res/layout/activity_main.xml
View file @
15c50471
...
...
@@ -22,6 +22,13 @@
app:layout_constraintRight_toRightOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
<TextView
android:id=
"@+id/textView9"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:gravity=
"center"
android:text=
"\u00A92019 Christopher League"
/>
<Space
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
...
...
app/src/main/res/values/dimens.xml
View file @
15c50471
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen
name=
"default_gap"
>
4
dp
</dimen>
<dimen
name=
"default_gap"
>
2
dp
</dimen>
<dimen
name=
"color_button"
>
30dp
</dimen>
<dimen
name=
"radio_sep"
>
12dp
</dimen>
</resources>
Write
Preview
Supports
Markdown
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