finished p2-2
Dependencies: mbed wave_player 4DGL-uLCD-SE MMA8452
player.cpp@2:7abebe259d59, 2021-04-26 (annotated)
- Committer:
- levelsnake3
- Date:
- Mon Apr 26 00:30:47 2021 +0000
- Revision:
- 2:7abebe259d59
- Parent:
- 1:05e3f86df6d5
finalAdv;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
DCchico |
0:95264f964374 | 1 | //================================================================= |
DCchico |
0:95264f964374 | 2 | // Implementation for the player module |
DCchico |
0:95264f964374 | 3 | // |
DCchico |
0:95264f964374 | 4 | // Copyright 2020 Georgia Tech. All rights reserved. |
DCchico |
0:95264f964374 | 5 | // The materials provided by the instructor in this course are for |
DCchico |
0:95264f964374 | 6 | // the use of the students currently enrolled in the course. |
DCchico |
0:95264f964374 | 7 | // Copyrighted course materials may not be further disseminated. |
DCchico |
0:95264f964374 | 8 | // This file must not be made publicly available anywhere. |
DCchico |
0:95264f964374 | 9 | //================================================================== |
DCchico |
0:95264f964374 | 10 | #include "player_private.h" |
DCchico |
0:95264f964374 | 11 | |
levelsnake3 | 2:7abebe259d59 | 12 | extern DigitalOut myled1(LED1); |
levelsnake3 | 2:7abebe259d59 | 13 | extern DigitalOut myled2(LED2); |
levelsnake3 | 2:7abebe259d59 | 14 | extern DigitalOut myled3(LED3); |
levelsnake3 | 2:7abebe259d59 | 15 | extern DigitalOut myled4(LED4); |
DCchico |
0:95264f964374 | 16 | PLAYER player; // structure of player |
levelsnake3 | 1:05e3f86df6d5 | 17 | /* |
levelsnake3 | 2:7abebe259d59 | 18 | int id; |
levelsnake3 | 2:7abebe259d59 | 19 | int kPos; |
levelsnake3 | 2:7abebe259d59 | 20 | bool PHK // The knife status: 0->In the air 1->With Player |
levelsnake3 | 1:05e3f86df6d5 | 21 | boundingBox knife_boundingBox; |
levelsnake3 | 2:7abebe259d59 | 22 | int active; |
levelsnake3 | 2:7abebe259d59 | 23 | }KNIFE; |
levelsnake3 | 2:7abebe259d59 | 24 | |
levelsnake3 | 2:7abebe259d59 | 25 | int score; // Current score |
levelsnake3 | 2:7abebe259d59 | 26 | int lives; |
levelsnake3 | 2:7abebe259d59 | 27 | int y; |
levelsnake3 | 2:7abebe259d59 | 28 | KNIFE knife[2]; |
levelsnake3 | 2:7abebe259d59 | 29 | } PLAYER; |
levelsnake3 | 2:7abebe259d59 | 30 | */ |
DCchico |
0:95264f964374 | 31 | |
DCchico |
0:95264f964374 | 32 | PLAYER player_get_info(void){ |
levelsnake3 | 1:05e3f86df6d5 | 33 | return player; |
DCchico |
0:95264f964374 | 34 | } |
levelsnake3 | 2:7abebe259d59 | 35 | int returnMiss(void){ |
levelsnake3 | 2:7abebe259d59 | 36 | return player.misses; |
levelsnake3 | 2:7abebe259d59 | 37 | } |
levelsnake3 | 2:7abebe259d59 | 38 | int returnCK(void){ |
levelsnake3 | 2:7abebe259d59 | 39 | |
levelsnake3 | 2:7abebe259d59 | 40 | if(player.knife[0].PHK == 1) |
levelsnake3 | 2:7abebe259d59 | 41 | { |
levelsnake3 | 2:7abebe259d59 | 42 | return player.knife[0].id; |
levelsnake3 | 2:7abebe259d59 | 43 | } |
levelsnake3 | 2:7abebe259d59 | 44 | else if (player.knife[1].PHK == 1) |
levelsnake3 | 2:7abebe259d59 | 45 | { |
levelsnake3 | 2:7abebe259d59 | 46 | |
levelsnake3 | 2:7abebe259d59 | 47 | return player.knife[1].id; |
levelsnake3 | 2:7abebe259d59 | 48 | } |
levelsnake3 | 2:7abebe259d59 | 49 | return 0; |
levelsnake3 | 2:7abebe259d59 | 50 | } |
levelsnake3 | 2:7abebe259d59 | 51 | int getLives(void){ |
levelsnake3 | 2:7abebe259d59 | 52 | return player.lives; |
levelsnake3 | 2:7abebe259d59 | 53 | } |
levelsnake3 | 2:7abebe259d59 | 54 | bool dead(int n){ |
levelsnake3 | 2:7abebe259d59 | 55 | if((n == 0)&&((player.misses == 7)||(player.lives == 0))) return true; |
levelsnake3 | 2:7abebe259d59 | 56 | else return false; |
levelsnake3 | 2:7abebe259d59 | 57 | } |
levelsnake3 | 2:7abebe259d59 | 58 | void miss(void){ |
levelsnake3 | 2:7abebe259d59 | 59 | player.misses++; |
levelsnake3 | 2:7abebe259d59 | 60 | } |
levelsnake3 | 2:7abebe259d59 | 61 | void hurt(void){ |
levelsnake3 | 2:7abebe259d59 | 62 | player.combo = 1; |
levelsnake3 | 2:7abebe259d59 | 63 | player.lives--; |
levelsnake3 | 2:7abebe259d59 | 64 | if(player.lives == 2) myled3 = 0; |
levelsnake3 | 2:7abebe259d59 | 65 | if (player.lives == 1) myled2 = 0; |
levelsnake3 | 2:7abebe259d59 | 66 | if(player.lives ==0) myled1= 0; |
levelsnake3 | 2:7abebe259d59 | 67 | } |
DCchico |
0:95264f964374 | 68 | |
levelsnake3 | 1:05e3f86df6d5 | 69 | void player_init(void) { |
levelsnake3 | 2:7abebe259d59 | 70 | player.combo = 1; |
levelsnake3 | 2:7abebe259d59 | 71 | player.misses = 0; |
levelsnake3 | 1:05e3f86df6d5 | 72 | player.y = 0; |
levelsnake3 | 1:05e3f86df6d5 | 73 | player.score = 0; |
levelsnake3 | 2:7abebe259d59 | 74 | player.lives = 3; |
levelsnake3 | 2:7abebe259d59 | 75 | |
levelsnake3 | 2:7abebe259d59 | 76 | myled1 =1; |
levelsnake3 | 2:7abebe259d59 | 77 | myled2 = 1; |
levelsnake3 | 2:7abebe259d59 | 78 | myled3 = 1; |
DCchico |
0:95264f964374 | 79 | |
levelsnake3 | 2:7abebe259d59 | 80 | draw_player(0,player.y,0xFFFFFF); |
levelsnake3 | 1:05e3f86df6d5 | 81 | |
levelsnake3 | 2:7abebe259d59 | 82 | knifeInit(0); |
levelsnake3 | 2:7abebe259d59 | 83 | player.knife[1].PHK = 2; |
levelsnake3 | 2:7abebe259d59 | 84 | } |
levelsnake3 | 2:7abebe259d59 | 85 | |
levelsnake3 | 2:7abebe259d59 | 86 | void knifeInit(int n){ |
levelsnake3 | 2:7abebe259d59 | 87 | player.knife[n].id = n+1; |
levelsnake3 | 2:7abebe259d59 | 88 | player.knife[n].kPos = 11; |
levelsnake3 | 2:7abebe259d59 | 89 | player.knife[n].kbb.topLeft.x = 11; |
levelsnake3 | 2:7abebe259d59 | 90 | player.knife[n].kbb.topLeft.y = player.y + 4; |
levelsnake3 | 2:7abebe259d59 | 91 | player.knife[n].kbb.bottomRight.x = 11 + KNIFE_LENGTH; |
levelsnake3 | 2:7abebe259d59 | 92 | player.knife[n].kbb.bottomRight.y = player.y; |
levelsnake3 | 2:7abebe259d59 | 93 | player.knife[n].PHK = 1; |
levelsnake3 | 2:7abebe259d59 | 94 | draw_knife(player.knife[n].kbb); |
levelsnake3 | 2:7abebe259d59 | 95 | |
DCchico |
0:95264f964374 | 96 | } |
DCchico |
0:95264f964374 | 97 | |
DCchico |
0:95264f964374 | 98 | void player_moveUp(void) { |
levelsnake3 | 1:05e3f86df6d5 | 99 | draw_player(0,player.y,0x000000); |
levelsnake3 | 2:7abebe259d59 | 100 | if(returnCK() != 0) draw_nothing(player.knife[returnCK()-1].kbb); |
levelsnake3 | 1:05e3f86df6d5 | 101 | |
levelsnake3 | 1:05e3f86df6d5 | 102 | COMPOST compIn = getTallestComp(); |
levelsnake3 | 1:05e3f86df6d5 | 103 | if(player.y < (110 - compIn.height)){//what is the max height |
levelsnake3 | 1:05e3f86df6d5 | 104 | player.y = player.y + 10; |
levelsnake3 | 2:7abebe259d59 | 105 | if(returnCK() != 0){ |
levelsnake3 | 2:7abebe259d59 | 106 | player.knife[returnCK()-1].kbb.topLeft.y = player.y + 4; |
levelsnake3 | 2:7abebe259d59 | 107 | player.knife[returnCK()-1].kbb.bottomRight.y = player.y; |
levelsnake3 | 1:05e3f86df6d5 | 108 | } |
levelsnake3 | 1:05e3f86df6d5 | 109 | } |
levelsnake3 | 1:05e3f86df6d5 | 110 | draw_player(0,player.y,0xFFFFFF); |
levelsnake3 | 2:7abebe259d59 | 111 | if(returnCK() != 0) draw_knife(player.knife[returnCK()-1].kbb); |
DCchico |
0:95264f964374 | 112 | } |
levelsnake3 | 1:05e3f86df6d5 | 113 | void player_moveDown(void) { |
levelsnake3 | 1:05e3f86df6d5 | 114 | draw_player(0,player.y,0x000000); |
levelsnake3 | 2:7abebe259d59 | 115 | if(returnCK() != 0) draw_nothing(player.knife[returnCK()-1].kbb); |
DCchico |
0:95264f964374 | 116 | |
levelsnake3 | 1:05e3f86df6d5 | 117 | if(player.y > 0){ |
levelsnake3 | 1:05e3f86df6d5 | 118 | player.y = player.y - 10; |
levelsnake3 | 1:05e3f86df6d5 | 119 | |
levelsnake3 | 2:7abebe259d59 | 120 | if(returnCK() != 0){ |
levelsnake3 | 2:7abebe259d59 | 121 | player.knife[returnCK()-1].kbb.topLeft.y = player.y + 4; |
levelsnake3 | 2:7abebe259d59 | 122 | player.knife[returnCK()-1].kbb.bottomRight.y = player.y; |
levelsnake3 | 1:05e3f86df6d5 | 123 | } |
levelsnake3 | 1:05e3f86df6d5 | 124 | } |
levelsnake3 | 1:05e3f86df6d5 | 125 | draw_player(0,player.y,0xFFFFFF); |
levelsnake3 | 2:7abebe259d59 | 126 | if(returnCK() != 0) draw_knife(player.knife[returnCK()-1].kbb); |
levelsnake3 | 2:7abebe259d59 | 127 | } |
levelsnake3 | 1:05e3f86df6d5 | 128 | |
levelsnake3 | 2:7abebe259d59 | 129 | void doReturnK(int n, int m){ |
levelsnake3 | 2:7abebe259d59 | 130 | draw_nothing(player.knife[n].kbb); |
levelsnake3 | 2:7abebe259d59 | 131 | player.knife[n].PHK = 2; |
levelsnake3 | 2:7abebe259d59 | 132 | player.knife[n].kPos = 0; |
levelsnake3 | 2:7abebe259d59 | 133 | if(m == 1){ |
levelsnake3 | 2:7abebe259d59 | 134 | miss(); |
levelsnake3 | 2:7abebe259d59 | 135 | player.combo = 1; |
levelsnake3 | 2:7abebe259d59 | 136 | } |
levelsnake3 | 2:7abebe259d59 | 137 | if((player.knife[0].PHK == 2)&&(player.knife[1].PHK == 2)) knifeInit(0); |
levelsnake3 | 2:7abebe259d59 | 138 | pc.printf("THHHHHHHHHHHHHHHHHHHISHSIHSIHSIHSIH %d\n\n\n",player.combo); |
DCchico |
0:95264f964374 | 139 | } |
DCchico |
0:95264f964374 | 140 | void player_throw(void) { |
levelsnake3 | 2:7abebe259d59 | 141 | |
levelsnake3 | 2:7abebe259d59 | 142 | if(returnCK() != 0){//checkning which knife should be thrown |
levelsnake3 | 2:7abebe259d59 | 143 | |
levelsnake3 | 2:7abebe259d59 | 144 | player.knife[returnCK()-1].PHK = 0; |
levelsnake3 | 1:05e3f86df6d5 | 145 | } |
DCchico |
0:95264f964374 | 146 | } |
levelsnake3 | 2:7abebe259d59 | 147 | void player_knife_draw(void) { |
levelsnake3 | 2:7abebe259d59 | 148 | if(player.knife[0].PHK == 0 && player.knife[0].kPos+6 < 120){//what is the max height |
levelsnake3 | 2:7abebe259d59 | 149 | draw_nothing(player.knife[0].kbb); |
levelsnake3 | 2:7abebe259d59 | 150 | |
levelsnake3 | 2:7abebe259d59 | 151 | player.knife[0].kPos = player.knife[0].kPos + 5 ; |
levelsnake3 | 2:7abebe259d59 | 152 | player.knife[0].kbb.topLeft.x = player.knife[0].kPos; |
levelsnake3 | 2:7abebe259d59 | 153 | player.knife[0].kbb.bottomRight.x = player.knife[0].kPos + KNIFE_LENGTH; |
levelsnake3 | 1:05e3f86df6d5 | 154 | |
levelsnake3 | 2:7abebe259d59 | 155 | draw_knife(player.knife[0].kbb); |
levelsnake3 | 2:7abebe259d59 | 156 | } |
levelsnake3 | 2:7abebe259d59 | 157 | else if(player.knife[0].kPos+6 >= 120){ |
levelsnake3 | 2:7abebe259d59 | 158 | doReturnK(0,1); |
levelsnake3 | 2:7abebe259d59 | 159 | } |
levelsnake3 | 2:7abebe259d59 | 160 | if((player.knife[1].PHK == 2)&&(player.knife[0].kPos+6 >= 60)){ |
levelsnake3 | 2:7abebe259d59 | 161 | knifeInit(1); |
levelsnake3 | 2:7abebe259d59 | 162 | |
levelsnake3 | 1:05e3f86df6d5 | 163 | |
levelsnake3 | 1:05e3f86df6d5 | 164 | } |
levelsnake3 | 2:7abebe259d59 | 165 | if(player.knife[1].PHK == 0 && player.knife[1].kPos+6 < 120){//what is the max height |
levelsnake3 | 2:7abebe259d59 | 166 | |
levelsnake3 | 2:7abebe259d59 | 167 | draw_nothing(player.knife[1].kbb); |
levelsnake3 | 2:7abebe259d59 | 168 | |
levelsnake3 | 2:7abebe259d59 | 169 | player.knife[1].kPos = player.knife[1].kPos + 5 ; |
levelsnake3 | 2:7abebe259d59 | 170 | player.knife[1].kbb.topLeft.x = player.knife[1].kPos; |
levelsnake3 | 2:7abebe259d59 | 171 | player.knife[1].kbb.bottomRight.x = player.knife[1].kPos + KNIFE_LENGTH; |
levelsnake3 | 2:7abebe259d59 | 172 | |
levelsnake3 | 2:7abebe259d59 | 173 | draw_knife(player.knife[1].kbb); |
levelsnake3 | 2:7abebe259d59 | 174 | } |
levelsnake3 | 2:7abebe259d59 | 175 | else if(player.knife[1].kPos+6 >= 120){ |
levelsnake3 | 2:7abebe259d59 | 176 | doReturnK(1,1); |
levelsnake3 | 2:7abebe259d59 | 177 | } |
levelsnake3 | 2:7abebe259d59 | 178 | if((player.knife[0].PHK == 2)&&(player.knife[1].kPos+6 >= 60)){ |
levelsnake3 | 2:7abebe259d59 | 179 | |
levelsnake3 | 2:7abebe259d59 | 180 | knifeInit(0); |
levelsnake3 | 2:7abebe259d59 | 181 | |
levelsnake3 | 1:05e3f86df6d5 | 182 | } |
levelsnake3 | 1:05e3f86df6d5 | 183 | } |
levelsnake3 | 2:7abebe259d59 | 184 | |
DCchico |
0:95264f964374 | 185 | |
levelsnake3 | 2:7abebe259d59 | 186 | KNIFE getKnifeInfo(int n){ |
levelsnake3 | 2:7abebe259d59 | 187 | return player.knife[n]; |
DCchico |
0:95264f964374 | 188 | } |
DCchico |
0:95264f964374 | 189 | |
DCchico |
0:95264f964374 | 190 | // ==== player_private.h implementation ==== |
DCchico |
0:95264f964374 | 191 | |
levelsnake3 | 2:7abebe259d59 | 192 | void player_score_inc(int n) { |
levelsnake3 | 2:7abebe259d59 | 193 | |
levelsnake3 | 2:7abebe259d59 | 194 | pc.printf("THHHHHHHHHHHHfffffffffffffffffffffIHSIHSIH %d\n\n\n",player.combo); |
levelsnake3 | 2:7abebe259d59 | 195 | player.score = player.score + player.combo; |
levelsnake3 | 2:7abebe259d59 | 196 | if(n == 1) player.combo++; |
DCchico |
0:95264f964374 | 197 | } |