-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpong_game.cpp
More file actions
124 lines (100 loc) · 1.99 KB
/
pong_game.cpp
File metadata and controls
124 lines (100 loc) · 1.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include <raylib.h>
struct Ball
{
float x, y;
float speedx, speedy;
float radius;
void Draw()
{
DrawCircle((int)x, (int)y, radius, ORANGE);
}
};
struct Paddle
{
float x, y;
float speed;
float width, height;
Rectangle GetRect()
{
return Rectangle{ x - width / 2, y - height / 2, 10, 100 };
}
void Draw()
{
DrawRectangleRec(GetRect(), BLUE);
}
void Draw2()
{
DrawRectangleRec(GetRect(), RED);
}
};
int main()
{
InitWindow(800, 600, "Pong");
SetWindowState(FLAG_VSYNC_HINT);
Ball ball;
ball.x = GetScreenWidth() / 2.0f;
ball.y = GetScreenHeight() / 2.0f;
ball.radius = 5;
ball.speedx = 300;
ball.speedy = 300;
Paddle leftPaddle;
leftPaddle.x = 50;
leftPaddle.y = GetScreenHeight() / 2;
leftPaddle.width = 10;
leftPaddle.height = 100;
leftPaddle.speed = 500;
Paddle rightPaddle;
rightPaddle.x = GetScreenWidth() - 50;
rightPaddle.y = GetScreenHeight() / 2;
rightPaddle.width = 10;
rightPaddle.height = 100;
rightPaddle.speed = 500;
while (!WindowShouldClose())
{
ball.x += ball.speedx * GetFrameTime();
ball.y += ball.speedy * GetFrameTime();
if (ball.y < 0)
{
ball.y = 0;
ball.speedy *= -1;
}
if (ball.y > GetScreenHeight())
{
ball.speedy *= -1;
ball.y = GetScreenHeight();
}
if (IsKeyDown(KEY_W))
{
leftPaddle.y -= leftPaddle.speed * GetFrameTime();
}
if (IsKeyDown(KEY_S))
{
leftPaddle.y += leftPaddle.speed * GetFrameTime();
}
if (IsKeyDown(KEY_UP))
{
rightPaddle.y -= rightPaddle.speed * GetFrameTime();
}
if (IsKeyDown(KEY_DOWN))
{
rightPaddle.y += rightPaddle.speed * GetFrameTime();
}
if (CheckCollisionCircleRec(Vector2{ ball.x, ball.y }, ball.radius, leftPaddle.GetRect()))
{
ball.speedx *= -1;
}
if (CheckCollisionCircleRec(Vector2{ ball.x, ball.y }, ball.radius, rightPaddle.GetRect()))
{
ball.speedx *= -1;
}
BeginDrawing();
ClearBackground(BLACK);
ball.Draw();
leftPaddle.Draw();
rightPaddle.Draw2();
DrawFPS(10, 10);
EndDrawing();
}
CloseWindow();
return 0;
}