service {
const html Chooser =
Exit
;
const html End =
GOODBYE!
;
const html FieldOfBattle =
Choose Your Avatar!!! |
Choose Your Computer Opponent!!! |
|
Strength |
<[avatar_strength]> |
Compassion |
<[avatar_compassion]> |
Stamina |
<[avatar_stamina]> |
Magic |
<[avatar_magic]> |
|
|
|
Strength |
<[computer_strength]> |
Compassion |
<[computer_compassion]> |
Stamina |
<[computer_stamina]> |
Magic |
<[computer_magic]> |
|
|
Hit points remaining: <[avatar_hp]>
|
Hit points remaining: <[computer_hp]>
|
Attack!
Heal...
Use Magic!
;
const html Results =
<[exitText]>
Avatar Hit points remaining: <[avatar_hp]>
Computer Hit points remaining: <[computer_hp]>
;
//we declare all of our major data structures here.
//really these are consts and should never change, but I cant seem to do assignments here...
string he_man_url;
int he_man_strength;
int he_man_stamina;
int he_man_compassion;
int he_man_magic;
string t_rex_url;
int t_rex_strength;
int t_rex_stamina;
int t_rex_compassion;
int t_rex_magic;
string chris_pickett_url;
int chris_pickett_strength;
int chris_pickett_stamina;
int chris_pickett_compassion;
int chris_pickett_magic;
string barack_obama_url;
int barack_obama_strength;
int barack_obama_stamina;
int barack_obama_compassion;
int barack_obama_magic;
string skeletor_url;
int skeletor_strength;
int skeletor_stamina;
int skeletor_compassion;
int skeletor_magic;
string bowser_url;
int bowser_strength;
int bowser_stamina;
int bowser_compassion;
int bowser_magic;
string newt_url;
int newt_strength;
int newt_stamina;
int newt_compassion;
int newt_magic;
string queen_url;
int queen_strength;
int queen_stamina;
int queen_compassion;
int queen_magic;
string current_avatar;
string current_computer;
string current_avatar_url;
int current_avatar_strength;
int current_avatar_stamina;
int current_avatar_compassion;
int current_avatar_magic;
string current_computer_url;
int current_computer_strength;
int current_computer_stamina;
int current_computer_compassion;
int current_computer_magic;
int seed;
void initDataStructures(){
//this is where we set up our data structures
he_man_url = "http://upload.wikimedia.org/wikipedia/en/d/d3/He-man.jpg";
he_man_strength = 6;
he_man_stamina = 87;
he_man_compassion = 12;
he_man_magic = 46;
t_rex_url = "http://upload.wikimedia.org/wikipedia/commons/thumb/a/ab/Palais_de_la_Decouverte_Tyrannosaurus_rex_p1050042.jpg/800px-Palais_de_la_Decouverte_Tyrannosaurus_rex_p1050042.jpg";
t_rex_strength = 37;
t_rex_stamina = 72;
t_rex_compassion = 41;
t_rex_magic = 84;
chris_pickett_url = "http://www.sable.mcgill.ca/~cpicke/papers/pickett-07-software-SRC-poster.jpg";
chris_pickett_strength = 23;
chris_pickett_stamina = 4;
chris_pickett_compassion = 62;
chris_pickett_magic = 79;
barack_obama_url = "http://upload.wikimedia.org/wikipedia/commons/e/e9/Official_portrait_of_Barack_Obama.jpg";
barack_obama_strength = 57;
barack_obama_stamina = 12;
barack_obama_compassion = 100;
barack_obama_magic = 17;
skeletor_url = "http://upload.wikimedia.org/wikipedia/en/8/8a/Skeletor-spoo.jpg";
skeletor_strength = 69;
skeletor_stamina = 86;
skeletor_compassion = 3;
skeletor_magic = 20;
bowser_url = "http://upload.wikimedia.org/wikipedia/en/8/89/Bowser-Nintendo.png";
bowser_strength = 4;
bowser_stamina = 21;
bowser_compassion = 39;
bowser_magic = 56;
newt_url = "http://upload.wikimedia.org/wikipedia/commons/d/d3/Newt-2004-clipped.jpg";
newt_strength = 7;
newt_stamina = 42;
newt_compassion = 37;
newt_magic = 54;
queen_url = "http://upload.wikimedia.org/wikipedia/commons/thumb/5/5f/Elizabeth_II_greets_NASA_GSFC_employees%2C_May_8%2C_2007_edit.jpg/433px-Elizabeth_II_greets_NASA_GSFC_employees%2C_May_8%2C_2007_edit.jpg";
queen_strength = 6;
queen_stamina = 55;
queen_compassion = 72;
queen_magic = 89;
seed = 12;
}
//taken from the game example
int nextRandom(){
int current;
seed = (25173 * seed + 13849) % 100;
return(seed);
}
session Choose() {
int doExit;
//
initDataStructures();
doExit=0;
current_avatar = "he-man";
current_computer = "skeletor";
while(doExit!=1){
//handle the avatars
if(current_avatar == "he-man"){
current_avatar_url = he_man_url;
current_avatar_strength = he_man_strength;
current_avatar_stamina = he_man_stamina;
current_avatar_compassion = he_man_compassion;
current_avatar_magic = he_man_magic;
}
if(current_avatar=="t-rex"){
current_avatar_url = t_rex_url;
current_avatar_strength = t_rex_strength;
current_avatar_stamina = t_rex_stamina;
current_avatar_compassion = t_rex_compassion;
current_avatar_magic = t_rex_magic;
}
if(current_avatar=="chris-pickett"){
current_avatar_url = chris_pickett_url;
current_avatar_strength = chris_pickett_strength;
current_avatar_stamina = chris_pickett_stamina;
current_avatar_compassion = chris_pickett_compassion;
current_avatar_magic = chris_pickett_magic;
}
if(current_avatar=="barack-obama"){
current_avatar_url = barack_obama_url;
current_avatar_strength = barack_obama_strength;
current_avatar_stamina = barack_obama_stamina;
current_avatar_compassion = barack_obama_compassion;
current_avatar_magic = barack_obama_magic;
}
//handle the computers
if(current_computer=="skeletor"){
current_computer_url = skeletor_url;
current_computer_strength = skeletor_strength;
current_computer_stamina = skeletor_stamina;
current_computer_compassion = skeletor_compassion;
current_computer_magic = skeletor_magic;
}
if(current_computer=="bowser"){
current_computer_url = bowser_url;
current_computer_strength = bowser_strength;
current_computer_stamina = bowser_stamina;
current_computer_compassion = bowser_compassion;
current_computer_magic = bowser_magic;
}
if(current_computer=="newt"){
current_computer_url = newt_url;
current_computer_strength = newt_strength;
current_computer_stamina = newt_stamina;
current_computer_compassion = newt_compassion;
current_computer_magic = newt_magic;
}
if(current_computer=="queen"){
current_computer_url = queen_url;
current_computer_strength = queen_strength;
current_computer_stamina = queen_stamina;
current_computer_compassion = queen_compassion;
current_computer_magic = queen_magic;
}
show plug Chooser[avatar_img_url = current_avatar_url,
avatar_strength = current_avatar_strength,
avatar_compassion = current_avatar_compassion,
avatar_stamina = current_avatar_stamina,
avatar_magic = current_avatar_magic,
computer_img_url = current_computer_url,
computer_strength = current_computer_strength,
computer_compassion = current_computer_compassion,
computer_stamina = current_computer_stamina,
computer_magic = current_computer_magic] receive[current_avatar = avatar, current_computer=computer, doExit=doExit];
}
exit End;
}
session Fight() {
//We should really do a null-check to make sure everything has been initialized
//I don't know how to do this though, so right now we just proceed
int avatar_hp;
int computer_hp;
//-1 is computer wins, 0 is a tie, and 1 is avatar wins
int battleResults;
int avatarWinsByMagic;
int computerWinsByMagic;
int avatarWinsByStrength;
int computerWinsByStrength;
int currentRandom;
int keepPlaying;
string exitText;
string currentAction;
//
avatar_hp = current_avatar_stamina;
computer_hp = current_computer_stamina;
//
keepPlaying = 1;
while( keepPlaying != 0 ){
show plug FieldOfBattle[avatar_img_url = current_avatar_url,
avatar_strength = current_avatar_strength,
avatar_compassion = current_avatar_compassion,
avatar_stamina = current_avatar_stamina,
avatar_magic = current_avatar_magic,
computer_img_url = current_computer_url,
computer_strength = current_computer_strength,
computer_compassion = current_computer_compassion,
computer_stamina = current_computer_stamina,
computer_magic = current_computer_magic,
avatar_hp = avatar_hp,
computer_hp = computer_hp] receive[currentAction=action];
if(currentAction == "attack"){
avatar_hp = avatar_hp - current_computer_strength;
computer_hp = computer_hp - current_avatar_strength;
if(avatar_hp <= 0){
computerWinsByStrength = 1;
}
if(computer_hp <= 0){
avatarWinsByStrength = 1;
}
}else if(currentAction == "heal"){
avatar_hp = avatar_hp + current_avatar_compassion;
computer_hp = computer_hp + current_computer_compassion;
}else if(currentAction == "magic"){
currentRandom = nextRandom();
if(current_avatar_magic > currentRandom){
avatarWinsByMagic = 1;
}
currentRandom = nextRandom();
if(current_computer_magic > currentRandom){
computerWinsByMagic = 1;
}
}
//magic takes priority
if(avatarWinsByMagic == 1 && computerWinsByMagic == 1){
battleResults = 0;
keepPlaying = 0;
exitText = "It's tie, with both parties slaying the other with a horrible magic spell!!!";
}else if( avatarWinsByMagic == 1 && !(computerWinsByMagic == 1) ){
battleResults = 1;
keepPlaying = 0;
exitText = "Through the power of magic, the valiant avatar has vanquished his evil foe!!!";
}else if( !(avatarWinsByMagic == 1) && computerWinsByMagic == 1 ){
battleResults = -1;
keepPlaying = 0;
exitText = "Evil has risen up and overthrown good with powerful spell!!!";
}else{
if(avatarWinsByStrength == 1 && computerWinsByStrength == 1){
battleResults = 0;
keepPlaying = 0;
exitText = "With the strength of one-thousand fardels, the avatar and computer destroy one another with strength!!!";
}else if( avatarWinsByStrength == 1 && !(computerWinsByStrength == 1) ){
battleResults = 1;
keepPlaying = 0;
exitText = "The avatar lifts his mighty sword and slays his opponent! Huzzah!";
}else if( !(avatarWinsByStrength == 1) && computerWinsByStrength == 1 ){
battleResults = -1;
keepPlaying = 0;
exitText = "The horrible computer has slain the avatar with the strength of a mighty blow.";
}else{
//no one wins, keep playing
}
}
}
exit plug Results[exitText = exitText,avatar_hp = avatar_hp,computer_hp = computer_hp];
}
}