ECE2035 Project 2

Dependencies:   mbed mbed-rtos SDFileSystem

Committer:
kwengryn3
Date:
Fri Apr 09 13:49:01 2021 +0000
Revision:
7:95db0d89fbac
Parent:
5:b9b7993823e1
Child:
9:f1d34ef049c5
p2-2;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kwengryn3 0:bff8b9020128 1 //=================================================================
kwengryn3 0:bff8b9020128 2 // Implementation for the player module
kwengryn3 0:bff8b9020128 3 //
kwengryn3 0:bff8b9020128 4 // Copyright 2020 Georgia Tech. All rights reserved.
kwengryn3 0:bff8b9020128 5 // The materials provided by the instructor in this course are for
kwengryn3 0:bff8b9020128 6 // the use of the students currently enrolled in the course.
kwengryn3 0:bff8b9020128 7 // Copyrighted course materials may not be further disseminated.
kwengryn3 0:bff8b9020128 8 // This file must not be made publicly available anywhere.
kwengryn3 0:bff8b9020128 9 //==================================================================
kwengryn3 0:bff8b9020128 10 #include "player_private.h"
kwengryn3 0:bff8b9020128 11 #include "globals.h"
kwengryn3 7:95db0d89fbac 12 #include "compost_pile_public.h";
kwengryn3 0:bff8b9020128 13 #define X 0xFFFFFF //WHITE
kwengryn3 0:bff8b9020128 14 #define PLAYER_WIDTH 15
kwengryn3 0:bff8b9020128 15 #define KNIFE_HEIGHT 2
kwengryn3 0:bff8b9020128 16 #define KNIFE_WIDTH 12
kwengryn3 0:bff8b9020128 17 #define _ 0x000000 //BLACK
kwengryn3 0:bff8b9020128 18
kwengryn3 0:bff8b9020128 19 PLAYER player; // structure of player
kwengryn3 0:bff8b9020128 20
kwengryn3 0:bff8b9020128 21
kwengryn3 0:bff8b9020128 22 int player_sprite[PLAYER_HEIGHT * PLAYER_WIDTH] = {
kwengryn3 0:bff8b9020128 23 X,X,X,X,X,X,_,_,_,_,_,_,_,_,_,
kwengryn3 0:bff8b9020128 24 X,_,_,_,X,X,X,_,_,_,_,_,_,_,_,
kwengryn3 0:bff8b9020128 25 X,_,_,_,_,X,X,X,_,_,_,_,_,_,_,
kwengryn3 0:bff8b9020128 26 X,_,_,_,_,_,X,X,X,_,_,_,_,_,_,
kwengryn3 0:bff8b9020128 27 X,_,_,_,_,_,_,X,X,_,_,_,_,_,_,
kwengryn3 0:bff8b9020128 28 X,_,_,_,_,_,_,X,X,X,_,_,_,_,_,
kwengryn3 0:bff8b9020128 29 X,_,_,_,_,_,_,_,X,X,_,_,_,_,_,
kwengryn3 0:bff8b9020128 30 X,_,_,_,_,_,_,_,X,X,_,_,_,_,_,
kwengryn3 0:bff8b9020128 31 X,_,_,_,_,_,_,X,X,X,_,_,_,_,_,
kwengryn3 0:bff8b9020128 32 X,_,_,_,_,_,_,X,X,_,_,_,_,_,_,
kwengryn3 0:bff8b9020128 33 X,_,_,_,_,_,X,X,X,_,_,_,_,_,_,
kwengryn3 0:bff8b9020128 34 X,_,_,_,_,X,X,X,_,_,_,_,_,_,_,
kwengryn3 0:bff8b9020128 35 X,_,_,_,X,X,X,_,_,_,_,_,_,_,_,
kwengryn3 0:bff8b9020128 36 X,X,X,X,X,X,_,_,_,_,_,_,_,_,_,
kwengryn3 0:bff8b9020128 37 };
kwengryn3 0:bff8b9020128 38
kwengryn3 0:bff8b9020128 39 int player_mask[PLAYER_HEIGHT * PLAYER_WIDTH] = {
kwengryn3 0:bff8b9020128 40 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
kwengryn3 0:bff8b9020128 41 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
kwengryn3 0:bff8b9020128 42 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
kwengryn3 0:bff8b9020128 43 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
kwengryn3 0:bff8b9020128 44 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
kwengryn3 0:bff8b9020128 45 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
kwengryn3 0:bff8b9020128 46 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
kwengryn3 0:bff8b9020128 47 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
kwengryn3 0:bff8b9020128 48 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
kwengryn3 0:bff8b9020128 49 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
kwengryn3 0:bff8b9020128 50 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
kwengryn3 0:bff8b9020128 51 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
kwengryn3 0:bff8b9020128 52 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
kwengryn3 0:bff8b9020128 53 _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
kwengryn3 0:bff8b9020128 54
kwengryn3 0:bff8b9020128 55 };
kwengryn3 0:bff8b9020128 56
kwengryn3 0:bff8b9020128 57 int knife_sprite[KNIFE_HEIGHT * KNIFE_WIDTH] = {
kwengryn3 0:bff8b9020128 58 X,X,X,X,X,X,X,X,X,X,X,X,
kwengryn3 0:bff8b9020128 59 X,X,X,X,X,X,X,X,X,X,X,X,
kwengryn3 0:bff8b9020128 60
kwengryn3 0:bff8b9020128 61 };
kwengryn3 0:bff8b9020128 62
kwengryn3 0:bff8b9020128 63 int knife_mask[KNIFE_HEIGHT * KNIFE_WIDTH] = {
kwengryn3 0:bff8b9020128 64 _,_,_,_,_,_,_,_,_,_,_,_,
kwengryn3 0:bff8b9020128 65 _,_,_,_,_,_,_,_,_,_,_,_,
kwengryn3 0:bff8b9020128 66
kwengryn3 0:bff8b9020128 67 };
kwengryn3 0:bff8b9020128 68
kwengryn3 0:bff8b9020128 69
kwengryn3 0:bff8b9020128 70
kwengryn3 0:bff8b9020128 71
kwengryn3 0:bff8b9020128 72 PLAYER player_get_info(void){
kwengryn3 0:bff8b9020128 73 return player;
kwengryn3 0:bff8b9020128 74 }
kwengryn3 0:bff8b9020128 75
kwengryn3 0:bff8b9020128 76 void player_init(void) {
kwengryn3 0:bff8b9020128 77
kwengryn3 0:bff8b9020128 78 player.score = 0;
kwengryn3 0:bff8b9020128 79 player.height = PLAYER_HEIGHT;
kwengryn3 0:bff8b9020128 80 player.y = 0;
kwengryn3 0:bff8b9020128 81 player.player_has_knife = true;
kwengryn3 0:bff8b9020128 82 player.knife_length = KNIFE_WIDTH;
kwengryn3 0:bff8b9020128 83
kwengryn3 0:bff8b9020128 84 point topLeftP;
kwengryn3 0:bff8b9020128 85 point bottomRightP;
kwengryn3 0:bff8b9020128 86 topLeftP.x = 0;
kwengryn3 0:bff8b9020128 87 topLeftP.y = player.y + 6;
kwengryn3 0:bff8b9020128 88 bottomRightP.x = 12;
kwengryn3 0:bff8b9020128 89 bottomRightP.y = player.y + 7;
kwengryn3 0:bff8b9020128 90
kwengryn3 0:bff8b9020128 91 boundingBox knifeBox;
kwengryn3 0:bff8b9020128 92 knifeBox.topLeft = topLeftP;
kwengryn3 0:bff8b9020128 93 knifeBox.bottomRight = bottomRightP;
kwengryn3 0:bff8b9020128 94 player.knife_boundingBox = knifeBox;
kwengryn3 0:bff8b9020128 95
kwengryn3 0:bff8b9020128 96 player_draw(0xFFFFFF);
kwengryn3 0:bff8b9020128 97 player_knife_draw();
kwengryn3 0:bff8b9020128 98
kwengryn3 0:bff8b9020128 99 }
kwengryn3 0:bff8b9020128 100
kwengryn3 0:bff8b9020128 101 void player_move(double x_acc) {
kwengryn3 0:bff8b9020128 102 int y_pos;
kwengryn3 0:bff8b9020128 103 y_pos = player.y + (-1 * x_acc * 20);
kwengryn3 0:bff8b9020128 104 if (y_pos < 10) {
kwengryn3 0:bff8b9020128 105 y_pos = 10;
kwengryn3 0:bff8b9020128 106 }
kwengryn3 7:95db0d89fbac 107 if (y_pos > 112 - (get_compost_tallest_height() * 11)) {
kwengryn3 7:95db0d89fbac 108 y_pos = 112 - (get_compost_tallest_height() * 11);
kwengryn3 0:bff8b9020128 109 }
kwengryn3 0:bff8b9020128 110 int y_prev = player.y;
kwengryn3 0:bff8b9020128 111 player.y = y_pos;
kwengryn3 0:bff8b9020128 112 uLCD.BLIT(0,y_prev, PLAYER_WIDTH, PLAYER_HEIGHT, player_mask);
kwengryn3 0:bff8b9020128 113 uLCD.BLIT(0,y_pos, PLAYER_WIDTH, PLAYER_HEIGHT, player_sprite);
kwengryn3 0:bff8b9020128 114
kwengryn3 0:bff8b9020128 115 if (player.player_has_knife) {
kwengryn3 0:bff8b9020128 116 uLCD.BLIT(0, y_prev + 6, KNIFE_WIDTH, KNIFE_HEIGHT, knife_mask);
kwengryn3 0:bff8b9020128 117 uLCD.BLIT(0, y_pos + 6, KNIFE_WIDTH, KNIFE_HEIGHT, knife_sprite);
kwengryn3 0:bff8b9020128 118
kwengryn3 0:bff8b9020128 119 player.knife_boundingBox.topLeft.y = y_pos + 6;
kwengryn3 0:bff8b9020128 120 player.knife_boundingBox.bottomRight.y = y_pos + 7;
kwengryn3 5:b9b7993823e1 121 player.knife_boundingBox.topLeft.x = 0;
kwengryn3 5:b9b7993823e1 122 player.knife_boundingBox.bottomRight.x = 11;
kwengryn3 0:bff8b9020128 123
kwengryn3 0:bff8b9020128 124
kwengryn3 0:bff8b9020128 125 } else {
kwengryn3 0:bff8b9020128 126 point currTopLeft = player.knife_boundingBox.topLeft;
kwengryn3 0:bff8b9020128 127
kwengryn3 5:b9b7993823e1 128 player.knife_boundingBox.topLeft.x += 4;
kwengryn3 5:b9b7993823e1 129 player.knife_boundingBox.bottomRight.x += 4;
kwengryn3 0:bff8b9020128 130
kwengryn3 0:bff8b9020128 131 if (player.knife_boundingBox.bottomRight.x >= 125) {
kwengryn3 0:bff8b9020128 132 player.player_has_knife = true;
kwengryn3 0:bff8b9020128 133 uLCD.BLIT(currTopLeft.x, currTopLeft.y, KNIFE_WIDTH, KNIFE_HEIGHT, knife_mask);
kwengryn3 0:bff8b9020128 134 uLCD.BLIT(0, y_pos + 6, KNIFE_WIDTH, KNIFE_HEIGHT, knife_sprite);
kwengryn3 0:bff8b9020128 135 player.knife_boundingBox.topLeft.y = y_pos + 6;
kwengryn3 0:bff8b9020128 136 player.knife_boundingBox.bottomRight.y = y_pos + 7;
kwengryn3 0:bff8b9020128 137 player.knife_boundingBox.topLeft.x = 0;
kwengryn3 0:bff8b9020128 138 player.knife_boundingBox.bottomRight.x = 12;
kwengryn3 0:bff8b9020128 139
kwengryn3 0:bff8b9020128 140 } else {
kwengryn3 0:bff8b9020128 141 uLCD.BLIT(currTopLeft.x, currTopLeft.y, KNIFE_WIDTH, KNIFE_HEIGHT, knife_mask);
kwengryn3 0:bff8b9020128 142 uLCD.BLIT(player.knife_boundingBox.topLeft.x, currTopLeft.y, KNIFE_WIDTH, KNIFE_HEIGHT, knife_sprite);
kwengryn3 0:bff8b9020128 143 }
kwengryn3 0:bff8b9020128 144
kwengryn3 0:bff8b9020128 145
kwengryn3 0:bff8b9020128 146 }
kwengryn3 0:bff8b9020128 147
kwengryn3 0:bff8b9020128 148
kwengryn3 0:bff8b9020128 149
kwengryn3 0:bff8b9020128 150
kwengryn3 0:bff8b9020128 151 }
kwengryn3 0:bff8b9020128 152
kwengryn3 0:bff8b9020128 153 void player_moveDown(void) {
kwengryn3 0:bff8b9020128 154
kwengryn3 0:bff8b9020128 155 }
kwengryn3 0:bff8b9020128 156
kwengryn3 0:bff8b9020128 157 void player_throw(void) {
kwengryn3 0:bff8b9020128 158 if (player.player_has_knife) {
kwengryn3 0:bff8b9020128 159 player.player_has_knife = false;
kwengryn3 0:bff8b9020128 160 }
kwengryn3 0:bff8b9020128 161 }
kwengryn3 0:bff8b9020128 162
kwengryn3 0:bff8b9020128 163 void player_knife_draw(void) {
kwengryn3 0:bff8b9020128 164 uLCD.BLIT(0, player.y + 6, KNIFE_WIDTH, KNIFE_HEIGHT, knife_sprite);
kwengryn3 0:bff8b9020128 165
kwengryn3 0:bff8b9020128 166 }
kwengryn3 0:bff8b9020128 167
kwengryn3 0:bff8b9020128 168 void player_knife_return(void) {
kwengryn3 5:b9b7993823e1 169 player.player_has_knife = true;
kwengryn3 5:b9b7993823e1 170 uLCD.BLIT(player.knife_boundingBox.topLeft.x, player.knife_boundingBox.topLeft.y, KNIFE_WIDTH, KNIFE_HEIGHT, knife_mask);
kwengryn3 5:b9b7993823e1 171 player.knife_boundingBox.topLeft.x = 0;
kwengryn3 5:b9b7993823e1 172 player.knife_boundingBox.topLeft.y = player.y + 6;
kwengryn3 0:bff8b9020128 173
kwengryn3 0:bff8b9020128 174 }
kwengryn3 0:bff8b9020128 175
kwengryn3 0:bff8b9020128 176 // ==== player_private.h implementation ====
kwengryn3 0:bff8b9020128 177 void player_draw(int color) {
kwengryn3 0:bff8b9020128 178 uLCD.BLIT(0, player.y, PLAYER_WIDTH, PLAYER_HEIGHT, player_sprite);
kwengryn3 0:bff8b9020128 179 }
kwengryn3 0:bff8b9020128 180
kwengryn3 0:bff8b9020128 181 void player_score_inc(void) {
kwengryn3 0:bff8b9020128 182
kwengryn3 0:bff8b9020128 183 }