Pokemon Project
Dependencies: C12832 LM75B MMA7660 mbed
player.cpp@0:cec9a625dfb9, 2017-01-23 (annotated)
- Committer:
- dhermy01
- Date:
- Mon Jan 23 17:28:34 2017 +0000
- Revision:
- 0:cec9a625dfb9
test
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dhermy01 | 0:cec9a625dfb9 | 1 | #include "player.h" |
dhermy01 | 0:cec9a625dfb9 | 2 | #include "LM75B.h" |
dhermy01 | 0:cec9a625dfb9 | 3 | #include <stdio.h> |
dhermy01 | 0:cec9a625dfb9 | 4 | #include "C12832.h" |
dhermy01 | 0:cec9a625dfb9 | 5 | |
dhermy01 | 0:cec9a625dfb9 | 6 | // init var and captor |
dhermy01 | 0:cec9a625dfb9 | 7 | C12832 lcd2(D11, D13, D12, D7, D10); |
dhermy01 | 0:cec9a625dfb9 | 8 | std::string TYPEStr[3] = {"FIRE", "WATER", "GRASS"}; |
dhermy01 | 0:cec9a625dfb9 | 9 | LM75B sensorTemp(D14,D15); |
dhermy01 | 0:cec9a625dfb9 | 10 | int temp; |
dhermy01 | 0:cec9a625dfb9 | 11 | |
dhermy01 | 0:cec9a625dfb9 | 12 | // create player |
dhermy01 | 0:cec9a625dfb9 | 13 | Player::Player(void) { |
dhermy01 | 0:cec9a625dfb9 | 14 | Player(1, 15, FIRE); |
dhermy01 | 0:cec9a625dfb9 | 15 | } |
dhermy01 | 0:cec9a625dfb9 | 16 | |
dhermy01 | 0:cec9a625dfb9 | 17 | // setters player |
dhermy01 | 0:cec9a625dfb9 | 18 | Player::Player(uns l, uns att, Type_e t) { |
dhermy01 | 0:cec9a625dfb9 | 19 | lvl = l; |
dhermy01 | 0:cec9a625dfb9 | 20 | attackDmg = att; |
dhermy01 | 0:cec9a625dfb9 | 21 | type = t; |
dhermy01 | 0:cec9a625dfb9 | 22 | exp = 0; |
dhermy01 | 0:cec9a625dfb9 | 23 | crit = 0.0f; |
dhermy01 | 0:cec9a625dfb9 | 24 | } |
dhermy01 | 0:cec9a625dfb9 | 25 | |
dhermy01 | 0:cec9a625dfb9 | 26 | // fight function |
dhermy01 | 0:cec9a625dfb9 | 27 | int Player::fight(Player p) { |
dhermy01 | 0:cec9a625dfb9 | 28 | int win = 0; |
dhermy01 | 0:cec9a625dfb9 | 29 | uns newAtt = 0; |
dhermy01 | 0:cec9a625dfb9 | 30 | if ((p.type == FIRE && type == WATER )|| (p.type == GRASS && type == FIRE) || (p.type == WATER && type == GRASS)) { |
dhermy01 | 0:cec9a625dfb9 | 31 | newAtt = 2 * attackDmg; |
dhermy01 | 0:cec9a625dfb9 | 32 | if (newAtt >= p.attackDmg) win = 1; |
dhermy01 | 0:cec9a625dfb9 | 33 | else if (newAtt < p.attackDmg) win = -1; |
dhermy01 | 0:cec9a625dfb9 | 34 | } else if ((p.type == WATER && type == FIRE) || (p.type == GRASS && type == WATER) || (p.type == FIRE && type == GRASS)) { |
dhermy01 | 0:cec9a625dfb9 | 35 | newAtt = (uns)(attackDmg >> 1); |
dhermy01 | 0:cec9a625dfb9 | 36 | if (newAtt >= p.attackDmg) win = 1; |
dhermy01 | 0:cec9a625dfb9 | 37 | else if (newAtt < p.attackDmg) win = -1; |
dhermy01 | 0:cec9a625dfb9 | 38 | } else { |
dhermy01 | 0:cec9a625dfb9 | 39 | newAtt = attackDmg; |
dhermy01 | 0:cec9a625dfb9 | 40 | if (newAtt >= p.attackDmg) win = 1; |
dhermy01 | 0:cec9a625dfb9 | 41 | else if (newAtt < p.attackDmg) win = -1; |
dhermy01 | 0:cec9a625dfb9 | 42 | } |
dhermy01 | 0:cec9a625dfb9 | 43 | if (win == 1) exp += 20; |
dhermy01 | 0:cec9a625dfb9 | 44 | return win; |
dhermy01 | 0:cec9a625dfb9 | 45 | } |
dhermy01 | 0:cec9a625dfb9 | 46 | |
dhermy01 | 0:cec9a625dfb9 | 47 | // level up function |
dhermy01 | 0:cec9a625dfb9 | 48 | void Player::lvlUp() { |
dhermy01 | 0:cec9a625dfb9 | 49 | lvl++; |
dhermy01 | 0:cec9a625dfb9 | 50 | attackDmg += 2; |
dhermy01 | 0:cec9a625dfb9 | 51 | crit += 0.05f; |
dhermy01 | 0:cec9a625dfb9 | 52 | exp = 0; |
dhermy01 | 0:cec9a625dfb9 | 53 | } |
dhermy01 | 0:cec9a625dfb9 | 54 | |
dhermy01 | 0:cec9a625dfb9 | 55 | // check exp function |
dhermy01 | 0:cec9a625dfb9 | 56 | void Player::checkEXP() { |
dhermy01 | 0:cec9a625dfb9 | 57 | if (exp >= 100) { |
dhermy01 | 0:cec9a625dfb9 | 58 | Player::lvlUp(); |
dhermy01 | 0:cec9a625dfb9 | 59 | } |
dhermy01 | 0:cec9a625dfb9 | 60 | } |
dhermy01 | 0:cec9a625dfb9 | 61 | |
dhermy01 | 0:cec9a625dfb9 | 62 | // set the type of pokemon |
dhermy01 | 0:cec9a625dfb9 | 63 | void Player::setType(Type_e t) { |
dhermy01 | 0:cec9a625dfb9 | 64 | type = t; |
dhermy01 | 0:cec9a625dfb9 | 65 | if(t == FIRE){ |
dhermy01 | 0:cec9a625dfb9 | 66 | temp = sensorTemp.temp(); |
dhermy01 | 0:cec9a625dfb9 | 67 | if(temp > 28){ |
dhermy01 | 0:cec9a625dfb9 | 68 | attackDmg = attackDmg+4; |
dhermy01 | 0:cec9a625dfb9 | 69 | } |
dhermy01 | 0:cec9a625dfb9 | 70 | } |
dhermy01 | 0:cec9a625dfb9 | 71 | else if(t==GRASS) |
dhermy01 | 0:cec9a625dfb9 | 72 | { |
dhermy01 | 0:cec9a625dfb9 | 73 | temp = sensorTemp.temp(); |
dhermy01 | 0:cec9a625dfb9 | 74 | if(temp < 28 && temp > 18){ |
dhermy01 | 0:cec9a625dfb9 | 75 | attackDmg = attackDmg+4; |
dhermy01 | 0:cec9a625dfb9 | 76 | } |
dhermy01 | 0:cec9a625dfb9 | 77 | } |
dhermy01 | 0:cec9a625dfb9 | 78 | else if(t==WATER) |
dhermy01 | 0:cec9a625dfb9 | 79 | { |
dhermy01 | 0:cec9a625dfb9 | 80 | temp = sensorTemp.temp(); |
dhermy01 | 0:cec9a625dfb9 | 81 | if(temp < 18){ |
dhermy01 | 0:cec9a625dfb9 | 82 | attackDmg = attackDmg+4; |
dhermy01 | 0:cec9a625dfb9 | 83 | } |
dhermy01 | 0:cec9a625dfb9 | 84 | } |
dhermy01 | 0:cec9a625dfb9 | 85 | |
dhermy01 | 0:cec9a625dfb9 | 86 | } |
dhermy01 | 0:cec9a625dfb9 | 87 | |
dhermy01 | 0:cec9a625dfb9 | 88 | // set text of player |
dhermy01 | 0:cec9a625dfb9 | 89 | std::string Player::toString(void) { |
dhermy01 | 0:cec9a625dfb9 | 90 | std::string res = "STAT: \n" ; |
dhermy01 | 0:cec9a625dfb9 | 91 | char num[40]; |
dhermy01 | 0:cec9a625dfb9 | 92 | char num2[40]; |
dhermy01 | 0:cec9a625dfb9 | 93 | char num3[40]; |
dhermy01 | 0:cec9a625dfb9 | 94 | sprintf(num, "Lvl: %u ", lvl); |
dhermy01 | 0:cec9a625dfb9 | 95 | snprintf(num3, 40, "Exp: %u ", exp); |
dhermy01 | 0:cec9a625dfb9 | 96 | sprintf(num2, "Att: %u \nType: %s", attackDmg, TYPEStr[type].c_str()); |
dhermy01 | 0:cec9a625dfb9 | 97 | res += num; |
dhermy01 | 0:cec9a625dfb9 | 98 | res += num3; |
dhermy01 | 0:cec9a625dfb9 | 99 | res += num2; |
dhermy01 | 0:cec9a625dfb9 | 100 | return (res); |
dhermy01 | 0:cec9a625dfb9 | 101 | } |