Skip to content

Commit 360280b

Browse files
Update README.md
1 parent 5c1d021 commit 360280b

1 file changed

Lines changed: 23 additions & 22 deletions

File tree

README.md

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,26 @@ interface Printable {
2121
struct GuessGame {
2222
target: i32,
2323
attempts: i32,
24-
}
24+
} {
25+
fn play_game(game: &mut GuessGame): GameError!void {
26+
for _ in 0..5 {
27+
try std.out.print("Enter your guess: ") as { e -> GameError.IO { e } }
28+
input := try std.io.read() as { e -> GameError.IO { e } }
29+
guess := try input.parse<i32>() as { e -> GameError.ParseFailed { e } }
30+
match guess {
31+
g if g == game.target => {
32+
try std.out.println("Correct! You win!") as { e -> GameError.IO { e } }
33+
return
34+
}
35+
g if g < game.target => try std.out.println("Too low!") as { e -> GameError.IO { e } },
36+
g if g > game.target => try std.out.println("Too high!") as { e -> GameError.IO { e } },
37+
}
38+
game.attempts += 1
39+
}
40+
try std.out.println("Out of attempts! Game over.") as { e -> GameError.IO { e } }
41+
return GameError.Game("Out of attempts!");
42+
}
43+
}
2544

2645
impl Printable for GuessGame {
2746
fn print(): IOError!void {
@@ -30,32 +49,14 @@ impl Printable for GuessGame {
3049
}
3150

3251
fn random_number(min: i32, max: i32): RandomNumberError!i32 {
33-
return try min + (std.random.int() % (max - min + 1))
52+
return min + (try std.random.int() % (max - min + 1))
3453
}
3554

36-
fn play_game(game: &mut GuessGame): GameError!void {
37-
for _ in 0..5 {
38-
try std.out.print("Enter your guess: ") as { e -> GameError.IO { e } }
39-
input := try std.io.read() as { e -> GameError.IO { e } }
40-
guess := try input.parse<i32>() as { e -> GameError.ParseFailed { e } }
41-
match guess {
42-
g if g == game.target => {
43-
try std.out.println("Correct! You win!") as { e -> GameError.IO { e } }
44-
return
45-
}
46-
g if g < game.target => try std.out.println("Too low!") as { e -> GameError.IO { e } },
47-
g if g > game.target => try std.out.println("Too high!") as { e -> GameError.IO { e } },
48-
}
49-
game.attempts += 1
50-
}
51-
try std.out.println("Out of attempts! Game over.") as { e -> GameError.IO { e } }
52-
return GameError.Game("Out of attempts!");
53-
}
5455
fn main(): GameError!void {
55-
let mut game: Box<GuessGame> = try Box.new(GuessGame { target: try random_number(1, 10) as { e -> GameError.RandomFailed { e } }, attempts: 0 }) as { e -> GameError.Alloc { e } }
56+
let mut game: Box<GuessGame> = Box.new(GuessGame { target: try random_number(1, 10) as { e -> GameError.RandomFailed { e } }, attempts: 0 });
5657

5758
try game.print() as { e -> GameError.IO { e } }
58-
try play_game(&mut game)
59+
try play_game(&mut *game)
5960

6061
try std.out.println("Thanks for playing!") as { e -> GameError.IO { e } }
6162

0 commit comments

Comments
 (0)