Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

hello i have this C code bouncing ball completed. the game is that if the ball goes in the corner it comes out two balls

hello i have this C code bouncing ball completed. the game is that if the ball goes in the corner it comes out two balls on the other side. i want to change it to if the ball goes iin the corner it comes back one ball and the other ball comes out from the other side. 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; int new_ball_y1 = ball_y; int new_ball_y2 = ball_y;

int new_ball_x2 = SCREEN_WIDTH - ball_x - 1;

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; } // Draw the new balls. printf("O"); for (int i = 0; i < SCREEN_WIDTH - 2; 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

SQL Instant Reference

Authors: Gruber, Martin Gruber

2nd Edition

0782125395, 9780782125399

More Books

Students also viewed these Databases questions