Skip to content

Commit

Permalink
Few logic and bug fixes. NPE fix on random, item names.
Browse files Browse the repository at this point in the history
  • Loading branch information
ingenthr committed Jul 27, 2011
1 parent 125759a commit ec81fa8
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 37 deletions.
49 changes: 24 additions & 25 deletions src/com/couchbase/demo/gamesim/GameSimDriver.java
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -59,18 +59,16 @@ public class GameSimDriver {
Player player; Player player;
private final String bucketname; private final String bucketname;
private String bucketpass; private String bucketpass;
byte[] buffer = new byte[8192];
private static MemcachedClient gamesimStore; private static MemcachedClient gamesimStore;
private final int ACTORMULT = 100; private final int ACTORMULT = 500000 / players.length;
private static final String[] players = {"Matt", "Steve", "Dustin", private static final String[] players = {"Matt", "Steve", "Dustin",
"James", "Trond", "Melinda", "James", "Trond", "Melinda",
"Bob", "Perry", "Bob", "Perry", "Sharon",
"Leila", "Tony", "Damien", "Jan", "JChris", "Leila", "Tony", "Damien", "Jan", "JChris",
"Volker", "Dale", "Aaron", "Aliaksey", "Frank", "Volker", "Dale", "Aaron", "Aliaksey", "Frank",
"Mike", "Claire", "Benjamin", "Tony", "Keith", "Mike", "Claire", "Benjamin", "Tony", "Keith",
"Bin", "Chiyoung", "Jens", "Srini" "Bin", "Chiyoung", "Jens", "Srini"
}; };

// See http://en.wikipedia.org/wiki/Category:Celtic_legendary_creatures // See http://en.wikipedia.org/wiki/Category:Celtic_legendary_creatures
private static final String[] monsters = {"Bauchan", "Fachen", "Fuath", "Joint-eater", "Kelpie", private static final String[] monsters = {"Bauchan", "Fachen", "Fuath", "Joint-eater", "Kelpie",
"Knocker", "Merrow", "Morgen", "Pictish-beast", "Wild-man"}; "Knocker", "Merrow", "Morgen", "Pictish-beast", "Wild-man"};
Expand Down Expand Up @@ -124,22 +122,11 @@ public GameSimDriver() throws XPathExpressionException, IOException {
} }


@OnceBefore @OnceBefore
public void setup() { public void setup() throws InterruptedException {
Integer playerseq = (Integer) gamesimStore.get("playerseq");
if (playerseq == null || playerseq < ACTORMULT) { populatePlayers(ACTORMULT);
logger.info("System has no player sequence, populating with players"); populateMonsters(ACTORMULT);
populatePlayers(ACTORMULT);
} else {
logger.info("Populated with players, no population done.");
}


Integer monsterseq = (Integer) gamesimStore.get("monsterseq");
if (monsterseq == null || monsterseq < ACTORMULT) {
logger.info("System has no monster sequence, populating with monsters");
populateMonsters(ACTORMULT);
} else {
logger.info("Populated with monsters, no population done.");
}


} }


Expand Down Expand Up @@ -223,9 +210,22 @@ public void doAttackRandom() throws IOException, InterruptedException, Execution
doLogin(); doLogin();
String attackerName = getRandomMonster(); String attackerName = getRandomMonster();
ctx.recordTime(); ctx.recordTime();
Monster attacker = gson.fromJson((String)gamesimStore.get(attackerName), Monster.class); Monster attacker = gson.fromJson((String) gamesimStore.get(attackerName), Monster.class);
assert (attacker != null);


Double playerWinProbable = new Double(player.getHitpoints()) / new Double(player.getHitpoints()) + new Double(attacker.getHitpoints());
Double ahpd = null;
Double phpd = null;
try {
phpd = new Double(player.getHitpoints());
ahpd = new Double(attacker.getHitpoints());
} catch (NullPointerException e) {
}

assert (ahpd != null);
assert (phpd != null);

