---
# System prepended metadata

title: 13895 - Football Game
tags: [class]

---

# 13895 - Football Game
###### tags: `class`
---

## Brief
See the code below

## Solution 0

```cpp=
#include <iostream>
#include "function.h"

// [TODO] Implement this function
// Test if any player is at this position.
bool Field::SomeoneIsHere(int x, int y) {
    for (int i = 0; i < p; i++) {
        if (player[i]->IsHere(x, y)) return true;
    }
    return false;
}

// [TODO] Implement this function
// Find the player who is holding the ball now.
int Field::GetWho() {
    for (int i = 0; i < p; i++) {
        if (player[i]->IsHoldingBall()) return i;
    }
    return -1;
}

// [TODO] Implement this function
void Field::handleBallKicked(int dx, int dy) {
    int curr_x = ball->GetX(), curr_y = ball->GetY();
    while(1) {
        curr_x += dx, curr_y += dy;
        if (SomeoneIsHere(curr_x, curr_y)) {
            ball->SetX(curr_x);
            ball->SetY(curr_y);
            break;
        }
        else if (curr_x < 0 || curr_x >= n || curr_y < 0 || curr_y >= m) {
            ball->SetX(curr_x - dx);
            ball->SetY(curr_y - dy);
            break;
        }
    }
}

// Utin
```

## Reference