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
Diff: shot/shot.cpp
- Revision:
- 7:c49f3d3b672f
- Parent:
- 6:dce38fe4e092
- Child:
- 8:8287d2ef965d
--- a/shot/shot.cpp Tue Apr 28 15:54:41 2020 +0000 +++ b/shot/shot.cpp Wed Apr 29 05:10:57 2020 +0000 @@ -1,121 +1,123 @@ #include "shot.h" +int shots[4][3][3] = { + { {1,1,0},{1,1,0},{0,0,1}, }, + { {1,0,0},{1,1,1},{1,0,0}, }, + { {1,1,1},{0,1,0},{0,1,0}, }, + { {0,1,0},{1,1,1},{0,1,0}, } +}; -shot::shot() { - -} +shot::shot() +{ -shot::~shot() { - } -const int shots[4][3][3] = { -{ - {1,1,0}, - {1,1,0}, - {0,0,1}, }, -{ - {1,0,0}, - {1,1,1}, - {1,0,0}, }, +shot::~shot() { - {1,1,1}, - {0,1,0}, - {0,1,0}, }, + +} + +void shot::init() { - {0,1,0}, - {1,1,1}, - {0,1,0}, } -}; -void shot::init() { - - _size = 10; - _p.resize(_size); - srand(time(NULL)); - for (std::vector<shot_posandtype>::iterator i = _p.begin(); i < _p.end(); i++) { - init_pos(i); - (*i).type = rand_type();//randomise initial type - (*i).dir = rand() % 8;//randomise initial direction - } - + _size = 10; + _p.resize(_size); + srand(time(NULL)); + for (std::vector<shot_posandtype>::iterator i = _p.begin(); i < _p.end(); i++) { + init_pos(i); + (*i).type = rand() % 4;//randomise initial type + (*i).dir = rand() % 6;//randomise initial direction + } + } -/*Direction shot::rand_dir() { - - srand(time(NULL)); - int d_num = rand() % 8; //randomise initial direction - if (d_num == 0) { d = N; } else - if (d_num == 1) { d = NE; } else - if (d_num == 2) { d = E; } else - if (d_num == 3) { d = SE; } else - if (d_num == 4) { d = S; } else - if (d_num == 5) { d = SW; } else - if (d_num == 6) { d = W; } else - { d = NW;} - return d; -}*/ +void shot::init_pos(shot_posandtype* i) +{ -int shot::rand_type() { + int num_pos = rand() % 6;//randomise initial position + if (num_pos == 0) { + (*i).x = 0; + (*i).y = HEIGHT/4; + }//left + if (num_pos == 1) { + (*i).x = 0; + (*i).y = HEIGHT/2; + }//left + if (num_pos == 2) { + (*i).x = 0; + (*i).y = 3*HEIGHT/4; + }//left + if (num_pos == 3) { + (*i).x = WIDTH-3; + (*i).y = HEIGHT/4; + }//right + if (num_pos == 4) { + (*i).x = WIDTH-3; + (*i).y = HEIGHT/2; + }//right + if (num_pos == 5) { + (*i).x = WIDTH-3; + (*i).y = 3*HEIGHT/4; + }//right - int type = rand() % 4;//set 4 type of shot - return type; } -void shot::init_pos(shot_posandtype* i) { - - int num_pos = rand_type(); - if (num_pos == 0) { (*i).x = (WIDTH/2-1); - (*i).y = 0; }//up - if (num_pos == 1) { (*i).x = (WIDTH/2-1); - (*i).y = (HEIGHT-3); }//down - if (num_pos == 2) { (*i).x = 0; - (*i).y = (HEIGHT/2-1);}//left - if (num_pos == 3) { (*i).x = (WIDTH-3); - (*i).y = (HEIGHT/2-1);}//right -} - -void shot::gen_shot() { +void shot::gen_shot() +{ _p.resize(_size); for(std::vector<shot_posandtype>::iterator i = _p.begin(); i < _p.end(); i++) { - if(((*i).x == 0)&&((*i).y == 0)){ + if(((*i).x == 0)&&((*i).y == 0)) { init_pos(i); - (*i).type = rand_type();//randomise initial type - (*i).dir = rand() % 8;//randomise initial direction + (*i).type = rand() % 4;//randomise initial type + (*i).dir = rand() % 6;//randomise initial direction } - } + } } -void shot::update() { +void shot::update() +{ for (std::vector<shot_posandtype>::iterator i = _p.begin(); i < _p.end(); i++) { - if ((*i).dir == 0) { (*i).x +=0; (*i).y +=2; } else - if ((*i).dir == 1) { (*i).x +=1; (*i).y +=1; } else - if ((*i).dir == 2) { (*i).x +=2; (*i).y +=0; } else - if ((*i).dir == 3) { (*i).x +=1; (*i).y -=1; } else - if ((*i).dir == 4) { (*i).x +=0; (*i).y -=2; } else - if ((*i).dir == 5) { (*i).x -=1; (*i).y -=1; } else - if ((*i).dir == 6) { (*i).x -=2; (*i).y -=0; } else - if ((*i).dir == 7) { (*i).x -=1; (*i).y +=1; } - } + if ((*i).dir == 0) { + (*i).x +=1; + (*i).y +=1;//SE + } else if ((*i).dir == 1) { + (*i).x +=1; + (*i).y +=0;//E + } else if ((*i).dir == 2) { + (*i).x +=1; + (*i).y -=1;//NE + } else if ((*i).dir == 3) { + (*i).x -=1; + (*i).y -=1;//NW + } else if ((*i).dir == 4) { + (*i).x -=1; + (*i).y -=0;//W + } else if ((*i).dir == 5) { + (*i).x -=1; + (*i).y +=1;//SW + } + } } -void shot::draw(N5110 &lcd){ - for (std::vector<shot_posandtype>::iterator i = _p.begin(); i < _p.end(); i++){ +void shot::draw(N5110 &lcd) +{ + for (std::vector<shot_posandtype>::iterator i = _p.begin(); i < _p.end(); i++) { lcd.drawSprite((*i).x,(*i).y,3,3,(int*)shots[(*i).type]); - printf("coordinate = %d,%d\n",(*i).x,(*i).y); + //printf("coordinate = %d,%d\n",(*i).x,(*i).y); } } -void shot::delete_shot() { - for (std::vector<shot_posandtype>::iterator i = _p.begin(); i < _p.end(); i++){ - if(((*i).x < 0)||((*i).x > WIDTH)||((*i).y < 0)||((*i).y > HEIGHT)){ +void shot::delete_shot() +{ + for (std::vector<shot_posandtype>::iterator i = _p.begin(); i < _p.end(); i++) { + // if beyoud border, delete it and generate new one, keep total number constant + if(((*i).x < 0)||((*i).x > WIDTH)||((*i).y < 0)||((*i).y > HEIGHT)) { init_pos(i); (*i).type = ((*i).type + 2)%4; - (*i).dir = ((*i).dir + 1)%4; + (*i).dir = ((*i).dir + 1)%6; // increase randomness } } } - \ No newline at end of file