Double playerWinProbable = phpd / (phpd + ahpd);
if (playerWinProbable > 0.5d) { if (playerWinProbable > 0.5d) {
Double itemProb = random.drandom(0.0d, 1.0d); Double itemProb = random.drandom(0.0d, 1.0d);
if (itemProb <= attacker.getItemProbability()) { if (itemProb <= attacker.getItemProbability()) {
Expand Down Expand Up @@ -274,16 +274,16 @@ private String getRandomPlayerName() {
} }


private String getRandomMonsterName() { private String getRandomMonsterName() {
int i = random.random(0, monsters.length -1); int i = random.random(0, monsters.length - 1);
return monsters[i]; return monsters[i];
} }


private String getRandomMonster() { private String getRandomMonster() {
return getRandomMonsterName() + random.random(0, ACTORMULT); return getRandomMonsterName() + random.random(0, ACTORMULT - 1);
} }


private String getRandomPlayer() { private String getRandomPlayer() {
return getRandomPlayerName() + random.random(0, ACTORMULT); return getRandomPlayerName() + random.random(0, ACTORMULT - 1);
} }


/** /**
Expand All @@ -292,5 +292,4 @@ private String getRandomPlayer() {
public static Random getRandom() { public static Random getRandom() {
return random; return random;
} }

} }
3 changes: 2 additions & 1 deletion src/com/couchbase/demo/gamesim/Item.java
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ public class Item {
public Item(UUID itemOwner) { public Item(UUID itemOwner) {
ownerUuid = itemOwner; ownerUuid = itemOwner;
uuid = UUID.randomUUID(); uuid = UUID.randomUUID();
name = weapons[GameSimDriver.getRandom().random(0, weapons.length-1)] + itemOwner;
} }


protected Item() { protected Item() {
Expand All @@ -35,6 +36,6 @@ public UUID getUuid() {
} }


public String getItemName() { public String getItemName() {
return "item" + uuid; return name;
} }
} }
9 changes: 3 additions & 6 deletions src/com/couchbase/demo/gamesim/Monster.java
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -7,15 +7,12 @@


import java.util.UUID; import java.util.UUID;


import com.sun.faban.driver.util.Random;

/** /**
* *
* @author ingenthr * @author ingenthr
*/ */
public class Monster { public class Monster {


private Random random = new Random();
private String jsonType = "monster"; private String jsonType = "monster";
private String name; private String name;
private UUID uuid; private UUID uuid;
Expand All @@ -26,9 +23,9 @@ public class Monster {
public Monster(String monstername) { public Monster(String monstername) {
name = monstername; name = monstername;
uuid = UUID.randomUUID(); uuid = UUID.randomUUID();
experienceWhenKilled = random.random(10, 100); experienceWhenKilled = GameSimDriver.getRandom().random(10, 100);
hitpoints = random.random(10, 100); hitpoints = GameSimDriver.getRandom().random(10, 5000);
itemProbability = random.drandom(0.1d, 0.6d); itemProbability = GameSimDriver.getRandom().drandom(0.1d, 0.6d);
} }


protected Monster() { protected Monster() {
Expand Down
8 changes: 3 additions & 5 deletions src/com/couchbase/demo/gamesim/Player.java
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@


import java.util.UUID; import java.util.UUID;


import com.sun.faban.driver.util.Random;
import java.util.ArrayList; import java.util.ArrayList;


/** /**
Expand All @@ -17,15 +16,14 @@ public class Player {
private int experience; private int experience;
private int level; private int level;
private boolean loggedIn; private boolean loggedIn;
private final Random random = new Random();
private ArrayList<String> playerItems; private ArrayList<String> playerItems;


public Player(String playerName) { public Player(String playerName) {
name = playerName; name = playerName;
uuid = UUID.randomUUID(); uuid = UUID.randomUUID();
hitpoints = random.random(70, 150); hitpoints = GameSimDriver.getRandom().random(70, 150);
level = random.random(1, 5); level = GameSimDriver.getRandom().random(1, 5);
experience = random.random(100*2^level, (100*2^(level+1)-1)); experience = GameSimDriver.getRandom().random(100*2^level, (100*2^(level+1)-1));
} }


protected Player() { protected Player() {
Expand Down

0 comments on commit ec81fa8

Please sign in to comment.