123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- #include "Classes.h"
- #include "Game.h"
- #include <cmath>
- #include <iostream>
-
-
- Ball::Ball() {
- if (!ballSoundBuffer.loadFromFile("resources/ball.wav"))
- exit(EXIT_FAILURE);
- ballSound.setBuffer(ballSoundBuffer);
- setRadius(radius);
- setOutlineThickness(3);
- setOutlineColor(sf::Color::Black);
- setFillColor(sf::Color::White);
- setOrigin(radius / 2, radius / 2);
- }
-
- Ball::Ball(int r) {
- setRadius(r);
- setOutlineThickness(3);
- setOutlineColor(sf::Color::Black);
- setFillColor(sf::Color::White);
- setOrigin(r / 2, r / 2);
- radius = r;
- }
-
- float Ball::getX() const {
- return getPosition().x;
- }
-
- float Ball::getY() const {
- return getPosition().y;
- }
-
- void Ball::setPosition(float x, float y) {
- sf::Transformable::setPosition(x, y);
- }
-
- float Ball::getSpeed() const {
- return ballSpeed;
- }
-
- void Ball::move(float x, float y) {
- sf::Transformable::move(x, y);
- }
-
- float Ball::getRadius() const {
- return radius;
- }
-
- float Ball::getAngle() const {
- return angle;
- }
-
- void Ball::setAngle(float a) {
- angle = a;
- }
-
- void Ball::checkLeftPaddle(const Paddle &leftPaddle) {
-
- if (getPosition().x - radius < leftPaddle.getX() + leftPaddle.getSize().x / 2 &&
- getPosition().x - radius > leftPaddle.getX() &&
- getPosition().y + radius <= leftPaddle.getY() + leftPaddle.getSize().y / 2 &&
- getPosition().y - radius >= leftPaddle.getY() - leftPaddle.getSize().y / 2)
-
- {
- if (getPosition().y > leftPaddle.getY())
- angle = M_PI - angle + (rand() % 20) * M_PI / 180;
- else
- angle = M_PI - angle - (rand() % 20) * M_PI / 180;
-
- ballSound.play();
- setPosition(leftPaddle.getX() + radius + leftPaddle.getSize().x / 2 + 0.1f, getPosition().y);
- }
- }
-
- void Ball::checkRightPaddle(const Paddle &rightPaddle) {
-
- if (getPosition().x + radius > rightPaddle.getX() - rightPaddle.getSize().x / 2 &&
- getPosition().x + radius < rightPaddle.getX() &&
- getPosition().y + radius >= rightPaddle.getY() - rightPaddle.getSize().y / 2 &&
- getPosition().y - radius <= rightPaddle.getY() + rightPaddle.getSize().y / 2)
- {
- if (getPosition().y > rightPaddle.getY())
- angle = M_PI - angle + (rand() % 20) * M_PI / 180;
- else
- angle = M_PI - angle - (rand() % 20) * M_PI / 180;
-
- ballSound.play();
- setPosition(rightPaddle.getX() - radius - rightPaddle.getSize().x / 2 - 0.1, getPosition().y);
- }
- }
-
- void Ball::checkCollisions() {
- if (getY() - radius < 0.f)
- {
- ballSound.play();
- angle = -angle;
- setPosition(getX(), radius + 0.1);
- }
- if (getY() + radius > gameHeight)
- {
- ballSound.play();
- angle = -angle;
- setPosition(getX(), gameHeight - radius - 0.1);
- }
- }
-
- Paddle::Paddle() {
- size.x = 25;
- size.y = 100;
- setSize(sf::Vector2f(25, 100) - sf::Vector2f(3, 3));
- setOutlineThickness(3);
- setOutlineColor(sf::Color::Black);
- setFillColor(sf::Color(200, 200, 200));
- setOrigin(sf::Vector2f(25, 100) / 2.f);
- }
-
- float Paddle::getY() const {
- return getPosition().y;
- }
-
- float Paddle::getX() const {
- return getPosition().x;
- }
-
- void Paddle::setPosition(float x, float y) {
- sf::Transformable::setPosition(x, y);
- }
-
- sf::Vector2f Paddle::getSize() const {
- return size;
- }
-
- void Paddle::move(float x, float y) {
- sf::Transformable::move(x, y);
- }
-
- Game::Game() {
- isPlaying = false;
- AITime = sf::seconds(0.1);
- paddleSpeed = 400;
- rightPaddleSpeed = 0;
- ballAngle = 0;
- }
|