Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
tetra-tower
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Oenos
tetra-tower
Commits
48956904
Commit
48956904
authored
Oct 12, 2018
by
18손재민
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
이동 및 회전, 드랍 관련 기능 대부분 구현 완료
parent
38c052e9
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
280 additions
and
98 deletions
+280
-98
TetriminoI.prefab
Assets/Prefabs/Tetrimino/TetriminoI.prefab
+4
-4
TetriminoJ.prefab
Assets/Prefabs/Tetrimino/TetriminoJ.prefab
+4
-4
TetriminoL.prefab
Assets/Prefabs/Tetrimino/TetriminoL.prefab
+4
-4
TetriminoO.prefab
Assets/Prefabs/Tetrimino/TetriminoO.prefab
+4
-4
TetriminoS.prefab
Assets/Prefabs/Tetrimino/TetriminoS.prefab
+4
-4
TetriminoT.prefab
Assets/Prefabs/Tetrimino/TetriminoT.prefab
+4
-4
TetriminoZ.prefab
Assets/Prefabs/Tetrimino/TetriminoZ.prefab
+4
-4
MapManager.cs
Assets/Scripts/TetrisMap/MapManager.cs
+221
-51
Room.cs
Assets/Scripts/TetrisMap/Room.cs
+0
-6
Test.cs
Assets/Scripts/TetrisMap/Test.cs
+3
-3
Tetrimino.cs
Assets/Scripts/TetrisMap/Tetrimino/Tetrimino.cs
+13
-8
TetriminoSpawner.cs
Assets/Scripts/TetrisMap/TetriminoSpawner.cs
+15
-2
No files found.
Assets/Prefabs/Tetrimino/TetriminoI.prefab
View file @
48956904
...
@@ -180,7 +180,7 @@ MonoBehaviour:
...
@@ -180,7 +180,7 @@ MonoBehaviour:
stage
:
0
stage
:
0
roomConcept
:
0
roomConcept
:
0
itemRoomType
:
0
itemRoomType
:
0
specialRoomType
:
0
specialRoomType
:
5
---
!u!114
&114323397412866622
---
!u!114
&114323397412866622
MonoBehaviour
:
MonoBehaviour
:
m_ObjectHideFlags
:
1
m_ObjectHideFlags
:
1
...
@@ -197,7 +197,7 @@ MonoBehaviour:
...
@@ -197,7 +197,7 @@ MonoBehaviour:
stage
:
0
stage
:
0
roomConcept
:
0
roomConcept
:
0
itemRoomType
:
0
itemRoomType
:
0
specialRoomType
:
0
specialRoomType
:
5
---
!u!114
&114753577101051656
---
!u!114
&114753577101051656
MonoBehaviour
:
MonoBehaviour
:
m_ObjectHideFlags
:
1
m_ObjectHideFlags
:
1
...
@@ -214,7 +214,7 @@ MonoBehaviour:
...
@@ -214,7 +214,7 @@ MonoBehaviour:
stage
:
0
stage
:
0
roomConcept
:
0
roomConcept
:
0
itemRoomType
:
0
itemRoomType
:
0
specialRoomType
:
0
specialRoomType
:
5
---
!u!114
&114851979720776072
---
!u!114
&114851979720776072
MonoBehaviour
:
MonoBehaviour
:
m_ObjectHideFlags
:
1
m_ObjectHideFlags
:
1
...
@@ -252,7 +252,7 @@ MonoBehaviour:
...
@@ -252,7 +252,7 @@ MonoBehaviour:
stage
:
0
stage
:
0
roomConcept
:
0
roomConcept
:
0
itemRoomType
:
0
itemRoomType
:
0
specialRoomType
:
0
specialRoomType
:
5
---
!u!212
&212152418876382836
---
!u!212
&212152418876382836
SpriteRenderer
:
SpriteRenderer
:
m_ObjectHideFlags
:
1
m_ObjectHideFlags
:
1
...
...
Assets/Prefabs/Tetrimino/TetriminoJ.prefab
View file @
48956904
...
@@ -180,7 +180,7 @@ MonoBehaviour:
...
@@ -180,7 +180,7 @@ MonoBehaviour:
stage
:
0
stage
:
0
roomConcept
:
0
roomConcept
:
0
itemRoomType
:
0
itemRoomType
:
0
specialRoomType
:
0
specialRoomType
:
5
---
!u!114
&114163463770396558
---
!u!114
&114163463770396558
MonoBehaviour
:
MonoBehaviour
:
m_ObjectHideFlags
:
1
m_ObjectHideFlags
:
1
...
@@ -197,7 +197,7 @@ MonoBehaviour:
...
@@ -197,7 +197,7 @@ MonoBehaviour:
stage
:
0
stage
:
0
roomConcept
:
0
roomConcept
:
0
itemRoomType
:
0
itemRoomType
:
0
specialRoomType
:
0
specialRoomType
:
5
---
!u!114
&114466843507187060
---
!u!114
&114466843507187060
MonoBehaviour
:
MonoBehaviour
:
m_ObjectHideFlags
:
1
m_ObjectHideFlags
:
1
...
@@ -214,7 +214,7 @@ MonoBehaviour:
...
@@ -214,7 +214,7 @@ MonoBehaviour:
stage
:
0
stage
:
0
roomConcept
:
0
roomConcept
:
0
itemRoomType
:
0
itemRoomType
:
0
specialRoomType
:
0
specialRoomType
:
5
---
!u!114
&114787691033818184
---
!u!114
&114787691033818184
MonoBehaviour
:
MonoBehaviour
:
m_ObjectHideFlags
:
1
m_ObjectHideFlags
:
1
...
@@ -231,7 +231,7 @@ MonoBehaviour:
...
@@ -231,7 +231,7 @@ MonoBehaviour:
stage
:
0
stage
:
0
roomConcept
:
0
roomConcept
:
0
itemRoomType
:
0
itemRoomType
:
0
specialRoomType
:
0
specialRoomType
:
5
---
!u!114
&114826030636358216
---
!u!114
&114826030636358216
MonoBehaviour
:
MonoBehaviour
:
m_ObjectHideFlags
:
1
m_ObjectHideFlags
:
1
...
...
Assets/Prefabs/Tetrimino/TetriminoL.prefab
View file @
48956904
...
@@ -180,7 +180,7 @@ MonoBehaviour:
...
@@ -180,7 +180,7 @@ MonoBehaviour:
stage
:
0
stage
:
0
roomConcept
:
0
roomConcept
:
0
itemRoomType
:
0
itemRoomType
:
0
specialRoomType
:
0
specialRoomType
:
5
---
!u!114
&114135637264954520
---
!u!114
&114135637264954520
MonoBehaviour
:
MonoBehaviour
:
m_ObjectHideFlags
:
1
m_ObjectHideFlags
:
1
...
@@ -197,7 +197,7 @@ MonoBehaviour:
...
@@ -197,7 +197,7 @@ MonoBehaviour:
stage
:
0
stage
:
0
roomConcept
:
0
roomConcept
:
0
itemRoomType
:
0
itemRoomType
:
0
specialRoomType
:
0
specialRoomType
:
5
---
!u!114
&114317610525364840
---
!u!114
&114317610525364840
MonoBehaviour
:
MonoBehaviour
:
m_ObjectHideFlags
:
1
m_ObjectHideFlags
:
1
...
@@ -214,7 +214,7 @@ MonoBehaviour:
...
@@ -214,7 +214,7 @@ MonoBehaviour:
stage
:
0
stage
:
0
roomConcept
:
0
roomConcept
:
0
itemRoomType
:
0
itemRoomType
:
0
specialRoomType
:
0
specialRoomType
:
5
---
!u!114
&114346591663730294
---
!u!114
&114346591663730294
MonoBehaviour
:
MonoBehaviour
:
m_ObjectHideFlags
:
1
m_ObjectHideFlags
:
1
...
@@ -231,7 +231,7 @@ MonoBehaviour:
...
@@ -231,7 +231,7 @@ MonoBehaviour:
stage
:
0
stage
:
0
roomConcept
:
0
roomConcept
:
0
itemRoomType
:
0
itemRoomType
:
0
specialRoomType
:
0
specialRoomType
:
5
---
!u!114
&114568813863931164
---
!u!114
&114568813863931164
MonoBehaviour
:
MonoBehaviour
:
m_ObjectHideFlags
:
1
m_ObjectHideFlags
:
1
...
...
Assets/Prefabs/Tetrimino/TetriminoO.prefab
View file @
48956904
...
@@ -180,7 +180,7 @@ MonoBehaviour:
...
@@ -180,7 +180,7 @@ MonoBehaviour:
stage
:
0
stage
:
0
roomConcept
:
0
roomConcept
:
0
itemRoomType
:
0
itemRoomType
:
0
specialRoomType
:
0
specialRoomType
:
5
---
!u!114
&114213829136544718
---
!u!114
&114213829136544718
MonoBehaviour
:
MonoBehaviour
:
m_ObjectHideFlags
:
1
m_ObjectHideFlags
:
1
...
@@ -197,7 +197,7 @@ MonoBehaviour:
...
@@ -197,7 +197,7 @@ MonoBehaviour:
stage
:
0
stage
:
0
roomConcept
:
0
roomConcept
:
0
itemRoomType
:
0
itemRoomType
:
0
specialRoomType
:
0
specialRoomType
:
5
---
!u!114
&114426654816215182
---
!u!114
&114426654816215182
MonoBehaviour
:
MonoBehaviour
:
m_ObjectHideFlags
:
1
m_ObjectHideFlags
:
1
...
@@ -235,7 +235,7 @@ MonoBehaviour:
...
@@ -235,7 +235,7 @@ MonoBehaviour:
stage
:
0
stage
:
0
roomConcept
:
0
roomConcept
:
0
itemRoomType
:
0
itemRoomType
:
0
specialRoomType
:
0
specialRoomType
:
5
---
!u!114
&114908975501692068
---
!u!114
&114908975501692068
MonoBehaviour
:
MonoBehaviour
:
m_ObjectHideFlags
:
1
m_ObjectHideFlags
:
1
...
@@ -252,7 +252,7 @@ MonoBehaviour:
...
@@ -252,7 +252,7 @@ MonoBehaviour:
stage
:
0
stage
:
0
roomConcept
:
0
roomConcept
:
0
itemRoomType
:
0
itemRoomType
:
0
specialRoomType
:
0
specialRoomType
:
5
---
!u!212
&212207191686043862
---
!u!212
&212207191686043862
SpriteRenderer
:
SpriteRenderer
:
m_ObjectHideFlags
:
1
m_ObjectHideFlags
:
1
...
...
Assets/Prefabs/Tetrimino/TetriminoS.prefab
View file @
48956904
...
@@ -180,7 +180,7 @@ MonoBehaviour:
...
@@ -180,7 +180,7 @@ MonoBehaviour:
stage
:
0
stage
:
0
roomConcept
:
0
roomConcept
:
0
itemRoomType
:
0
itemRoomType
:
0
specialRoomType
:
0
specialRoomType
:
5
---
!u!114
&114184053320687194
---
!u!114
&114184053320687194
MonoBehaviour
:
MonoBehaviour
:
m_ObjectHideFlags
:
1
m_ObjectHideFlags
:
1
...
@@ -197,7 +197,7 @@ MonoBehaviour:
...
@@ -197,7 +197,7 @@ MonoBehaviour:
stage
:
0
stage
:
0
roomConcept
:
0
roomConcept
:
0
itemRoomType
:
0
itemRoomType
:
0
specialRoomType
:
0
specialRoomType
:
5
---
!u!114
&114316302151506316
---
!u!114
&114316302151506316
MonoBehaviour
:
MonoBehaviour
:
m_ObjectHideFlags
:
1
m_ObjectHideFlags
:
1
...
@@ -214,7 +214,7 @@ MonoBehaviour:
...
@@ -214,7 +214,7 @@ MonoBehaviour:
stage
:
0
stage
:
0
roomConcept
:
0
roomConcept
:
0
itemRoomType
:
0
itemRoomType
:
0
specialRoomType
:
0
specialRoomType
:
5
---
!u!114
&114491658978157548
---
!u!114
&114491658978157548
MonoBehaviour
:
MonoBehaviour
:
m_ObjectHideFlags
:
1
m_ObjectHideFlags
:
1
...
@@ -252,7 +252,7 @@ MonoBehaviour:
...
@@ -252,7 +252,7 @@ MonoBehaviour:
stage
:
0
stage
:
0
roomConcept
:
0
roomConcept
:
0
itemRoomType
:
0
itemRoomType
:
0
specialRoomType
:
0
specialRoomType
:
5
---
!u!212
&212368084699848572
---
!u!212
&212368084699848572
SpriteRenderer
:
SpriteRenderer
:
m_ObjectHideFlags
:
1
m_ObjectHideFlags
:
1
...
...
Assets/Prefabs/Tetrimino/TetriminoT.prefab
View file @
48956904
...
@@ -180,7 +180,7 @@ MonoBehaviour:
...
@@ -180,7 +180,7 @@ MonoBehaviour:
stage
:
0
stage
:
0
roomConcept
:
0
roomConcept
:
0
itemRoomType
:
0
itemRoomType
:
0
specialRoomType
:
0
specialRoomType
:
5
---
!u!114
&114250342630536598
---
!u!114
&114250342630536598
MonoBehaviour
:
MonoBehaviour
:
m_ObjectHideFlags
:
1
m_ObjectHideFlags
:
1
...
@@ -197,7 +197,7 @@ MonoBehaviour:
...
@@ -197,7 +197,7 @@ MonoBehaviour:
stage
:
0
stage
:
0
roomConcept
:
0
roomConcept
:
0
itemRoomType
:
0
itemRoomType
:
0
specialRoomType
:
0
specialRoomType
:
5
---
!u!114
&114555629497930862
---
!u!114
&114555629497930862
MonoBehaviour
:
MonoBehaviour
:
m_ObjectHideFlags
:
1
m_ObjectHideFlags
:
1
...
@@ -214,7 +214,7 @@ MonoBehaviour:
...
@@ -214,7 +214,7 @@ MonoBehaviour:
stage
:
0
stage
:
0
roomConcept
:
0
roomConcept
:
0
itemRoomType
:
0
itemRoomType
:
0
specialRoomType
:
0
specialRoomType
:
5
---
!u!114
&114609423914388260
---
!u!114
&114609423914388260
MonoBehaviour
:
MonoBehaviour
:
m_ObjectHideFlags
:
1
m_ObjectHideFlags
:
1
...
@@ -231,7 +231,7 @@ MonoBehaviour:
...
@@ -231,7 +231,7 @@ MonoBehaviour:
stage
:
0
stage
:
0
roomConcept
:
0
roomConcept
:
0
itemRoomType
:
0
itemRoomType
:
0
specialRoomType
:
0
specialRoomType
:
5
---
!u!114
&114813872723638092
---
!u!114
&114813872723638092
MonoBehaviour
:
MonoBehaviour
:
m_ObjectHideFlags
:
1
m_ObjectHideFlags
:
1
...
...
Assets/Prefabs/Tetrimino/TetriminoZ.prefab
View file @
48956904
...
@@ -180,7 +180,7 @@ MonoBehaviour:
...
@@ -180,7 +180,7 @@ MonoBehaviour:
stage
:
0
stage
:
0
roomConcept
:
0
roomConcept
:
0
itemRoomType
:
0
itemRoomType
:
0
specialRoomType
:
0
specialRoomType
:
5
---
!u!114
&114116348516849362
---
!u!114
&114116348516849362
MonoBehaviour
:
MonoBehaviour
:
m_ObjectHideFlags
:
1
m_ObjectHideFlags
:
1
...
@@ -218,7 +218,7 @@ MonoBehaviour:
...
@@ -218,7 +218,7 @@ MonoBehaviour:
stage
:
0
stage
:
0
roomConcept
:
0
roomConcept
:
0
itemRoomType
:
0
itemRoomType
:
0
specialRoomType
:
0
specialRoomType
:
5
---
!u!114
&114930072884505966
---
!u!114
&114930072884505966
MonoBehaviour
:
MonoBehaviour
:
m_ObjectHideFlags
:
1
m_ObjectHideFlags
:
1
...
@@ -235,7 +235,7 @@ MonoBehaviour:
...
@@ -235,7 +235,7 @@ MonoBehaviour:
stage
:
0
stage
:
0
roomConcept
:
0
roomConcept
:
0
itemRoomType
:
0
itemRoomType
:
0
specialRoomType
:
0
specialRoomType
:
5
---
!u!114
&114970417993025404
---
!u!114
&114970417993025404
MonoBehaviour
:
MonoBehaviour
:
m_ObjectHideFlags
:
1
m_ObjectHideFlags
:
1
...
@@ -252,7 +252,7 @@ MonoBehaviour:
...
@@ -252,7 +252,7 @@ MonoBehaviour:
stage
:
0
stage
:
0
roomConcept
:
0
roomConcept
:
0
itemRoomType
:
0
itemRoomType
:
0
specialRoomType
:
0
specialRoomType
:
5
---
!u!212
&212024274712184554
---
!u!212
&212024274712184554
SpriteRenderer
:
SpriteRenderer
:
m_ObjectHideFlags
:
1
m_ObjectHideFlags
:
1
...
...
Assets/Scripts/TetrisMap/MapManager.cs
View file @
48956904
...
@@ -28,7 +28,7 @@ public class MapManager : MonoBehaviour {
...
@@ -28,7 +28,7 @@ public class MapManager : MonoBehaviour {
public
float
collapseTime
;
public
float
collapseTime
;
public
float
fallTime
;
public
float
fallTime
;
public
static
int
height
=
2
3
,
width
=
10
,
realHeight
=
height
-
4
;
public
static
int
height
=
2
4
,
width
=
10
,
realHeight
=
height
-
5
;
/// <summary>
/// <summary>
/// Absolute coordinates on tetris map.
/// Absolute coordinates on tetris map.
...
@@ -66,6 +66,7 @@ public class MapManager : MonoBehaviour {
...
@@ -66,6 +66,7 @@ public class MapManager : MonoBehaviour {
/// List for the special Room candidates.
/// List for the special Room candidates.
/// </summary>
/// </summary>
public
RoomInGame
[]
specialRoomList
;
public
RoomInGame
[]
specialRoomList
;
public
bool
controlCurrentTetrimino
=
false
;
/*
/*
* functions
* functions
...
@@ -82,18 +83,10 @@ public class MapManager : MonoBehaviour {
...
@@ -82,18 +83,10 @@ public class MapManager : MonoBehaviour {
return new Vector3(Mathf.Round(coord.x), Mathf.Round(coord.y), coord.z);
return new Vector3(Mathf.Round(coord.x), Mathf.Round(coord.y), coord.z);
}
}
*/
*/
public
void
MoveTetriminoMapCoord
(
Tetrimino
te
,
Vector3
coord
)
{
for
(
int
i
=
0
;
i
<
te
.
rooms
.
Length
;
i
++)
{
te
.
rooms
[
i
].
mapCoord
+=
coord
;
}
te
.
mapCoord
+=
coord
;
}
/// <summary>
/// <summary>
/// Check if tetrimino is in right x coordinate.
/// Check if tetrimino is in right x coordinate.
/// </summary>
/// </summary>
/// <param name="te">-1 for over left end, 1 for over right end, 0 for right place.</param>
/// <param name="te">-1 for over left end, 1 for over right end,
2 for over bottom end, 3 for already existing,
0 for right place.</param>
/// <returns></returns>
/// <returns></returns>
public
int
IsRightTetrimino
(
Tetrimino
te
)
public
int
IsRightTetrimino
(
Tetrimino
te
)
{
{
...
@@ -103,6 +96,10 @@ public class MapManager : MonoBehaviour {
...
@@ -103,6 +96,10 @@ public class MapManager : MonoBehaviour {
return
-
1
;
return
-
1
;
else
if
(
te
.
rooms
[
i
].
mapCoord
.
x
>
9
)
else
if
(
te
.
rooms
[
i
].
mapCoord
.
x
>
9
)
return
1
;
return
1
;
else
if
(
te
.
rooms
[
i
].
mapCoord
.
y
<
0
)
return
2
;
else
if
(
mapGrid
[(
int
)
te
.
rooms
[
i
].
mapCoord
.
x
,
(
int
)
te
.
rooms
[
i
].
mapCoord
.
y
]
!=
null
&&
mapGrid
[(
int
)
te
.
rooms
[
i
].
mapCoord
.
x
,
(
int
)
te
.
rooms
[
i
].
mapCoord
.
y
].
transform
.
parent
!=
te
)
return
3
;
}
}
return
0
;
return
0
;
}
}
...
@@ -114,20 +111,16 @@ public class MapManager : MonoBehaviour {
...
@@ -114,20 +111,16 @@ public class MapManager : MonoBehaviour {
{
{
while
(
true
)
while
(
true
)
{
{
Debug
.
Log
(
te
.
rooms
[
3
].
mapCoord
);
if
(
IsRightTetrimino
(
te
)
==
1
)
if
(
IsRightTetrimino
(
te
)
==
1
)
{
{
Debug
.
Log
(
"Move Left"
);
MoveTetriminoMapCoord
(
te
,
new
Vector3
(-
1
,
0
,
0
));
MoveTetriminoMapCoord
(
te
,
new
Vector3
(-
1
,
0
,
0
));
}
}
else
if
(
IsRightTetrimino
(
te
)
==
-
1
)
else
if
(
IsRightTetrimino
(
te
)
==
-
1
)
{
{
Debug
.
Log
(
"Move Right"
);
MoveTetriminoMapCoord
(
te
,
new
Vector3
(
1
,
0
,
0
));
MoveTetriminoMapCoord
(
te
,
new
Vector3
(
1
,
0
,
0
));
}
}
else
else
{
{
Debug
.
Log
(
"return"
);
return
;
return
;
}
}
}
}
...
@@ -138,12 +131,27 @@ public class MapManager : MonoBehaviour {
...
@@ -138,12 +131,27 @@ public class MapManager : MonoBehaviour {
/// <param name="row">Rows wanted to be deleted.</param>
/// <param name="row">Rows wanted to be deleted.</param>
public
void
DeleteRow
(
int
row
)
public
void
DeleteRow
(
int
row
)
{
{
for
(
int
x
=
0
;
x
<
width
;
x
++)
for
(
int
x
=
0
;
x
<
width
;
x
++)
{
{
Destroy
(
mapGrid
[
x
,
row
].
gameObject
);
Destroy
(
mapGrid
[
x
,
row
].
gameObject
);
mapGrid
[
x
,
row
]
=
null
;
mapGrid
[
x
,
row
]
=
null
;
}
}
}
}
public
void
DeleteFullRows
()
{
for
(
int
y
=
realHeight
;
y
>=
0
;
y
--)
{
if
(
IsRowFull
(
y
))
{
for
(
int
x
=
0
;
x
<
width
;
x
++)
{
Destroy
(
mapGrid
[
x
,
y
].
gameObject
);
mapGrid
[
x
,
y
]
=
null
;
}
DecreaseRowsAbove
(
y
);
}
}
}
/// <summary>
/// <summary>
/// Decrease all rows above this row.
/// Decrease all rows above this row.
/// </summary>
/// </summary>
...
@@ -154,8 +162,14 @@ public class MapManager : MonoBehaviour {
...
@@ -154,8 +162,14 @@ public class MapManager : MonoBehaviour {
{
{
for
(
int
x
=
0
;
x
<
width
;
x
++)
for
(
int
x
=
0
;
x
<
width
;
x
++)
{
{
mapGrid
[
x
,
y
-
1
]
=
mapGrid
[
x
,
y
];
if
(
mapGrid
[
x
,
y
]
!=
null
&&
mapGrid
[
x
,
y
].
transform
.
parent
)
mapGrid
[
x
,
y
]
=
null
;
{
mapGrid
[
x
,
y
-
1
]
=
mapGrid
[
x
,
y
];
mapGrid
[
x
,
y
]
=
null
;
mapGrid
[
x
,
y
-
1
].
mapCoord
+=
new
Vector3
(
0
,
-
1
,
0
);
mapGrid
[
x
,
y
-
1
].
transform
.
position
+=
new
Vector3
(
0
,
-
tetrisMapSize
,
0
);
}
}
}
}
}
}
}
...
@@ -167,29 +181,20 @@ public class MapManager : MonoBehaviour {
...
@@ -167,29 +181,20 @@ public class MapManager : MonoBehaviour {
public
static
bool
IsRowFull
(
int
row
)
public
static
bool
IsRowFull
(
int
row
)
{
{
for
(
int
x
=
0
;
x
<
width
;
x
++)
for
(
int
x
=
0
;
x
<
width
;
x
++)
if
(
mapGrid
[
x
,
row
]
!=
null
&&
mapGrid
[
x
,
row
].
specialRoomType
==
Room
.
SpecialRoomType
.
Boss
)
if
(
mapGrid
[
x
,
row
]
==
null
||
mapGrid
[
x
,
row
].
specialRoomType
==
Room
.
SpecialRoomType
.
Boss
)
return
false
;
return
false
;
return
true
;
return
true
;
}
}
/// <summary>
/// <summary>
/// Destroy Tetrimino that has no rooms.
/// </summary>
public
static
void
DestroyParent
()
{
GameObject
[]
tetriminoes
=
GameObject
.
FindGameObjectsWithTag
(
"Tetrimino"
);
foreach
(
GameObject
child
in
tetriminoes
)
{
if
(
child
.
transform
.
childCount
==
0
)
Destroy
(
child
.
gameObject
);
}
}
/// <summary>
/// Update rooms coordinates on mapCoord.
/// Update rooms coordinates on mapCoord.
/// </summary>
/// </summary>
/// <param name="te">Tetrimino you want to update on map.</param>
/// <param name="te">Tetrimino you want to update on map.</param>
public
void
UpdateMap
(
Tetrimino
te
)
public
void
UpdateMap
(
Tetrimino
te
)
{
{
for
(
int
i
=
0
;
i
<
te
.
rooms
.
Length
;
i
++)
{
mapGrid
[(
int
)
te
.
rooms
[
i
].
mapCoord
.
x
,
(
int
)
te
.
rooms
[
i
].
mapCoord
.
y
]
=
te
.
rooms
[
i
];
}
}
}
/// <summary>
/// <summary>
/// Display how much time is it remain to fall current tetrimino.
/// Display how much time is it remain to fall current tetrimino.
...
@@ -199,35 +204,181 @@ public class MapManager : MonoBehaviour {
...
@@ -199,35 +204,181 @@ public class MapManager : MonoBehaviour {
{
{
yield
return
null
;
yield
return
null
;
}
}
/// <summary>
/// Move tetrimino horizontally.
/// </summary>
/// <param name="te"></param>
/// <param name="coord"></param>
public
void
MoveTetriminoHorizontal
(
Tetrimino
te
,
Vector3
coord
)
{
if
(
te
.
rotatedPosition
[
te
.
rotatedAngle
]
>
0
&&
coord
.
x
<
0
)
{
for
(
int
i
=
0
;
i
<
te
.
rotatedPosition
.
Length
;
i
++)
{
if
(
te
.
rotatedPosition
[
i
]
>
0
)
te
.
rotatedPosition
[
i
]
+=
(
int
)
coord
.
x
;
}
}
else
if
(
te
.
rotatedPosition
[
te
.
rotatedAngle
]
+
Tetrimino
.
rotationInformation
[(
int
)
te
.
tetriminoType
].
horizontalLength
[
te
.
rotatedAngle
]
<
width
&&
coord
.
x
>
0
)
{
for
(
int
i
=
0
;
i
<
te
.
rotatedPosition
.
Length
;
i
++)
{
if
(
te
.
rotatedPosition
[
i
]
+
Tetrimino
.
rotationInformation
[(
int
)
te
.
tetriminoType
].
horizontalLength
[
i
]
<
width
)
te
.
rotatedPosition
[
i
]
+=
(
int
)
coord
.
x
;
}
}
te
.
mapCoord
=
new
Vector3
(
te
.
rotatedPosition
[
te
.
rotatedAngle
],
te
.
mapCoord
.
y
,
te
.
mapCoord
.
z
);
SetRoomMapCoord
(
te
);
}
/// <summary>
/// Rotate tetrimino.
/// </summary>
/// <param name="te"></param>
/// <param name="i">1 for clockwise, -1 for counter clockwise.</param>
public
void
TetriminoRotate
(
Tetrimino
te
,
int
direction
)
{
if
(
direction
==
1
)
{
for
(
int
i
=
0
;
i
<
te
.
rooms
.
Length
;
i
++)
{
Vector3
tempCoord
=
(
te
.
rooms
[
i
].
mapCoord
-
te
.
mapCoord
)
-
new
Vector3
(
1.5f
,
1.5f
,
0
);
te
.
rooms
[
i
].
mapCoord
=
new
Vector3
(
tempCoord
.
y
,
-
tempCoord
.
x
,
tempCoord
.
z
)
+
new
Vector3
(
1.5f
,
1.5f
,
0
)
+
te
.
mapCoord
;
}
if
(
te
.
rotatedAngle
!=
3
)
te
.
rotatedAngle
++;
else
te
.
rotatedAngle
=
0
;
}
else
if
(
direction
==
-
1
)
{
for
(
int
i
=
0
;
i
<
te
.
rooms
.
Length
;
i
++)
{
Vector3
tempCoord
=
(
te
.
rooms
[
i
].
mapCoord
-
te
.
mapCoord
)
-
new
Vector3
(
1.5f
,
1.5f
,
0
);
te
.
rooms
[
i
].
mapCoord
=
new
Vector3
(-
tempCoord
.
y
,
tempCoord
.
x
,
tempCoord
.
z
)
+
new
Vector3
(
1.5f
,
1.5f
,
0
)
+
te
.
mapCoord
;
}
if
(
te
.
rotatedAngle
!=
0
)
te
.
rotatedAngle
--;
else
te
.
rotatedAngle
=
3
;
}
float
minX
=
te
.
rooms
[
0
].
mapCoord
.
x
,
minY
=
te
.
rooms
[
0
].
mapCoord
.
y
;
for
(
int
i
=
0
;
i
<
te
.
rooms
.
Length
;
i
++)
{
if
(
te
.
rooms
[
i
].
mapCoord
.
x
<
minX
)
minX
=
te
.
rooms
[
i
].
mapCoord
.
x
;
if
(
te
.
rooms
[
i
].
mapCoord
.
y
<
minY
)
minY
=
te
.
rooms
[
i
].
mapCoord
.
y
;
}
for
(
int
i
=
0
;
i
<
te
.
rooms
.
Length
;
i
++)
{
te
.
rooms
[
i
].
mapCoord
+=
new
Vector3
(-(
minX
-
te
.
mapCoord
.
x
),
-(
minY
-
te
.
mapCoord
.
y
),
0
);
te
.
rooms
[
i
].
transform
.
position
=
(
te
.
rooms
[
i
].
mapCoord
-
te
.
mapCoord
)
*
tetrisMapSize
+
te
.
transform
.
position
;
}
te
.
mapCoord
=
new
Vector3
(
te
.
rotatedPosition
[
te
.
rotatedAngle
],
te
.
mapCoord
.
y
,
te
.
mapCoord
.
z
);
}
/// <summary>
/// Move tetrimino as the amount of coord.
/// </summary>
/// <param name="te">Which tetrimino to move</param>
/// <param name="coord">How much will tetrimino move.</param>
public
void
MoveTetriminoMapCoord
(
Tetrimino
te
,
Vector3
coord
)
{
for
(
int
i
=
0
;
i
<
te
.
rooms
.
Length
;
i
++)
{
te
.
rooms
[
i
].
mapCoord
+=
coord
;
}
te
.
mapCoord
+=
coord
;
}
public
void
TetriminoDown
(
Tetrimino
te
)
{
//완성해야됨
/// <summary>
/// Get tetrimino's mapCoord down.
/// </summary>
/// <param name="te">Which tetrimino to move.</param>
public
void
TetriminoMapCoordDown
(
Tetrimino
te
)
{
//controlCurrentTetrimino = false;
while
(
IsRightTetrimino
(
currentTetrimino
)
==
0
)
{
Debug
.
Log
(
IsRightTetrimino
(
currentTetrimino
));
MoveTetriminoMapCoord
(
currentTetrimino
,
new
Vector3
(
0
,
-
1
,
0
));
}
Debug
.
Log
(
IsRightTetrimino
(
currentTetrimino
));
MoveTetriminoMapCoord
(
currentTetrimino
,
new
Vector3
(
0
,
1
,
0
));
EndTetrimino
(
currentTetrimino
);
//StartCoroutine(TetriminoDown(currentTetrimino));
}
public
void
EndTetrimino
(
Tetrimino
te
)
{
var
TS
=
GameObject
.
Find
(
"TetriminoSpawner"
).
GetComponent
<
TetriminoSpawner
>();
currentTetrimino
.
transform
.
position
=
new
Vector3
(
currentTetrimino
.
mapCoord
.
x
*
tetrisMapSize
,
tetrisYCoord
[(
int
)
currentTetrimino
.
mapCoord
.
y
],
currentTetrimino
.
mapCoord
.
z
*
tetrisMapSize
);
UpdateMap
(
te
);
CreateRoom
(
currentTetrimino
);
DeleteFullRows
();
TS
.
MakeTetrimino
();
}
/// <summary>
/// Get tetrimino down.
/// </summary>
/// <param name="te">Which tetrimino's real position move.</param>
public
IEnumerator
TetriminoDown
(
Tetrimino
te
)
{
while
(
true
)
{
if
(
currentTetrimino
)
yield
return
null
;
}
}
}
public
void
GhostDown
()
public
void
GhostDown
()
{
{
}
}
public
void
TetriminoMove
(
Tetrimino
te
)
//완성해야됨
/// <summary>
/// Press Left arrow/Right arrow to move left/right, Space to drop.
/// </summary>
/// <param name="te">Tetrimino you want to move.</param>
public
void
TetriminoControl
(
Tetrimino
te
)
{
{
if
(
Input
.
GetKeyDown
(
KeyCode
.
LeftArrow
)
&&
GameManager
.
gameState
==
GameManager
.
GameState
.
Tetris
)
if
(
Input
.
GetKeyDown
(
KeyCode
.
Space
)
&&
GameManager
.
gameState
==
GameManager
.
GameState
.
Tetris
)
{
{
MoveTetriminoMapCoord
(
te
,
new
Vector3
(-
1
,
0
,
0
));
TetriminoMapCoordDown
(
currentTetrimino
);
//StartCoroutine(TetriminoDown(currentTetrimino));
}
else
if
(
Input
.
GetKeyDown
(
KeyCode
.
LeftArrow
)
&&
GameManager
.
gameState
==
GameManager
.
GameState
.
Tetris
)
{
MoveTetriminoHorizontal
(
currentTetrimino
,
new
Vector3
(-
1
,
0
,
0
));
/*MoveTetriminoMapCoord(te, new Vector3(-1, 0, 0));
if (IsRightTetrimino(te) != 0)
if (IsRightTetrimino(te) != 0)
MoveTetriminoMapCoord
(
te
,
new
Vector3
(
1
,
0
,
0
));
MoveTetriminoMapCoord(te, new Vector3(1, 0, 0));
*/
}
}
else
if
(
Input
.
GetKeyDown
(
KeyCode
.
RightArrow
)
&&
GameManager
.
gameState
==
GameManager
.
GameState
.
Tetris
)
else
if
(
Input
.
GetKeyDown
(
KeyCode
.
RightArrow
)
&&
GameManager
.
gameState
==
GameManager
.
GameState
.
Tetris
)
{
{
MoveTetriminoMapCoord
(
te
,
new
Vector3
(
1
,
0
,
0
));
MoveTetriminoHorizontal
(
currentTetrimino
,
new
Vector3
(
1
,
0
,
0
));
/*MoveTetriminoMapCoord(te, new Vector3(1, 0, 0));
if (IsRightTetrimino(te) != 0)
if (IsRightTetrimino(te) != 0)
MoveTetriminoMapCoord
(
te
,
new
Vector3
(-
1
,
0
,
0
));
MoveTetriminoMapCoord(te, new Vector3(-1, 0, 0));*/
}
else
if
(
Input
.
GetKeyDown
(
KeyCode
.
UpArrow
)
&&
GameManager
.
gameState
==
GameManager
.
GameState
.
Tetris
)
{
TetriminoRotate
(
currentTetrimino
,
1
);
}
else
if
(
Input
.
GetKeyDown
(
KeyCode
.
DownArrow
)
&&
GameManager
.
gameState
==
GameManager
.
GameState
.
Tetris
)
{
TetriminoRotate
(
currentTetrimino
,
-
1
);
}
}
}
public
void
TetriminoRotate
(
Tetrimino
te
)
{
}
}
public
void
SetRoomMapCoord
(
Tetrimino
te
)
public
void
SetRoomMapCoord
(
Tetrimino
te
)
{
{
...
@@ -240,6 +391,7 @@ public class MapManager : MonoBehaviour {
...
@@ -240,6 +391,7 @@ public class MapManager : MonoBehaviour {
{
{
for
(
int
i
=
0
;
i
<
te
.
rooms
.
Length
;
i
++)
for
(
int
i
=
0
;
i
<
te
.
rooms
.
Length
;
i
++)
{
{
UpdateMap
(
currentTetrimino
);
te
.
rooms
[
i
].
transform
.
parent
=
grid
;
te
.
rooms
[
i
].
transform
.
parent
=
grid
;
if
(
te
.
rooms
[
i
].
itemRoomType
!=
0
)
;
if
(
te
.
rooms
[
i
].
itemRoomType
!=
0
)
;
else
if
(
te
.
rooms
[
i
].
specialRoomType
!=
Room
.
SpecialRoomType
.
Normal
)
else
if
(
te
.
rooms
[
i
].
specialRoomType
!=
Room
.
SpecialRoomType
.
Normal
)
...
@@ -258,21 +410,39 @@ public class MapManager : MonoBehaviour {
...
@@ -258,21 +410,39 @@ public class MapManager : MonoBehaviour {
{
{
if
(
Input
.
GetKeyDown
(
KeyCode
.
Alpha0
))
if
(
Input
.
GetKeyDown
(
KeyCode
.
Alpha0
))
{
{
CreateRoom
(
currentTetrimino
);
for
(
int
x
=
0
;
x
<
width
;
x
++)
for
(
int
y
=
0
;
y
<
height
;
y
++)
if
(
mapGrid
[
x
,
y
]
!=
null
)
Debug
.
Log
(
new
Vector3
(
x
,
y
,
0
));
}
}
void
Awake
()
{
Tetrimino
.
rotationInformation
[
0
].
horizontalLength
=
new
int
[
4
]
{
1
,
4
,
1
,
4
};
//I
Tetrimino
.
rotationInformation
[
1
].
horizontalLength
=
new
int
[
4
]
{
2
,
2
,
2
,
2
};
//O
Tetrimino
.
rotationInformation
[
2
].
horizontalLength
=
new
int
[
4
]
{
3
,
2
,
3
,
2
};
//T
Tetrimino
.
rotationInformation
[
3
].
horizontalLength
=
new
int
[
4
]
{
2
,
3
,
2
,
3
};
//J
Tetrimino
.
rotationInformation
[
4
].
horizontalLength
=
new
int
[
4
]
{
2
,
3
,
2
,
3
};
//L
Tetrimino
.
rotationInformation
[
5
].
horizontalLength
=
new
int
[
4
]
{
3
,
2
,
3
,
2
};
//S
Tetrimino
.
rotationInformation
[
6
].
horizontalLength
=
new
int
[
4
]
{
3
,
2
,
3
,
2
};
//Z
for
(
int
i
=
0
;
i
<
tetrisYCoord
.
Length
;
i
++)
{
tetrisYCoord
[
i
]
=
i
*
24
;
}
}
}
}
// Use this for initialization
// Use this for initialization
void
Start
()
{
void
Start
()
{
}
}
// Update is called once per frame
// Update is called once per frame
void
Update
()
{
void
Update
()
{
Test
();
if
(
controlCurrentTetrimino
)
TetriminoMove
(
currentTetrimino
);
{
currentTetrimino
.
transform
.
position
=
currentTetrimino
.
mapCoord
*
tetrisMapSize
+
tetrisMapCoord
;
Test
();
TetriminoControl
(
currentTetrimino
);
currentTetrimino
.
transform
.
position
=
new
Vector3
(
currentTetrimino
.
mapCoord
.
x
*
tetrisMapSize
,
tetrisYCoord
[(
int
)
currentTetrimino
.
mapCoord
.
y
],
currentTetrimino
.
mapCoord
.
z
*
tetrisMapSize
);
//currentTetrimino.transform.position = currentTetrimino.mapCoord * tetrisMapSize + tetrisMapCoord;
}
}
}
}
}
Assets/Scripts/TetrisMap/Room.cs
View file @
48956904
...
@@ -48,10 +48,4 @@ public class Room : MonoBehaviour
...
@@ -48,10 +48,4 @@ public class Room : MonoBehaviour
{
{
}
}
void
Awake
()
{
doorInfo
=
new
int
[
2
]
{
0
,
0
};
}
}
}
Assets/Scripts/TetrisMap/Test.cs
View file @
48956904
...
@@ -7,14 +7,14 @@ public class Test : MonoBehaviour {
...
@@ -7,14 +7,14 @@ public class Test : MonoBehaviour {
public
void
ChangeTetrimino
()
public
void
ChangeTetrimino
()
{
{
var
MM
=
GameObject
.
Find
GameObjectWithTag
(
"MapManager"
).
GetComponent
<
MapManager
>();
var
MM
=
GameObject
.
Find
(
"MapManager"
).
GetComponent
<
MapManager
>();
var
TS
=
GameObject
.
Find
GameObjectWithTag
(
"TetriminoSpawner"
).
GetComponent
<
TetriminoSpawner
>();
var
TS
=
GameObject
.
Find
(
"TetriminoSpawner"
).
GetComponent
<
TetriminoSpawner
>();
Destroy
(
MM
.
currentTetrimino
.
gameObject
);
Destroy
(
MM
.
currentTetrimino
.
gameObject
);
TS
.
MakeTetrimino
();
TS
.
MakeTetrimino
();
}
}
public
void
SpawnBossTetrimino
()
public
void
SpawnBossTetrimino
()
{
{
var
MM
=
GameObject
.
Find
GameObjectWithTag
(
"MapManager"
).
GetComponent
<
MapManager
>();
var
MM
=
GameObject
.
Find
(
"MapManager"
).
GetComponent
<
MapManager
>();
MM
.
spawnBossTetrimino
=
true
;
MM
.
spawnBossTetrimino
=
true
;
}
}
...
...
Assets/Scripts/TetrisMap/Tetrimino/Tetrimino.cs
View file @
48956904
...
@@ -36,17 +36,22 @@ public class Tetrimino : MonoBehaviour {
...
@@ -36,17 +36,22 @@ public class Tetrimino : MonoBehaviour {
/// Each rooms for this tetrimino.
/// Each rooms for this tetrimino.
/// </summary>
/// </summary>
public
Room
[]
rooms
;
public
Room
[]
rooms
;
/// <summary>
/// Tetrimino rotated angle.
/// </summary>
public
int
rotatedAngle
=
0
;
/// <summary>
/// Tetrimino rotated position;
/// </summary>
public
int
[]
rotatedPosition
=
{
0
,
0
,
0
,
0
};
public
struct
RotationInformation
{
public
int
[]
horizontalLength
;
}
public
static
RotationInformation
[]
rotationInformation
=
new
RotationInformation
[
7
];
/*
/*
* functions
* functions
* */
* */
}
}
Assets/Scripts/TetrisMap/TetriminoSpawner.cs
View file @
48956904
...
@@ -25,7 +25,7 @@ public class TetriminoSpawner : MonoBehaviour {
...
@@ -25,7 +25,7 @@ public class TetriminoSpawner : MonoBehaviour {
/// </summary>
/// </summary>
public
void
MakeTetrimino
()
public
void
MakeTetrimino
()
{
{
var
MM
=
GameObject
.
Find
GameObjectWithTag
(
"MapManager"
).
GetComponent
<
MapManager
>();
var
MM
=
GameObject
.
Find
(
"MapManager"
).
GetComponent
<
MapManager
>();
if
(!
MM
.
gameOver
)
if
(!
MM
.
gameOver
)
{
{
int
randomPosition
=
Random
.
Range
(
0
,
MapManager
.
width
);
int
randomPosition
=
Random
.
Range
(
0
,
MapManager
.
width
);
...
@@ -41,6 +41,14 @@ public class TetriminoSpawner : MonoBehaviour {
...
@@ -41,6 +41,14 @@ public class TetriminoSpawner : MonoBehaviour {
MM
.
currentTetrimino
.
mapCoord
=
(
MM
.
currentTetrimino
.
transform
.
position
-
MM
.
tetrisMapCoord
)
/
MM
.
tetrisMapSize
;
MM
.
currentTetrimino
.
mapCoord
=
(
MM
.
currentTetrimino
.
transform
.
position
-
MM
.
tetrisMapCoord
)
/
MM
.
tetrisMapSize
;
MM
.
SetRoomMapCoord
(
MM
.
currentTetrimino
);
MM
.
SetRoomMapCoord
(
MM
.
currentTetrimino
);
MM
.
MakeTetriminoRightPlace
(
MM
.
currentTetrimino
);
MM
.
MakeTetriminoRightPlace
(
MM
.
currentTetrimino
);
for
(
int
i
=
0
;
i
<
MM
.
currentTetrimino
.
rotatedPosition
.
Length
;
i
++)
{
if
(
Tetrimino
.
rotationInformation
[(
int
)
MM
.
currentTetrimino
.
tetriminoType
].
horizontalLength
[
i
]
+
MM
.
currentTetrimino
.
mapCoord
.
x
>
MapManager
.
width
)
MM
.
currentTetrimino
.
rotatedPosition
[
i
]
=
MapManager
.
width
-
Tetrimino
.
rotationInformation
[(
int
)
MM
.
currentTetrimino
.
tetriminoType
].
horizontalLength
[
i
];
else
MM
.
currentTetrimino
.
rotatedPosition
[
i
]
=
(
int
)
MM
.
currentTetrimino
.
mapCoord
.
x
;
}
MM
.
controlCurrentTetrimino
=
true
;
}
}
}
}
/// <summary>
/// <summary>
...
@@ -48,7 +56,7 @@ public class TetriminoSpawner : MonoBehaviour {
...
@@ -48,7 +56,7 @@ public class TetriminoSpawner : MonoBehaviour {
/// </summary>
/// </summary>
public
void
MakeInitialTetrimino
()
public
void
MakeInitialTetrimino
()
{
{
var
MM
=
GameObject
.
Find
GameObjectWithTag
(
"MapManager"
).
GetComponent
<
MapManager
>();
var
MM
=
GameObject
.
Find
(
"MapManager"
).
GetComponent
<
MapManager
>();
if
(!
MM
.
gameOver
)
if
(!
MM
.
gameOver
)
{
{
int
randomPosition
=
Random
.
Range
(
0
,
MapManager
.
width
);
int
randomPosition
=
Random
.
Range
(
0
,
MapManager
.
width
);
...
@@ -65,6 +73,11 @@ public class TetriminoSpawner : MonoBehaviour {
...
@@ -65,6 +73,11 @@ public class TetriminoSpawner : MonoBehaviour {
MM
.
currentTetrimino
.
mapCoord
=
(
MM
.
currentTetrimino
.
transform
.
position
-
MM
.
tetrisMapCoord
)
/
MM
.
tetrisMapSize
;
MM
.
currentTetrimino
.
mapCoord
=
(
MM
.
currentTetrimino
.
transform
.
position
-
MM
.
tetrisMapCoord
)
/
MM
.
tetrisMapSize
;
MM
.
SetRoomMapCoord
(
MM
.
currentTetrimino
);
MM
.
SetRoomMapCoord
(
MM
.
currentTetrimino
);
MM
.
MakeTetriminoRightPlace
(
MM
.
currentTetrimino
);
MM
.
MakeTetriminoRightPlace
(
MM
.
currentTetrimino
);
for
(
int
i
=
0
;
i
<
MM
.
currentTetrimino
.
rooms
.
Length
;
i
++)
{
MM
.
currentTetrimino
.
transform
.
position
=
MM
.
currentTetrimino
.
mapCoord
*
MM
.
tetrisMapSize
+
MM
.
tetrisMapCoord
;
}
MM
.
UpdateMap
(
MM
.
currentTetrimino
);
MM
.
CreateRoom
(
MM
.
currentTetrimino
);
MM
.
CreateRoom
(
MM
.
currentTetrimino
);
}
}
}
}
...
...
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