跳轉到內容

Wikijunior:樹莓派/Scratch遊戲 – 迷宮

來自Wikibooks,開放世界中的開放書籍

Andrew Oakley 編寫的教程
公共領域 2016年4月24日
www.cotswoldjam.org

本教程使用Scratch 1.4版。它可以在樹莓派、PC或Mac上執行。

Words you will see on the screen, or that you need to type in, are highlighted like this

在輸入完內容後,通常需要按↵ Enter鍵。但是Scratch中沒有太多打字操作 – 它主要使用滑鼠。

你的導師應該已經從以下網址下載了本教程的檔案:http://www.cotswoldjam.org/downloads/2016-04

你的導師應該已經解壓縮了檔案並將其儲存在/home/pi/scratch/maze資料夾中。你的導師可能需要建立scratch和maze資料夾。

啟動Scratch

[編輯 | 編輯原始碼]

點選選單 - 程式設計 - Scratch啟動Scratch。

點選視窗右上角的大正方形圖示最大化視窗。現在它應該充滿整個螢幕。

你還可以看到綠色旗幟,它啟動程式,以及紅色停止按鈕,如果程式出錯,可以使用它停止程式。

Scratch使用“舞臺”一詞來描述螢幕背景,並使用“角色”一詞來描述居住在遊戲中的角色、物體或怪物。

我們已經為你建立了舞臺和角色。透過點選檔案選單 - 開啟 - 點選Pi - Scratch - maze - maze1載入它們。如果系統詢問你是否要儲存當前專案,請點選否。

你的第一個程式

[編輯 | 編輯原始碼]

點選“人物”。

Scratch中的程式設計是使用積木完成的。有很多不同的積木,它們按類別組織。

接下來,點選“控制”。你將看到控制積木。

將“當空格鍵被按下”拖到螢幕中間的指令碼區域。

(要拖動某個東西,用滑鼠指向它,按住滑鼠左鍵,在移動滑鼠到目標位置時保持按鍵按下,然後鬆開滑鼠鍵)

當按下向右箭頭鍵時,我們希望移動遊戲中的角色。

點選“當空格鍵被按下”中空格旁邊的黑色三角形。將“空格”更改為“向右箭頭”。

點選“外觀”部分。

將“將x改變10”拖動到“當向右箭頭鍵被按下”的下方,使其鎖定。

為“向左箭頭”建立另一組指令碼。

在向左箭頭指令碼的“將x改變10”中,點選黑色三角形並將10更改為-10(負十)。使用delete← Backspace鍵擦除10,然後輸入:-10

點選舞臺上方的Go圖示。

按下向左和向右箭頭鍵。角色應該向左和向右移動。

注意角色如何能夠穿過左側的藍色迷宮牆。

樹莓是否在移動而不是人物?正如我們在本章開頭所說,確保你選擇了“人物”,而不是“樹莓”。

如果你在設定程式時遇到困難,可以載入“maze2”檔案。

變數和子程式

[編輯 | 編輯原始碼]

我們將使用變數來測試角色是否撞到了牆。

變數就像一個盒子,裡面裝有東西,通常是數字或單詞。我們將建立一個名為movex的盒子來存放數字。然後我們將檢查將角色移動那麼多位置是否會撞到牆。如果他們撞到了牆,我們將把角色再移回去。

我們還將建立一個子程式來執行牆體檢查。子程式是可以由其他指令碼呼叫的指令碼。在Scratch中,我們使用“廣播”命令來呼叫子程式,並使用“接收”來定義子程式的作用。

轉到變數並點選“製作變數”。

輸入:movex…並點選確定。確保“movex”中沒有空格。

我們需要刪除“將x改變10”。抓住“將x改變10”並將其移出指令碼框 – 例如,將其移回控制區域。它將消失。

變數中,抓住“將movex設為0”並將其貼上到“當向右箭頭鍵被按下”下方。

點選值0並將“將movex設為0”更改為“將movex設為10”(十)。

現在轉到'控制並抓住“廣播並等待”積木。將其貼上到“將movex設為10”下方。

使用黑色三角形建立一個名為:domovex的新廣播

對左箭頭重複上述步驟。記住使用-10而不是10。

現在透過將“當接收到domovex”從控制部分拖到指令碼部分建立一個新指令碼。

外觀部分,抓住“將x改變”並將其貼上到“當接收到”下方。

從'變數部分,抓住“movex”並將其貼上到“將x改變”上。現在它應該顯示為“將x改變movex”。

控制部分,抓住“如果”並將其貼上到“將x改變”下方。

偵測部分,抓住“碰到顏色”並將其貼上到“如果”上。

點選“碰到顏色”中的深藍色方塊,然後從迷宮中選擇一個寶藍色牆壁顏色 – 滑鼠指標將變成吸管;將其指向藍色牆壁並點選。

外觀部分,抓住“將x改變”並將其貼上到“如果”內部。

運算部分,抓住“[] - []”(減號,減去)並將其貼上到“將x改變”上。

將[]-[]更改為0-movex(從變數部分獲取movex)。0是零。

如果你在設定程式時遇到困難,可以載入“maze3”檔案。

我們正在做的是移動角色,檢查他們是否撞到了牆,如果他們撞到了牆,則將角色再移回去。

點選綠旗Go圖示執行程式。使用左箭頭和右箭頭控制人物移動。當人物到達左側的藍色牆壁時停止。

現在,使用y代替x,為上下方向建立相同的指令碼。例如,建立一個名為movey的新變數,一個名為domovey的廣播,並使用“改變y值”。點選綠旗Go執行程式。

現在,你應該能夠控制人物在迷宮中四處移動了。

變數movexmovey可能會顯示在迷宮上。你可以在**變數**部分取消選中它們的複選框來隱藏它們。

檢測勝利

[編輯 | 編輯原始碼]

在每個domove指令碼的末尾,廣播一條名為“checkwin”的新訊息。建立一個名為“checkwin”的新指令碼,並檢查人物是否接觸到紅色樹莓的顏色。

從外觀積木中,使用“說”指令告訴玩家他們贏了。記住在玩家獲勝後將人物重置到其初始位置。

你也可以在點選綠旗時重置人物的位置,以防程式中途停止。

如果你在設定程式時遇到困難,可以載入檔案“maze4”。

計數移動次數

[編輯 | 編輯原始碼]

你可以透過新增一個計數器來統計移動次數,使遊戲變得更好。

你需要建立一個名為“count”的變數。

你還需要一個“如果…否則”積木,而不是普通的“如果”積木。你可能需要向下滾動積木列表以找到“如果…否則”。“如果…否則”允許你在條件為真(人物觸碰藍色)時執行一項操作,在條件為假(人物未觸碰藍色)時執行另一項操作。

將domovex和domovey的“如果”指令更改為“如果…否則”指令。如果人物移動但沒有撞到牆(“否則”部分),則“改變count值加1”(這在變數積木中)。

記住要確保選中變數“count”旁邊的複選框,以便你可以看到玩家移動了多少次。**請參閱程式“maze5”以獲取示例。**

Cjam-scratch-maze.pdf

[編輯 | 編輯原始碼]

本教程的原始PDF可以從維基共享資源獲得。

Maze-person.png

[編輯 | 編輯原始碼]

Maze-stage.png

[編輯 | 編輯原始碼]

華夏公益教科書