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

Dependencies:   PokittoLib

Committer:
79859899
Date:
Thu Mar 22 07:26:17 2018 +0000
Revision:
2:7af6d9415495
Parent:
1:8d5b6cdae9df
Hi This my first little game in Pokitto.; Im a fresh in C++; So, Wishing your advise!!!!!; ; V0.4   replace a better title pic  and adding a menu that can change different of degree of diffculty.

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