迴圈與決策指令的應用--猜數字遊戲

在程式設計教學中最常見的就是猜數字了。由電腦來出題,然後讓玩家來猜,如果猜得數字太大或太小,就要由電腦回饋給玩家,讓玩家可以持續地猜測直到猜中為止。

電腦裡面有一個有趣的功能就是「隨機數」。隨機數顧名思義,就是讓電腦隨機地設定一個數值,而這個數值事先我們並沒有辦法知道,如此就可以增加我們在設計遊戲類程式的有趣性。在Scratch中,隨機數的積木是這個;

這個積木我們可以直接使用在其它的積木中,例如,下面這個例子是讓我們的角色在程式執行時一直不斷地變化位置:

但是一般來說,我們會先把隨機數的值儲存在變數中再拿出來使用,如下:

這樣做的好處是,在變數中的資料可以多次取用,而不會每次取用的時候都會是不同的隨機數。接下來,我們來看看猜數字遊戲如何設計。首先,使用隨機數設定一個0-99之間的變數:

然後就讓貓咪開始問問題,如下:

把玩家的回答放到guess這個變數中,如下:

接著就是要判斷玩家的回答和真正的答是是否一樣,我們使用選擇積木如下:

可是,這樣只有猜一次的機會不好玩,我們想要讓玩家可以一直猜,直到答對為止。此種情況就需要迴圈的介入,如下:

在上面這個例子中我們用了一個無窮的迴圈讓玩家一直猜,直到猜中的時候才會使用「停止全部」這個積木來停止程式的執行。可是一個問題就是,猜了數字之後如果猜錯並沒有任何的回饋,這樣子根本就沒有辦法好好地猜,因此,在猜錯數字的時候,其實需要再加上一個選擇,依照猜測數字和答案之間的關係來給予玩家回饋,這樣才是一個比較好玩的猜數字遊戲。修改的版本如下:

上面這樣子的程式就可以進行一個有趣的猜數字了。上面這個程式利用不同的迴圈設計還有不同的寫法,同學們可以比較看看:

同學們可以看出邏輯上不一樣的地方嗎?由上面這樣的程式設計方式,我們還可以把它再進階,加上一個迴圈,讓這個遊戲可以一直玩,直到玩家回答「n」為止:

有了這個程式做基礎,同學們是否會再加上一些記錄玩家的答對次數以及答錯次數的顯示呢?