返回

猜数游戏,从0到100,你能赢我吗?

前端

优化猜数游戏:提升体验,完善逻辑

猜数游戏是一个经典的编程练习,也是学习一门新语言的好方法。在上一篇文章中,我们创建了一个基本的猜数游戏,让玩家可以猜测一个随机生成的数字。然而,我们可以通过对游戏进行一些优化来提升玩家体验并完善游戏的逻辑。

优化 1:判断玩家输入

在我们的初始猜数游戏中,如果玩家输入非数字字符,程序会报错并退出。这显然是不友好的。因此,我们可以对玩家的输入进行一些判断,如果玩家输入的不是数字,就提示玩家重新输入。

// ...

loop {
    let mut guess = String::new();

    println!("Please input your guess.");

    io::stdin()
        .read_line(&mut guess)
        .expect("Failed to read line");

    let guess: u32 = match guess.trim().parse() {
        Ok(num) => num,
        Err(_) => {
            println!("Please input a number!");
            continue;
        }
    };

    // ...
}

// ...

优化 2:增加提示信息

在我们的初始猜数游戏中,玩家每次输入数字后,游戏只会告诉玩家猜大了还是猜小了。这显然是有些单调的。我们可以增加一些提示信息,让玩家对自己的猜测更接近目标数字有一些判断。

// ...

loop {
    let mut guess = String::new();

    println!("Please input your guess.");

    io::stdin()
        .read_line(&mut guess)
        .expect("Failed to read line");

    let guess: u32 = match guess.trim().parse() {
        Ok(num) => num,
        Err(_) => {
            println!("Please input a number!");
            continue;
        }
    };

    if guess == secret_number {
        println!("You guessed it!");
        break;
    } else if guess > secret_number {
        println!("Your guess is too big!");
    } else {
        println!("Your guess is too small!");
    }
}

// ...

优化 3:增加一个排行榜

在我们的初始猜数游戏中,玩家没有办法查看自己的得分或与其他玩家进行比较。我们可以增加一个排行榜,让玩家可以与其他玩家一较高下。

// ...

// 排行榜结构体
struct Scoreboard {
    scores: Vec<(String, u32)>,
}

// 排行榜实现
impl Scoreboard {
    fn new() -> Scoreboard {
        Scoreboard { scores: Vec::new() }
    }

    fn add_score(&mut self, name: String, score: u32) {
        self.scores.push((name, score));
        self.scores.sort_by(|a, b| b.1.cmp(&a.1));
    }

    fn print_scores(&self) {
        println!("排行榜:");
        for (i, (name, score)) in self.scores.iter().enumerate() {
            println!("{}. {}: {}", i + 1, name, score);
        }
    }
}

// ...

优化 4:增加一个帮助菜单

在我们的初始猜数游戏中,玩家没有办法了解游戏的玩法。我们可以增加一个帮助菜单,让玩家可以快速了解游戏的玩法。

// ...

// 帮助菜单函数
fn print_help() {
    println!("帮助菜单:");
    println!("1. 猜数字:输入一个数字,猜测计算机选择的数字。");
    println!("2. 查看排行榜:查看所有玩家的得分。");
    println!("3. 退出游戏:退出游戏。");
}

// ...

通过以上这些优化,我们的猜数游戏就变得更加完善和有趣了。

结论

通过对猜数游戏进行这些优化,我们提升了玩家的体验并完善了游戏的逻辑。现在,玩家可以重新输入非数字字符,收到更有用的提示,查看排行榜,并获得帮助。这些优化让游戏更有趣、更有挑战性和交互性。

常见问题解答

问:如何启动猜数游戏?
答: 在命令行中运行以下命令:cargo run

问:如何猜数字?
答: 在命令行中输入一个数字,然后按回车键。

问:如何查看排行榜?
答: 在命令行中输入 2,然后按回车键。

问:如何退出游戏?
答: 在命令行中输入 3,然后按回车键。

问:如何获得帮助?
答: 在命令行中输入 1,然后按回车键。