This shows you the differences between two versions of the page.
pm:prj2023:tmiu:pongrecreation [2023/05/30 17:29] Ovidiu.istrate0211 [Software Design] |
pm:prj2023:tmiu:pongrecreation [2023/05/30 18:48] (current) Ovidiu.istrate0211 [Software Design] |
||
---|---|---|---|
Line 48: | Line 48: | ||
const int Player_1_moveButton = A0; // Joystick Pin for Player 1 | const int Player_1_moveButton = A0; // Joystick Pin for Player 1 | ||
const int Player_2_moveButton = A2; // Joystick Pin for Player 2 | const int Player_2_moveButton = A2; // Joystick Pin for Player 2 | ||
+ | const int ScoreBuzzerPin = 9; | ||
//---------------------------------------CLASSES------------------------------------------------ | //---------------------------------------CLASSES------------------------------------------------ | ||
Line 151: | Line 152: | ||
Paddle player1(0, 0, 2); // Creating Object for Player 1 Paddle | Paddle player1(0, 0, 2); // Creating Object for Player 1 Paddle | ||
- | Paddle player2(15, 0, 2); // Creating Object for Player 2 Paddle | + | Paddle player2(0, 1, 2); // Creating Object for Player 2 Paddle |
Ball ball(7, 1, 1, 1); // Creating Object for Ball | Ball ball(7, 1, 1, 1); // Creating Object for Ball | ||
//---------------------------------------SETUP------------------------------------------------ | //---------------------------------------SETUP------------------------------------------------ | ||
- | void setup() | + | void setup() { |
- | { | + | |
lcd.init(); // Initialize the LCD | lcd.init(); // Initialize the LCD | ||
lcd.backlight(); // Turn on the backlight | lcd.backlight(); // Turn on the backlight | ||
- | // Setting the buttons as Inputs | ||
pinMode(Player_1_moveButton, INPUT); | pinMode(Player_1_moveButton, INPUT); | ||
pinMode(Player_2_moveButton, INPUT); | pinMode(Player_2_moveButton, INPUT); | ||
+ | pinMode(ScoreBuzzerPin, OUTPUT); | ||
- | // Printing initial positions | ||
player1.PrintPaddle(); | player1.PrintPaddle(); | ||
player2.PrintPaddle(); | player2.PrintPaddle(); | ||
ball.PrintBall(); | ball.PrintBall(); | ||
+ | |||
+ | ShowStartingScreen(); | ||
} | } | ||
Line 175: | Line 176: | ||
void PrintScoreboard(int player1Score, int player2Score) | void PrintScoreboard(int player1Score, int player2Score) | ||
{ | { | ||
+ | lcd.clear(); | ||
lcd.setCursor(0, 0); | lcd.setCursor(0, 0); | ||
lcd.print("P1: "); | lcd.print("P1: "); | ||
Line 182: | Line 184: | ||
lcd.print("P2: "); | lcd.print("P2: "); | ||
lcd.print(player2Score); | lcd.print(player2Score); | ||
+ | |||
+ | delay(500); // Display the scoreboard for 0.5 seconds | ||
+ | lcd.clear(); | ||
+ | } | ||
+ | |||
+ | //---------------------------------------SCREENS------------------------------------------------ | ||
+ | |||
+ | void ShowStartingScreen() | ||
+ | { | ||
+ | lcd.clear(); | ||
+ | lcd.setCursor(3, 0); | ||
+ | lcd.print("Pong Game"); | ||
+ | delay(2000); | ||
+ | lcd.clear(); | ||
+ | } | ||
+ | |||
+ | void ShowGameOverScreen() | ||
+ | { | ||
+ | lcd.clear(); | ||
+ | lcd.setCursor(4, 0); | ||
+ | lcd.print("Game Over"); | ||
+ | delay(2000); | ||
+ | lcd.clear(); | ||
+ | } | ||
+ | void PlayScoreSound() { | ||
+ | tone(ScoreBuzzerPin, 1000, 200); // Play a sound for 200ms at a frequency of 1000Hz | ||
+ | delay(200); // Wait for 200ms to avoid overlapping sounds | ||
} | } | ||
Line 219: | Line 248: | ||
player1Score++; | player1Score++; | ||
PrintScoreboard(player1Score, player2Score); | PrintScoreboard(player1Score, player2Score); | ||
- | delay(2000); // Delay to display the scoreboard for 2 seconds | ||
- | if (player1Score >= 8) | + | if (player1Score >= 8 || player2Score >= 8) |
{ | { | ||
+ | |||
+ | ShowGameOverScreen(); | ||
player1Score = 0; | player1Score = 0; | ||
player2Score = 0; | player2Score = 0; | ||
+ | ball.ClearBall(); | ||
+ | ball = Ball(7, 1, 1, 1); // Reset the ball position | ||
+ | ball.PrintBall(); | ||
+ | ShowStartingScreen(); | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | PlayScoreSound(); | ||
+ | ball.ClearBall(); | ||
+ | ball = Ball(7, 1, 1, 1); // Reset the ball position | ||
+ | ball.PrintBall(); | ||
} | } | ||
- | |||
- | ball.ClearBall(); | ||
- | ball = Ball(7, 1, 1, 1); // Reset the ball position | ||
- | ball.PrintBall(); | ||
} | } | ||
else if (ball.Ball_X == 0) // Replace with actual condition for player 2 scoring | else if (ball.Ball_X == 0) // Replace with actual condition for player 2 scoring | ||
Line 235: | Line 272: | ||
player2Score++; | player2Score++; | ||
PrintScoreboard(player1Score, player2Score); | PrintScoreboard(player1Score, player2Score); | ||
- | delay(2000); // Delay to display the scoreboard for 2 seconds | ||
- | if (player2Score >= 8) | + | if (player1Score >= 8 || player2Score >= 8) |
{ | { | ||
+ | PlayScoreSound(); | ||
+ | ShowGameOverScreen(); | ||
player1Score = 0; | player1Score = 0; | ||
player2Score = 0; | player2Score = 0; | ||
+ | ball.ClearBall(); | ||
+ | ball = Ball(7, 1, 1, 1); // Reset the ball position | ||
+ | ball.PrintBall(); | ||
+ | ShowStartingScreen(); | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | ball.ClearBall(); | ||
+ | ball = Ball(7, 1, 1, 1); // Reset the ball position | ||
+ | ball.PrintBall(); | ||
} | } | ||
- | |||
- | ball.ClearBall(); | ||
- | ball = Ball(7, 1, 1, 1); // Reset the ball position | ||
- | ball.PrintBall(); | ||
} | } | ||
Line 251: | Line 295: | ||
delay(150); | delay(150); | ||
} | } | ||
+ | |||
</note> | </note> |