A multiplayer Pong game built in Java with Swing GUI and a MariaDB/MySQL backend for tracking scores and maintaining a leaderboard.
- 🎮 Two-player multiplayer Pong over a TCP socket connection
- 🖥️ Swing GUI for login, waiting room, game, and end screen
- 🏆 Leaderboard stored in a MariaDB database
- 📊 Tracks wins/losses per player
- ⏱️ Real-time paddle & ball synchronization via client-server messaging
JavaPong/
├── JavaProjectClient/src/javaprojectclient
| ├── Ball.java # Ball movement
│ ├── GameGUI.java # Game screen + rendering + client networking
│ ├── JavaProjectClient.java # Client entry point (login + waiting room)
| ├── Paddle.java
| ├── Score.java
├── JavaProjectServer/src/javaprojectserver
│ ├── JavaProjectServer.java # Server (game coordinator + DB integration)
└── README.md # Project documentation
- Java JDK 8+
- MariaDB/MySQL running locally on port 3306
- Database named
JPongwith a tableLeaderboard
CREATE DATABASE JPong;
USE JPong;
CREATE TABLE Leaderboard (
username VARCHAR(50) PRIMARY KEY,
numWins INT DEFAULT 0,
numLoss INT DEFAULT 0
);The server currently connects to:
private static final String URL = "jdbc:mariadb://localhost:3306/JPong";
private static final String USERNAME = "root";
private static final String PASSWORD = "1234";👉 Update these in JavaProjectServer.java to match your database credentials.
cd javaprojectserver
javac JavaProjectServer.java
java javaprojectserver.JavaProjectServerOpen two terminals (or machines) and run:
cd javaprojectclient
javac JavaProjectClient.java GameGUI.java
java javaprojectclient.JavaProjectClient- Enter a username and the server IP (e.g., localhost) in the login screen.
- First player will wait in the Waiting Room until Player 2 joins.
- Once connected, the game starts automatically.
- ⬆️ Arrow Up → Move paddle up
- ⬇️ Arrow Down → Move paddle down
At the end of each game:
- Winner’s win count is incremented.
- Loser’s loss count is incremented.
- The updated leaderboard is displayed in the End Screen.
- Nihal Rahman
- Rakeeb Hossain