Skip to content
Snippets Groups Projects
Commit 1f073fee authored by Astro's avatar Astro :gear:
Browse files

rkanoid: coors, check finish

parent cff81424
Branches
No related tags found
No related merge requests found
......@@ -25,10 +25,14 @@ impl Blocks {
let mut count = 0;
for line in result.blocks.iter_mut() {
for block in line.iter_mut() {
let mut buf = [0];
let mut buf = [0, 0, 0, 0];
trng::read(&mut buf);
if buf[0] > 0xBF {
*block = Some(Color::yellow());
*block = Some(Color::rgb8(
0x80 | buf[1],
0x80 | buf[2],
0x80 | buf[3],
));
count += 1;
}
}
......@@ -51,6 +55,10 @@ impl Blocks {
None => false,
}
}
fn is_finished(&self) -> bool {
self.blocks.iter().all(|line| line.iter().all(|block| block.is_none()))
}
}
const PADDLE_HEIGHT: u16 = 4;
......@@ -139,6 +147,7 @@ fn game() -> u32 {
if input.left_top() {
exit(0);
}
let mut check_finish = false;
let speed_steps = 1 + (time() - start_time) / 10;
for _ in 0..speed_steps {
ball_direction.motion(&mut ball_x, &mut ball_y);
......@@ -166,6 +175,7 @@ fn game() -> u32 {
ball_direction.bounce(Bounce::Vertical);
score += 100;
// paddle_size += 2;
check_finish = true;
vibra::vibrate(60);
}
if blocks.collides(ball_x, ball_y - BALL_RADIUS) ||
......@@ -173,21 +183,25 @@ fn game() -> u32 {
ball_direction.bounce(Bounce::Horizontal);
score += 60;
// paddle_size += 1;
check_finish = true;
vibra::vibrate(40);
}
}
if check_finish && blocks.is_finished() {
return score + 1000;
}
display.clear(Color::black());
// Paddle
display.rect(
paddle - paddle_size, Display::H - PADDLE_HEIGHT,
paddle + paddle_size, Display::H - 1,
Color::green(), FillStyle::Filled, 1
Color::rgb8(0x7f, 0xff, 0x7f), FillStyle::Filled, 1
);
// Ball
display.circ(
ball_x, ball_y, BALL_RADIUS,
Color::blue(), FillStyle::Filled, 1
Color::rgb8(0x7f, 0x7f, 0xff), FillStyle::Filled, 1
);
// Blocks
for (lineno, line) in blocks.blocks.iter_mut().enumerate() {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment