Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Fork of el17zl by
Ppl/Ppl.cpp@13:5930f0e5889d, 2019-04-30 (annotated)
- Committer:
- franklzw
- Date:
- Tue Apr 30 09:58:30 2019 +0000
- Revision:
- 13:5930f0e5889d
- Parent:
- 8:83891ea9a5d9
most of the class, detial with doxygen comments
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| franklzw | 3:9fa31396d89d | 1 | #include "Ppl.h" |
| franklzw | 3:9fa31396d89d | 2 | |
| franklzw | 3:9fa31396d89d | 3 | const int ppl[8][8]= { |
| franklzw | 3:9fa31396d89d | 4 | {0,0,0,0,1,1,1,0}, |
| franklzw | 3:9fa31396d89d | 5 | {0,0,0,0,1,0,1,0}, |
| franklzw | 3:9fa31396d89d | 6 | {0,0,0,0,1,1,1,0}, |
| franklzw | 3:9fa31396d89d | 7 | {1,0,0,0,0,1,0,0}, |
| franklzw | 3:9fa31396d89d | 8 | {0,1,1,0,0,1,0,0}, |
| franklzw | 3:9fa31396d89d | 9 | {0,0,0,1,1,1,0,0}, |
| franklzw | 3:9fa31396d89d | 10 | {0,0,0,0,0,1,0,0}, |
| franklzw | 3:9fa31396d89d | 11 | {0,0,0,1,1,0,1,1}, |
| franklzw | 3:9fa31396d89d | 12 | |
| franklzw | 3:9fa31396d89d | 13 | }; |
| franklzw | 3:9fa31396d89d | 14 | |
| franklzw | 3:9fa31396d89d | 15 | Ppl::Ppl() |
| franklzw | 3:9fa31396d89d | 16 | { |
| franklzw | 3:9fa31396d89d | 17 | |
| franklzw | 3:9fa31396d89d | 18 | } |
| franklzw | 3:9fa31396d89d | 19 | |
| franklzw | 3:9fa31396d89d | 20 | Ppl::~Ppl() |
| franklzw | 3:9fa31396d89d | 21 | { |
| franklzw | 3:9fa31396d89d | 22 | |
| franklzw | 3:9fa31396d89d | 23 | } |
| franklzw | 3:9fa31396d89d | 24 | |
| franklzw | 3:9fa31396d89d | 25 | void Ppl::init(int x0, int y0) |
| franklzw | 3:9fa31396d89d | 26 | { |
| franklzw | 3:9fa31396d89d | 27 | _x = x0; |
| franklzw | 3:9fa31396d89d | 28 | _y = y0; |
| franklzw | 3:9fa31396d89d | 29 | |
| franklzw | 3:9fa31396d89d | 30 | } |
| franklzw | 3:9fa31396d89d | 31 | |
| franklzw | 3:9fa31396d89d | 32 | void Ppl::draw(N5110 &lcd) |
| franklzw | 3:9fa31396d89d | 33 | { |
| franklzw | 3:9fa31396d89d | 34 | lcd.drawSprite(_x,_y,8,8,(int *)ppl); |
| franklzw | 3:9fa31396d89d | 35 | } |
| franklzw | 3:9fa31396d89d | 36 | |
| franklzw | 13:5930f0e5889d | 37 | void Ppl::update(int bb,int ba,int bx,int by,int indicator, |
| franklzw | 6:6b083e22cb53 | 38 | int barrier_x,int barrier_y) |
| franklzw | 6:6b083e22cb53 | 39 | { |
| franklzw | 6:6b083e22cb53 | 40 | int temp_x = _x; |
| franklzw | 6:6b083e22cb53 | 41 | int temp_y = _y; |
| franklzw | 6:6b083e22cb53 | 42 | |
| franklzw | 6:6b083e22cb53 | 43 | move_ppl(bb,ba,bx,by); |
| franklzw | 7:6f8aeadc4370 | 44 | |
| franklzw | 6:6b083e22cb53 | 45 | if (hold_beside_barrier(barrier_x,barrier_y)) { |
| franklzw | 6:6b083e22cb53 | 46 | _x = temp_x; |
| franklzw | 6:6b083e22cb53 | 47 | _y = temp_y; |
| franklzw | 6:6b083e22cb53 | 48 | } else { |
| franklzw | 5:b50ce6160013 | 49 | _x = _x; |
| franklzw | 5:b50ce6160013 | 50 | _y = _y; |
| franklzw | 6:6b083e22cb53 | 51 | } |
| franklzw | 7:6f8aeadc4370 | 52 | |
| franklzw | 6:6b083e22cb53 | 53 | hold_ppl_against_wall(); |
| franklzw | 13:5930f0e5889d | 54 | hold_ppl_box_touching(indicator); |
| franklzw | 6:6b083e22cb53 | 55 | |
| franklzw | 6:6b083e22cb53 | 56 | } |
| franklzw | 6:6b083e22cb53 | 57 | |
| franklzw | 6:6b083e22cb53 | 58 | Vector2D Ppl::get_pos() |
| franklzw | 6:6b083e22cb53 | 59 | { |
| franklzw | 6:6b083e22cb53 | 60 | Vector2D p = {_x,_y}; |
| franklzw | 6:6b083e22cb53 | 61 | return p; |
| franklzw | 6:6b083e22cb53 | 62 | } |
| franklzw | 6:6b083e22cb53 | 63 | |
| franklzw | 6:6b083e22cb53 | 64 | void Ppl::set_pos(Vector2D p) |
| franklzw | 6:6b083e22cb53 | 65 | { |
| franklzw | 6:6b083e22cb53 | 66 | _x = p.x; |
| franklzw | 6:6b083e22cb53 | 67 | _y = p.y; |
| franklzw | 6:6b083e22cb53 | 68 | } |
| franklzw | 6:6b083e22cb53 | 69 | |
| franklzw | 6:6b083e22cb53 | 70 | bool Ppl::hold_beside_barrier(int barrier_x,int barrier_y) // check after moving if ppl pos match the barrier |
| franklzw | 6:6b083e22cb53 | 71 | { |
| franklzw | 13:5930f0e5889d | 72 | // if matched barrier return ture |
| franklzw | 6:6b083e22cb53 | 73 | if (_x == barrier_x &&_y == barrier_y) { |
| franklzw | 6:6b083e22cb53 | 74 | return true; |
| franklzw | 6:6b083e22cb53 | 75 | } else { |
| franklzw | 6:6b083e22cb53 | 76 | return false; |
| franklzw | 6:6b083e22cb53 | 77 | } |
| franklzw | 6:6b083e22cb53 | 78 | } |
| franklzw | 6:6b083e22cb53 | 79 | |
| franklzw | 6:6b083e22cb53 | 80 | void Ppl::move_ppl(int bb,int ba,int bx,int by) //move the ppl with respect to the bottom read |
| franklzw | 6:6b083e22cb53 | 81 | { |
| franklzw | 6:6b083e22cb53 | 82 | |
| franklzw | 6:6b083e22cb53 | 83 | if (bx ==0 && bb == 0 && by == 0 && ba == 0) { |
| franklzw | 6:6b083e22cb53 | 84 | _x = _x; |
| franklzw | 6:6b083e22cb53 | 85 | _y = _y; |
| franklzw | 6:6b083e22cb53 | 86 | } |
| franklzw | 6:6b083e22cb53 | 87 | if (bx == 1) { |
| franklzw | 5:b50ce6160013 | 88 | _x = _x-8; |
| franklzw | 5:b50ce6160013 | 89 | _y = _y; |
| franklzw | 6:6b083e22cb53 | 90 | } |
| franklzw | 6:6b083e22cb53 | 91 | if (bb == 1) { |
| franklzw | 5:b50ce6160013 | 92 | _x = _x+8; |
| franklzw | 5:b50ce6160013 | 93 | _y = _y; |
| franklzw | 6:6b083e22cb53 | 94 | } |
| franklzw | 6:6b083e22cb53 | 95 | if (by == 1) { |
| franklzw | 5:b50ce6160013 | 96 | _y = _y-8; |
| franklzw | 5:b50ce6160013 | 97 | _x = _x; |
| franklzw | 6:6b083e22cb53 | 98 | } |
| franklzw | 6:6b083e22cb53 | 99 | if (ba == 1) { |
| franklzw | 5:b50ce6160013 | 100 | _y = _y+8; |
| franklzw | 5:b50ce6160013 | 101 | _x = _x; |
| franklzw | 6:6b083e22cb53 | 102 | } |
| franklzw | 6:6b083e22cb53 | 103 | } |
| franklzw | 6:6b083e22cb53 | 104 | |
| franklzw | 13:5930f0e5889d | 105 | void Ppl::hold_ppl_box_touching(int indicator) //check for box facing wall and hold pos of ppl |
| franklzw | 13:5930f0e5889d | 106 | // 0: do nothing |
| franklzw | 13:5930f0e5889d | 107 | // 1: next move box off the left hold ppl in x = 10; 2: next move box off the right hold ppl in x = 66; |
| franklzw | 13:5930f0e5889d | 108 | // 3: next move box off the top hold ppl in y = 12; 4: next move box off the bottom hold ppl in y = 28; |
| franklzw | 6:6b083e22cb53 | 109 | { |
| franklzw | 13:5930f0e5889d | 110 | if (indicator == 0 ) { |
| franklzw | 6:6b083e22cb53 | 111 | _y = _y; |
| franklzw | 6:6b083e22cb53 | 112 | _x = _x; |
| franklzw | 13:5930f0e5889d | 113 | } else if (indicator == 1 && _x <=10) { |
| franklzw | 6:6b083e22cb53 | 114 | _x = 10; |
| franklzw | 13:5930f0e5889d | 115 | } else if (indicator == 2 && _x >=66) { |
| franklzw | 6:6b083e22cb53 | 116 | _x = 66; |
| franklzw | 13:5930f0e5889d | 117 | } else if (indicator == 3 && _y <=12 ) { |
| franklzw | 6:6b083e22cb53 | 118 | _y = 12; |
| franklzw | 13:5930f0e5889d | 119 | } else if (indicator == 4 && _y >=28) { |
| franklzw | 6:6b083e22cb53 | 120 | _y = 28; |
| franklzw | 8:83891ea9a5d9 | 121 | } |
| franklzw | 6:6b083e22cb53 | 122 | } |
| franklzw | 6:6b083e22cb53 | 123 | |
| franklzw | 6:6b083e22cb53 | 124 | void Ppl::hold_ppl_against_wall() // check the y origin to ensure that the paddle doesn't go off screen |
| franklzw | 6:6b083e22cb53 | 125 | { |
| franklzw | 3:9fa31396d89d | 126 | if (_y < 4) { |
| franklzw | 3:9fa31396d89d | 127 | _y = 4; |
| franklzw | 3:9fa31396d89d | 128 | } |
| franklzw | 5:b50ce6160013 | 129 | if (_y > 36) { |
| franklzw | 5:b50ce6160013 | 130 | _y = 36; |
| franklzw | 3:9fa31396d89d | 131 | } |
| franklzw | 5:b50ce6160013 | 132 | if (_x > 74) { |
| franklzw | 5:b50ce6160013 | 133 | _x = 74; |
| franklzw | 3:9fa31396d89d | 134 | } |
| franklzw | 3:9fa31396d89d | 135 | if (_x < 2) { |
| franklzw | 3:9fa31396d89d | 136 | _x = 2; |
| franklzw | 3:9fa31396d89d | 137 | } |
| franklzw | 3:9fa31396d89d | 138 | } |
