ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_Project_el19zf

Dependencies:   mbed

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?

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