- Implemented the reward weighting.
- Fixed a balance issue with the blocks and coins on straight stretches of even length.
This commit is contained in:
@@ -7,90 +7,121 @@ 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}
|
||||
//Dreyfus model of skill acquisition:
|
||||
public enum SKILL_LEVEL { NOVICE, BEGINNER, COMPETENT, PROFICIENT, EXPERT}
|
||||
|
||||
// From Bartle/Yee models of player psychology: achiever, killer, explorer,
|
||||
// manipulator
|
||||
public enum TYPE {
|
||||
BUMPER, COLLECTOR, RUNNER, SHOOTER, JUMPER
|
||||
}
|
||||
|
||||
// Dreyfus model of skill acquisition:
|
||||
public enum SKILL_LEVEL {
|
||||
NOVICE, BEGINNER, COMPETENT, PROFICIENT, EXPERT
|
||||
}
|
||||
|
||||
private Set<LevelComponent.TYPE> enabledComponents = new HashSet<LevelComponent.TYPE>();
|
||||
|
||||
|
||||
private SKILL_LEVEL skillLevel;
|
||||
private Map<SKILL,Integer> skillVector;
|
||||
private Map<SKILL, Integer> skillVector;
|
||||
private TYPE type;
|
||||
|
||||
public PlayerProfile(SKILL_LEVEL skillLevel, TYPE type, Map<SKILL,Integer> skillVector) {
|
||||
|
||||
public PlayerProfile(SKILL_LEVEL skillLevel, TYPE type,
|
||||
Map<SKILL, Integer> skillVector) {
|
||||
this.skillLevel = skillLevel;
|
||||
this .type = type;
|
||||
this.type = type;
|
||||
this.skillVector = skillVector;
|
||||
for (LevelComponent.TYPE lcType: LevelComponent.TYPE.values()) {
|
||||
for (LevelComponent.TYPE lcType : LevelComponent.TYPE.values()) {
|
||||
setEnabled(lcType);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public boolean isEnabled(LevelComponent.TYPE type) {
|
||||
return enabledComponents.contains(type);
|
||||
}
|
||||
|
||||
|
||||
public SKILL_LEVEL getSkillLevel() {
|
||||
return skillLevel;
|
||||
}
|
||||
|
||||
|
||||
public int getJumpSkill() {
|
||||
switch (type) {
|
||||
case JUMPER :
|
||||
switch (skillLevel) {
|
||||
case NOVICE :
|
||||
return 20;
|
||||
case BEGINNER :
|
||||
return 40;
|
||||
case COMPETENT :
|
||||
return 60;
|
||||
case PROFICIENT :
|
||||
return 80;
|
||||
case EXPERT :
|
||||
return 100;
|
||||
default :
|
||||
return 0;
|
||||
}
|
||||
default :
|
||||
case JUMPER:
|
||||
switch (skillLevel) {
|
||||
case NOVICE:
|
||||
return 20;
|
||||
case BEGINNER:
|
||||
return 40;
|
||||
case COMPETENT:
|
||||
return 60;
|
||||
case PROFICIENT:
|
||||
return 80;
|
||||
case EXPERT:
|
||||
return 100;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public double getProbability(LevelComponent.TYPE type) {
|
||||
if (!isEnabled(type)) {
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
// SKILLs: { BUMP, COLLECT, JUMP, RUN, SHOOT, STOMP }
|
||||
// TYPEs: { BUMPER, COLLECTOR, RUNNER, SHOOTER, JUMPER}
|
||||
|
||||
switch (type) {
|
||||
case BLOCKS:
|
||||
return 0.3;
|
||||
case COINS :
|
||||
return 0.5;
|
||||
case POWER_UP :
|
||||
return 0.1;
|
||||
default :
|
||||
return 0.1;
|
||||
case BLOCKS:
|
||||
return (.5) * (skillVector.get(SKILL.BUMP) / 100.0);
|
||||
case COINS:
|
||||
return (.5) * (skillVector.get(SKILL.COLLECT) / 100.0);
|
||||
case POWER_UP:
|
||||
double skillMod = 0;
|
||||
switch (skillLevel) {
|
||||
case BEGINNER:
|
||||
skillMod = .8;
|
||||
break;
|
||||
case COMPETENT:
|
||||
skillMod = .6;
|
||||
break;
|
||||
case PROFICIENT:
|
||||
skillMod = .4;
|
||||
break;
|
||||
case EXPERT:
|
||||
skillMod = .2;
|
||||
break;
|
||||
default:
|
||||
skillMod = 1;
|
||||
}
|
||||
|
||||
skillMod = (skillMod + (skillVector.get(SKILL.SHOOT) / 100.0)) / 2.0;
|
||||
|
||||
return (.3) * skillMod;
|
||||
default:
|
||||
return 0.1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public TYPE getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
|
||||
public void setDisabled(LevelComponent.TYPE type) {
|
||||
if (enabledComponents.contains(type)) {
|
||||
System.out.println("Component type disabled: " + type);
|
||||
enabledComponents.remove(type);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void setEnabled(LevelComponent.TYPE type) {
|
||||
if (!enabledComponents.contains(type)) {
|
||||
System.out.println("Component type enabled: " + type);
|
||||
enabledComponents.add(type);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return skillLevel + " " + type;
|
||||
|
||||
Reference in New Issue
Block a user