Image library for all the graph. Just test

Image.cpp

Committer:
MYY
Date:
2019-05-09
Revision:
6:100377ba0900
Parent:
3:d31341240f10

File content as of revision 6:100377ba0900:

#include "Image.h"

/*
The idea behind  Image:

    level_1_x, level_1_y : Coordinates for gold/rock in level 1/level 2/level 3. Random coordinates will mess up with the difficulty of game.
    level_2_x, level_2_y
    level_3_x, level_3_y

    They are global variables stored in "Global_my"

*/


// this a private function used to draw map for level 1
void Image::draw_map_1(N5110 &lcd)
{
    int i;
    for(i=0; i<3; i=i+1) {//0-3 are BigGold in level 1
        lcd.drawSprite(level_1_x[i],level_1_y[i], 5, 8, (int*)BigGold);
    };
    for(i=3; i<5; i=i+1) {//0-3 are SmallGold in level 1
        lcd.drawSprite(level_1_x[i], level_1_y[i], 4, 3, (int*)SmallGold);
    };
    for(i=5; i<7; i=i+1) {//0-3 are BigRock in level 1
        lcd.drawSprite(level_1_x[i], level_1_y[i], 8, 10, (int*)BigRock);
    }
    lcd.printString("Goal:40",40,5);
}

// this a private function used to draw map for level 2
// same idea as level 1 with different coordinates and goal
void Image::draw_map_2(N5110 &lcd)
{
    int i;
    //big gold
    for(i=0; i<4; i=i+1) {
        lcd.drawSprite(level_2_x[i],level_2_y[i], 5, 8, (int*)BigGold);
    };
    // small gold
    for(i=4; i<7; i=i+1) {
        lcd.drawSprite(level_2_x[i], level_2_y[i], 4, 3, (int*)SmallGold);
    };
    //Big rock
    for(i=7; i<10; i=i+1) {
        lcd.drawSprite(level_2_x[i], level_2_y[i], 8, 10, (int*)BigRock);
    }
    lcd.printString("Goal:95",40,5);// printing the goal we need to pass level 1
}

// this a private function used to draw map for level 3
// same idea as level 1 with different coordinates and goal
void Image::draw_map_3(N5110 &lcd)
{
    int i;
    //big gold
    for(i=0; i<5; i=i+1) {
        lcd.drawSprite(level_3_x[i],level_3_y[i], 5, 8, (int*)BigGold);
    };
    // small gold
    for(i=5; i<8; i=i+1) {
        lcd.drawSprite(level_3_x[i], level_3_y[i], 4, 3, (int*)SmallGold);
    };
    //Big rock
    for(i=8; i<12; i=i+1) {
        lcd.drawSprite(level_3_x[i], level_3_y[i], 8, 10, (int*)BigRock);
    }
    lcd.printString("Goal:150",34,5);
}

//This function draw every thing on the map.
void Image::draw_object(int x, int y, const int *graph, N5110 &lcd, Image &Image, float time, Rotate &Rotate, float angle, float speed, int sizex, int sizey)
{
    x =  x - speed*cos(angle);//This can calculate the route when we rotate, release or pull. 
    y =  y + speed*sin(angle);
    lcd.clear();
    lcd.drawSprite(x, y, sizex,sizey, (int*) graph);//draw hook/Gold/Rock depends on what stage you are at.
    lcd.drawLine(42,0, x, y, 1);//draw line between (42,0) and hook/Gold/Rock.
    Image.draw_map_1(lcd);//draw map
    Image.print_UI(lcd);//draw UI
    lcd.refresh();
    wait(time);
    Rotate.hookpoint[0]=x;//return the new hook point, we cannot replace x,y in the declaration with hookpoint because the rotate stage.
    Rotate.hookpoint[1]=y;
}

// same idea as level 1 with different map
void Image::draw_object_2(int x, int y, const int *graph, N5110 &lcd, Image &Image, float time, Rotate &Rotate, float angle, float speed,  int sizex, int sizey)
{
    x =  x - speed*cos(angle);
    y =  y + speed*sin(angle);
    //Score = Score + new_score;
    lcd.clear();
    lcd.drawSprite(x, y, sizex,sizey, (int*) graph);
    lcd.drawLine(42,0, x, y, 1);
    Image.draw_map_2(lcd);
    Image.print_UI(lcd);
    lcd.refresh();
    wait(time);
    Rotate.hookpoint[0]=x;
    Rotate.hookpoint[1]=y;
}

// same idea as level 1 with different map
void Image::draw_object_3(int x, int y, const int *graph, N5110 &lcd, Image &Image, float time, Rotate &Rotate, float angle, float speed,  int sizex, int sizey)
{
    x =  x - speed*cos(angle);
    y =  y + speed*sin(angle);
    //Score = Score + new_score;
    lcd.clear();
    lcd.drawSprite(x, y, sizex,sizey, (int*) graph);
    lcd.drawLine(42,0, x, y, 1);
    Image.draw_map_3(lcd);
    Image.print_UI(lcd);
    lcd.refresh();
    wait(time);
    Rotate.hookpoint[0]=x;
    Rotate.hookpoint[1]=y;
}

//This function can print UI which includes Score, Goal, Time remain, TNT number.
void Image::print_UI(N5110 &lcd)
{
    lcd.drawSprite(0, 40,6,6, (int*)TNT_graph);
    char buffer[14];
    char buffer2[14];
    char buffer3[14];
    sprintf(buffer,"%i",Score);
    sprintf(buffer2,"%i",Timer_1);
    sprintf(buffer3,":%i",TNT_num);
    lcd.printString(buffer,0,0);
    lcd.printString(buffer2,70,0);
    lcd.printString(buffer3,8,5);
}