Mochu Yao explorer game

Dependencies:   mbed

Surface/surface.cpp

Committer:
el17my
Date:
2020-04-29
Revision:
32:47d98959b4ef
Parent:
17:1b4ecc01b79f
Child:
33:ea83f08fa466

File content as of revision 32:47d98959b4ef:

#include "surface.h"

// Constructor and destructor.
Surface::Surface() {}
Surface::~Surface() {}

void Surface::init(int y1, int y2) {
    //makesure that each line can not be constant or it will be too easy
_line_1.left = 0;
_line_1.right = 25;
_line_1.y = y1;
_line_1.length = 25;
_line_2.left = 30;
_line_2.right = 50;
_line_2.y = y1;
_line_2.length = 20;
_line_3.left = 65;
_line_3.right = 80;
_line_3.y = y1;
_line_3.length = 15;
//the line 1 to line 3 is on the lower level and than the line 4 to line 5 is on the upper level
// ---line 4---  ---line 5---  ---line 6---
// ---line 3---  ---line 2---  ---line 1---
_line_4.left = 0;
_line_4.right = 20;
_line_4.y = y2;
_line_4.length = 20;
_line_5.left = 25;
_line_5.right = 50;
_line_5.y = y2;
_line_5.length = 25;
_line_6.left = 60;
_line_6.right = 80;
_line_6.y = y2;
_line_6.length = 20;
};
//the line need to move form right to left so the line_1 function should have these functions
//1 the leftside of the line move toward right then the rightside should also move to the right to keep the length
//2 the line will be random length but must be suitable
//3 makesure there are two surface for player to stay
void Surface::line_1() {
    if(_line_1.left > 0) {
        _line_1.left-- ;
        wait(1);}
        //the left side will keep moving until it disappear on the screen which also means equal to zero
    if (_line_1.left + _line_1.length < 80) {
        _line_1.right-- ; wait(1);}
        //this line is mainly for regeneration of the line because I want the line to first disapper and then appear on the another edge
    if (_line_1.right <= 0) { 
        _line_1.right--; wait(1)
        _line_1.left = 0; }
        //if the left edge of the line is zero it will keep zero until the right edge equals to zero
    if (_line_1.right <= 0) {
            _line_1.left = 80;
            _line_1.right = 80;}
    _line_1.length = (rand() %10) + 5; } 

void Surface::line_2() {
    if(_line_2.left > 0) {
        _line_2.left-- ; wait(1);}
        //the left side will keep moving until it disappear on the screen which also means equal to zero
    if (_line_2.left + _line_1.length < 80) {
        _line_2.right-- ;wait(1);}
        //this line is mainly for regeneration of the line because I want the line to first disapper and then appear on the another edge
    if (_line_2.right <= 0) { 
        _line_2.right--;
        _line_2.left = 0;wait(1);}
        //if the left edge of the line is zero it will keep zero until the right edge equals to zero
    if (_line_2.right <= 0) {
            _line_2.left = 80;
            _line_2.right = 80;}
    _line_2.length = (rand() %15) + 10; } 
            
void Surface::line_3() {
    if(_line_3.left > 0) {
        _line_3.left-- ;wait(1);}
        //the left side will keep moving until it disappear on the screen which also means equal to zero
    if (_line_3.left + _line_1.length < 80) {
        _line_3.right-- ;wait(1);}
        //this line is mainly for regeneration of the line because I want the line to first disapper and then appear on the another edge
    if (_line_3.right <= 0) { 
        _line_3.right--;
        _line_3.left = 0; wait(1);}
        //if the left edge of the line is zero it will keep zero until the right edge equals to zero
    if (_line_3.right <= 0) {
            _line_3.left = 80;
            _line_3.right = 80;}
    _line_3.length = (rand() %10) + 10; }
            
void Surface::line_4() {
    if(_line_4.left > 0) {
        _line_4.left-- ;wait(1);}
        //the left side will keep moving until it disappear on the screen which also means equal to zero
    if (_line_4.left + _line_1.length < 80) {
        _line_4.right-- ;wait(1);}
        //this line is mainly for regeneration of the line because I want the line to first disapper and then appear on the another edge
    if (_line_4.right <= 0) { 
        _line_4.right--;
        _line_4.left = 0;wait(1);}
        //if the left edge of the line is zero it will keep zero until the right edge equals to zero
    if (_line_4.right <= 0) {
            _line_4.left = 80;
            _line_4.right = 80;}
    _line_4.length = (rand() %10) + 10; }
            
void Surface::line_5() {
    if(_line_5.left > 0) {
        _line_5.left-- ;}
        //the left side will keep moving until it disappear on the screen which also means equal to zero
    if (_line_5.left + _line_1.length < 80) {
        _line_5.right-- ;wait(1);}
        //this line is mainly for regeneration of the line because I want the line to first disapper and then appear on the another edge
    if (_line_5.right <= 0) { 
        _line_5.right--;
        _line_5.left = 0;wait(1);}
        //if the left edge of the line is zero it will keep zero until the right edge equals to zero
    if (_line_5.right <= 0) {
            _line_5.left = 80;
            _line_5.right = 80;}
    _line_5.length = (rand() %10) + 5; }
            
void Surface::line_6() {
    if(_line_6.left > 0) {
        _line_6.left-- ;wait(1);}
        //the left side will keep moving until it disappear on the screen which also means equal to zero
    if (_line_6.left + _line_1.length < 80) {
        _line_6.right-- ;wait(1);}
        //this line is mainly for regeneration of the line because I want the line to first disapper and then appear on the another edge
    if (_line_6.right <= 0) { 
        _line_6.right--;
        _line_6.left = 0;wait(1);}
        //if the left edge of the line is zero it will keep zero until the right edge equals to zero
    if (_line_6.right <= 0) {
            _line_6.left = 80;
            _line_6.right = 80;}
    _line_6.length = (rand() %10) + 10; }

Line Surface::getline_1(){return _line_1;}
Line Surface::getline_2(){return _line_2;}
Line Surface::getline_3(){return _line_3;}
Line Surface::getline_4(){return _line_4;}
Line Surface::getline_5(){return _line_5;}
Line Surface::getline_6(){return _line_6;}