I HAVE A C CODE BOUNCING BALL GAME THE CODE IS IN C AND I WANT TO CONVERT THE CODE TO ASSAMBLY LANGUAGE IN MIPS. THE CODE SHOULD WORK AND COMPILE IN MARS PROGRAM.
#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 -1
#define LEFT_HOLE_X 2
#define RIGHT_HOLE_X SCREEN_WIDTH – 1
#define HOLES_Y 1
#define SPEED_INCREASE_INTERVAL 5
int main()
{
// 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;
// Initialize the timer variables.
time_t start_time = time(NULL);
time_t current_time;
// Initialize the speed increase variables.
int speed_increase_count = 50;
int speed_increase_amount = 50;
// Game loop.
while (1)
{
// Clear the screen.
system(“cls”);
// Draw the ceiling.
for (int i = 0; i < SCREEN_WIDTH + 2; i++)
{
printf(“M”);
}
printf(“\033[0;34m\n”);
// Draw the ball.
for (int i = 0; i < ball_y; i++)
{
printf(“\n”);
}
for (int i = 0; i < ball_x; i++)
{
if (i == SCREEN_WIDTH / 2 – 3 || i == SCREEN_WIDTH / 2 + 2)
{
printf(” “);
}
else
{printf(” “);}
}
printf(“\033[0;31m()\n”);
// Draw the paddle.
for (int i = ball_y + 1; i < SCREEN_HEIGHT; i++)
{printf(“\n”);}
for (int i = 0; i < paddle_x; i++)
{printf(” “);}
for (int i = 0; i < PADDLE_WIDTH; i++)
{
printf(“W”);
}
printf(“\033[0;36m\n”);
// 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 % 2 == 0 && ball_y != 0 && ball_x != 0 && ball_x != SCREEN_WIDTH – 1)
{
// Increase ball velocity every 2 seconds
ball_velocity_x *= 1.2;
ball_velocity_y *= 1.2;
}
if (ball_y == SCREEN_HEIGHT + 1)
{
printf(“Game over!\n”);
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(“*”);
}
// Draw the new balls.
for (int i = 0; i < ball_y; i++){printf("\n");}for (int i = 0; i < ball_x; i++){if (i == SCREEN_WIDTH / 2 - 3 || i == SCREEN_WIDTH / 2 + 2){printf(" ");}else{printf(" ");}}
printf(“@\n”);
// 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 % 5 == 0 && ball_y != 0 && ball_x != 0 && ball_x != SCREEN_WIDTH – 1)
{
// Increase ball velocity every 5 seconds
ball_velocity_x *= 1.5;
ball_velocity_y *= 1.5;
}
if (ball_y == SCREEN_HEIGHT – 1)
{printf(“Game over!\n”);break;}}}
return 0;
}
#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 -1
#define LEFT_HOLE_X 2
#define RIGHT_HOLE_X SCREEN_WIDTH – 1
#define HOLES_Y 1
#define SPEED_INCREASE_INTERVAL 5
int main()
{
// 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;
// Initialize the timer variables.
time_t start_time = time(NULL);
time_t current_time;
// Initialize the speed increase variables.
int speed_increase_count = 50;
int speed_increase_amount = 50;
// Game loop.
while (1)
{
// Clear the screen.
system(“cls”);
// Draw the ceiling.
for (int i = 0; i < SCREEN_WIDTH + 2; i++)
{
printf("M");
}
printf("\033[0;34m\n");
// Draw the ball.
for (int i = 0; i < ball_y; i++)
{
printf("\n");
}
for (int i = 0; i < ball_x; i++)
{
if (i == SCREEN_WIDTH / 2 - 3 || i == SCREEN_WIDTH / 2 + 2)
{
printf(" ");
}
else
{
printf(" ");
}
}
printf("\033[0;31m()\n");
// Draw the paddle.
for (int i = ball_y + 1; i < SCREEN_HEIGHT; i++)
{
printf("\n");
}
for (int i = 0; i < paddle_x; i++)
{
printf(" ");
}
for (int i = 0; i < PADDLE_WIDTH; i++)
{
printf("W");
}
printf("\033[0;36m\n");
// 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 % 2 == 0 && ball_y != 0 && ball_x != 0 && ball_x != SCREEN_WIDTH - 1)
{
// Increase ball velocity every 2 seconds
ball_velocity_x *= 1.2;
ball_velocity_y *= 1.2;
}
if (ball_y == SCREEN_HEIGHT + 1)
{
printf("Game over!\n");
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(“*”);
}
// Draw the new balls.
for (int i = 0; i < ball_y; i++)
{
printf("\n");
}
for (int i = 0; i < ball_x; i++)
{
if (i == SCREEN_WIDTH / 2 - 3 || i == SCREEN_WIDTH / 2 + 2)
{
printf(" ");
}
else
{
printf(" ");
}
}
printf("@\n");
// 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 % 5 == 0 && ball_y != 0 && ball_x != 0 && ball_x != SCREEN_WIDTH - 1)
{
// Increase ball velocity every 5 seconds
ball_velocity_x *= 1.5;
ball_velocity_y *= 1.5;
}
if (ball_y == SCREEN_HEIGHT - 1)
{
printf("Game over!\n");
break;
}
}
}
return 0;
}