finished p2-2

Dependencies:   mbed wave_player 4DGL-uLCD-SE MMA8452

Committer:
levelsnake3
Date:
Mon Apr 26 00:30:47 2021 +0000
Revision:
2:7abebe259d59
Parent:
1:05e3f86df6d5
finalAdv;

Who changed what in which revision?

UserRevisionLine numberNew 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 }