diff --git a/README.md b/README.md index 3be4711..827fa4b 100644 --- a/README.md +++ b/README.md @@ -1,54 +1,13 @@

Pongtopia

-Welcome to Pongtopia, a repository that hosts various implementations of the classic Pong game with a unique twist: you are alone controlling a single paddle that will bounce the ball against the bottom and side walls. Each version of the game is written in a different programming language, such as Python, MIT Scratch, JavaScript, and Java. The goal of this project is to study and analyze the behavior of different programming languages and enhance my skills. +Pong Study Repository: A Linguistic Exploration. A repository dedicated to the meticulous examination of the classic game Pong. +Hey there, fellow game enthusiasts! Welcome to my personal exploration of the classic Pong game, but with a quirky twist – I call it [PongCraft](https://github.com/PongCraft) Adventures! -## Implemented Games +Dive into the PongCraft world in various programming languages like Python, MIT Scratch, JavaScript, and Java. If you're curious and ready to embark on this solo coding journey with me, check out the different versions in my repository PongCraft. Each language brings its unique flavor to the game, allowing me to unravel the mysteries of code one paddle swing at a time. -- [Python](/python/README.md): Implementations in Python. -- [MIT Scratch](/scratch/README.md): A fun version of the game made with MIT Scratch. -- [JavaScript](/javascript/README.md): Games developed in JavaScript. -- [C++](/cpp/README.md): C++ sandbox. -- [Lua](/lua/README.md): Lua implementations. +Curious about different languages? Check out [PongCraft](https://github.com/PongCraft) for alternative versions. No need for redundant invites – just dive in and paddle through the coding adventure. -## How to Play - -Each folder contains the necessary files and instructions to run the corresponding version of the game. Follow the specific instructions in each folder to experience AlonePong in different programming languages. - - -## Contributions - -Contributions are welcome! If you would like to add an implementation in another programming language or make improvements to one of the existing versions, feel free to create a pull request. - - -## License - -This project is distributed under the MIT License. See the [LICENSE](/LICENSE) file for more details. - - -## Contact - -If you have any questions or suggestions, please don't hesitate to contact me: -Enjoy the game and explore the different implementations of AlonePong in Pongtopia! - -
- - -   - - -   - - -   - - -   - - -   - - -   -
+Legal Stuff – Legalities are covered under the MIT License. Refer to the documentation for details. +Got questions or suggestions? Let's chat. Explore Pong across diverse languages in the [PongCraft](https://github.com/PongCraft) domain. diff --git a/cpp/README.md b/cpp/README.md deleted file mode 100644 index 123b632..0000000 --- a/cpp/README.md +++ /dev/null @@ -1,47 +0,0 @@ -# AlonePong in C++ - -Welcome to the C++ version of AlonePong in the Pongtopia project! In this implementation, you'll experience the classic Pong game with a unique twist: you control a single paddle that bounces the ball against the bottom and side walls. Enjoy OldSchool stress-free moments. - -## How to Compile and Run - -To compile and run AlonePong and Pong in C++, follow these steps: - -1. Clone or download this repository to your local machine. -2. Make sure you have g++ (GNU C++ compiler) and the SFML library installed on your system. -3. Open a terminal or command prompt and navigate to the “cpp” folder. - -4. Compile the source code using the following command for AlonePong: - -```bash -g++ -o alone_pong alone_pong.cpp -lsfml-graphics -lsfml-window -lsfml-system -``` - -And for Pong: -```bash -g++ -o pong pong.cpp -lsfml-graphics -lsfml-window -lsfml-system -``` - -5. After successful compilation, run the game with the following command for AlonePong: - -```bash -./alone_pong -``` - -And for Pong: -```bash -./pong -``` - -That’s it! You can now enjoy the game and test your skills in this solo Pong adventure. Use arrow keys to play. - - - -## Technologies Used - -This implementation of AlonePong is written in C++ and uses the SFML (Simple and Fast Multimedia Library) for graphics and window management. - -## Feedback and Contributions - -If you have any feedback, ideas for improvements, or if you'd like to contribute to this project, feel free to reach out. Your input is highly appreciated! - -Thanks for playing AlonePong in C++, and enjoy the game! diff --git a/cpp/alone_pong.cpp b/cpp/alone_pong.cpp deleted file mode 100644 index 2a84b76..0000000 --- a/cpp/alone_pong.cpp +++ /dev/null @@ -1,98 +0,0 @@ -#include -#include -#include -#include -#include - -int main() { - sf::RenderWindow window(sf::VideoMode(400, 500), "Alone Pong"); - sf::Clock clock; - - // Configurações do jogo - std::srand(static_cast(std::time(nullptr))); - float ballSpeedX = (std::rand() % 4 == 0) ? 2.0f : -2.0f; - float ballSpeedY = (std::rand() % 4 == 0) ? 2.0f : -2.0f; - - const float paddleWidth = 60.0f; - const float paddleHeight = 5.0f; - float paddleX = (window.getSize().x - paddleWidth) / 2.0f; - - const float ballSize = 5.0f; - float ballX = window.getSize().x / 2.0f; - float ballY = window.getSize().y / 2.0f; - - // Variáveis para controle das teclas de seta - bool rightPressed = false; - bool leftPressed = false; - - while (window.isOpen()) { - sf::Event event; - while (window.pollEvent(event)) { - if (event.type == sf::Event::Closed) - window.close(); - else if (event.type == sf::Event::KeyPressed) { - if (event.key.code == sf::Keyboard::Right) - rightPressed = true; - else if (event.key.code == sf::Keyboard::Left) - leftPressed = true; - } else if (event.type == sf::Event::KeyReleased) { - if (event.key.code == sf::Keyboard::Right) - rightPressed = false; - else if (event.key.code == sf::Keyboard::Left) - leftPressed = false; - } - } - - float deltaTime = clock.restart().asSeconds(); - - // Atualiza a posição da bola - ballX += ballSpeedX * deltaTime * 100.0f; - ballY += ballSpeedY * deltaTime * 100.0f; - - // Colisão com as bordas - if (ballX + ballSize >= window.getSize().x || ballX <= 0) - ballSpeedX = -ballSpeedX; - - if (ballY <= 0) - ballSpeedY = -ballSpeedY; - - // Colisão com paddle - if (ballY + ballSize >= window.getSize().y - paddleHeight && ballX >= paddleX && ballX <= paddleX + paddleWidth) - ballSpeedY = -ballSpeedY; - - // Limita a posição do paddle - paddleX = std::min(std::max(paddleX, 0.0f), static_cast(window.getSize().x - paddleWidth)); - - // Reinicia a bola se ela sair da tela - if (ballY + ballSize >= window.getSize().y) { - ballX = window.getSize().x / 2.0f; - ballY = window.getSize().y / 2.0f; - ballSpeedX = (std::rand() % 4 == 0) ? 2.0f : -2.0f; - ballSpeedY = (std::rand() % 4 == 0) ? 2.0f : -2.0f; - } - - // Atualiza a posição do paddle - if (rightPressed && paddleX < window.getSize().x - paddleWidth) - paddleX += deltaTime * 250.0f; - - if (leftPressed && paddleX > 0) - paddleX -= deltaTime * 250.0f; - - window.clear(sf::Color::Black); - - // Desenha os elementos do jogo - sf::RectangleShape paddle(sf::Vector2f(paddleWidth, paddleHeight)); - paddle.setPosition(paddleX, window.getSize().y - paddleHeight); - paddle.setFillColor(sf::Color::Green); - window.draw(paddle); - - sf::CircleShape ball(ballSize); - ball.setPosition(ballX, ballY); - ball.setFillColor(sf::Color::Green); - window.draw(ball); - - window.display(); - } - - return 0; -} diff --git a/cpp/pong.cpp b/cpp/pong.cpp deleted file mode 100644 index 9d7abcd..0000000 --- a/cpp/pong.cpp +++ /dev/null @@ -1,137 +0,0 @@ -#include -#include -#include -#include -#include - -int main() { - sf::RenderWindow window(sf::VideoMode(800, 600), "Pong"); - - // Variáveis de jogo - float ballRadius = 6.0f; - sf::CircleShape ball(ballRadius); - ball.setFillColor(sf::Color::Green); - ball.setPosition(window.getSize().x / 2.0f - ballRadius, window.getSize().y / 2.0f - ballRadius); - - float ballSpeedX = (std::rand() % 4 == 0) ? 0.15f : -0.08f; - float ballSpeedY = (std::rand() % 4 == 0) ? 0.15f : -0.08f; - - float paddleWidth = 5.0f; - float paddleHeight = 60.0f; - - sf::RectangleShape paddle1(sf::Vector2f(paddleWidth, paddleHeight)); - paddle1.setFillColor(sf::Color::Green); - paddle1.setPosition(10.0f, window.getSize().y / 2.0f - paddleHeight / 2.0f); - - sf::RectangleShape paddle2(sf::Vector2f(paddleWidth, paddleHeight)); - paddle2.setFillColor(sf::Color::Green); - paddle2.setPosition(window.getSize().x - paddleWidth - 10.0f, window.getSize().y / 2.0f - paddleHeight / 2.0f); - - bool player1UpPressed = false; - bool player1DownPressed = false; - bool player2UpPressed = false; - bool player2DownPressed = false; - - int player1Score = 0; - int player2Score = 0; - - // Placar - sf::Font font; - if (!font.loadFromFile("VT323.ttf")) { - std::cerr << "Failed to load font!" << std::endl; - return 1; - } - - sf::Text scoreText; - scoreText.setFont(font); - scoreText.setCharacterSize(30); - scoreText.setFillColor(sf::Color::Green); - - while (window.isOpen()) { - sf::Event event; - while (window.pollEvent(event)) { - if (event.type == sf::Event::Closed) - window.close(); - else if (event.type == sf::Event::KeyPressed) { - if (event.key.code == sf::Keyboard::W) - player1UpPressed = true; - else if (event.key.code == sf::Keyboard::S) - player1DownPressed = true; - else if (event.key.code == sf::Keyboard::O) - player2UpPressed = true; - else if (event.key.code == sf::Keyboard::L) - player2DownPressed = true; - } else if (event.type == sf::Event::KeyReleased) { - if (event.key.code == sf::Keyboard::W) - player1UpPressed = false; - else if (event.key.code == sf::Keyboard::S) - player1DownPressed = false; - else if (event.key.code == sf::Keyboard::O) - player2UpPressed = false; - else if (event.key.code == sf::Keyboard::L) - player2DownPressed = false; - } - } - - // Atualiza a posição da bola - ball.move(ballSpeedX, ballSpeedY); - - // Colisão com as bordas - if (ball.getPosition().x <= 0 || ball.getPosition().x + 2 * ballRadius >= window.getSize().x - paddleWidth) { - ballSpeedX = -ballSpeedX; - } - - // Colisão com os paddles - if (ball.getGlobalBounds().intersects(paddle1.getGlobalBounds()) || ball.getGlobalBounds().intersects(paddle2.getGlobalBounds())) { - ballSpeedX = -ballSpeedX; - } - - // Verifica se a bola saiu da tela - if (ball.getPosition().y > window.getSize().y || ball.getPosition().y < 0) { - // Inverte a direção vertical da bola - ballSpeedY = -ballSpeedY; - } - - // Verifica os pontos - if (ball.getPosition().x < 0) { - // Ponto para o jogador 2 - player2Score++; - ball.setPosition(window.getSize().x / 2.0f - ballRadius, window.getSize().y / 2.0f - ballRadius); - ballSpeedX = -0.08f; - ballSpeedY = (std::rand() % 4 == 0) ? 0.15f : -0.08f; - } else if (ball.getPosition().x > window.getSize().x - paddleWidth - 2 * ballRadius) { - // Ponto para o jogador 1 - player1Score++; - ball.setPosition(window.getSize().x / 2.0f - ballRadius, window.getSize().y / 2.0f - ballRadius); - ballSpeedX = 0.08f; - ballSpeedY = (std::rand() % 4 == 0) ? 0.15f : -0.08f; - } - - // Movimenta os paddles - if (player1UpPressed && paddle1.getPosition().y > 0) { - paddle1.move(0, -0.5f); - } - if (player1DownPressed && paddle1.getPosition().y + paddleHeight < window.getSize().y) { - paddle1.move(0, 0.5f); - } - if (player2UpPressed && paddle2.getPosition().y > 0) { - paddle2.move(0, -0.5f); - } - if (player2DownPressed && paddle2.getPosition().y + paddleHeight < window.getSize().y) { - paddle2.move(0, 0.5f); - } - - // Atualiza o placar - scoreText.setString(std::to_string(player1Score) + " : " + std::to_string(player2Score)); - scoreText.setPosition(window.getSize().x / 2.0f - scoreText.getGlobalBounds().width / 2.0f, 10.0f); - - window.clear(); - window.draw(ball); - window.draw(paddle1); - window.draw(paddle2); - window.draw(scoreText); - window.display(); - } - - return 0; -} diff --git a/lua/README.md b/lua/README.md deleted file mode 100644 index cbebd02..0000000 --- a/lua/README.md +++ /dev/null @@ -1,29 +0,0 @@ -# AlonePong in Lua - -Welcome to the Lua version of AlonePong in the Pongtopia project! In this implementation, you'll experience the classic Pong game with a unique twist: you control a single paddle that bounces the ball against the bottom and side walls. Enjoy OldSchool stress-free moments while exploring Lua for game development. - -## How to Run - -To run AlonePong in Lua, follow these steps: - -1. Clone or download this repository to your local machine. -2. Make sure you have the LÖVE framework installed. You can download it from [https://love2d.org/](https://love2d.org/). -3. Open a terminal or command prompt and navigate to the "lua/alone_pong" folder. -4. Run the game using the following command: - -```bash -love main.lua -``` - - -That's it! You can now enjoy the game and explore Lua for game development. The game logic is implemented in the "main.lua" file. - -## Technologies Used - -This implementation of AlonePong is written in Lua and uses the LÖVE framework for game development. - -## Feedback and Contributions - -If you have any feedback, ideas for improvements, or if you'd like to contribute to this project, feel free to reach out. Your input is highly appreciated! - -Thanks for playing AlonePong in Lua, and enjoy the game! diff --git a/lua/alone_pong/main.lua b/lua/alone_pong/main.lua deleted file mode 100644 index 2b376f8..0000000 --- a/lua/alone_pong/main.lua +++ /dev/null @@ -1,73 +0,0 @@ --- Inicialização do Love2D -function love.load() - -- Configurações da janela do jogo - largura, altura = 600, 800 - love.window.setMode(largura, altura) - love.window.setTitle("Alone Pong") - - -- Cores - preto = {0, 0, 0} - verde = {0, 255, 0} - - -- Posições iniciais da bola e da barra (sem movimento) - bola_tamanho = 20 - bola_x = largura / 2 - bola_tamanho / 2 - bola_y = altura / 2 - bola_tamanho / 2 - - barra_largura = 100 - barra_altura = 10 - barra_x = largura / 2 - barra_largura / 2 - barra_y = altura - 30 - - -- Velocidade da bola - bola_velocidade_x = 200 - bola_velocidade_y = 200 -end - --- Renderização do jogo -function love.draw() - -- Limpa a tela - love.graphics.setBackgroundColor(preto) - love.graphics.clear() - - -- Desenha a bola - love.graphics.setColor(verde) - love.graphics.rectangle("fill", bola_x, bola_y, bola_tamanho, bola_tamanho) - - -- Desenha a barra do jogador - love.graphics.rectangle("fill", barra_x, barra_y, barra_largura, barra_altura) -end - --- Atualização do jogo -function love.update(dt) - -- Movimento da bola - bola_x = bola_x + bola_velocidade_x * dt - bola_y = bola_y + bola_velocidade_y * dt - - -- Controle da barra do jogador - if love.keyboard.isDown("left") and barra_x > 0 then - barra_x = barra_x - 200 * dt -- Velocidade da barra - end - if love.keyboard.isDown("right") and barra_x < largura - barra_largura then - barra_x = barra_x + 200 * dt -- Velocidade da barra - end - - -- Colisão com as paredes para a bola - if bola_x <= 0 or bola_x >= largura - bola_tamanho then - bola_velocidade_x = -bola_velocidade_x - end - - -- Colisão com a parte superior da tela para a bola - if bola_y <= 0 then - bola_velocidade_y = -bola_velocidade_y - end - - -- Colisão com a barra do jogador para a bola - if ( - bola_y + bola_tamanho >= barra_y and - bola_x + bola_tamanho >= barra_x and - bola_x <= barra_x + barra_largura - ) then - bola_velocidade_y = -bola_velocidade_y - end -end diff --git a/python/AlonePong.py b/python/AlonePong.py deleted file mode 100644 index 8107036..0000000 --- a/python/AlonePong.py +++ /dev/null @@ -1,80 +0,0 @@ -import pygame -import random - -# Inicialização do Pygame -pygame.init() - -# Configurações da janela do jogo -largura, altura = 600, 800 -janela = pygame.display.set_mode((largura, altura)) -pygame.display.set_caption("Alone Pong") - -# Cores -preto = (0, 0, 0) -verde = (0, 255, 0) - -# Bola -bola_tamanho = 20 -bola_x = largura // 2 - bola_tamanho // 2 -bola_y = altura // 2 - bola_tamanho // 2 -bola_velocidade_x = random.choice([-0.1, -0.3]) * 2 -bola_velocidade_y = random.choice([-0.1, -0.3]) * 2 - -# Barra do jogador -barra_largura = 100 -barra_altura = 10 -barra_x = largura // 2 - barra_largura // 2 -barra_y = altura - 30 -barra_velocidade = 1 - -# Loop do jogo -running = True -while running: - for evento in pygame.event.get(): - if evento.type == pygame.QUIT: - running = False - - # Controle da barra do jogador - teclas = pygame.key.get_pressed() - if teclas[pygame.K_LEFT] and barra_x > 0: - barra_x -= barra_velocidade - if teclas[pygame.K_RIGHT] and barra_x < largura - barra_largura: - barra_x += barra_velocidade - - # Movimento da bola - bola_x += bola_velocidade_x - bola_y += bola_velocidade_y - - # Colisão com as paredes e a barra - if bola_x <= 0 or bola_x >= largura - bola_tamanho: - bola_velocidade_x = -bola_velocidade_x - - if bola_y <= 0: - bola_velocidade_y = -bola_velocidade_y - - if ( - barra_y <= bola_y + bola_tamanho <= barra_y + barra_altura - and barra_x <= bola_x <= barra_x + barra_largura - ): - bola_velocidade_y = -bola_velocidade_y - - # Verifica se a bola caiu - if bola_y >= altura: - bola_x = largura // 2 - bola_tamanho // 2 - bola_y = altura // 2 - bola_tamanho // 2 - bola_velocidade_x = random.choice([-0.1, -0.3]) * 2 - bola_velocidade_y = random.choice([-0.1, -0.3]) * 2 - - # Limpa a tela - janela.fill(preto) - - # Desenha a bola - pygame.draw.ellipse(janela, verde, (bola_x, bola_y, bola_tamanho, bola_tamanho)) - - # Desenha a barra do jogador - pygame.draw.rect(janela, verde, (barra_x, barra_y, barra_largura, barra_altura)) - - pygame.display.update() - -# Encerramento do Pygame -pygame.quit() diff --git a/python/Pong.py b/python/Pong.py deleted file mode 100644 index 01b125a..0000000 --- a/python/Pong.py +++ /dev/null @@ -1,112 +0,0 @@ -import pygame -import random - -# Inicialização do Pygame -pygame.init() - -# Configurações da janela do jogo -largura, altura = 800, 600 -janela = pygame.display.set_mode((largura, altura)) -pygame.display.set_caption("Pong") - -# Cores -preto = (0, 0, 0) -verde = (51, 255, 0) - -# Raquetes -raquete_largura = 10 -raquete_altura = 100 -raquete_jogador1_x = 20 -raquete_jogador2_x = largura - 20 - raquete_largura -raquete_jogador1_y = altura // 2 - raquete_altura // 2 -raquete_jogador2_y = altura // 2 - raquete_altura // 2 -raquete_velocidade = 0.5 - -# Bola -bola_tamanho = 20 -bola_x = largura // 2 - bola_tamanho // 2 -bola_y = altura // 2 - bola_tamanho // 2 -bola_velocidade_x = random.choice((-0.5, -0.2)) -bola_velocidade_y = random.choice((-0.5, -0.2)) - -# Pontuação -pontos_jogador1 = 0 -pontos_jogador2 = 0 -fonte = pygame.font.Font(None, 36) - -# Loop do jogo -running = True -while running: - for evento in pygame.event.get(): - if evento.type == pygame.QUIT: - running = False - - # Controle das barras dos jogadores - teclas = pygame.key.get_pressed() - if teclas[pygame.K_w] and raquete_jogador1_y > 0: - raquete_jogador1_y -= raquete_velocidade - if teclas[pygame.K_s] and raquete_jogador1_y < altura - raquete_altura: - raquete_jogador1_y += raquete_velocidade - if teclas[pygame.K_o] and raquete_jogador2_y > 0: - raquete_jogador2_y -= raquete_velocidade - if teclas[pygame.K_l] and raquete_jogador2_y < altura - raquete_altura: - raquete_jogador2_y += raquete_velocidade - - # Movimento da bola - bola_x += bola_velocidade_x - bola_y += bola_velocidade_y - - # Colisão com as paredes superior e inferior - if bola_y <= 0 or bola_y >= altura - bola_tamanho: - bola_velocidade_y = -bola_velocidade_y - - # Colisão com as raquetes - if ( - raquete_jogador1_x + raquete_largura >= bola_x >= raquete_jogador1_x - and raquete_jogador1_y + raquete_altura >= bola_y >= raquete_jogador1_y - ): - bola_velocidade_x = -bola_velocidade_x - - if ( - raquete_jogador2_x - bola_tamanho <= bola_x <= raquete_jogador2_x - and raquete_jogador2_y + raquete_altura >= bola_y >= raquete_jogador2_y - ): - bola_velocidade_x = -bola_velocidade_x - - # Verifica se a bola saiu da tela - if bola_x >= largura: - pontos_jogador1 += 1 - bola_x = largura // 2 - bola_tamanho // 2 - bola_y = altura // 2 - bola_tamanho // 2 - bola_velocidade_x = random.choice((-0.5, -0.2)) * -1 - bola_velocidade_y = random.choice((-0.5, -0.2)) * -1 - - elif bola_x <= 0: - pontos_jogador2 += 1 - bola_x = largura // 2 - bola_tamanho // 2 - bola_y = altura // 2 - bola_tamanho // 2 - bola_velocidade_x = random.choice((-0.5, -0.2)) - bola_velocidade_y = random.choice((-0.5, -0.2)) - - # Verifica se alguém venceu (10 pontos) - if pontos_jogador1 >= 10 or pontos_jogador2 >= 10: - running = False - - # Limpa a tela - janela.fill(preto) - - # Desenha as raquetes - pygame.draw.rect(janela, verde, (raquete_jogador1_x, raquete_jogador1_y, raquete_largura, raquete_altura)) - pygame.draw.rect(janela, verde, (raquete_jogador2_x, raquete_jogador2_y, raquete_largura, raquete_altura)) - - # Desenha a bola - pygame.draw.ellipse(janela, verde, (bola_x, bola_y, bola_tamanho, bola_tamanho)) - -# Desenha a pontuação - pontuacao = fonte.render(f"{pontos_jogador1} - {pontos_jogador2}", True, verde) - janela.blit(pontuacao, (largura // 2 - pontuacao.get_width() // 2, 30)) - - pygame.display.update() - -# Encerramento do Pygame -pygame.quit() diff --git a/python/README.md b/python/README.md deleted file mode 100644 index cbacbb0..0000000 --- a/python/README.md +++ /dev/null @@ -1,53 +0,0 @@ -# Alone Pong in Python - -This is a project that implements a single-player version of the Pong game, using the Pygame framework in Python. - -## How to Run the Game - -Before running the game, you need to have Pygame installed in your Python environment. To install it, execute the following command in the terminal: - -``` -pip install pygame -``` - -Once Pygame is installed, simply execute the `AlonePong.py` file in your terminal using the command: - -``` -python3.9 AlonePong.py -``` - -## Game Features - -### Alone Pong - -In this version of the game, there is only one paddle controlled by the player using the arrow keys. The objective is to hit the ball present on the screen to the opposite direction and prevent it from reaching the bottom of the screen. Every time the ball hits the bottom, a new ball starts with a random velocity. - -Some features of this project: - -- Only one player controlled by the keyboard; -- Movement of the paddle through the arrow keys; -- Each new ball has a random velocity, and the game does not have a defined end; -- Simple and minimalist graphical interface. - - -### Pong - -In the classic game of Pong, there are two players competing against each other. Player 1 controls their paddle using the keys W (up) and S (down), while player 2 uses the keys O (up) and L (down). The objective of the game is to hit the ball with the paddle and prevent it from reaching the opposite end of the screen. The player who scores a point gets to serve the ball, and the game continues until one player reaches the score of 10 points. - -Some features of this classic game include: - -- Multiplayer mode with two players; -- Paddles are controlled by the keys W and S for player 1, and O and L for player 2; -- The player who scores a point serves the ball, adding an additional challenge to the gameplay; -- The game ends as soon as one player reaches a score of 10 points; -- Classic, simple, and recognizable graphics. - - -## Contributions - -This project was developed for learning and improving Python and Pygame skills. However, contributions are always welcome! If you encounter any issues in the code or have suggestions for improvements, feel free to open an issue or send a pull request. - - -## License - -This project is released under the MIT license. See the [LICENSE](/LICENSE) file for more details. diff --git a/scratch/AlonePong.sb3 b/scratch/AlonePong.sb3 deleted file mode 100644 index 062663a..0000000 Binary files a/scratch/AlonePong.sb3 and /dev/null differ diff --git a/scratch/Pong.sb3 b/scratch/Pong.sb3 deleted file mode 100644 index 7249298..0000000 Binary files a/scratch/Pong.sb3 and /dev/null differ diff --git a/scratch/README.md b/scratch/README.md deleted file mode 100644 index 4a46060..0000000 --- a/scratch/README.md +++ /dev/null @@ -1,32 +0,0 @@ -# Projetos Scratch em Pongtopia - -Bem-vindo à pasta de projetos Scratch Pongtopia! Aqui você encontrará uma coleção de projetos interativos criados com a linguagem de programação visual Scratch. - - -## Sobre Scratch - -O Scratch é uma plataforma de programação visual que permite criar animações, jogos e histórias interativas de forma criativa e divertida. Estou a explorar projetos demonstrem a versatilidade do Scratch e os conceitos de programação de maneira lúdica. - - -## Executando os Projetos - -Para executar qualquer um dos projetos Scratch nesta pasta, siga estas etapas: - -1. Acesse o [Scratch Online](https://scratch.mit.edu/) no seu navegador. - -2. Clique em "Criar" no topo da página. - -3. No editor do Scratch, clique em "Arquivo" no canto superior esquerdo. - -4. Escolha a opção "Carregar de seu computador" e selecione o arquivo `.sb3` do projeto que deseja executar (encontre-o nesta pasta). - -5. Seu projeto Scratch será carregado e você poderá iniciá-lo clicando na bandeira verde. - - -## Explore e Experimente - -Sinta-se à vontade para explorar nossos projetos Scratch, remixá-los e experimentar com a programação visual. É uma ótima maneira de aprender e se divertir ao mesmo tempo. - -[Scratch Profile](https://scratch.mit.edu/users/rmottanet/) - -![Scratch Cat](https://cdn.scratch.mit.edu/scratchr2/static/__109cbdb854ae2d0cfca4f99b6ba8cc40.png)