ECE2035 Project 2
Dependencies: mbed mbed-rtos SDFileSystem
compost_pile.cpp@10:1994adcfc86f, 2021-04-20 (annotated)
- Committer:
- kwengryn3
- Date:
- Tue Apr 20 18:15:22 2021 +0000
- Revision:
- 10:1994adcfc86f
- Parent:
- 9:f1d34ef049c5
adv features
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kwengryn3 | 0:bff8b9020128 | 1 | //================================================================= |
kwengryn3 | 0:bff8b9020128 | 2 | // The file is for module "compost pile" |
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 | |
kwengryn3 | 0:bff8b9020128 | 11 | #include "compost_pile_private.h" |
kwengryn3 | 5:b9b7993823e1 | 12 | #define MAX_PILE_HEIGHT 4 |
kwengryn3 | 5:b9b7993823e1 | 13 | #include "globals.h" |
kwengryn3 | 5:b9b7993823e1 | 14 | #include "graphics.h" |
kwengryn3 | 4:8e15742ebcc6 | 15 | |
kwengryn3 | 5:b9b7993823e1 | 16 | COMPOST compost_record[NUM_PILE]; |
kwengryn3 | 5:b9b7993823e1 | 17 | int tallest_pile_height; |
kwengryn3 | 5:b9b7993823e1 | 18 | |
kwengryn3 | 5:b9b7993823e1 | 19 | |
kwengryn3 | 5:b9b7993823e1 | 20 | |
kwengryn3 | 0:bff8b9020128 | 21 | |
kwengryn3 | 0:bff8b9020128 | 22 | |
kwengryn3 | 0:bff8b9020128 | 23 | // See the comments in compost_pile_public.h |
kwengryn3 | 0:bff8b9020128 | 24 | void compost_pile_init() { |
kwengryn3 | 5:b9b7993823e1 | 25 | int x = 0; |
kwengryn3 | 4:8e15742ebcc6 | 26 | for (int i = 0; i < NUM_PILE; i++) { |
kwengryn3 | 5:b9b7993823e1 | 27 | compost_record[i].width = PILE_WIDTH; |
kwengryn3 | 5:b9b7993823e1 | 28 | compost_record[i].height = 0; |
kwengryn3 | 5:b9b7993823e1 | 29 | compost_record[i].box.topLeft.x = x; |
kwengryn3 | 5:b9b7993823e1 | 30 | compost_record[i].box.topLeft.y = 127; |
kwengryn3 | 5:b9b7993823e1 | 31 | compost_record[i].box.bottomRight.x = x + PILE_WIDTH; |
kwengryn3 | 5:b9b7993823e1 | 32 | compost_record[i].box.bottomRight.y = 127; |
kwengryn3 | 5:b9b7993823e1 | 33 | //pc.printf("(%d, %d)\n",compost_record[i].box.bottomRight.x, 127); |
kwengryn3 | 5:b9b7993823e1 | 34 | x += PILE_WIDTH + 1; |
kwengryn3 | 4:8e15742ebcc6 | 35 | } |
kwengryn3 | 5:b9b7993823e1 | 36 | tallest_pile_height = 0; |
kwengryn3 | 5:b9b7993823e1 | 37 | draw_compost(); |
kwengryn3 | 5:b9b7993823e1 | 38 | |
kwengryn3 | 4:8e15742ebcc6 | 39 | |
kwengryn3 | 0:bff8b9020128 | 40 | |
kwengryn3 | 0:bff8b9020128 | 41 | } |
kwengryn3 | 0:bff8b9020128 | 42 | |
kwengryn3 | 5:b9b7993823e1 | 43 | COMPOST compost_get_info(int index){ |
kwengryn3 | 4:8e15742ebcc6 | 44 | return compost_record[index]; |
kwengryn3 | 0:bff8b9020128 | 45 | } |
kwengryn3 | 0:bff8b9020128 | 46 | |
kwengryn3 | 5:b9b7993823e1 | 47 | int get_num_piles() { |
kwengryn3 | 5:b9b7993823e1 | 48 | return NUM_PILE; |
kwengryn3 | 5:b9b7993823e1 | 49 | } |
kwengryn3 | 5:b9b7993823e1 | 50 | |
kwengryn3 | 0:bff8b9020128 | 51 | void compost_add(int index) { |
kwengryn3 | 5:b9b7993823e1 | 52 | compost_record[index].height++; |
kwengryn3 | 5:b9b7993823e1 | 53 | compost_record[index].box.topLeft.y = 127 - (PILE_WIDTH * compost_record[index].height); |
kwengryn3 | 5:b9b7993823e1 | 54 | if (compost_record[index].height > tallest_pile_height) { |
kwengryn3 | 5:b9b7993823e1 | 55 | tallest_pile_height = compost_record[index].height; |
kwengryn3 | 4:8e15742ebcc6 | 56 | } |
kwengryn3 | 0:bff8b9020128 | 57 | |
kwengryn3 | 0:bff8b9020128 | 58 | } |
kwengryn3 | 0:bff8b9020128 | 59 | |
kwengryn3 | 5:b9b7993823e1 | 60 | void draw_compost(){ |
kwengryn3 | 5:b9b7993823e1 | 61 | for (int i = 0; i < NUM_PILE; i++) { |
kwengryn3 | 5:b9b7993823e1 | 62 | uLCD.filled_rectangle(compost_record[i].box.topLeft.x, compost_record[i].box.topLeft.y, compost_record[i].box.bottomRight.x, compost_record[i].box.bottomRight.y, COMPOST_COLOR); |
kwengryn3 | 5:b9b7993823e1 | 63 | } |
kwengryn3 | 5:b9b7993823e1 | 64 | |
kwengryn3 | 5:b9b7993823e1 | 65 | } |
kwengryn3 | 5:b9b7993823e1 | 66 | |
kwengryn3 | 0:bff8b9020128 | 67 | int get_compost_tallest_height() { |
kwengryn3 | 5:b9b7993823e1 | 68 | return tallest_pile_height; |
kwengryn3 | 0:bff8b9020128 | 69 | |
kwengryn3 | 0:bff8b9020128 | 70 | } |
kwengryn3 | 0:bff8b9020128 | 71 | |
kwengryn3 | 0:bff8b9020128 | 72 | int get_compost_height(int index) { |
kwengryn3 | 5:b9b7993823e1 | 73 | return compost_record[index].height; |
kwengryn3 | 4:8e15742ebcc6 | 74 | } |
kwengryn3 | 0:bff8b9020128 | 75 | |
kwengryn3 | 5:b9b7993823e1 | 76 | bool check_overflow() { |
kwengryn3 | 5:b9b7993823e1 | 77 | return (tallest_pile_height > MAX_PILE_HEIGHT); |
kwengryn3 | 5:b9b7993823e1 | 78 | |
kwengryn3 | 5:b9b7993823e1 | 79 | } |
kwengryn3 | 5:b9b7993823e1 | 80 | |
kwengryn3 | 9:f1d34ef049c5 | 81 | void remove_tallest_pile() { |
kwengryn3 | 9:f1d34ef049c5 | 82 | int new_tallest = 0; |
kwengryn3 | 9:f1d34ef049c5 | 83 | for (int i = 0; i < NUM_PILE; i++) { |
kwengryn3 | 9:f1d34ef049c5 | 84 | if (get_compost_height(i) == tallest_pile_height) { |
kwengryn3 | 9:f1d34ef049c5 | 85 | uLCD.filled_rectangle(compost_record[i].box.topLeft.x, compost_record[i].box.topLeft.y, compost_record[i].box.bottomRight.x, compost_record[i].box.bottomRight.y, BLACK); |
kwengryn3 | 9:f1d34ef049c5 | 86 | compost_record[i].height = 0; |
kwengryn3 | 9:f1d34ef049c5 | 87 | compost_record[i].box.topLeft.y = 127; |
kwengryn3 | 9:f1d34ef049c5 | 88 | } |
kwengryn3 | 9:f1d34ef049c5 | 89 | |
kwengryn3 | 9:f1d34ef049c5 | 90 | if (compost_record[i].height > new_tallest) { |
kwengryn3 | 9:f1d34ef049c5 | 91 | new_tallest = compost_record[i].height; |
kwengryn3 | 9:f1d34ef049c5 | 92 | } |
kwengryn3 | 9:f1d34ef049c5 | 93 | } |
kwengryn3 | 9:f1d34ef049c5 | 94 | |
kwengryn3 | 9:f1d34ef049c5 | 95 | tallest_pile_height = new_tallest; |
kwengryn3 | 9:f1d34ef049c5 | 96 | |
kwengryn3 | 9:f1d34ef049c5 | 97 | |
kwengryn3 | 9:f1d34ef049c5 | 98 | } |
kwengryn3 | 9:f1d34ef049c5 | 99 |