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
shot/shot.cpp@7:c49f3d3b672f, 2020-04-29 (annotated)
- Committer:
- el19zf
- Date:
- Wed Apr 29 05:10:57 2020 +0000
- Revision:
- 7:c49f3d3b672f
- Parent:
- 6:dce38fe4e092
- Child:
- 8:8287d2ef965d
change the initial position of shots, and add some comment
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
el19zf | 4:b12a49f0b730 | 1 | #include "shot.h" |
el19zf | 4:b12a49f0b730 | 2 | |
el19zf | 7:c49f3d3b672f | 3 | int shots[4][3][3] = { |
el19zf | 7:c49f3d3b672f | 4 | { {1,1,0},{1,1,0},{0,0,1}, }, |
el19zf | 7:c49f3d3b672f | 5 | { {1,0,0},{1,1,1},{1,0,0}, }, |
el19zf | 7:c49f3d3b672f | 6 | { {1,1,1},{0,1,0},{0,1,0}, }, |
el19zf | 7:c49f3d3b672f | 7 | { {0,1,0},{1,1,1},{0,1,0}, } |
el19zf | 7:c49f3d3b672f | 8 | }; |
el19zf | 6:dce38fe4e092 | 9 | |
el19zf | 7:c49f3d3b672f | 10 | shot::shot() |
el19zf | 7:c49f3d3b672f | 11 | { |
el19zf | 6:dce38fe4e092 | 12 | |
el19zf | 6:dce38fe4e092 | 13 | } |
el19zf | 6:dce38fe4e092 | 14 | |
el19zf | 7:c49f3d3b672f | 15 | shot::~shot() |
el19zf | 5:6774b7272e85 | 16 | { |
el19zf | 7:c49f3d3b672f | 17 | |
el19zf | 7:c49f3d3b672f | 18 | } |
el19zf | 7:c49f3d3b672f | 19 | |
el19zf | 7:c49f3d3b672f | 20 | void shot::init() |
el19zf | 5:6774b7272e85 | 21 | { |
el19zf | 4:b12a49f0b730 | 22 | |
el19zf | 7:c49f3d3b672f | 23 | _size = 10; |
el19zf | 7:c49f3d3b672f | 24 | _p.resize(_size); |
el19zf | 7:c49f3d3b672f | 25 | srand(time(NULL)); |
el19zf | 7:c49f3d3b672f | 26 | for (std::vector<shot_posandtype>::iterator i = _p.begin(); i < _p.end(); i++) { |
el19zf | 7:c49f3d3b672f | 27 | init_pos(i); |
el19zf | 7:c49f3d3b672f | 28 | (*i).type = rand() % 4;//randomise initial type |
el19zf | 7:c49f3d3b672f | 29 | (*i).dir = rand() % 6;//randomise initial direction |
el19zf | 7:c49f3d3b672f | 30 | } |
el19zf | 7:c49f3d3b672f | 31 | |
el19zf | 4:b12a49f0b730 | 32 | } |
el19zf | 4:b12a49f0b730 | 33 | |
el19zf | 7:c49f3d3b672f | 34 | void shot::init_pos(shot_posandtype* i) |
el19zf | 7:c49f3d3b672f | 35 | { |
el19zf | 4:b12a49f0b730 | 36 | |
el19zf | 7:c49f3d3b672f | 37 | int num_pos = rand() % 6;//randomise initial position |
el19zf | 7:c49f3d3b672f | 38 | if (num_pos == 0) { |
el19zf | 7:c49f3d3b672f | 39 | (*i).x = 0; |
el19zf | 7:c49f3d3b672f | 40 | (*i).y = HEIGHT/4; |
el19zf | 7:c49f3d3b672f | 41 | }//left |
el19zf | 7:c49f3d3b672f | 42 | if (num_pos == 1) { |
el19zf | 7:c49f3d3b672f | 43 | (*i).x = 0; |
el19zf | 7:c49f3d3b672f | 44 | (*i).y = HEIGHT/2; |
el19zf | 7:c49f3d3b672f | 45 | }//left |
el19zf | 7:c49f3d3b672f | 46 | if (num_pos == 2) { |
el19zf | 7:c49f3d3b672f | 47 | (*i).x = 0; |
el19zf | 7:c49f3d3b672f | 48 | (*i).y = 3*HEIGHT/4; |
el19zf | 7:c49f3d3b672f | 49 | }//left |
el19zf | 7:c49f3d3b672f | 50 | if (num_pos == 3) { |
el19zf | 7:c49f3d3b672f | 51 | (*i).x = WIDTH-3; |
el19zf | 7:c49f3d3b672f | 52 | (*i).y = HEIGHT/4; |
el19zf | 7:c49f3d3b672f | 53 | }//right |
el19zf | 7:c49f3d3b672f | 54 | if (num_pos == 4) { |
el19zf | 7:c49f3d3b672f | 55 | (*i).x = WIDTH-3; |
el19zf | 7:c49f3d3b672f | 56 | (*i).y = HEIGHT/2; |
el19zf | 7:c49f3d3b672f | 57 | }//right |
el19zf | 7:c49f3d3b672f | 58 | if (num_pos == 5) { |
el19zf | 7:c49f3d3b672f | 59 | (*i).x = WIDTH-3; |
el19zf | 7:c49f3d3b672f | 60 | (*i).y = 3*HEIGHT/4; |
el19zf | 7:c49f3d3b672f | 61 | }//right |
el19zf | 4:b12a49f0b730 | 62 | |
el19zf | 4:b12a49f0b730 | 63 | } |
el19zf | 4:b12a49f0b730 | 64 | |
el19zf | 7:c49f3d3b672f | 65 | void shot::gen_shot() |
el19zf | 7:c49f3d3b672f | 66 | { |
el19zf | 6:dce38fe4e092 | 67 | _p.resize(_size); |
el19zf | 6:dce38fe4e092 | 68 | for(std::vector<shot_posandtype>::iterator i = _p.begin(); i < _p.end(); i++) { |
el19zf | 7:c49f3d3b672f | 69 | if(((*i).x == 0)&&((*i).y == 0)) { |
el19zf | 6:dce38fe4e092 | 70 | init_pos(i); |
el19zf | 7:c49f3d3b672f | 71 | (*i).type = rand() % 4;//randomise initial type |
el19zf | 7:c49f3d3b672f | 72 | (*i).dir = rand() % 6;//randomise initial direction |
el19zf | 6:dce38fe4e092 | 73 | } |
el19zf | 7:c49f3d3b672f | 74 | } |
el19zf | 4:b12a49f0b730 | 75 | } |
el19zf | 4:b12a49f0b730 | 76 | |
el19zf | 5:6774b7272e85 | 77 | |
el19zf | 5:6774b7272e85 | 78 | |
el19zf | 7:c49f3d3b672f | 79 | void shot::update() |
el19zf | 7:c49f3d3b672f | 80 | { |
el19zf | 5:6774b7272e85 | 81 | for (std::vector<shot_posandtype>::iterator i = _p.begin(); i < _p.end(); i++) { |
el19zf | 7:c49f3d3b672f | 82 | if ((*i).dir == 0) { |
el19zf | 7:c49f3d3b672f | 83 | (*i).x +=1; |
el19zf | 7:c49f3d3b672f | 84 | (*i).y +=1;//SE |
el19zf | 7:c49f3d3b672f | 85 | } else if ((*i).dir == 1) { |
el19zf | 7:c49f3d3b672f | 86 | (*i).x +=1; |
el19zf | 7:c49f3d3b672f | 87 | (*i).y +=0;//E |
el19zf | 7:c49f3d3b672f | 88 | } else if ((*i).dir == 2) { |
el19zf | 7:c49f3d3b672f | 89 | (*i).x +=1; |
el19zf | 7:c49f3d3b672f | 90 | (*i).y -=1;//NE |
el19zf | 7:c49f3d3b672f | 91 | } else if ((*i).dir == 3) { |
el19zf | 7:c49f3d3b672f | 92 | (*i).x -=1; |
el19zf | 7:c49f3d3b672f | 93 | (*i).y -=1;//NW |
el19zf | 7:c49f3d3b672f | 94 | } else if ((*i).dir == 4) { |
el19zf | 7:c49f3d3b672f | 95 | (*i).x -=1; |
el19zf | 7:c49f3d3b672f | 96 | (*i).y -=0;//W |
el19zf | 7:c49f3d3b672f | 97 | } else if ((*i).dir == 5) { |
el19zf | 7:c49f3d3b672f | 98 | (*i).x -=1; |
el19zf | 7:c49f3d3b672f | 99 | (*i).y +=1;//SW |
el19zf | 7:c49f3d3b672f | 100 | } |
el19zf | 7:c49f3d3b672f | 101 | } |
el19zf | 4:b12a49f0b730 | 102 | } |
el19zf | 5:6774b7272e85 | 103 | |
el19zf | 5:6774b7272e85 | 104 | |
el19zf | 7:c49f3d3b672f | 105 | void shot::draw(N5110 &lcd) |
el19zf | 7:c49f3d3b672f | 106 | { |
el19zf | 7:c49f3d3b672f | 107 | for (std::vector<shot_posandtype>::iterator i = _p.begin(); i < _p.end(); i++) { |
el19zf | 5:6774b7272e85 | 108 | lcd.drawSprite((*i).x,(*i).y,3,3,(int*)shots[(*i).type]); |
el19zf | 7:c49f3d3b672f | 109 | //printf("coordinate = %d,%d\n",(*i).x,(*i).y); |
el19zf | 6:dce38fe4e092 | 110 | } |
el19zf | 6:dce38fe4e092 | 111 | } |
el19zf | 6:dce38fe4e092 | 112 | |
el19zf | 7:c49f3d3b672f | 113 | void shot::delete_shot() |
el19zf | 7:c49f3d3b672f | 114 | { |
el19zf | 7:c49f3d3b672f | 115 | for (std::vector<shot_posandtype>::iterator i = _p.begin(); i < _p.end(); i++) { |
el19zf | 7:c49f3d3b672f | 116 | // if beyoud border, delete it and generate new one, keep total number constant |
el19zf | 7:c49f3d3b672f | 117 | if(((*i).x < 0)||((*i).x > WIDTH)||((*i).y < 0)||((*i).y > HEIGHT)) { |
el19zf | 6:dce38fe4e092 | 118 | init_pos(i); |
el19zf | 6:dce38fe4e092 | 119 | (*i).type = ((*i).type + 2)%4; |
el19zf | 7:c49f3d3b672f | 120 | (*i).dir = ((*i).dir + 1)%6; // increase randomness |
el19zf | 6:dce38fe4e092 | 121 | } |
el19zf | 6:dce38fe4e092 | 122 | } |
el19zf | 6:dce38fe4e092 | 123 | } |