Untitled

 avatar
unknown
c_cpp
2 years ago
2.4 kB
2
Indexable
#include<iostream>
#include "function.h"
using namespace std;

// [TODO]
void Field::handleBallKicked(int dx, int dy){
    bool isXbound = false;
    bool isYbound = false;
    if(dx == 0) isXbound = true;
    if(dy == 0) isYbound = true;
    while(true){
        if(isXbound == false)
            ball->SetX(ball->GetX() + dx);
        if(isYbound == false)
            ball->SetY(ball->GetY() + dy);
        if(ball->GetX() < 0){
            ball->SetX(0);
            isXbound = true;
        }
        if(ball->GetX() > n-1){
            ball->SetX(n-1);
            isXbound = true;
        }
        if(ball->GetY() < 0){
            ball->SetY(0);
            isYbound = true;
        }
        if(ball->GetY() > m-1){
            ball->SetY(m-1);
            isYbound = true;
        }
        if(isYbound == true && isXbound == true){
            break;
        }
        if(SomeoneIsHere(ball->GetX(), ball->GetY()) == true){
            break;
        }
    }
}
// [TODO]
void Field::handleBallKickedRebounce(int dx, int dy){
    bool bounced = false;
    bool xbounced = false, ybounced = false;

    while(true){
        ball->SetX(ball->GetX() + dx);
        ball->SetY(ball->GetY() + dy);

        if(ball->GetX() <= 0){
            ball->SetX(0);
            if(bounced == false){
                dx *= -1;
                xbounced = true;
            }
            else dx = 0;
        }
        if(ball->GetX() >= n-1){
            ball->SetX(n-1);
            if(bounced == false){
                dx *= -1;
                xbounced = true;
            }
            else dx = 0;
        }

        if(ball->GetY() <= 0){
            ball->SetY(0);
            if(bounced == false){
                dy *= -1;
                ybounced = true;
            }
            else dy = 0;
        }
        if(ball->GetY() >= m-1){
            ball->SetY(m-1);
            if(bounced == false){
                dy *= -1;
                ybounced = true;
            }
            else dy = 0;
        }
        if(xbounced == true || ybounced == true)
            bounced = true;
        if(dx == 0 && dy == 0 && bounced == true){
            break;
        }
        if(SomeoneIsHere(ball->GetX(), ball->GetY()) == true){
            break;
        }
    }
}
Editor is loading...