@@ -10,6 +10,9 @@ const designed_width = 600
10
10
const designed_height = 800
11
11
const brick_width = 53
12
12
const brick_height = 20
13
+ const bevel_size = int (brick_height * 0.18 )
14
+ const highlight_color = gx.rgba (255 , 255 , 255 , 65 )
15
+ const shade_color = gx.rgba (0 , 0 , 0 , 65 )
13
16
14
17
struct Brick {
15
18
mut :
@@ -127,15 +130,11 @@ fn (mut g Game) draw() {
127
130
sgl.scale (f32 (ws.width) / f32 (designed_width), f32 (ws.height) / f32 (designed_height),
128
131
0 )
129
132
130
- roffset , rradius := - 5 , 18
131
- g.ctx.draw_circle_filled (g.paddle_x - roffset, g.height, rradius, gx.blue)
132
- g.ctx.draw_circle_filled (g.paddle_x + g.paddle_w + roffset, g.height, rradius, gx.blue)
133
- g.ctx.draw_rect_filled (g.paddle_x, g.height - g.paddle_h + 2 , g.paddle_w, g.paddle_h,
134
- gx.blue)
135
- g.ctx.draw_circle_filled (g.ball_x, g.ball_y, g.ball_r, gx.red)
133
+ g.draw_paddle ()
134
+ g.draw_ball ()
136
135
for brick in g.bricks {
137
136
if brick.alive {
138
- g.ctx. draw_rect_filled (brick.x, brick.y, brick.w, brick.h, brick.c )
137
+ g.draw_brick (brick)
139
138
}
140
139
}
141
140
label1 := 'Level: ${g.nlevels:02} Points: ${g.npoints:06} '
@@ -147,6 +146,36 @@ fn (mut g Game) draw() {
147
146
g.ctx.end ()
148
147
}
149
148
149
+ fn (g &Game) draw_ball () {
150
+ g.ctx.draw_circle_filled (g.ball_x, g.ball_y, g.ball_r, gx.red)
151
+ mut ball_r_less := g.ball_r
152
+ for _ in 0 .. 3 {
153
+ ball_r_less * = 0.8
154
+ g.ctx.draw_circle_filled (g.ball_x - g.ball_r + ball_r_less, g.ball_y - g.ball_r +
155
+ ball_r_less, ball_r_less, highlight_color)
156
+ }
157
+ }
158
+
159
+ fn (g &Game) draw_paddle () {
160
+ roffset , rradius := - 5 , 18
161
+ g.ctx.draw_circle_filled (g.paddle_x - roffset, g.height, rradius, gx.blue)
162
+ g.ctx.draw_circle_filled (g.paddle_x + g.paddle_w + roffset, g.height, rradius, gx.blue)
163
+ g.ctx.draw_rect_filled (g.paddle_x, g.height - g.paddle_h + 2 , g.paddle_w, g.paddle_h,
164
+ gx.blue)
165
+ g.ctx.draw_rect_filled (g.paddle_x, g.height - g.paddle_h + 2 , g.paddle_w, bevel_size,
166
+ highlight_color)
167
+ }
168
+
169
+ fn (g &Game) draw_brick (brick Brick) {
170
+ g.ctx.draw_rect_filled (brick.x, brick.y, brick.w, brick.h, brick.c)
171
+ g.ctx.draw_rect_filled (brick.x, brick.y, brick.w, bevel_size, highlight_color)
172
+ g.ctx.draw_rect_filled (brick.x, brick.y, bevel_size, brick.h - bevel_size, highlight_color)
173
+ g.ctx.draw_rect_filled (brick.x + brick.w - bevel_size, brick.y, bevel_size, brick.h - bevel_size,
174
+ shade_color)
175
+ g.ctx.draw_rect_filled (brick.x, brick.y + brick.h - bevel_size, brick.w, bevel_size,
176
+ shade_color)
177
+ }
178
+
150
179
fn (mut g Game) game_over () {
151
180
g.init_bricks ()
152
181
g.npoints, g.nlevels, g.npaddles = 0 , 1 , 5
0 commit comments