Added PlayerProfile.getProbability(LevelComponent.TYPE).
This commit is contained in:
@@ -2,7 +2,7 @@ package dk.itu.mario.level;
|
|||||||
|
|
||||||
public class LevelComponent {
|
public class LevelComponent {
|
||||||
public enum TYPE {
|
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 {
|
public enum MazeLevel {
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import dk.itu.mario.MarioInterface.GamePlay;
|
|||||||
import dk.itu.mario.MarioInterface.LevelInterface;
|
import dk.itu.mario.MarioInterface.LevelInterface;
|
||||||
import dk.itu.mario.engine.DataRecorder;
|
import dk.itu.mario.engine.DataRecorder;
|
||||||
import dk.itu.mario.engine.sprites.SpriteTemplate;
|
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.LevelGrammar;
|
||||||
import dk.itu.mario.level.grammar.LevelGrammarFactory;
|
import dk.itu.mario.level.grammar.LevelGrammarFactory;
|
||||||
import dk.itu.mario.level.grammar.LevelParseTree;
|
import dk.itu.mario.level.grammar.LevelParseTree;
|
||||||
@@ -125,6 +126,9 @@ public class PCGLevel extends Level {
|
|||||||
|
|
||||||
private void create(long seed, PlayerProfile profile,
|
private void create(long seed, PlayerProfile profile,
|
||||||
LevelArchetype archetype, LevelGrammar grammar) {
|
LevelArchetype archetype, LevelGrammar grammar) {
|
||||||
|
|
||||||
|
System.out.println("PlayerProfile.getProbability(COINS): " + profile.getProbability(TYPE.COINS));
|
||||||
|
|
||||||
if (dataRecorder == DataRecorder.BLANK_RECORD) {
|
if (dataRecorder == DataRecorder.BLANK_RECORD) {
|
||||||
System.out
|
System.out
|
||||||
.println("DataRecorder record is BLANK - using GamePlay metrics only.");
|
.println("DataRecorder record is BLANK - using GamePlay metrics only.");
|
||||||
|
|||||||
@@ -1,8 +1,11 @@
|
|||||||
package dk.itu.mario.level;
|
package dk.itu.mario.level;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import dk.itu.mario.level.matcher.ProfileMatcher.SKILL;
|
||||||
|
|
||||||
public class PlayerProfile {
|
public class PlayerProfile {
|
||||||
//From Bartle/Yee models of player psychology: achiever, killer, explorer, manipulator
|
//From Bartle/Yee models of player psychology: achiever, killer, explorer, manipulator
|
||||||
public enum TYPE { BUMPER, COLLECTOR, RUNNER, SHOOTER, JUMPER}
|
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 Set<LevelComponent.TYPE> enabledComponents = new HashSet<LevelComponent.TYPE>();
|
||||||
|
|
||||||
private SKILL_LEVEL skillLevel;
|
private SKILL_LEVEL skillLevel;
|
||||||
|
private Map<SKILL,Integer> skillVector;
|
||||||
private TYPE type;
|
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.skillLevel = skillLevel;
|
||||||
this .type = type;
|
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() {
|
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() {
|
public TYPE getType() {
|
||||||
return type;
|
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.)");
|
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) {
|
private static int getKeyScore(Map<SKILL, Integer> playerProfileVector, PlayerProfile.TYPE playerProfileType) {
|
||||||
|
|||||||
Reference in New Issue
Block a user