Zirui Chen 201235448

Dependencies:   mbed

Board/Board.cpp

Committer:
ChenZirui
Date:
2020-05-27
Revision:
5:7207c9b70108
Child:
6:b393cfe4e0a7

File content as of revision 5:7207c9b70108:

#include "Board.h"

// nothing doing in the constructor and destructor
Board::Board()
{

}

Board::~Board()
{

}

void Board::init(int x,int y,int height,int width,N5110 &lcd)
{
    _x=x ; // horizontal coordinate of Board
    //_y=48-height/2 ; // vertical coordinate of fighte
    _y=y ;
    _height =height;
    _width = width;
    _speed = 1;  // default speed
    _score = 0;
    //lcd.drawRect(0,0,84,24,FILL_BLACK);
    
    }
    void Board::draw(N5110 &lcd)
    {
        //lcd.drawRect(_x+(_height/2)-(_width/2),_y,_width,_height,FILL_BLACK);
        lcd.drawRect(_x,_y,_height,_width,FILL_BLACK);
       // lcd.drawRect(0,0,84,24,FILL_BLACK);
       // lcd.drawRect(41,24,10,10,FILL_TRANSPARENT);
      //  lcd.clearPixel(10,24);
        
        
    }
        void Board::update(Direction d,float mag,N5110 &lcd)
        {
            _speed = int(mag*10.0f);  // scale is arbitrary, could be changed in future
           //if((ball_pos.y >= 0)&&(ball_pos.y <= 24))
          //  {
           //     lcd.drawRect(24,41,10,10,FILL_TRANSPARENT);
           // }
            lcd.clearPixel(10,24);

    // update y value depending on direction of movement
    // North is decrement as origin is at the top-left so decreasing moves up
            if (d == N) 
            {
                _y-=_speed;
            }else if (d == S) 
            {
                _y+=_speed;
            }else if(d == W)
            {
                _x-=_speed;
            }else if(d == E)
            {
                _x+=_speed;
            }else if(d == NE)
            {
                _y+=_speed;
                _x+=_speed;
            }else if(d == NW)
            {
                _y+=_speed;
                _x-=_speed;
            }else if(d == SE)
            {
                _y-=_speed;
                _x+=_speed;
            }else if(d == SW)
            {
                _y-=_speed;
                _x-=_speed;
            }
            if (_y < 1) 
            {
                _y = 1;
            }
            if (_y > HEIGHT - _height - 1)
            {
                _y = HEIGHT - _height - 1;
            }
             if (_x < 1) 
            {
                _x = 1;
            }
            if (_x > WIDTH - _width - 1)
            {
                _x = WIDTH - _width - 1;
            }
}
            void Board::add_score()
            {
                 _score++;
            }
            int Board::get_score()
            {
                return _score;
            }

            Vector2D Board::get_pos() 
            {
                 Vector2D p = {_x,_y};
                 return p;    
            }