Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
T
the_dungeon_project
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
12
Issues
12
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
Operations
Operations
Incidents
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
genie_logiciel_2015
the_dungeon_project
Commits
6f424fa3
Commit
6f424fa3
authored
Dec 31, 2015
by
Lucas Delcros
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added test for water spawning
parent
a0ebf39a
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
52 additions
and
32 deletions
+52
-32
src/map_generation/map/Map.java
src/map_generation/map/Map.java
+2
-20
src/map_generation/map/MapBuilder.java
src/map_generation/map/MapBuilder.java
+24
-4
src/map_generation/map/MapGeneration.java
src/map_generation/map/MapGeneration.java
+0
-1
src/map_generation/tests/MapTests.java
src/map_generation/tests/MapTests.java
+26
-7
No files found.
src/map_generation/map/Map.java
View file @
6f424fa3
...
...
@@ -38,8 +38,9 @@ public class Map implements Serializable {
public
Map
()
{}
public
Map
(
Tile
[][]
m
,
Surface
[]
rooms
,
Surface
[]
corridors
,
/* Surface[] doors,*/
MapPoint
positionPlayerAtStart
,
MapPoint
stairsPosition
)
{
public
Map
(
Tile
[][]
m
,
Surface
[]
rooms
,
Surface
[]
corridors
,
/* Surface[] doors,*/
Entity
[]
entities
,
MapPoint
positionPlayerAtStart
,
MapPoint
stairsPosition
)
{
map
=
m
;
this
.
entities
=
entities
;
this
.
positionPlayerAtStart
=
positionPlayerAtStart
;
this
.
stairsPosition
=
stairsPosition
;
this
.
rooms
=
rooms
;
...
...
@@ -168,25 +169,6 @@ public class Map implements Serializable {
public
Entity
[]
getEntities
()
{
return
(
entities
);
}
public
void
generateEntities
()
{
MapPatterns
.
read
();
int
nbRooms
=
rooms
.
length
;
Random
r
=
new
Random
();
int
nbEntities
=-
1
;
while
(
nbEntities
<
nbRooms
/
2
||
nbEntities
>
3
*
nbRooms
)
{
nbEntities
=(
int
)
(
nbRooms
*(
1
+
r
.
nextGaussian
()));
}
entities
=
new
Entity
[
nbEntities
];
for
(
int
i
=
0
;
i
<
nbEntities
;
i
++)
{
int
room
=
r
.
nextInt
(
nbRooms
);
int
ii
=
rooms
[
room
].
i1
+
r
.
nextInt
(
rooms
[
room
].
height
);
int
jj
=
rooms
[
room
].
j1
+
r
.
nextInt
(
rooms
[
room
].
width
);
int
posY
=
ii
*
Point
.
TileScale
;
int
posX
=
jj
*
Point
.
TileScale
;
entities
[
i
]=
SpeciesArray
.
create
(
posX
,
posY
,
100
,
"Ronflex"
,
"Monster "
+
i
);
}
}
public
void
addSomeCorridors
()
{
int
nbRooms
=
rooms
.
length
;
Random
r
=
new
Random
();
...
...
src/map_generation/map/MapBuilder.java
View file @
6f424fa3
...
...
@@ -5,6 +5,9 @@ import java.util.ArrayList;
import
java.util.List
;
import
java.util.Random
;
import
core.gamestate.Entity
;
import
core.gamestate.SpeciesArray
;
import
core.zone.Point
;
import
map_generation.tiles.TileBuilder
;
import
map_generation.tiles.TileType
;
...
...
@@ -21,10 +24,9 @@ public final class MapBuilder implements Serializable{
private
ArrayList
<
Surface
>
rooms
;
private
ArrayList
<
Surface
>
corridors
;
private
ArrayList
<
Surface
>
doors
;
private
Entity
[]
entities
;
private
MapPoint
positionPlayerAtStart
;
private
MapPoint
stairsPosition
;
// private ArrayList<int[]> positionEntitiesAtStart;
// private Entity[] typeEntities;
private
int
height
=
0
,
width
=
0
;
public
MapBuilder
()
{
...
...
@@ -146,7 +148,24 @@ public final class MapBuilder implements Serializable{
if
(!
s
.
isOnSurface
(
positionPlayerAtStart
)
&&
!
s
.
isOnSurface
(
stairsPosition
))
fillSurfaceWith
(
map
,
s
,
TileType
.
WATER
);
}
}
private
void
generateEntities
(
TileBuilder
[][]
tb
)
{
MapPatterns
.
read
();
int
nbRooms
=
rooms
.
size
();
Random
r
=
new
Random
();
int
nbEntities
=-
1
;
while
(
nbEntities
<
nbRooms
/
2
||
nbEntities
>
3
*
nbRooms
)
{
nbEntities
=(
int
)
(
nbRooms
*(
1
+
r
.
nextGaussian
()));
}
entities
=
new
Entity
[
nbEntities
];
for
(
int
i
=
0
;
i
<
nbEntities
;
i
++)
{
int
room
=
r
.
nextInt
(
nbRooms
);
int
ii
=
rooms
.
get
(
room
).
i1
+
r
.
nextInt
(
rooms
.
get
(
room
).
height
);
int
jj
=
rooms
.
get
(
room
).
j1
+
r
.
nextInt
(
rooms
.
get
(
room
).
width
);
int
posY
=
ii
*
Point
.
TileScale
;
int
posX
=
jj
*
Point
.
TileScale
;
if
(
tb
[
ii
][
jj
].
getType
()
!=
TileType
.
WATER
)
entities
[
i
]=
SpeciesArray
.
create
(
posX
,
posY
,
100
,
"Ronflex"
,
"Monster "
+
i
);
}
}
/**
* Build the map
...
...
@@ -167,12 +186,13 @@ public final class MapBuilder implements Serializable{
fillSurfaceWith
(
map
,
corridor
,
TileType
.
GROUND
);
}
generateEntities
(
map
);
map
[
stairsPosition
.
getI
()][
stairsPosition
.
getJ
()].
setType
(
TileType
.
STAIRS
);
//TODO uses doors
//Surface[] doors = this.doors.toArray(new Surface[this.doors.size()]);
Surface
[]
rooms
=
this
.
rooms
.
toArray
(
new
Surface
[
this
.
rooms
.
size
()]);
Surface
[]
corridors
=
this
.
corridors
.
toArray
(
new
Surface
[
this
.
corridors
.
size
()]);
return
new
Map
(
TileBuilder
.
buildTiles
(
map
),
rooms
,
corridors
/*, doors*/
,
positionPlayerAtStart
,
stairsPosition
);
return
new
Map
(
TileBuilder
.
buildTiles
(
map
),
rooms
,
corridors
/*, doors*/
,
entities
,
positionPlayerAtStart
,
stairsPosition
);
}
}
src/map_generation/map/MapGeneration.java
View file @
6f424fa3
...
...
@@ -19,7 +19,6 @@ public class MapGeneration implements Serializable {
}
//System.out.println("NbCheck : "+nbCheck);
//map.addSomeCorridors();
map
.
generateEntities
();
return
(
map
);
}
}
src/map_generation/tests/MapTests.java
View file @
6f424fa3
package
map_generation.tests
;
//import static org.junit.Assert.*;
//import map_generation.map.SurfacesMapGeneration;
//import map_generation.map.Map;
import
static
org
.
junit
.
Assert
.*;
import
map_generation.map.Map
;
import
map_generation.map.SurfacesMapGeneration
;
import
map_generation.tiles.TileType
;
//import org.junit.Test;
import
org.junit.Test
;
import
core.gamestate.Entity
;
import
core.zone.Point
;
public
class
MapTests
{
//
@Test
@Test
public
void
testEveryRoomIsReachable
()
{
//Map map = SurfacesMapGeneration.roomsRandomGeneration(20, 500);
// assertTrue("Some rooms are not reachable !", map.check());
Map
map
=
SurfacesMapGeneration
.
roomsRandomGeneration
(
20
,
500
);
assertTrue
(
"Some rooms are not reachable !"
,
map
.
check
());
}
@Test
public
void
testNoEntitiesOnWater
(){
Map
map
=
SurfacesMapGeneration
.
roomsRandomGeneration
(
20
,
500
);
for
(
Entity
entity
:
map
.
getEntities
()){
Point
pt
=
Point
.
construct
(
entity
.
getX
(),
entity
.
getY
());
assertFalse
(
"An entity has spawn on water !"
,
map
.
getTileAt
(
pt
.
toMapPoint
()).
getType
()
==
TileType
.
WATER
);
}
}
@Test
public
void
testPlayerNotOnWater
(){
Map
map
=
SurfacesMapGeneration
.
roomsRandomGeneration
(
20
,
500
);
assertFalse
(
"The player has spawn on water !"
,
map
.
getTileAt
(
map
.
getPositionPlayerStart
()).
getType
()
==
TileType
.
WATER
);
}
}
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