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@4:b12a49f0b730, 2020-04-14 (annotated)
- Committer:
- el19zf
- Date:
- Tue Apr 14 05:47:23 2020 +0000
- Revision:
- 4:b12a49f0b730
- Child:
- 5:6774b7272e85
add a shot class to create a series of shots moving different directions
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 | 4:b12a49f0b730 | 3 | |
el19zf | 4:b12a49f0b730 | 4 | const int shot1[3][3] = { |
el19zf | 4:b12a49f0b730 | 5 | {1,1,0}, |
el19zf | 4:b12a49f0b730 | 6 | {1,1,0}, |
el19zf | 4:b12a49f0b730 | 7 | {0,0,1}, |
el19zf | 4:b12a49f0b730 | 8 | }; |
el19zf | 4:b12a49f0b730 | 9 | const int shot2[3][3] = { |
el19zf | 4:b12a49f0b730 | 10 | {1,0,0}, |
el19zf | 4:b12a49f0b730 | 11 | {1,1,1}, |
el19zf | 4:b12a49f0b730 | 12 | {1,0,0}, |
el19zf | 4:b12a49f0b730 | 13 | }; |
el19zf | 4:b12a49f0b730 | 14 | const int shot3[3][3] = { |
el19zf | 4:b12a49f0b730 | 15 | {1,1,1}, |
el19zf | 4:b12a49f0b730 | 16 | {0,1,0}, |
el19zf | 4:b12a49f0b730 | 17 | {0,1,0}, |
el19zf | 4:b12a49f0b730 | 18 | }; |
el19zf | 4:b12a49f0b730 | 19 | const int shot4[3][3] = { |
el19zf | 4:b12a49f0b730 | 20 | {0,1,0}, |
el19zf | 4:b12a49f0b730 | 21 | {1,1,1}, |
el19zf | 4:b12a49f0b730 | 22 | {0,1,0}, |
el19zf | 4:b12a49f0b730 | 23 | }; |
el19zf | 4:b12a49f0b730 | 24 | |
el19zf | 4:b12a49f0b730 | 25 | |
el19zf | 4:b12a49f0b730 | 26 | shot::shot() { |
el19zf | 4:b12a49f0b730 | 27 | |
el19zf | 4:b12a49f0b730 | 28 | } |
el19zf | 4:b12a49f0b730 | 29 | |
el19zf | 4:b12a49f0b730 | 30 | shot::~shot() { |
el19zf | 4:b12a49f0b730 | 31 | |
el19zf | 4:b12a49f0b730 | 32 | } |
el19zf | 4:b12a49f0b730 | 33 | |
el19zf | 4:b12a49f0b730 | 34 | void shot::init() { |
el19zf | 4:b12a49f0b730 | 35 | |
el19zf | 4:b12a49f0b730 | 36 | } |
el19zf | 4:b12a49f0b730 | 37 | |
el19zf | 4:b12a49f0b730 | 38 | int shot::rand_dir() { |
el19zf | 4:b12a49f0b730 | 39 | |
el19zf | 4:b12a49f0b730 | 40 | srand(time(NULL)); |
el19zf | 4:b12a49f0b730 | 41 | /*int d_num = rand() % 8; //randomise initial direction |
el19zf | 4:b12a49f0b730 | 42 | if (d_num == 0) { d = N; } else |
el19zf | 4:b12a49f0b730 | 43 | if (d_num == 1) { d = NE; } else |
el19zf | 4:b12a49f0b730 | 44 | if (d_num == 2) { d = E; } else |
el19zf | 4:b12a49f0b730 | 45 | if (d_num == 3) { d = SE; } else |
el19zf | 4:b12a49f0b730 | 46 | if (d_num == 4) { d = S; } else |
el19zf | 4:b12a49f0b730 | 47 | if (d_num == 5) { d = SW; } else |
el19zf | 4:b12a49f0b730 | 48 | if (d_num == 6) { d = W; } else |
el19zf | 4:b12a49f0b730 | 49 | { d = NW;}*/ |
el19zf | 4:b12a49f0b730 | 50 | int d = rand() % 4;//randomise initial direction |
el19zf | 4:b12a49f0b730 | 51 | return d; |
el19zf | 4:b12a49f0b730 | 52 | } |
el19zf | 4:b12a49f0b730 | 53 | |
el19zf | 4:b12a49f0b730 | 54 | int shot::rand_type() { |
el19zf | 4:b12a49f0b730 | 55 | |
el19zf | 4:b12a49f0b730 | 56 | srand(time(NULL)); |
el19zf | 4:b12a49f0b730 | 57 | int type = rand() % 4;//set 4 type of shot |
el19zf | 4:b12a49f0b730 | 58 | return type; |
el19zf | 4:b12a49f0b730 | 59 | } |
el19zf | 4:b12a49f0b730 | 60 | |
el19zf | 4:b12a49f0b730 | 61 | |
el19zf | 4:b12a49f0b730 | 62 | void shot::gen_shot() { |
el19zf | 4:b12a49f0b730 | 63 | |
el19zf | 4:b12a49f0b730 | 64 | /*int num_dir = rand_type();//up down left right |
el19zf | 4:b12a49f0b730 | 65 | if (num_dir == 0) { _p.x = (WIDTH/2-1); _p.y = 0; //up |
el19zf | 4:b12a49f0b730 | 66 | |
el19zf | 4:b12a49f0b730 | 67 | //if(dir == 1) {_p.x -= 1; _p.y +=1; }else |
el19zf | 4:b12a49f0b730 | 68 | //if(dir == 2) {_p.x += 0; _p.y +=1; }else |
el19zf | 4:b12a49f0b730 | 69 | //{_p.x += 1; _p.y +=1; } } |
el19zf | 4:b12a49f0b730 | 70 | |
el19zf | 4:b12a49f0b730 | 71 | if (num_dir == 1) { _p.x = (WIDTH/2-1); _p.y = (HEIGHT-3);} //down |
el19zf | 4:b12a49f0b730 | 72 | if (num_dir == 2) { _p.x = 0; _p.y = (HEIGHT/2-1);} //left |
el19zf | 4:b12a49f0b730 | 73 | if (num_dir == 3) { _p.x = (WIDTH-3); _p.y =(HEIGHT/2-1);} //right |
el19zf | 4:b12a49f0b730 | 74 | //printf("random num = %d\n",num_dir);*/ |
el19zf | 4:b12a49f0b730 | 75 | _p.resize(10); |
el19zf | 4:b12a49f0b730 | 76 | int index = rand_type(); |
el19zf | 4:b12a49f0b730 | 77 | for (std::vector<Vector2D>::iterator i = _p.begin(); i < _p.end(); i++) { |
el19zf | 4:b12a49f0b730 | 78 | int num_dir = rand()%4; |
el19zf | 4:b12a49f0b730 | 79 | if (num_dir == 0) { (*i).x = (WIDTH/2-1); |
el19zf | 4:b12a49f0b730 | 80 | (*i).y = 0; } |
el19zf | 4:b12a49f0b730 | 81 | if (num_dir == 1) { (*i).x = (WIDTH/2-1); |
el19zf | 4:b12a49f0b730 | 82 | (*i).y = (HEIGHT-3); } |
el19zf | 4:b12a49f0b730 | 83 | if (num_dir == 2) { (*i).x = 0; |
el19zf | 4:b12a49f0b730 | 84 | (*i).y = (HEIGHT/2-1);} |
el19zf | 4:b12a49f0b730 | 85 | if (num_dir == 3) { (*i).x = (WIDTH-3); |
el19zf | 4:b12a49f0b730 | 86 | (*i).y = (HEIGHT/2-1);} |
el19zf | 4:b12a49f0b730 | 87 | printf("pos = %f,%f\n",(*i).x,(*i).y); |
el19zf | 4:b12a49f0b730 | 88 | |
el19zf | 4:b12a49f0b730 | 89 | } |
el19zf | 4:b12a49f0b730 | 90 | } |
el19zf | 4:b12a49f0b730 | 91 | |
el19zf | 4:b12a49f0b730 | 92 | void shot::shot_move() { |
el19zf | 4:b12a49f0b730 | 93 | for (std::vector<Vector2D>::iterator i = _p.begin(); i < _p.end(); i++) { |
el19zf | 4:b12a49f0b730 | 94 | int num_dir = rand() % 8; |
el19zf | 4:b12a49f0b730 | 95 | if (num_dir == 0) { (*i).x +=0; (*i).y +=1; } else |
el19zf | 4:b12a49f0b730 | 96 | if (num_dir == 1) { (*i).x +=1; (*i).y +=1; } else |
el19zf | 4:b12a49f0b730 | 97 | if (num_dir == 2) { (*i).x +=1; (*i).y +=0; } else |
el19zf | 4:b12a49f0b730 | 98 | if (num_dir == 3) { (*i).x +=1; (*i).y -=1; } else |
el19zf | 4:b12a49f0b730 | 99 | if (num_dir == 4) { (*i).x +=0; (*i).y -=1; } else |
el19zf | 4:b12a49f0b730 | 100 | if (num_dir == 5) { (*i).x -=1; (*i).y -=1; } else |
el19zf | 4:b12a49f0b730 | 101 | if (num_dir == 6) { (*i).x -=1; (*i).y -=0; } else |
el19zf | 4:b12a49f0b730 | 102 | if (num_dir == 7) { (*i).x -=1; (*i).y +=1; } |
el19zf | 4:b12a49f0b730 | 103 | } |
el19zf | 4:b12a49f0b730 | 104 | } |
el19zf | 4:b12a49f0b730 | 105 | void shot::draw(N5110 &lcd){ |
el19zf | 4:b12a49f0b730 | 106 | for (std::vector<Vector2D>::iterator i = _p.begin(); i < _p.end(); i++) { |
el19zf | 4:b12a49f0b730 | 107 | int num_type = rand() % 4; |
el19zf | 4:b12a49f0b730 | 108 | if (num_type == 0) { lcd.drawSprite((*i).x,(*i).y,3,3,(int*)shot1);} |
el19zf | 4:b12a49f0b730 | 109 | if (num_type == 1) { lcd.drawSprite((*i).x,(*i).y,3,3,(int*)shot2);} |
el19zf | 4:b12a49f0b730 | 110 | if (num_type == 2) { lcd.drawSprite((*i).x,(*i).y,3,3,(int*)shot3);} |
el19zf | 4:b12a49f0b730 | 111 | if (num_type == 3) { lcd.drawSprite((*i).x,(*i).y,3,3,(int*)shot4);} |
el19zf | 4:b12a49f0b730 | 112 | } |
el19zf | 4:b12a49f0b730 | 113 | } |