ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_Project_el19zf

Dependencies:   mbed

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?

UserRevisionLine numberNew 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 }