Dependencies: 4DGL-uLCD-SE Motor SparkfunAnalogJoystick mbed
Fork of Fire_Mbed_2_0 by
main.cpp@0:b7a07b6cf5d0, 2017-03-14 (annotated)
- Committer:
- rpgjake
- Date:
- Tue Mar 14 22:37:14 2017 +0000
- Revision:
- 0:b7a07b6cf5d0
- Child:
- 1:3a9ef60cbbfc
fire mbed ece 4180
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rpgjake | 0:b7a07b6cf5d0 | 1 | #include "mbed.h" |
rpgjake | 0:b7a07b6cf5d0 | 2 | #include "SparkfunAnalogJoystick.h" |
rpgjake | 0:b7a07b6cf5d0 | 3 | #include "uLCD_4DGL.h" |
rpgjake | 0:b7a07b6cf5d0 | 4 | #include "FEmain.h" |
rpgjake | 0:b7a07b6cf5d0 | 5 | #define MapSecA 123 |
rpgjake | 0:b7a07b6cf5d0 | 6 | #define MapSecB 123 |
rpgjake | 0:b7a07b6cf5d0 | 7 | |
rpgjake | 0:b7a07b6cf5d0 | 8 | #include "Motor.h" |
rpgjake | 0:b7a07b6cf5d0 | 9 | |
rpgjake | 0:b7a07b6cf5d0 | 10 | Motor m(p21, p24, p25); // pwm, fwd, rev |
rpgjake | 0:b7a07b6cf5d0 | 11 | |
rpgjake | 0:b7a07b6cf5d0 | 12 | #define FORTRESS 0 |
rpgjake | 0:b7a07b6cf5d0 | 13 | #define HOUSE 1 |
rpgjake | 0:b7a07b6cf5d0 | 14 | #define KEEP 2 |
rpgjake | 0:b7a07b6cf5d0 | 15 | #define GRASS 3 |
rpgjake | 0:b7a07b6cf5d0 | 16 | #define TREES 4 |
rpgjake | 0:b7a07b6cf5d0 | 17 | #define COMP 2 |
rpgjake | 0:b7a07b6cf5d0 | 18 | #define USER 1 |
rpgjake | 0:b7a07b6cf5d0 | 19 | |
rpgjake | 0:b7a07b6cf5d0 | 20 | |
rpgjake | 0:b7a07b6cf5d0 | 21 | DigitalOut myled(LED1); |
rpgjake | 0:b7a07b6cf5d0 | 22 | uLCD_4DGL uLCD(p9,p10,p11); |
rpgjake | 0:b7a07b6cf5d0 | 23 | DigitalIn pb5(p5); |
rpgjake | 0:b7a07b6cf5d0 | 24 | DigitalIn pb6(p6); |
rpgjake | 0:b7a07b6cf5d0 | 25 | DigitalIn pb7(p7); |
rpgjake | 0:b7a07b6cf5d0 | 26 | DigitalIn pb8(p8); |
rpgjake | 0:b7a07b6cf5d0 | 27 | #define M_PI 3.14159265358979323846 |
rpgjake | 0:b7a07b6cf5d0 | 28 | Serial pc(USBTX, USBRX); |
rpgjake | 0:b7a07b6cf5d0 | 29 | SparkfunAnalogJoystick joysttick(p18, p19, p20); |
rpgjake | 0:b7a07b6cf5d0 | 30 | #define x_sector 0x003B |
rpgjake | 0:b7a07b6cf5d0 | 31 | int analog2Keypad(SparkfunAnalogJoystick *joystick); |
rpgjake | 0:b7a07b6cf5d0 | 32 | int player_turn; |
rpgjake | 0:b7a07b6cf5d0 | 33 | |
rpgjake | 0:b7a07b6cf5d0 | 34 | struct tiles { |
rpgjake | 0:b7a07b6cf5d0 | 35 | char v; |
rpgjake | 0:b7a07b6cf5d0 | 36 | int x; |
rpgjake | 0:b7a07b6cf5d0 | 37 | int y; |
rpgjake | 0:b7a07b6cf5d0 | 38 | char passable;} fortress_t,house_t,keep_t,grass_t,trees_t; |
rpgjake | 0:b7a07b6cf5d0 | 39 | |
rpgjake | 0:b7a07b6cf5d0 | 40 | tiles* tile_array[5] = {&fortress_t,&house_t,&keep_t,&grass_t,&trees_t}; |
rpgjake | 0:b7a07b6cf5d0 | 41 | |
rpgjake | 0:b7a07b6cf5d0 | 42 | |
rpgjake | 0:b7a07b6cf5d0 | 43 | typedef struct units { |
rpgjake | 0:b7a07b6cf5d0 | 44 | job_t job; |
rpgjake | 0:b7a07b6cf5d0 | 45 | int v; |
rpgjake | 0:b7a07b6cf5d0 | 46 | int FoF;//1 = USER // 2= COMP |
rpgjake | 0:b7a07b6cf5d0 | 47 | int xloc; |
rpgjake | 0:b7a07b6cf5d0 | 48 | int yloc; |
rpgjake | 0:b7a07b6cf5d0 | 49 | int xlast; |
rpgjake | 0:b7a07b6cf5d0 | 50 | int ylast; |
rpgjake | 0:b7a07b6cf5d0 | 51 | int remain_moves; |
rpgjake | 0:b7a07b6cf5d0 | 52 | int health; |
rpgjake | 0:b7a07b6cf5d0 | 53 | int status; |
rpgjake | 0:b7a07b6cf5d0 | 54 | } person_t; |
rpgjake | 0:b7a07b6cf5d0 | 55 | |
rpgjake | 0:b7a07b6cf5d0 | 56 | |
rpgjake | 0:b7a07b6cf5d0 | 57 | static person_t Mc; |
rpgjake | 0:b7a07b6cf5d0 | 58 | static person_t Ak; |
rpgjake | 0:b7a07b6cf5d0 | 59 | static person_t Ap; |
rpgjake | 0:b7a07b6cf5d0 | 60 | static person_t Healer; |
rpgjake | 0:b7a07b6cf5d0 | 61 | static person_t Brigand; |
rpgjake | 0:b7a07b6cf5d0 | 62 | static person_t Thief; |
rpgjake | 0:b7a07b6cf5d0 | 63 | static person_t Soldier; |
rpgjake | 0:b7a07b6cf5d0 | 64 | static person_t Wolf; |
rpgjake | 0:b7a07b6cf5d0 | 65 | static person_t Wolfa; |
rpgjake | 0:b7a07b6cf5d0 | 66 | static person_t Wolfb; |
rpgjake | 0:b7a07b6cf5d0 | 67 | static person_t Wolfc; |
rpgjake | 0:b7a07b6cf5d0 | 68 | |
rpgjake | 0:b7a07b6cf5d0 | 69 | |
rpgjake | 0:b7a07b6cf5d0 | 70 | |
rpgjake | 0:b7a07b6cf5d0 | 71 | |
rpgjake | 0:b7a07b6cf5d0 | 72 | person_t* person_array[12] = {NULL,&Mc,&Ak,&Ap,&Healer,&Brigand,&Thief,&Soldier,&Wolf,&Wolfa,&Wolfb,&Wolfc}; |
rpgjake | 0:b7a07b6cf5d0 | 73 | |
rpgjake | 0:b7a07b6cf5d0 | 74 | int Map1_1[8][8] = { |
rpgjake | 0:b7a07b6cf5d0 | 75 | {FORTRESS, FORTRESS, FORTRESS, GRASS, GRASS, GRASS, HOUSE, GRASS}, |
rpgjake | 0:b7a07b6cf5d0 | 76 | {FORTRESS, FORTRESS, FORTRESS, GRASS, GRASS, GRASS, GRASS, GRASS}, |
rpgjake | 0:b7a07b6cf5d0 | 77 | {FORTRESS, FORTRESS, FORTRESS, GRASS, TREES, GRASS, GRASS, GRASS}, |
rpgjake | 0:b7a07b6cf5d0 | 78 | {GRASS, GRASS, GRASS, GRASS, GRASS, GRASS, GRASS, GRASS}, |
rpgjake | 0:b7a07b6cf5d0 | 79 | {GRASS, GRASS, GRASS, GRASS, GRASS, GRASS, GRASS, GRASS}, |
rpgjake | 0:b7a07b6cf5d0 | 80 | {GRASS, GRASS, GRASS, GRASS, TREES, TREES, TREES, GRASS}, |
rpgjake | 0:b7a07b6cf5d0 | 81 | {GRASS, GRASS, HOUSE, TREES, GRASS, KEEP, GRASS, GRASS}, |
rpgjake | 0:b7a07b6cf5d0 | 82 | {GRASS, GRASS, GRASS, GRASS, GRASS, GRASS, GRASS, GRASS} }; |
rpgjake | 0:b7a07b6cf5d0 | 83 | |
rpgjake | 0:b7a07b6cf5d0 | 84 | int unitsMap1_1[8][8] = { |
rpgjake | 0:b7a07b6cf5d0 | 85 | {0, 0, 0, 0, 0, 0, 0, 0}, |
rpgjake | 0:b7a07b6cf5d0 | 86 | {0, 0, 0, 0, 0, 0, 0, 0}, |
rpgjake | 0:b7a07b6cf5d0 | 87 | {0, 0, 0, 0, 0, 0, 0, 0}, |
rpgjake | 0:b7a07b6cf5d0 | 88 | {0, 0, 0, 0, 0, 0, 0, 0}, |
rpgjake | 0:b7a07b6cf5d0 | 89 | {0, 0, 0, 0, 0, 0, 0, 0}, |
rpgjake | 0:b7a07b6cf5d0 | 90 | {0, 0, 0, 0, 0, 0, 0, 0}, |
rpgjake | 0:b7a07b6cf5d0 | 91 | {0, 0, 0, 0, 0, 0, 0, 0}, |
rpgjake | 0:b7a07b6cf5d0 | 92 | {0, 0, 0, 0, 0, 0, 0, 0} }; |
rpgjake | 0:b7a07b6cf5d0 | 93 | |
rpgjake | 0:b7a07b6cf5d0 | 94 | |
rpgjake | 0:b7a07b6cf5d0 | 95 | |
rpgjake | 0:b7a07b6cf5d0 | 96 | |
rpgjake | 0:b7a07b6cf5d0 | 97 | void initialize(void); |
rpgjake | 0:b7a07b6cf5d0 | 98 | int user_selecting(void);//return selection |
rpgjake | 0:b7a07b6cf5d0 | 99 | int user_action(int selection); |
rpgjake | 0:b7a07b6cf5d0 | 100 | int display_status(int selection); |
rpgjake | 0:b7a07b6cf5d0 | 101 | int user_movement(int selection); |
rpgjake | 0:b7a07b6cf5d0 | 102 | int combat(person_t* attacker, person_t* defender); |
rpgjake | 0:b7a07b6cf5d0 | 103 | int ai_movement(void); |
rpgjake | 0:b7a07b6cf5d0 | 104 | int state; |
rpgjake | 0:b7a07b6cf5d0 | 105 | int cursor_x; |
rpgjake | 0:b7a07b6cf5d0 | 106 | int cursor_y; |
rpgjake | 0:b7a07b6cf5d0 | 107 | void kill_unit(person_t* dead_unit); |
rpgjake | 0:b7a07b6cf5d0 | 108 | |
rpgjake | 0:b7a07b6cf5d0 | 109 | int main() { |
rpgjake | 0:b7a07b6cf5d0 | 110 | uLCD.media_init(); |
rpgjake | 0:b7a07b6cf5d0 | 111 | pb5.mode(PullUp); |
rpgjake | 0:b7a07b6cf5d0 | 112 | pb6.mode(PullUp); |
rpgjake | 0:b7a07b6cf5d0 | 113 | pb7.mode(PullUp); |
rpgjake | 0:b7a07b6cf5d0 | 114 | pb8.mode(PullUp); |
rpgjake | 0:b7a07b6cf5d0 | 115 | initialize(); |
rpgjake | 0:b7a07b6cf5d0 | 116 | int selection; |
rpgjake | 0:b7a07b6cf5d0 | 117 | int action; |
rpgjake | 0:b7a07b6cf5d0 | 118 | player_turn =1; |
rpgjake | 0:b7a07b6cf5d0 | 119 | cursor_x = 0; |
rpgjake | 0:b7a07b6cf5d0 | 120 | cursor_y = 0; |
rpgjake | 0:b7a07b6cf5d0 | 121 | state = 0; |
rpgjake | 0:b7a07b6cf5d0 | 122 | person_t* temp_persona; |
rpgjake | 0:b7a07b6cf5d0 | 123 | while(1) { |
rpgjake | 0:b7a07b6cf5d0 | 124 | if (state == 0){ |
rpgjake | 0:b7a07b6cf5d0 | 125 | selection = user_selecting();} |
rpgjake | 0:b7a07b6cf5d0 | 126 | //else if (state ==1) |
rpgjake | 0:b7a07b6cf5d0 | 127 | //ret_val = display_status(selection); |
rpgjake | 0:b7a07b6cf5d0 | 128 | else if (state == 2){ |
rpgjake | 0:b7a07b6cf5d0 | 129 | action = user_movement(selection);} |
rpgjake | 0:b7a07b6cf5d0 | 130 | else if (state == 3){ |
rpgjake | 0:b7a07b6cf5d0 | 131 | if (player_turn ==1){ |
rpgjake | 0:b7a07b6cf5d0 | 132 | player_turn = 2; |
rpgjake | 0:b7a07b6cf5d0 | 133 | } |
rpgjake | 0:b7a07b6cf5d0 | 134 | else { |
rpgjake | 0:b7a07b6cf5d0 | 135 | player_turn =1; |
rpgjake | 0:b7a07b6cf5d0 | 136 | } |
rpgjake | 0:b7a07b6cf5d0 | 137 | for(int i=1; i<12;i++){ |
rpgjake | 0:b7a07b6cf5d0 | 138 | temp_persona = person_array[i]; |
rpgjake | 0:b7a07b6cf5d0 | 139 | temp_persona->remain_moves = temp_persona->job.movement; |
rpgjake | 0:b7a07b6cf5d0 | 140 | } |
rpgjake | 0:b7a07b6cf5d0 | 141 | state = 0; |
rpgjake | 0:b7a07b6cf5d0 | 142 | } |
rpgjake | 0:b7a07b6cf5d0 | 143 | //else if (state == 4) |
rpgjake | 0:b7a07b6cf5d0 | 144 | } |
rpgjake | 0:b7a07b6cf5d0 | 145 | } |
rpgjake | 0:b7a07b6cf5d0 | 146 | //cleric - lord - ax |
rpgjake | 0:b7a07b6cf5d0 | 147 | //noth - spear |
rpgjake | 0:b7a07b6cf5d0 | 148 | |
rpgjake | 0:b7a07b6cf5d0 | 149 | |
rpgjake | 0:b7a07b6cf5d0 | 150 | |
rpgjake | 0:b7a07b6cf5d0 | 151 | void initialize(void){ |
rpgjake | 0:b7a07b6cf5d0 | 152 | pc.printf("init function\n"); |
rpgjake | 0:b7a07b6cf5d0 | 153 | init_jobs(); |
rpgjake | 0:b7a07b6cf5d0 | 154 | keep_t.x = x_sector; |
rpgjake | 0:b7a07b6cf5d0 | 155 | house_t.x = x_sector; |
rpgjake | 0:b7a07b6cf5d0 | 156 | grass_t.x = x_sector; |
rpgjake | 0:b7a07b6cf5d0 | 157 | trees_t.x = x_sector; |
rpgjake | 0:b7a07b6cf5d0 | 158 | fortress_t.x = x_sector; |
rpgjake | 0:b7a07b6cf5d0 | 159 | fortress_t.y = 0x5042; |
rpgjake | 0:b7a07b6cf5d0 | 160 | trees_t.y = 0x5052; |
rpgjake | 0:b7a07b6cf5d0 | 161 | keep_t.y = 0x5054; |
rpgjake | 0:b7a07b6cf5d0 | 162 | grass_t.y = 0x5056; |
rpgjake | 0:b7a07b6cf5d0 | 163 | house_t.y = 0x5058; |
rpgjake | 0:b7a07b6cf5d0 | 164 | uLCD.set_sector_address(Mapx, Mapy); |
rpgjake | 0:b7a07b6cf5d0 | 165 | uLCD.display_image(0,0); |
rpgjake | 0:b7a07b6cf5d0 | 166 | Mc.job = Lord; |
rpgjake | 0:b7a07b6cf5d0 | 167 | Mc.v = 1; |
rpgjake | 0:b7a07b6cf5d0 | 168 | Mc.FoF = USER; |
rpgjake | 0:b7a07b6cf5d0 | 169 | Mc.xlast = 1; |
rpgjake | 0:b7a07b6cf5d0 | 170 | Mc.xloc = 1; |
rpgjake | 0:b7a07b6cf5d0 | 171 | Mc.ylast = 3; |
rpgjake | 0:b7a07b6cf5d0 | 172 | Mc.yloc = 3; |
rpgjake | 0:b7a07b6cf5d0 | 173 | Mc.remain_moves = Mc.job.movement; |
rpgjake | 0:b7a07b6cf5d0 | 174 | Mc.health = Mc.job.maxHealth; |
rpgjake | 0:b7a07b6cf5d0 | 175 | uLCD.set_sector_address(Mc.job.x, Mc.job.y); |
rpgjake | 0:b7a07b6cf5d0 | 176 | uLCD.display_image((Mc.xloc*16),(Mc.yloc*16)); |
rpgjake | 0:b7a07b6cf5d0 | 177 | |
rpgjake | 0:b7a07b6cf5d0 | 178 | Ak.job = Armor; |
rpgjake | 0:b7a07b6cf5d0 | 179 | Ak.v = 2; |
rpgjake | 0:b7a07b6cf5d0 | 180 | Ak.FoF = USER; |
rpgjake | 0:b7a07b6cf5d0 | 181 | Ak.xlast = 1; |
rpgjake | 0:b7a07b6cf5d0 | 182 | Ak.xloc = 1; |
rpgjake | 0:b7a07b6cf5d0 | 183 | Ak.ylast = 4; |
rpgjake | 0:b7a07b6cf5d0 | 184 | Ak.yloc = 4; |
rpgjake | 0:b7a07b6cf5d0 | 185 | Ak.remain_moves = Ak.job.movement; |
rpgjake | 0:b7a07b6cf5d0 | 186 | Ak.health = Ak.job.maxHealth; |
rpgjake | 0:b7a07b6cf5d0 | 187 | |
rpgjake | 0:b7a07b6cf5d0 | 188 | uLCD.set_sector_address(Ak.job.x, Ak.job.y); |
rpgjake | 0:b7a07b6cf5d0 | 189 | uLCD.display_image((Ak.xloc*16),(Ak.yloc*16)); |
rpgjake | 0:b7a07b6cf5d0 | 190 | |
rpgjake | 0:b7a07b6cf5d0 | 191 | Ap.job = Pirate; |
rpgjake | 0:b7a07b6cf5d0 | 192 | Ap.v = 3; |
rpgjake | 0:b7a07b6cf5d0 | 193 | Ap.FoF = USER; |
rpgjake | 0:b7a07b6cf5d0 | 194 | Ap.xlast = 2; |
rpgjake | 0:b7a07b6cf5d0 | 195 | Ap.xloc = 2; |
rpgjake | 0:b7a07b6cf5d0 | 196 | Ap.ylast = 3; |
rpgjake | 0:b7a07b6cf5d0 | 197 | Ap.yloc = 3; |
rpgjake | 0:b7a07b6cf5d0 | 198 | Ap.remain_moves = Ap.job.movement; |
rpgjake | 0:b7a07b6cf5d0 | 199 | Ap.health = Ap.job.maxHealth; |
rpgjake | 0:b7a07b6cf5d0 | 200 | |
rpgjake | 0:b7a07b6cf5d0 | 201 | uLCD.set_sector_address(Ap.job.x, Ap.job.y); |
rpgjake | 0:b7a07b6cf5d0 | 202 | uLCD.display_image((Ap.xloc*16),(Ap.yloc*16)); |
rpgjake | 0:b7a07b6cf5d0 | 203 | |
rpgjake | 0:b7a07b6cf5d0 | 204 | Healer.job = Cleric; |
rpgjake | 0:b7a07b6cf5d0 | 205 | Healer.v = 4; |
rpgjake | 0:b7a07b6cf5d0 | 206 | Healer.FoF = USER; |
rpgjake | 0:b7a07b6cf5d0 | 207 | Healer.xlast = 0; |
rpgjake | 0:b7a07b6cf5d0 | 208 | Healer.xloc = 0; |
rpgjake | 0:b7a07b6cf5d0 | 209 | Healer.ylast = 3; |
rpgjake | 0:b7a07b6cf5d0 | 210 | Healer.yloc = 3; |
rpgjake | 0:b7a07b6cf5d0 | 211 | Healer.remain_moves = Healer.job.movement; |
rpgjake | 0:b7a07b6cf5d0 | 212 | Healer.health = Healer.job.maxHealth; |
rpgjake | 0:b7a07b6cf5d0 | 213 | |
rpgjake | 0:b7a07b6cf5d0 | 214 | uLCD.set_sector_address(Healer.job.x, Healer.job.y); |
rpgjake | 0:b7a07b6cf5d0 | 215 | uLCD.display_image((Healer.xloc*16),(Healer.yloc*16)); |
rpgjake | 0:b7a07b6cf5d0 | 216 | |
rpgjake | 0:b7a07b6cf5d0 | 217 | Wolf.job = Beast; |
rpgjake | 0:b7a07b6cf5d0 | 218 | Wolf.v = 8; |
rpgjake | 0:b7a07b6cf5d0 | 219 | Wolf.FoF = COMP; |
rpgjake | 0:b7a07b6cf5d0 | 220 | Wolf.xlast = 7; |
rpgjake | 0:b7a07b6cf5d0 | 221 | Wolf.xloc = 7; |
rpgjake | 0:b7a07b6cf5d0 | 222 | Wolf.ylast = 4; |
rpgjake | 0:b7a07b6cf5d0 | 223 | Wolf.yloc = 4; |
rpgjake | 0:b7a07b6cf5d0 | 224 | Wolf.remain_moves = Wolf.job.movement; |
rpgjake | 0:b7a07b6cf5d0 | 225 | Wolf.health = Wolf.job.maxHealth; |
rpgjake | 0:b7a07b6cf5d0 | 226 | |
rpgjake | 0:b7a07b6cf5d0 | 227 | uLCD.set_sector_address(Wolf.job.x, Wolf.job.y); |
rpgjake | 0:b7a07b6cf5d0 | 228 | uLCD.display_image((Wolf.xloc*16),(Wolf.yloc*16)); |
rpgjake | 0:b7a07b6cf5d0 | 229 | unitsMap1_1[Wolf.yloc][Wolf.xloc] = Wolf.v; |
rpgjake | 0:b7a07b6cf5d0 | 230 | |
rpgjake | 0:b7a07b6cf5d0 | 231 | Wolfa.job = Beast; |
rpgjake | 0:b7a07b6cf5d0 | 232 | Wolfa.v = 9; |
rpgjake | 0:b7a07b6cf5d0 | 233 | Wolfa.FoF = COMP; |
rpgjake | 0:b7a07b6cf5d0 | 234 | Wolfa.xlast = 7; |
rpgjake | 0:b7a07b6cf5d0 | 235 | Wolfa.xloc = 7; |
rpgjake | 0:b7a07b6cf5d0 | 236 | Wolfa.ylast = 5; |
rpgjake | 0:b7a07b6cf5d0 | 237 | Wolfa.yloc = 5; |
rpgjake | 0:b7a07b6cf5d0 | 238 | Wolfa.remain_moves = Wolfa.job.movement; |
rpgjake | 0:b7a07b6cf5d0 | 239 | Wolfa.health = Wolfa.job.maxHealth; |
rpgjake | 0:b7a07b6cf5d0 | 240 | |
rpgjake | 0:b7a07b6cf5d0 | 241 | uLCD.set_sector_address(Wolfa.job.x, Wolfa.job.y); |
rpgjake | 0:b7a07b6cf5d0 | 242 | uLCD.display_image((Wolfa.xloc*16),(Wolfa.yloc*16)); |
rpgjake | 0:b7a07b6cf5d0 | 243 | unitsMap1_1[Wolfa.yloc][Wolfa.xloc] = Wolfa.v; |
rpgjake | 0:b7a07b6cf5d0 | 244 | |
rpgjake | 0:b7a07b6cf5d0 | 245 | Wolfb.job = Beast; |
rpgjake | 0:b7a07b6cf5d0 | 246 | Wolfb.v = 10; |
rpgjake | 0:b7a07b6cf5d0 | 247 | Wolfb.FoF = COMP; |
rpgjake | 0:b7a07b6cf5d0 | 248 | Wolfb.xlast = 6; |
rpgjake | 0:b7a07b6cf5d0 | 249 | Wolfb.xloc = 6; |
rpgjake | 0:b7a07b6cf5d0 | 250 | Wolfb.ylast = 4; |
rpgjake | 0:b7a07b6cf5d0 | 251 | Wolfb.yloc = 4; |
rpgjake | 0:b7a07b6cf5d0 | 252 | Wolfb.remain_moves = Wolfb.job.movement; |
rpgjake | 0:b7a07b6cf5d0 | 253 | Wolfb.health = Wolfb.job.maxHealth; |
rpgjake | 0:b7a07b6cf5d0 | 254 | |
rpgjake | 0:b7a07b6cf5d0 | 255 | uLCD.set_sector_address(Wolfb.job.x, Wolfb.job.y); |
rpgjake | 0:b7a07b6cf5d0 | 256 | uLCD.display_image((Wolfb.xloc*16),(Wolfb.yloc*16)); |
rpgjake | 0:b7a07b6cf5d0 | 257 | unitsMap1_1[Wolfb.yloc][Wolfb.xloc] = Wolfb.v; |
rpgjake | 0:b7a07b6cf5d0 | 258 | |
rpgjake | 0:b7a07b6cf5d0 | 259 | |
rpgjake | 0:b7a07b6cf5d0 | 260 | Wolfc.job = Beast; |
rpgjake | 0:b7a07b6cf5d0 | 261 | Wolfc.v = 11; |
rpgjake | 0:b7a07b6cf5d0 | 262 | Wolfc.FoF = COMP; |
rpgjake | 0:b7a07b6cf5d0 | 263 | Wolfc.xlast = 7; |
rpgjake | 0:b7a07b6cf5d0 | 264 | Wolfc.xloc = 7; |
rpgjake | 0:b7a07b6cf5d0 | 265 | Wolfc.ylast = 3; |
rpgjake | 0:b7a07b6cf5d0 | 266 | Wolfc.yloc = 3; |
rpgjake | 0:b7a07b6cf5d0 | 267 | Wolfc.remain_moves = Wolfc.job.movement; |
rpgjake | 0:b7a07b6cf5d0 | 268 | Wolfc.health = Wolfc.job.maxHealth; |
rpgjake | 0:b7a07b6cf5d0 | 269 | |
rpgjake | 0:b7a07b6cf5d0 | 270 | uLCD.set_sector_address(Wolfc.job.x, Wolfc.job.y); |
rpgjake | 0:b7a07b6cf5d0 | 271 | uLCD.display_image((Wolfc.xloc*16),(Wolfc.yloc*16)); |
rpgjake | 0:b7a07b6cf5d0 | 272 | unitsMap1_1[Wolfc.yloc][Wolfc.xloc] = Wolfc.v; |
rpgjake | 0:b7a07b6cf5d0 | 273 | |
rpgjake | 0:b7a07b6cf5d0 | 274 | unitsMap1_1[Mc.yloc][Mc.xloc] = Mc.v; |
rpgjake | 0:b7a07b6cf5d0 | 275 | unitsMap1_1[Ak.yloc][Ak.xloc] = Ak.v; |
rpgjake | 0:b7a07b6cf5d0 | 276 | unitsMap1_1[Ap.yloc][Ap.xloc] = Ap.v; |
rpgjake | 0:b7a07b6cf5d0 | 277 | unitsMap1_1[Healer.yloc][Healer.xloc] = Healer.v; |
rpgjake | 0:b7a07b6cf5d0 | 278 | |
rpgjake | 0:b7a07b6cf5d0 | 279 | return; |
rpgjake | 0:b7a07b6cf5d0 | 280 | } |
rpgjake | 0:b7a07b6cf5d0 | 281 | int user_selecting(void){ |
rpgjake | 0:b7a07b6cf5d0 | 282 | int xlast; |
rpgjake | 0:b7a07b6cf5d0 | 283 | int ylast; |
rpgjake | 0:b7a07b6cf5d0 | 284 | int action = 0; |
rpgjake | 0:b7a07b6cf5d0 | 285 | int person_index = 0; |
rpgjake | 0:b7a07b6cf5d0 | 286 | int tile_index = 0; |
rpgjake | 0:b7a07b6cf5d0 | 287 | int keypad = 5; |
rpgjake | 0:b7a07b6cf5d0 | 288 | int ret =0; |
rpgjake | 0:b7a07b6cf5d0 | 289 | person_t* temp_person; |
rpgjake | 0:b7a07b6cf5d0 | 290 | tiles* tile_erased; |
rpgjake | 0:b7a07b6cf5d0 | 291 | int j = pb5; |
rpgjake | 0:b7a07b6cf5d0 | 292 | int y = pb8; |
rpgjake | 0:b7a07b6cf5d0 | 293 | while(action == 0){ |
rpgjake | 0:b7a07b6cf5d0 | 294 | keypad = 5; |
rpgjake | 0:b7a07b6cf5d0 | 295 | xlast = cursor_x; |
rpgjake | 0:b7a07b6cf5d0 | 296 | ylast = cursor_y; |
rpgjake | 0:b7a07b6cf5d0 | 297 | while((keypad == 5)&&(j ==1)){ |
rpgjake | 0:b7a07b6cf5d0 | 298 | wait(1); |
rpgjake | 0:b7a07b6cf5d0 | 299 | j = pb5; |
rpgjake | 0:b7a07b6cf5d0 | 300 | y = pb8; |
rpgjake | 0:b7a07b6cf5d0 | 301 | keypad = analog2Keypad(&joysttick); |
rpgjake | 0:b7a07b6cf5d0 | 302 | if (y==0){ |
rpgjake | 0:b7a07b6cf5d0 | 303 | state = 3; |
rpgjake | 0:b7a07b6cf5d0 | 304 | return 0; |
rpgjake | 0:b7a07b6cf5d0 | 305 | } |
rpgjake | 0:b7a07b6cf5d0 | 306 | } |
rpgjake | 0:b7a07b6cf5d0 | 307 | switch (keypad) |
rpgjake | 0:b7a07b6cf5d0 | 308 | { |
rpgjake | 0:b7a07b6cf5d0 | 309 | case 1: |
rpgjake | 0:b7a07b6cf5d0 | 310 | { |
rpgjake | 0:b7a07b6cf5d0 | 311 | cursor_x = cursor_x -1; |
rpgjake | 0:b7a07b6cf5d0 | 312 | cursor_y = cursor_y +1; |
rpgjake | 0:b7a07b6cf5d0 | 313 | } |
rpgjake | 0:b7a07b6cf5d0 | 314 | break; |
rpgjake | 0:b7a07b6cf5d0 | 315 | case 2: |
rpgjake | 0:b7a07b6cf5d0 | 316 | { |
rpgjake | 0:b7a07b6cf5d0 | 317 | cursor_y = cursor_y +1; |
rpgjake | 0:b7a07b6cf5d0 | 318 | } |
rpgjake | 0:b7a07b6cf5d0 | 319 | break; |
rpgjake | 0:b7a07b6cf5d0 | 320 | case 3: |
rpgjake | 0:b7a07b6cf5d0 | 321 | { |
rpgjake | 0:b7a07b6cf5d0 | 322 | cursor_x = cursor_x +1; |
rpgjake | 0:b7a07b6cf5d0 | 323 | cursor_y = cursor_y +1; |
rpgjake | 0:b7a07b6cf5d0 | 324 | } |
rpgjake | 0:b7a07b6cf5d0 | 325 | break; |
rpgjake | 0:b7a07b6cf5d0 | 326 | case 4: |
rpgjake | 0:b7a07b6cf5d0 | 327 | { |
rpgjake | 0:b7a07b6cf5d0 | 328 | cursor_x = cursor_x -1; |
rpgjake | 0:b7a07b6cf5d0 | 329 | } |
rpgjake | 0:b7a07b6cf5d0 | 330 | break; |
rpgjake | 0:b7a07b6cf5d0 | 331 | case 5: |
rpgjake | 0:b7a07b6cf5d0 | 332 | break; |
rpgjake | 0:b7a07b6cf5d0 | 333 | case 6: |
rpgjake | 0:b7a07b6cf5d0 | 334 | { |
rpgjake | 0:b7a07b6cf5d0 | 335 | cursor_x = cursor_x +1; |
rpgjake | 0:b7a07b6cf5d0 | 336 | } |
rpgjake | 0:b7a07b6cf5d0 | 337 | break; |
rpgjake | 0:b7a07b6cf5d0 | 338 | case 7: |
rpgjake | 0:b7a07b6cf5d0 | 339 | { |
rpgjake | 0:b7a07b6cf5d0 | 340 | cursor_x = cursor_x -1; |
rpgjake | 0:b7a07b6cf5d0 | 341 | cursor_y = cursor_y -1; |
rpgjake | 0:b7a07b6cf5d0 | 342 | } |
rpgjake | 0:b7a07b6cf5d0 | 343 | break; |
rpgjake | 0:b7a07b6cf5d0 | 344 | case 8: |
rpgjake | 0:b7a07b6cf5d0 | 345 | { |
rpgjake | 0:b7a07b6cf5d0 | 346 | cursor_y = cursor_y -1; |
rpgjake | 0:b7a07b6cf5d0 | 347 | } |
rpgjake | 0:b7a07b6cf5d0 | 348 | break; |
rpgjake | 0:b7a07b6cf5d0 | 349 | case 9: |
rpgjake | 0:b7a07b6cf5d0 | 350 | { |
rpgjake | 0:b7a07b6cf5d0 | 351 | cursor_x = cursor_x + 1; |
rpgjake | 0:b7a07b6cf5d0 | 352 | cursor_y = cursor_y - 1; |
rpgjake | 0:b7a07b6cf5d0 | 353 | } |
rpgjake | 0:b7a07b6cf5d0 | 354 | break; |
rpgjake | 0:b7a07b6cf5d0 | 355 | } |
rpgjake | 0:b7a07b6cf5d0 | 356 | if (cursor_y <0) |
rpgjake | 0:b7a07b6cf5d0 | 357 | cursor_y = 0; |
rpgjake | 0:b7a07b6cf5d0 | 358 | if (cursor_x <0) |
rpgjake | 0:b7a07b6cf5d0 | 359 | cursor_x = 0; |
rpgjake | 0:b7a07b6cf5d0 | 360 | if (cursor_y >7) |
rpgjake | 0:b7a07b6cf5d0 | 361 | cursor_y = 7; |
rpgjake | 0:b7a07b6cf5d0 | 362 | if (cursor_x >7) |
rpgjake | 0:b7a07b6cf5d0 | 363 | cursor_x = 7; |
rpgjake | 0:b7a07b6cf5d0 | 364 | |
rpgjake | 0:b7a07b6cf5d0 | 365 | |
rpgjake | 0:b7a07b6cf5d0 | 366 | if((xlast != cursor_x) || (ylast != cursor_y)){ |
rpgjake | 0:b7a07b6cf5d0 | 367 | person_index = unitsMap1_1[ylast][xlast]; |
rpgjake | 0:b7a07b6cf5d0 | 368 | tile_index = Map1_1[ylast][xlast]; |
rpgjake | 0:b7a07b6cf5d0 | 369 | if (person_index != 0){ |
rpgjake | 0:b7a07b6cf5d0 | 370 | temp_person = person_array[person_index]; |
rpgjake | 0:b7a07b6cf5d0 | 371 | uLCD.set_sector_address(temp_person->job.x, temp_person->job.y); |
rpgjake | 0:b7a07b6cf5d0 | 372 | uLCD.display_image((xlast*16), (ylast*16)); |
rpgjake | 0:b7a07b6cf5d0 | 373 | } |
rpgjake | 0:b7a07b6cf5d0 | 374 | else{ |
rpgjake | 0:b7a07b6cf5d0 | 375 | tile_erased = tile_array[tile_index]; |
rpgjake | 0:b7a07b6cf5d0 | 376 | if (tile_index == 0){ |
rpgjake | 0:b7a07b6cf5d0 | 377 | uLCD.set_sector_address(tile_erased->x, tile_erased->y); |
rpgjake | 0:b7a07b6cf5d0 | 378 | uLCD.display_image(0, 0); |
rpgjake | 0:b7a07b6cf5d0 | 379 | } |
rpgjake | 0:b7a07b6cf5d0 | 380 | else{ |
rpgjake | 0:b7a07b6cf5d0 | 381 | uLCD.set_sector_address(tile_erased->x, tile_erased->y); |
rpgjake | 0:b7a07b6cf5d0 | 382 | uLCD.display_image(xlast*16, ylast*16); |
rpgjake | 0:b7a07b6cf5d0 | 383 | } |
rpgjake | 0:b7a07b6cf5d0 | 384 | } |
rpgjake | 0:b7a07b6cf5d0 | 385 | uLCD.rectangle((cursor_x*16), (cursor_y*16), ((cursor_x*16)+15), ((cursor_y*16)+15), 0x000000); |
rpgjake | 0:b7a07b6cf5d0 | 386 | } |
rpgjake | 0:b7a07b6cf5d0 | 387 | int a = pb5; |
rpgjake | 0:b7a07b6cf5d0 | 388 | //int b = pb6; |
rpgjake | 0:b7a07b6cf5d0 | 389 | int c = pb7; |
rpgjake | 0:b7a07b6cf5d0 | 390 | int d = pb8; |
rpgjake | 0:b7a07b6cf5d0 | 391 | if (pb5 == 0){ |
rpgjake | 0:b7a07b6cf5d0 | 392 | state = 2; |
rpgjake | 0:b7a07b6cf5d0 | 393 | action = 1; |
rpgjake | 0:b7a07b6cf5d0 | 394 | } |
rpgjake | 0:b7a07b6cf5d0 | 395 | //else if (pb6 == 0){ |
rpgjake | 0:b7a07b6cf5d0 | 396 | //state = 3; |
rpgjake | 0:b7a07b6cf5d0 | 397 | //action = 2; |
rpgjake | 0:b7a07b6cf5d0 | 398 | //} |
rpgjake | 0:b7a07b6cf5d0 | 399 | else if (pb7 == 0){ |
rpgjake | 0:b7a07b6cf5d0 | 400 | action = 3; |
rpgjake | 0:b7a07b6cf5d0 | 401 | } |
rpgjake | 0:b7a07b6cf5d0 | 402 | else if (pb8 == 0){ |
rpgjake | 0:b7a07b6cf5d0 | 403 | action = 4; |
rpgjake | 0:b7a07b6cf5d0 | 404 | } |
rpgjake | 0:b7a07b6cf5d0 | 405 | } |
rpgjake | 0:b7a07b6cf5d0 | 406 | if (pb5 == 0){ |
rpgjake | 0:b7a07b6cf5d0 | 407 | state = 2; |
rpgjake | 0:b7a07b6cf5d0 | 408 | action = 1; |
rpgjake | 0:b7a07b6cf5d0 | 409 | } |
rpgjake | 0:b7a07b6cf5d0 | 410 | return action; |
rpgjake | 0:b7a07b6cf5d0 | 411 | } |
rpgjake | 0:b7a07b6cf5d0 | 412 | |
rpgjake | 0:b7a07b6cf5d0 | 413 | |
rpgjake | 0:b7a07b6cf5d0 | 414 | int user_movement(int selection){ |
rpgjake | 0:b7a07b6cf5d0 | 415 | int Index_j; |
rpgjake | 0:b7a07b6cf5d0 | 416 | Index_j = unitsMap1_1[cursor_y][cursor_x]; |
rpgjake | 0:b7a07b6cf5d0 | 417 | person_t* User_person; |
rpgjake | 0:b7a07b6cf5d0 | 418 | if (Index_j == 0){ |
rpgjake | 0:b7a07b6cf5d0 | 419 | state = 4; |
rpgjake | 0:b7a07b6cf5d0 | 420 | return 69; |
rpgjake | 0:b7a07b6cf5d0 | 421 | } |
rpgjake | 0:b7a07b6cf5d0 | 422 | User_person = person_array[Index_j]; |
rpgjake | 0:b7a07b6cf5d0 | 423 | if ((User_person->remain_moves) == 0) |
rpgjake | 0:b7a07b6cf5d0 | 424 | { |
rpgjake | 0:b7a07b6cf5d0 | 425 | state = 0; |
rpgjake | 0:b7a07b6cf5d0 | 426 | return 0; |
rpgjake | 0:b7a07b6cf5d0 | 427 | } |
rpgjake | 0:b7a07b6cf5d0 | 428 | if ((User_person->FoF) != player_turn) |
rpgjake | 0:b7a07b6cf5d0 | 429 | { |
rpgjake | 0:b7a07b6cf5d0 | 430 | state = 0; |
rpgjake | 0:b7a07b6cf5d0 | 431 | return 0; |
rpgjake | 0:b7a07b6cf5d0 | 432 | } |
rpgjake | 0:b7a07b6cf5d0 | 433 | int j = pb7; |
rpgjake | 0:b7a07b6cf5d0 | 434 | int xloc_u = 1; |
rpgjake | 0:b7a07b6cf5d0 | 435 | int yloc_u = 1; |
rpgjake | 0:b7a07b6cf5d0 | 436 | int xlast = 1; |
rpgjake | 0:b7a07b6cf5d0 | 437 | int ylast = 1; |
rpgjake | 0:b7a07b6cf5d0 | 438 | while(j==1){ |
rpgjake | 0:b7a07b6cf5d0 | 439 | j = pb7; |
rpgjake | 0:b7a07b6cf5d0 | 440 | xloc_u = (User_person->xloc); |
rpgjake | 0:b7a07b6cf5d0 | 441 | yloc_u = User_person->yloc; |
rpgjake | 0:b7a07b6cf5d0 | 442 | xlast = User_person->xlast; |
rpgjake | 0:b7a07b6cf5d0 | 443 | ylast = User_person->ylast; |
rpgjake | 0:b7a07b6cf5d0 | 444 | int keypad = 5; |
rpgjake | 0:b7a07b6cf5d0 | 445 | while((keypad == 5)&&(j==1)){ |
rpgjake | 0:b7a07b6cf5d0 | 446 | wait(1); |
rpgjake | 0:b7a07b6cf5d0 | 447 | j = pb7; |
rpgjake | 0:b7a07b6cf5d0 | 448 | keypad = analog2Keypad(&joysttick); |
rpgjake | 0:b7a07b6cf5d0 | 449 | } |
rpgjake | 0:b7a07b6cf5d0 | 450 | switch (keypad) |
rpgjake | 0:b7a07b6cf5d0 | 451 | { |
rpgjake | 0:b7a07b6cf5d0 | 452 | case 1: |
rpgjake | 0:b7a07b6cf5d0 | 453 | xloc_u = xloc_u -1; |
rpgjake | 0:b7a07b6cf5d0 | 454 | yloc_u = yloc_u +1; |
rpgjake | 0:b7a07b6cf5d0 | 455 | break; |
rpgjake | 0:b7a07b6cf5d0 | 456 | case 2: |
rpgjake | 0:b7a07b6cf5d0 | 457 | yloc_u = yloc_u +1; |
rpgjake | 0:b7a07b6cf5d0 | 458 | break; |
rpgjake | 0:b7a07b6cf5d0 | 459 | case 3: |
rpgjake | 0:b7a07b6cf5d0 | 460 | xloc_u = xloc_u +1; |
rpgjake | 0:b7a07b6cf5d0 | 461 | yloc_u = yloc_u +1; |
rpgjake | 0:b7a07b6cf5d0 | 462 | break; |
rpgjake | 0:b7a07b6cf5d0 | 463 | case 4: |
rpgjake | 0:b7a07b6cf5d0 | 464 | xloc_u = xloc_u -1; |
rpgjake | 0:b7a07b6cf5d0 | 465 | break; |
rpgjake | 0:b7a07b6cf5d0 | 466 | case 5: |
rpgjake | 0:b7a07b6cf5d0 | 467 | break; |
rpgjake | 0:b7a07b6cf5d0 | 468 | case 6: |
rpgjake | 0:b7a07b6cf5d0 | 469 | xloc_u = xloc_u +1; |
rpgjake | 0:b7a07b6cf5d0 | 470 | break; |
rpgjake | 0:b7a07b6cf5d0 | 471 | case 7: |
rpgjake | 0:b7a07b6cf5d0 | 472 | xloc_u = xloc_u -1; |
rpgjake | 0:b7a07b6cf5d0 | 473 | yloc_u = yloc_u -1; |
rpgjake | 0:b7a07b6cf5d0 | 474 | break; |
rpgjake | 0:b7a07b6cf5d0 | 475 | case 8: |
rpgjake | 0:b7a07b6cf5d0 | 476 | yloc_u = yloc_u -1; |
rpgjake | 0:b7a07b6cf5d0 | 477 | break; |
rpgjake | 0:b7a07b6cf5d0 | 478 | case 9: |
rpgjake | 0:b7a07b6cf5d0 | 479 | xloc_u = xloc_u + 1; |
rpgjake | 0:b7a07b6cf5d0 | 480 | yloc_u = yloc_u - 1; |
rpgjake | 0:b7a07b6cf5d0 | 481 | break; |
rpgjake | 0:b7a07b6cf5d0 | 482 | } |
rpgjake | 0:b7a07b6cf5d0 | 483 | if (yloc_u <0) |
rpgjake | 0:b7a07b6cf5d0 | 484 | yloc_u = 0; |
rpgjake | 0:b7a07b6cf5d0 | 485 | if (xloc_u <0) |
rpgjake | 0:b7a07b6cf5d0 | 486 | xloc_u = 0; |
rpgjake | 0:b7a07b6cf5d0 | 487 | if (yloc_u >7) |
rpgjake | 0:b7a07b6cf5d0 | 488 | yloc_u = 7; |
rpgjake | 0:b7a07b6cf5d0 | 489 | if (xloc_u >7) |
rpgjake | 0:b7a07b6cf5d0 | 490 | xloc_u = 7; |
rpgjake | 0:b7a07b6cf5d0 | 491 | int x_change = 0; |
rpgjake | 0:b7a07b6cf5d0 | 492 | if (xloc_u != xlast) |
rpgjake | 0:b7a07b6cf5d0 | 493 | x_change = 1; |
rpgjake | 0:b7a07b6cf5d0 | 494 | int y_change = 0; |
rpgjake | 0:b7a07b6cf5d0 | 495 | if (yloc_u != ylast) |
rpgjake | 0:b7a07b6cf5d0 | 496 | y_change = 1; |
rpgjake | 0:b7a07b6cf5d0 | 497 | if (((User_person->remain_moves)-(y_change+x_change))<0){ |
rpgjake | 0:b7a07b6cf5d0 | 498 | xloc_u = xlast; |
rpgjake | 0:b7a07b6cf5d0 | 499 | yloc_u = ylast; |
rpgjake | 0:b7a07b6cf5d0 | 500 | x_change = 0; |
rpgjake | 0:b7a07b6cf5d0 | 501 | y_change = 0; |
rpgjake | 0:b7a07b6cf5d0 | 502 | } |
rpgjake | 0:b7a07b6cf5d0 | 503 | |
rpgjake | 0:b7a07b6cf5d0 | 504 | |
rpgjake | 0:b7a07b6cf5d0 | 505 | int unit_index = unitsMap1_1[yloc_u][xloc_u]; |
rpgjake | 0:b7a07b6cf5d0 | 506 | if (unit_index != 0){ |
rpgjake | 0:b7a07b6cf5d0 | 507 | person_t* target; |
rpgjake | 0:b7a07b6cf5d0 | 508 | target = person_array[unit_index]; |
rpgjake | 0:b7a07b6cf5d0 | 509 | int alliance = target->FoF; |
rpgjake | 0:b7a07b6cf5d0 | 510 | if (alliance ==player_turn){ |
rpgjake | 0:b7a07b6cf5d0 | 511 | m.speed(1.0); |
rpgjake | 0:b7a07b6cf5d0 | 512 | xloc_u = xlast; |
rpgjake | 0:b7a07b6cf5d0 | 513 | yloc_u = ylast; |
rpgjake | 0:b7a07b6cf5d0 | 514 | x_change = 0; |
rpgjake | 0:b7a07b6cf5d0 | 515 | y_change = 0; |
rpgjake | 0:b7a07b6cf5d0 | 516 | wait(1.0); |
rpgjake | 0:b7a07b6cf5d0 | 517 | m.speed(0.0); |
rpgjake | 0:b7a07b6cf5d0 | 518 | } |
rpgjake | 0:b7a07b6cf5d0 | 519 | else if(((xloc_u!=xlast)||(yloc_u!=ylast))&& (alliance != (User_person-> FoF))) |
rpgjake | 0:b7a07b6cf5d0 | 520 | { |
rpgjake | 0:b7a07b6cf5d0 | 521 | combat(User_person, target); |
rpgjake | 0:b7a07b6cf5d0 | 522 | User_person->remain_moves = 0; |
rpgjake | 0:b7a07b6cf5d0 | 523 | state = 0; |
rpgjake | 0:b7a07b6cf5d0 | 524 | return 0; |
rpgjake | 0:b7a07b6cf5d0 | 525 | } |
rpgjake | 0:b7a07b6cf5d0 | 526 | } |
rpgjake | 0:b7a07b6cf5d0 | 527 | int tile_index = Map1_1[yloc_u][xloc_u]; |
rpgjake | 0:b7a07b6cf5d0 | 528 | if (tile_index == 0){ |
rpgjake | 0:b7a07b6cf5d0 | 529 | m.speed(1.0); |
rpgjake | 0:b7a07b6cf5d0 | 530 | xloc_u = xlast; |
rpgjake | 0:b7a07b6cf5d0 | 531 | yloc_u = ylast; |
rpgjake | 0:b7a07b6cf5d0 | 532 | x_change = 0; |
rpgjake | 0:b7a07b6cf5d0 | 533 | y_change = 0; |
rpgjake | 0:b7a07b6cf5d0 | 534 | wait(1.0); |
rpgjake | 0:b7a07b6cf5d0 | 535 | m.speed(0.0); |
rpgjake | 0:b7a07b6cf5d0 | 536 | } |
rpgjake | 0:b7a07b6cf5d0 | 537 | |
rpgjake | 0:b7a07b6cf5d0 | 538 | if((xlast != xloc_u) || (ylast != yloc_u)){ |
rpgjake | 0:b7a07b6cf5d0 | 539 | tile_index = Map1_1[ylast][xlast]; |
rpgjake | 0:b7a07b6cf5d0 | 540 | unitsMap1_1[ylast][xlast] = 0; |
rpgjake | 0:b7a07b6cf5d0 | 541 | unitsMap1_1[yloc_u][xloc_u] = User_person->v; |
rpgjake | 0:b7a07b6cf5d0 | 542 | tiles* tile_erased = tile_array[tile_index]; |
rpgjake | 0:b7a07b6cf5d0 | 543 | if (tile_index == 0){ |
rpgjake | 0:b7a07b6cf5d0 | 544 | uLCD.set_sector_address(tile_erased->x, tile_erased->y); |
rpgjake | 0:b7a07b6cf5d0 | 545 | uLCD.display_image(0, 0); |
rpgjake | 0:b7a07b6cf5d0 | 546 | } |
rpgjake | 0:b7a07b6cf5d0 | 547 | else{ |
rpgjake | 0:b7a07b6cf5d0 | 548 | uLCD.set_sector_address(tile_erased->x, tile_erased->y); |
rpgjake | 0:b7a07b6cf5d0 | 549 | uLCD.display_image(xlast*16, ylast*16); |
rpgjake | 0:b7a07b6cf5d0 | 550 | } |
rpgjake | 0:b7a07b6cf5d0 | 551 | uLCD.set_sector_address(User_person->job.x,User_person->job.y); |
rpgjake | 0:b7a07b6cf5d0 | 552 | User_person->xloc = xloc_u; |
rpgjake | 0:b7a07b6cf5d0 | 553 | User_person->yloc = yloc_u; |
rpgjake | 0:b7a07b6cf5d0 | 554 | User_person->xlast = xloc_u; |
rpgjake | 0:b7a07b6cf5d0 | 555 | User_person->ylast = yloc_u; |
rpgjake | 0:b7a07b6cf5d0 | 556 | User_person->remain_moves = (User_person->remain_moves) - x_change - y_change; |
rpgjake | 0:b7a07b6cf5d0 | 557 | uLCD.display_image(((User_person->xloc)*16), ((User_person->yloc)*16)); |
rpgjake | 0:b7a07b6cf5d0 | 558 | } |
rpgjake | 0:b7a07b6cf5d0 | 559 | } |
rpgjake | 0:b7a07b6cf5d0 | 560 | state = 0; |
rpgjake | 0:b7a07b6cf5d0 | 561 | return 0; |
rpgjake | 0:b7a07b6cf5d0 | 562 | } |
rpgjake | 0:b7a07b6cf5d0 | 563 | |
rpgjake | 0:b7a07b6cf5d0 | 564 | int analog2Keypad(SparkfunAnalogJoystick *joystick) { |
rpgjake | 0:b7a07b6cf5d0 | 565 | if (joystick->distance() > .1) { //not in deadzone, accept input |
rpgjake | 0:b7a07b6cf5d0 | 566 | if ((joystick->angle() > 0.0 && joystick->angle() < 22.5) ||(joystick->angle() > 337.5 && joystick->angle() < 360.0)) { |
rpgjake | 0:b7a07b6cf5d0 | 567 | return 6; |
rpgjake | 0:b7a07b6cf5d0 | 568 | } else if (joystick->angle() >= 22.5 && joystick->angle() < 67.5) { |
rpgjake | 0:b7a07b6cf5d0 | 569 | return 9; |
rpgjake | 0:b7a07b6cf5d0 | 570 | } else if (joystick->angle() >= 67.5 && joystick->angle() < 112.5) { |
rpgjake | 0:b7a07b6cf5d0 | 571 | return 8; |
rpgjake | 0:b7a07b6cf5d0 | 572 | } else if (joystick->angle() >= 112.5 && joystick->angle() < 157.5) { |
rpgjake | 0:b7a07b6cf5d0 | 573 | return 7; |
rpgjake | 0:b7a07b6cf5d0 | 574 | } else if (joystick->angle() >= 157.5 && joystick->angle() < 202.5) { |
rpgjake | 0:b7a07b6cf5d0 | 575 | return 4; |
rpgjake | 0:b7a07b6cf5d0 | 576 | } else if (joystick->angle() >= 202.5 && joystick->angle() < 247.5) { |
rpgjake | 0:b7a07b6cf5d0 | 577 | return 1; |
rpgjake | 0:b7a07b6cf5d0 | 578 | } else if (joystick->angle() >= 247.5 && joystick->angle() < 292.5) { |
rpgjake | 0:b7a07b6cf5d0 | 579 | return 2; |
rpgjake | 0:b7a07b6cf5d0 | 580 | } else if (joystick->angle() >= 292.5 && joystick->angle() < 337.5) { |
rpgjake | 0:b7a07b6cf5d0 | 581 | return 3; |
rpgjake | 0:b7a07b6cf5d0 | 582 | } |
rpgjake | 0:b7a07b6cf5d0 | 583 | } else { |
rpgjake | 0:b7a07b6cf5d0 | 584 | return 5; |
rpgjake | 0:b7a07b6cf5d0 | 585 | } |
rpgjake | 0:b7a07b6cf5d0 | 586 | } |
rpgjake | 0:b7a07b6cf5d0 | 587 | |
rpgjake | 0:b7a07b6cf5d0 | 588 | int combat(person_t* attacker, person_t* defender){ |
rpgjake | 0:b7a07b6cf5d0 | 589 | int d_health = (defender->health)-((attacker->job.damage)-(defender->job.defence)); |
rpgjake | 0:b7a07b6cf5d0 | 590 | int a_health; |
rpgjake | 0:b7a07b6cf5d0 | 591 | if (d_health < (defender->health)) |
rpgjake | 0:b7a07b6cf5d0 | 592 | defender->health = d_health; |
rpgjake | 0:b7a07b6cf5d0 | 593 | if ((defender->health)>0){ |
rpgjake | 0:b7a07b6cf5d0 | 594 | a_health = (defender->health)-(((attacker->job.damage)-(defender->job.defence))/2); |
rpgjake | 0:b7a07b6cf5d0 | 595 | attacker->health = a_health; |
rpgjake | 0:b7a07b6cf5d0 | 596 | } |
rpgjake | 0:b7a07b6cf5d0 | 597 | pc.printf("attacker health %d \n",attacker->health); |
rpgjake | 0:b7a07b6cf5d0 | 598 | pc.printf("defender health %d \n",defender->health); |
rpgjake | 0:b7a07b6cf5d0 | 599 | if ((defender->health)<=0) |
rpgjake | 0:b7a07b6cf5d0 | 600 | kill_unit(defender); |
rpgjake | 0:b7a07b6cf5d0 | 601 | if ((attacker->health)<=0) |
rpgjake | 0:b7a07b6cf5d0 | 602 | kill_unit(attacker); |
rpgjake | 0:b7a07b6cf5d0 | 603 | |
rpgjake | 0:b7a07b6cf5d0 | 604 | |
rpgjake | 0:b7a07b6cf5d0 | 605 | return 0; |
rpgjake | 0:b7a07b6cf5d0 | 606 | } |
rpgjake | 0:b7a07b6cf5d0 | 607 | |
rpgjake | 0:b7a07b6cf5d0 | 608 | void kill_unit(person_t* dead_unit){ |
rpgjake | 0:b7a07b6cf5d0 | 609 | int xloc = dead_unit->xloc; |
rpgjake | 0:b7a07b6cf5d0 | 610 | int yloc = dead_unit->yloc; |
rpgjake | 0:b7a07b6cf5d0 | 611 | unitsMap1_1[yloc][xloc] = 0; |
rpgjake | 0:b7a07b6cf5d0 | 612 | int tile_index = Map1_1[yloc][xloc]; |
rpgjake | 0:b7a07b6cf5d0 | 613 | tiles* tile_dead_spot; |
rpgjake | 0:b7a07b6cf5d0 | 614 | tile_dead_spot = tile_array[tile_index]; |
rpgjake | 0:b7a07b6cf5d0 | 615 | uLCD.set_sector_address(tile_dead_spot->x,tile_dead_spot->y); |
rpgjake | 0:b7a07b6cf5d0 | 616 | uLCD.display_image(((dead_unit->xloc)*16), ((dead_unit->yloc)*16)); |
rpgjake | 0:b7a07b6cf5d0 | 617 | |
rpgjake | 0:b7a07b6cf5d0 | 618 | return; |
rpgjake | 0:b7a07b6cf5d0 | 619 | } |
rpgjake | 0:b7a07b6cf5d0 | 620 |