Hi This my first little game in Pokitto. Im a fresh in C++ So, Wishing your advise!!!!!

Dependencies:   PokittoLib

Committer:
79859899
Date:
Sat Mar 17 14:28:40 2018 +0000
Revision:
0:eff664bec7e0
Child:
1:8d5b6cdae9df
Hi  This my first little game in Pokitto. ; Im a fresh.; So, Wishing your advise.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
79859899 0:eff664bec7e0 1 /**************************************************************************/
79859899 0:eff664bec7e0 2 /*!
79859899 0:eff664bec7e0 3 @file Bullet.h
79859899 0:eff664bec7e0 4 @author
79859899 0:eff664bec7e0 5
79859899 0:eff664bec7e0 6 @section
79859899 0:eff664bec7e0 7
79859899 0:eff664bec7e0 8 */
79859899 0:eff664bec7e0 9 /**************************************************************************/
79859899 0:eff664bec7e0 10 #ifndef BULLET_H
79859899 0:eff664bec7e0 11 #define BULLET_H
79859899 0:eff664bec7e0 12 #include "Pokitto.h"
79859899 0:eff664bec7e0 13
79859899 0:eff664bec7e0 14
79859899 0:eff664bec7e0 15 const uint8_t bullet_bmp[] =
79859899 0:eff664bec7e0 16 {
79859899 0:eff664bec7e0 17 4,4,
79859899 0:eff664bec7e0 18 186,171,
79859899 0:eff664bec7e0 19 169,154,
79859899 0:eff664bec7e0 20 169,154,
79859899 0:eff664bec7e0 21 186,171,
79859899 0:eff664bec7e0 22 };
79859899 0:eff664bec7e0 23
79859899 0:eff664bec7e0 24 class bullet {
79859899 0:eff664bec7e0 25 public:
79859899 0:eff664bec7e0 26 bullet();
79859899 0:eff664bec7e0 27 bullet(int16_t aircraftXaxis, int16_t aircraftYaxis){
79859899 0:eff664bec7e0 28 axisIncri = 0;
79859899 0:eff664bec7e0 29 randAxis(xaxis, yaxis);
79859899 0:eff664bec7e0 30 oldxaxis = xaxis;
79859899 0:eff664bec7e0 31 oldyaxis = yaxis;
79859899 0:eff664bec7e0 32 gradientB = gradientCal(xaxis, yaxis, aircraftXaxis, aircraftYaxis);
79859899 0:eff664bec7e0 33 if(xaxis >= aircraftXaxis){
79859899 0:eff664bec7e0 34 leftsign = true;
79859899 0:eff664bec7e0 35 }else{
79859899 0:eff664bec7e0 36 leftsign = false;
79859899 0:eff664bec7e0 37 }
79859899 0:eff664bec7e0 38
79859899 0:eff664bec7e0 39 }
79859899 0:eff664bec7e0 40
79859899 0:eff664bec7e0 41 void renew(int16_t aircraftXaxis, int16_t aircraftYaxis){
79859899 0:eff664bec7e0 42 if(renewsign) {
79859899 0:eff664bec7e0 43 axisIncri = 0;
79859899 0:eff664bec7e0 44 randAxis(xaxis, yaxis);
79859899 0:eff664bec7e0 45 oldxaxis = xaxis;
79859899 0:eff664bec7e0 46 oldyaxis = yaxis;
79859899 0:eff664bec7e0 47 gradientB = gradientCal(xaxis, yaxis, aircraftXaxis, aircraftYaxis);
79859899 0:eff664bec7e0 48 if(xaxis >= aircraftXaxis){
79859899 0:eff664bec7e0 49 leftsign = true;
79859899 0:eff664bec7e0 50 }else{
79859899 0:eff664bec7e0 51 leftsign = false;
79859899 0:eff664bec7e0 52 }
79859899 0:eff664bec7e0 53 renewsign = false;
79859899 0:eff664bec7e0 54 }
79859899 0:eff664bec7e0 55 }
79859899 0:eff664bec7e0 56
79859899 0:eff664bec7e0 57 void move() {
79859899 0:eff664bec7e0 58 if(leftsign){
79859899 0:eff664bec7e0 59 yaxis = BackAxis(--axisIncri, gradientB) + oldyaxis;
79859899 0:eff664bec7e0 60 xaxis = axisIncri + oldxaxis;
79859899 0:eff664bec7e0 61 }else{
79859899 0:eff664bec7e0 62 yaxis = BackAxis(++axisIncri, gradientB) + oldyaxis;
79859899 0:eff664bec7e0 63 xaxis = axisIncri + oldxaxis;
79859899 0:eff664bec7e0 64 }
79859899 0:eff664bec7e0 65 if(abs(oldxaxis - xaxis) > 110){
79859899 0:eff664bec7e0 66 renewsign = true;
79859899 0:eff664bec7e0 67 }
79859899 0:eff664bec7e0 68
79859899 0:eff664bec7e0 69 }
79859899 0:eff664bec7e0 70
79859899 0:eff664bec7e0 71 void display(){
79859899 0:eff664bec7e0 72 Pokitto::Display::drawBitmap(xaxis,yaxis,bullet_bmp);
79859899 0:eff664bec7e0 73 }
79859899 0:eff664bec7e0 74
79859899 0:eff664bec7e0 75 int16_t getxaxix(){
79859899 0:eff664bec7e0 76 return xaxis;
79859899 0:eff664bec7e0 77 }
79859899 0:eff664bec7e0 78
79859899 0:eff664bec7e0 79 int16_t getyaxix(){
79859899 0:eff664bec7e0 80 return yaxis;
79859899 0:eff664bec7e0 81 }
79859899 0:eff664bec7e0 82
79859899 0:eff664bec7e0 83 private:
79859899 0:eff664bec7e0 84 int16_t xaxis, yaxis, oldxaxis, oldyaxis, axisInc, axisIncri;
79859899 0:eff664bec7e0 85 bool leftsign, renewsign;
79859899 0:eff664bec7e0 86 float gradientB;
79859899 0:eff664bec7e0 87 void randAxis(int16_t&, int16_t&); // giving bullet a random axis outside screen.
79859899 0:eff664bec7e0 88 float gradientCal(int16_t, int16_t, int16_t, int16_t); // calculates gradient between bullet and aircraft.
79859899 0:eff664bec7e0 89 int16_t BackAxis(int16_t, float); // calculates a axis in axiscenter by gradient.
79859899 0:eff664bec7e0 90 };
79859899 0:eff664bec7e0 91
79859899 0:eff664bec7e0 92 void bullet::randAxis(int16_t &xaxis, int16_t &yaxis){
79859899 0:eff664bec7e0 93 xaxis = rand()%126 - 8;
79859899 0:eff664bec7e0 94 if((xaxis<=-4)||(xaxis>=113)){
79859899 0:eff664bec7e0 95 yaxis = rand()%96 -4;
79859899 0:eff664bec7e0 96 }else{
79859899 0:eff664bec7e0 97 if(rand()%2){
79859899 0:eff664bec7e0 98 yaxis = -4;
79859899 0:eff664bec7e0 99 }else{
79859899 0:eff664bec7e0 100 yaxis = 91;
79859899 0:eff664bec7e0 101 }
79859899 0:eff664bec7e0 102 }
79859899 0:eff664bec7e0 103 }
79859899 0:eff664bec7e0 104 float bullet::gradientCal(int16_t x1, int16_t y1, int16_t x2, int16_t y2){
79859899 0:eff664bec7e0 105 float i = (static_cast<float>(x1 - x2)) / (y1 - y2);
79859899 0:eff664bec7e0 106 // In order to avoid the fastest bullet appearing, because sometime the gradient can be a tiny number.
79859899 0:eff664bec7e0 107 if(i <= 0.3 && i >= 0){
79859899 0:eff664bec7e0 108 return 0.5;
79859899 0:eff664bec7e0 109 }else if (i >= -0.3 && i < 0){
79859899 0:eff664bec7e0 110 return -0.5;
79859899 0:eff664bec7e0 111 }else{
79859899 0:eff664bec7e0 112 return (static_cast<float>(x1 - x2)) / (y1 - y2);
79859899 0:eff664bec7e0 113 }
79859899 0:eff664bec7e0 114 }
79859899 0:eff664bec7e0 115
79859899 0:eff664bec7e0 116 int16_t bullet::BackAxis(int16_t axis, float gradient){
79859899 0:eff664bec7e0 117 return axis / gradient;
79859899 0:eff664bec7e0 118 }
79859899 0:eff664bec7e0 119 #endif