Renamed MyNewLevel -> PCGLevel.

This commit is contained in:
Woody Folsom
2012-03-17 12:33:00 -04:00
parent 2c5339ba8e
commit 8bedf88fd3
2 changed files with 54 additions and 108 deletions

View File

@@ -16,7 +16,7 @@ import dk.itu.mario.level.matcher.LevelArchetype;
import dk.itu.mario.level.matcher.PlayerProfile;
import dk.itu.mario.level.matcher.ProfileMatcher;
public class MyNewLevel extends Level {
public class PCGLevel extends Level {
public enum MazeLevel {
BOT, MID, TOP
}
@@ -37,42 +37,51 @@ public class MyNewLevel extends Level {
private int type;
private Random random;
public MyNewLevel(int width, int height) {
public PCGLevel(int width, int height) {
super(width, height);
}
public MyNewLevel(int width, int height, long seed, int difficulty,
public PCGLevel(int width, int height, long seed, int difficulty,
int type, GamePlay playerMetrics) {
this(width, height);
System.out.println("Generating level based on previous GamePlay metrics ONLY.");
System.out
.println("Generating level based on previous GamePlay metrics ONLY.");
this.dataRecorder = DataRecorder.BLANK_RECORD;
create(seed, difficulty, type);
generateLevel(seed, playerMetrics);
}
public MyNewLevel(int width, int height, long seed, int difficulty,
public PCGLevel(int width, int height, long seed, int difficulty,
int type, GamePlay playerMetrics, DataRecorder dataRecorder) {
this(width, height);
System.out.println("Generating level based on previous GamePlay AND DataRecorder metrics.");
System.out
.println("Generating level based on previous GamePlay AND DataRecorder metrics.");
this.dataRecorder = dataRecorder;
PlayerProfile profile = ProfileMatcher.getMatchingProfile(playerMetrics, dataRecorder);
generateLevel(seed, playerMetrics);
}
private void generateLevel(long seed, GamePlay playerMetrics) {
PlayerProfile profile = ProfileMatcher.getMatchingProfile(
playerMetrics, dataRecorder);
System.out.println("PlayerProfile: " + profile);
LevelArchetype archetype = ArchetypeMatcher.getMatchingArchetype(playerMetrics, dataRecorder);
LevelArchetype archetype = ArchetypeMatcher.getMatchingArchetype(
playerMetrics, dataRecorder);
System.out.println("LevelArchetype: " + archetype);
System.out.println("Creating level grammar");
LevelGrammar grammar = LevelGrammarFactory.createGrammar(profile, archetype);
LevelGrammar grammar = LevelGrammarFactory.createGrammar(profile,
archetype);
System.out.println("Tuning grammar for PlayerProfile & LevelArchetype using RETE");
grammar = GrammarTuner.tune(grammar,profile, archetype);
System.out
.println("Tuning grammar for PlayerProfile & LevelArchetype using RETE");
grammar = GrammarTuner.tune(grammar, profile, archetype);
System.out.println("Sample level parameters: "
+ grammar.generateRandom(seed));
create(seed, difficulty, type);
System.out.println("Creating level.");
}
@Override
@@ -100,13 +109,18 @@ public class MyNewLevel extends Level {
}
public void create(long seed, int difficulty, int type) {
public void create(long seed, PlayerProfile profile,
LevelArchetype archetype, LevelGrammar grammar) {
if (dataRecorder == DataRecorder.BLANK_RECORD) {
System.out.println("DataRecorder record is BLANK - using GamePlay metrics only.");
System.out
.println("DataRecorder record is BLANK - using GamePlay metrics only.");
}
this.type = type;
this.difficulty = difficulty;
System.out.println("Sample level parameters: "
+ grammar.generateRandom(seed));
this.type = archetype.getTypeInt();
this.difficulty = archetype.getDifficultyLevel();
lastSeed = seed;
random = new Random(seed);
@@ -273,11 +287,11 @@ public class MyNewLevel extends Level {
int length = random.nextInt(maxLength - 19) + 20;
int soFar = 0;
int next;
//MazeLevel last = MazeLevel.BOT;
// MazeLevel last = MazeLevel.BOT;
class Stretch {
public int len;
public MyNewLevel.MazeLevel lvl;
public PCGLevel.MazeLevel lvl;
public Stretch(int lngth) {
len = lngth;
@@ -352,25 +366,11 @@ public class MyNewLevel extends Level {
}
}
}
//last = str.lvl;
}
return length;
}
// private int buildPlatformJump(int xo, int maxLength) {
// int length = random.nextInt(maxLength + 1);
// int soFar;
// int segment;
//
// for (soFar = 0; soFar < length;) {
// int
// }
//
// return length;
// }
private int buildPipeJump(int xo, int maxLength) {
int numPipes = 4;
int length = numPipes * 2;
@@ -434,60 +434,6 @@ public class MyNewLevel extends Level {
}
return length;
// int numPipes = 4;
// int floor = height - 1 - random.nextInt(2);
// int length = numPipes * 4;
// int height;
//
// int[] pitLens = new int[numPipes];
// int[] pipeGrad = new int[numPipes];
//
// for (int i = 0; i < numPipes; i++) {
// pitLens[i] = random.nextInt(6) + 1;
// pipeGrad[i] = random.nextInt(4);
//
// length += pitLens[i];
// }
//
// if (length > maxLength) {
// return 0;
// }
//
// length = 0;
// height = pipeGrad[0];
//
// for (int i = 0; i < numPipes; i++) {
//
// height = (height == 0) ? 1 : (height < 1) ? height * -1 : height;
//
// setBlock(xo + length, floor, pits ? Level.HILL_TOP_LEFT
// : Level.GROUND);
// setBlock(xo + length + 1, floor, pits ? Level.HILL_TOP_RIGHT
// : Level.GROUND);
//
// for (int h = 0; h < height; h++) {
// setBlock(xo + length, floor - 1 - h, Level.TUBE_SIDE_LEFT);
// setBlock(xo + length + 1, floor - 1 - h, Level.TUBE_SIDE_RIGHT);
// }
//
// setBlock(xo + length, floor - 1 - height, Level.TUBE_TOP_LEFT);
// setBlock(xo + length + 1, floor - 1 - height, Level.TUBE_TOP_RIGHT);
//
// if (!pits) {
// for (int y = floor; y < pitLens[i]; y++) {
// for (int x = xo + length + 2; x < xo + length + 2
// + pitLens[i]; x++) {
// setBlock(x, y, Level.HILL_FILL);
// }
// }
//
// length += (2 + pitLens[i]);
// height += (i == numPipes - 1) ? 0 : pipeGrad[i + 1];
// }
// }
//
// return length;
}
private int buildStraight(int xo, int maxLength, boolean safe) {

View File

@@ -7,9 +7,9 @@ import dk.itu.mario.MarioInterface.LevelGenerator;
import dk.itu.mario.MarioInterface.LevelInterface;
import dk.itu.mario.engine.DataRecorder;
import dk.itu.mario.level.Level;
import dk.itu.mario.level.MyNewLevel;
import dk.itu.mario.level.PCGLevel;
public class MyNewLevelGenerator implements
public class PCGLevelGenerator implements
LevelGenerator {
@Override
public int generateLevelDifficulty(GamePlay playerMetrics, DataRecorder dataRecorder) {
@@ -26,7 +26,7 @@ public class MyNewLevelGenerator implements
@Override
public LevelInterface generateLevel(GamePlay playerMetrics) {
System.out.println("Generating customized level");
LevelInterface level = new MyNewLevel(320, 15,
LevelInterface level = new PCGLevel(320, 15,
new Random().nextLong(), generateLevelDifficulty(playerMetrics,DataRecorder.BLANK_RECORD), generateLevelType(playerMetrics,DataRecorder.BLANK_RECORD), playerMetrics);
return level;
}
@@ -34,7 +34,7 @@ public class MyNewLevelGenerator implements
@Override
public LevelInterface generateLevel(GamePlay playerMetrics, DataRecorder dataRecorder) {
System.out.println("Generating customized level");
LevelInterface level = new MyNewLevel(320, 15,
LevelInterface level = new PCGLevel(320, 15,
new Random().nextLong(), generateLevelDifficulty(playerMetrics,DataRecorder.BLANK_RECORD), generateLevelType(playerMetrics,dataRecorder), playerMetrics, dataRecorder);
return level;
}