Added PlayerProfile.getProbability(LevelComponent.TYPE).
This commit is contained in:
@@ -2,7 +2,7 @@ package dk.itu.mario.level;
|
||||
|
||||
public class LevelComponent {
|
||||
public enum TYPE {
|
||||
FLAT_HI, FLAT_LO, HI_LO, HI_PATH, LEVEL_SEGMENT, LEVEL, LO_HI, LO_PATH, PIPE_JUMP, PLATFORM_JUMP, MAZE
|
||||
BLOCKS, COINS, FLAT_HI, FLAT_LO, FLAT_SAFE, HI_LO, HI_PATH, LEVEL_SEGMENT, LEVEL, LO_HI, LO_PATH, MAZE, PIPE_JUMP, PLATFORM_JUMP, POWER_UP
|
||||
};
|
||||
|
||||
public enum MazeLevel {
|
||||
|
||||
@@ -9,6 +9,7 @@ import dk.itu.mario.MarioInterface.GamePlay;
|
||||
import dk.itu.mario.MarioInterface.LevelInterface;
|
||||
import dk.itu.mario.engine.DataRecorder;
|
||||
import dk.itu.mario.engine.sprites.SpriteTemplate;
|
||||
import dk.itu.mario.level.LevelComponent.TYPE;
|
||||
import dk.itu.mario.level.grammar.LevelGrammar;
|
||||
import dk.itu.mario.level.grammar.LevelGrammarFactory;
|
||||
import dk.itu.mario.level.grammar.LevelParseTree;
|
||||
@@ -125,6 +126,9 @@ public class PCGLevel extends Level {
|
||||
|
||||
private void create(long seed, PlayerProfile profile,
|
||||
LevelArchetype archetype, LevelGrammar grammar) {
|
||||
|
||||
System.out.println("PlayerProfile.getProbability(COINS): " + profile.getProbability(TYPE.COINS));
|
||||
|
||||
if (dataRecorder == DataRecorder.BLANK_RECORD) {
|
||||
System.out
|
||||
.println("DataRecorder record is BLANK - using GamePlay metrics only.");
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
package dk.itu.mario.level;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import dk.itu.mario.level.matcher.ProfileMatcher.SKILL;
|
||||
|
||||
public class PlayerProfile {
|
||||
//From Bartle/Yee models of player psychology: achiever, killer, explorer, manipulator
|
||||
public enum TYPE { BUMPER, COLLECTOR, RUNNER, SHOOTER, JUMPER}
|
||||
@@ -12,11 +15,20 @@ public class PlayerProfile {
|
||||
private Set<LevelComponent.TYPE> enabledComponents = new HashSet<LevelComponent.TYPE>();
|
||||
|
||||
private SKILL_LEVEL skillLevel;
|
||||
private Map<SKILL,Integer> skillVector;
|
||||
private TYPE type;
|
||||
|
||||
public PlayerProfile(SKILL_LEVEL skillLevel, TYPE type) {
|
||||
public PlayerProfile(SKILL_LEVEL skillLevel, TYPE type, Map<SKILL,Integer> skillVector) {
|
||||
this.skillLevel = skillLevel;
|
||||
this .type = type;
|
||||
this.skillVector = skillVector;
|
||||
for (LevelComponent.TYPE lcType: LevelComponent.TYPE.values()) {
|
||||
setEnabled(lcType);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isEnabled(LevelComponent.TYPE type) {
|
||||
return enabledComponents.contains(type);
|
||||
}
|
||||
|
||||
public SKILL_LEVEL getSkillLevel() {
|
||||
@@ -45,6 +57,22 @@ public class PlayerProfile {
|
||||
}
|
||||
}
|
||||
|
||||
public double getProbability(LevelComponent.TYPE type) {
|
||||
if (!isEnabled(type)) {
|
||||
return 0.0;
|
||||
}
|
||||
switch (type) {
|
||||
case BLOCKS:
|
||||
return 0.3;
|
||||
case COINS :
|
||||
return 0.5;
|
||||
case POWER_UP :
|
||||
return 0.1;
|
||||
default :
|
||||
return 0.1;
|
||||
}
|
||||
}
|
||||
|
||||
public TYPE getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
@@ -140,7 +140,7 @@ public class ProfileMatcher {
|
||||
|
||||
System.out.println("Skill level for this " + closestMatch + " is " + skillLevel + " (based on a score of " + keyScore + " out of 100.)");
|
||||
|
||||
return new PlayerProfile(skillLevel, closestMatch);
|
||||
return new PlayerProfile(skillLevel, closestMatch, playerProfileVector);
|
||||
}
|
||||
|
||||
private static int getKeyScore(Map<SKILL, Integer> playerProfileVector, PlayerProfile.TYPE playerProfileType) {
|
||||
|
||||
Reference in New Issue
Block a user