软件使用:EasyX、VS2013
效果图:
源代码:
#include <stdint.h>
#include <graphics.h>
#include <conio.h>
int main()
{
int score = 0;
float width = 600.0, height = 400.0, gravity = 0.25;
float rect_width = 40.0, rect_height = 125.0;
float rect_vx = -1.9;
float one_top_rect_height = 125.0, one_bot_rect_height = 125.0, one_top_left_x = width / 5, one_top_left_y = 0.0;
float two_top_rect_height = 125.0, two_bot_rect_height = 125.0, two_top_left_x = width * 4 / 5, two_top_left_y = 0.0;
float radius = 20, ball_x = width * 2 / 5, ball_y = height - radius, ball_vy = 0.0;
initgraph(width, height);
while (1)
{
if (_kbhit())
{
char input = _getch();
if (input == ' ')
ball_vy = -6.0;
}
if ((ball_x + radius >= one_top_left_x && ball_y - radius <= one_top_left_y + one_top_rect_height && ball_x - radius <= one_top_left_x + rect_width) ||
(ball_x + radius >= one_top_left_x && ball_y + radius >= height - one_bot_rect_height && ball_x - radius <= one_top_left_x + rect_width) ||
(ball_x + radius >= two_top_left_x && ball_y - radius <= two_top_left_y + two_top_rect_height && ball_x - radius <= two_top_left_x + rect_width) ||
(ball_x + radius >= two_top_left_x && ball_y + radius >= height - two_bot_rect_height && ball_x - radius <= two_top_left_x + rect_width))
{
score = 0;
Sleep(100);
}
ball_vy += gravity;
ball_y += ball_vy;
if (ball_y >= height - radius)
{
ball_vy = 0;
ball_y = height - radius;
}
one_top_left_x += rect_vx;
two_top_left_x += rect_vx;
if (one_top_left_x + rect_width <= 0)
{
score += 1;
one_top_left_x = width;
int tmp = one_top_rect_height, diff = 0;
one_top_rect_height = rand() % int(height / 2 + 50);
diff = abs(int(one_top_rect_height - tmp));
if (one_top_rect_height < tmp)
one_bot_rect_height += diff;
else
one_bot_rect_height -= diff;
}
if (two_top_left_x + rect_width <= 0)
{
score += 1;
two_top_left_x = width;
int tmp = two_top_rect_height, diff = 0;
two_top_rect_height = rand() % int(height / 2 + 50);
diff = abs(int(two_top_rect_height - tmp));
if (two_top_rect_height < tmp)
two_bot_rect_height += diff;
else
two_bot_rect_height -= diff;
}
cleardevice();
fillcircle(ball_x, ball_y, radius);
fillrectangle(one_top_left_x, one_top_left_y, one_top_left_x + rect_width, one_top_left_y + one_top_rect_height);
fillrectangle(one_top_left_x, height - one_bot_rect_height, one_top_left_x + rect_width, height);
fillrectangle(two_top_left_x, two_top_left_y, two_top_left_x + rect_width, one_top_left_y + two_top_rect_height);
fillrectangle(two_top_left_x, height - two_bot_rect_height, two_top_left_x + rect_width, height);
TCHAR s[20];
_stprintf_s(s, _T("%d"), score);
settextstyle(40, 0, _T("宋体"));
outtextxy(50, 30, s);
Sleep(10);
}
_getch();
return 0;
}