Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

hello i have this code for bouncing ball its completed. BUT WHEN THE BALL GOES IN THE CORNER IT SHOULD COMES OUT 2 BALL FROM

hello i have this code for bouncing ball its completed. BUT WHEN THE BALL GOES IN THE CORNER IT SHOULD COMES OUT 2 BALL FROM THE OTHER SIDE. BUT THE CODE ITS ONLY COMING OUT ONE HOW TO FIX THAT?

#include #include #include #include

#define SCREEN_WIDTH 60 #define SCREEN_HEIGHT 20 #define BALL_VELOCITY 1 #define PADDLE_WIDTH 20 #define PADDLE_Y SCREEN_HEIGHT - 2 #define LEFT_HOLE_X 2 #define RIGHT_HOLE_X SCREEN_WIDTH - 1 #define HOLES_Y 1

int main() { // Initialize the random number generator. srand(time(NULL));

// Initialize the ball position and velocity. int ball_x = SCREEN_WIDTH / 2; int ball_y = 1; int ball_velocity_x = BALL_VELOCITY; int ball_velocity_y = BALL_VELOCITY;

// Initialize the paddle position. int paddle_x = SCREEN_WIDTH / 2 - PADDLE_WIDTH / 2;

// Game loop. while (1) { // Clear the screen. system("cls");

// Draw the ceiling. for (int i = 0; i < SCREEN_WIDTH + 2; i++) { printf("x"); } printf(" ");

// Draw the ball. for (int i = 0; i < ball_y; i++) { printf(" "); } for (int i = 0; i < ball_x; i++) { if (i == SCREEN_WIDTH / 2 - 3 || i == SCREEN_WIDTH / 2 + 2) { printf(" "); } else { printf(" "); } } printf("O ");

// Draw the paddle. for (int i = ball_y + 1; i < SCREEN_HEIGHT; i++) { printf(" "); } for (int i = 0; i < paddle_x; i++) { printf(" "); } for (int i = 0; i < PADDLE_WIDTH; i++) { printf("_"); } printf(" ");

// Check for user input to move the paddle. if (_kbhit()) { char key = _getch(); if (key == 77) // right arrow key { if (paddle_x < SCREEN_WIDTH - PADDLE_WIDTH) { paddle_x += 10; } } else if (key == 75) // left arrow key { if (paddle_x > 0) { paddle_x -= 10; } } }

// Update the ball position and velocity. ball_x += ball_velocity_x; ball_y += ball_velocity_y;

if (ball_x == 0 || ball_x == SCREEN_WIDTH - 1) { ball_velocity_x = -ball_velocity_x; } if (ball_y == 0) { ball_velocity_y = -ball_velocity_y; } if (ball_y == PADDLE_Y && ball_x >= paddle_x && ball_x < paddle_x + PADDLE_WIDTH) { ball_velocity_y = -ball_velocity_y; } if (ball_y == SCREEN_HEIGHT - 1) { printf("Game over! "); break; }

if ((ball_x == LEFT_HOLE_X || ball_x == RIGHT_HOLE_X) && ball_y == HOLES_Y) { // Reset the ball's position to the opposite side of the screen. ball_x = SCREEN_WIDTH - ball_x - 1;

// Add two new balls with opposite velocities. int new_ball_velocity_x = -ball_velocity_x; int new_ball_velocity_y = -ball_velocity_y;

int new_ball_x1, new_ball_x2; int new_ball_y1 = ball_y; int new_ball_y2 = ball_y;

if (ball_velocity_x > 0) { // Original ball was moving to the right. new_ball_x1 = ball_x + 1; new_ball_x2 = ball_x + 2; } else { // Original ball was moving to the left. new_ball_x1 = ball_x - 1; new_ball_x2 = ball_x - 2; }

if ((ball_x == LEFT_HOLE_X || ball_x == RIGHT_HOLE_X) && ball_y == HOLES_Y) { printf(" "); } else { printf("O"); }

// Draw the new balls. printf("O"); for (int i = 0; i < SCREEN_WIDTH - 4; i++) { if (i == new_ball_x1 || i == new_ball_x2) { printf("O"); } else { printf(" "); } } printf("O ");

// Set the velocities of the new balls. ball_velocity_x = new_ball_velocity_x; ball_velocity_y = new_ball_velocity_y; }

// Wait for a short time to control the game speed. for (int i = 0; i < 100000000; i++) {

} }

return 0; }

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Database Concepts

Authors: David M Kroenke, David J Auer

6th Edition

0132742926, 978-0132742924

More Books

Students also viewed these Databases questions