児童向け、小学生から始めるプログラミング言語として、スクラッチ(Scratch)は最適です。
たくさん用意されているキャラクターや背景を使っていろんな種類のオリジナル作品を作ろう!
スクラッチは計算が得意なプログラミング言語です。楽しみながら賢くなれるなんて理想的です。
プログラミングの力がつくと、算数や理科をはじめいろんな教科の応用力も身に付くのも嬉しいね!
◇◆ 目的 ◆◇
いわゆるじゃんけんができるプログラムを作ります。
(メッセージを送る)・変数・ブロック定義ブロックの使い方を実践で学ぼう。
番号 | イメージ | 内容 |
---|---|---|
Xs-01 | じゃんけん2020 vol.1←はグー、↑はチョキ、→はパー、キーを押してじゃんけんをしよう 習得:プログラムの処理をスプライト間でやりとりする方法と、 キーを押したときの処理を実践で学ぶ |
『スプライトの追加』で
これら3つ出しておこう。
自分のキャラ、相手のキャラ、審判のキャラの3つが必要だよ。
実際は自分の頭で想像して、それをプログラムに変換するんだ。難しい?テキストに載ってないことをするときには、キミもすでにやっているんじゃないかな?
キャラクター | 概要 | 解説 |
---|---|---|
このプログラムの主人公 キミが操作するのはこのキャラクター |
①最初は普通の姿にしておく ②『最初はグー、じゃんけん...』と言う ③←キーを押したらグーを出す ④↑キーを押したらチョキを出す ⑤→キーを押したらパーを出す どれかの手を出したら相手も手を出す。 ⑥勝ったら喜び、負けたら悔しがる |
|
じゃんけんの手ごわい相手 力じゃ勝てないけどじゃんけんなら勝てる! |
①最初は普通の姿にしておく ②『最初はグー、じゃんけん...』と言う ③主人公キャラが手を出したらランダムで手を出す。 ④手を出したら審判の判定に移る ⑤勝ったら喜び、負けたら悔しがる |
|
勝敗を判定する勝負の番人 じゃんけんは苦手だから審判をやる |
①ゲームが始まったとき、『勝負!』と言う ②両者の手が出たら、勝ち負けの判定に移る ③両者が同じ手だったら『あいこ』と言う ④自分の手がグーのとき、相手がチョキなら『あなたの勝ち』と言い、 相手がパーなら『あなたの負け』と言う ⑤自分の手がチョキのとき、相手がグーなら『あなたの負け』と言い、 相手がパーなら『あなたの勝ち』と言う ⑥自分の手がパーのとき、相手がグーなら『あなたの勝ち』と言い、 相手がチョキなら『あなたの負け』と言う ⑦勝敗の結果を送り、少し(1秒)待つ ⑧『次の試合』と言い、次の試合を始める合図を送る |
最初は旗を押してスタート
★ 変数(自分の手)を作っておこう。
※変数の作り方はもうちょっと下の『変数の作り方』で解説するね
(あなたの番)を送るってどこにあるの?
これは、イベントカテゴリにあるメッセージを送るブロックです。
新しいメッセージ名:に「あなたの番」と入力して[OK]をクリックしよう
★ 変数(自分の手)の作り方
変数カテゴリの[変数を作る]をクリックし、新しい変数の名前を入れてOKを押せば
新しい変数が追加されるよ。変数名は自由に決めていいよ。
ところで、変数って何?って疑問に思うかもしれない。
『変数』とは、決まった値ではなく、変化する数のことを言います。
例えば、『体重』は変数です。ちょこちょこ変わるでしょ?
『気温』や『サイフの中のお金』なども変数です。決まった数字ではありません。
じゃあ、変数じゃないものはなんていうの?と思うのは自然な流れで、
変数じゃないものは変わらない値、【固定値】と言います。
固定値はどんなものがあるか?というと、『富士山の高さ』や『1円玉の重さ』などが挙げられます。
自分の手も、グーチョキパーのどれになるか分からないので変数なんですね。
今はここまでしか作れないので、次のスプライトのプログラミングをします。
今はここまでしか作れないので、次のスプライトのプログラミングをします。
★あいこじゃない場合、自分の手と相手の手を見比べて判定するよね。
自分の手がグーチョキパーのどれかで判定を分けておくとスッキリするね。
ブロック定義でまとめておくとこんなに見やすくなるよ。
ブロック定義の中身の説明の前に、次の試合に移る仕掛けの説明を済ませておきます。
⑦勝敗の結果を送り、少し(1秒)待つ
勝敗の結果を送り、⇒(勝ったよ)を送る
or (負けたよ)を送る
少し(1秒)待つ ⇒ (1)秒待つ
⑧『次の試合』と言い、次の試合を始める合図を送る
『次の試合』と言い、⇒ (次の試合)と言う
次の試合を始める合図を送る ⇒ (次の試合)を送る
★ここから ブロック定義 の解説をしていきます。
カテゴリブロック定義⇒[ブロックを作る]をクリックしよう。
ブロック定義グーのとき、チョキのとき、
パーのときの
3つを用意しよう。
チョキの定義
⑤自分の手がチョキのとき、相手がグーなら『あなたの負け』と言い、
相手がパーなら『あなたの勝ち』と言う
自分の手がチョキのとき、⇒
もし (自分の手)=(2)
なら
相手がグーなら ⇒
もし (相手の手)=(1)
なら
『あなたの負け』と言い、⇒ (あなたの負け)と言う
相手がパーなら ⇒
もし (相手の手)=(3)
なら
『あなたの勝ち』と言う ⇒ (あなたの勝ち)と言う
パーの定義
⑥自分の手がパーのとき、相手がグーなら『あなたの勝ち』と言い、
相手がチョキなら『あなたの負け』と言う
自分の手がパーのとき、⇒
もし (自分の手)=(3)
なら
相手がグーなら ⇒
もし (相手の手)=(1)
なら
『あなたの勝ち』と言い、⇒ (あなたの勝ち)と言う
相手がチョキなら⇒
もし (相手の手)=(2)
なら
『あなたの負け』と言う ⇒ (あなたの負け)と言う
自分の手と相手の手が まぎらわしいから、間違えないように気を付けよう
慣れてきたら、『間違えにくい変数名を付ける』のもテクニックだよ
定義ブロックの作り方は分かったけど、使い方を詳しく
最初は何もない。自分で作るものだから。
ブロックを作ると、例えば『グーのとき』の名前で作ったグーのときブロックが
[ブロックを作る] の下に出てくると同時に、
スクリプトエリア(ブロックを並べるところ)に定義[グーのとき]が出てくるよ。
この定義の下に並べたブロックの処理をまとめて、小さい方のグーのときブロックが実行してくれるんだ。
「なんでそんなことをするの?」と思うかもしれない。
その疑問に対する答えは二つ。
①見た目がスッキリすること
②同じ処理を別の何ヶ所かでやる場合、まとめておけば1つで済む。
特に②は重要で、もし間違ってたときに直すときや、もっと良くする方法を思いついたときなど1カ所を直すだけで済むので『直し忘れ』がなくなるという利点があるよ。
プログラムの流れは?
下の図を見てほしい。
小さい方のブロックグーのときに来たら、定義[グーのとき]に飛んで
その処理を行うよ。
定義のなかの処理が全部終わったら元のグーのときに戻り、次のブロックを実行する、
といった流れになってるんだ。
★上級者になると、「細かい内容はあとで作りこむから、とりあえずプログラムの骨格を作りたい」って場合に定義にやりたいことの名前を付けてバンバン並べていくってやり方あるよ。
便利なブロックだから、使いこなそう!
審判(Crab)のプログラムはこれで全部だよ
⑥勝ったら喜び、負けたら悔しがる
勝ったら ⇒ (勝ったよ)を受け取ったとき
喜び、 ⇒⇒ コスチュームを(tera-b)にする
負けたら ⇒ (負けたよ)を受け取ったとき
悔しがる ⇒ コスチュームを(tera-d)にする
もう一回やる場合
もう一回 ⇒ (次の試合)を受け取ったとき
やる場合 ⇒ 旗が押されたときと同じことをすればいいね
主人公(Tera)のプログラムはこれで全部だよ
⑤勝ったら喜び、負けたら悔しがる
勝ったら ⇒ (勝ったよ)を受け取ったとき
喜び、 ⇒⇒ コスチュームを(dinosaur4-d)にする
負けたら ⇒ (負けたよ)を受け取ったとき
悔しがる ⇒ コスチュームを(dinosaur4-b)にする
もう一回やる場合
もう一回 ⇒ (次の試合)を受け取ったとき
やる場合 ⇒ 旗が押されたときと同じことをすればいいね
相手(Dinosaur4)のプログラムはこれで全部だよ
あとは、思った通りに動いているか、テストプレイしながら確認しよう。
あえて『変なこと』をやってみるのも実は重要です。想定外の動きは、変なことをしたときに起こりがちですから。
改造してみよう
・スコアを付けてみよう。
・スコアが0になったらゲームオーバーにしてみよう。
・スコアでステージクリア制にしてみよう
スコアがある点数以上になったら、キャラと背景を変えてみよう
最終的にクリアの点数を決めて、エンディングを作ろう
・効果音を付けてみよう
ワンポイントメモ
今回のプログラムはキーを押したときやスプライトの処理実行中に呼び出され実行する制御ブロックを使ったものでした。
プログラムは大まかに2種類あって、
① 複数のキャラクタが何かをきっかけに処理が実行されるタイプのもの
② 順に入力していくと計算結果が求められるもの
があります。
ビスケット経験者は、①には慣れていると思います。
②はどんなものかというと、『入力した数の約数を求めるプログラム』や『速さ時間道のりを計算するプログラム』などのアクション要素のない計算系のものがそうです。
アクション(動作)のキッカケは何かをしっかり把握することが、
プログラミング上達のポイントです。
ポストの画像またはリンクをクリックするとメール送信画面になります。
内容があまりにひどい場合はスルーしますが、質問等ある人はこちらへどうぞ。
←問い合わせはポストをクリック(タイトル記入済み)
メールアドレスを直接打ち込みたい人はコチラをコピーしてご利用ください。
mailto:o.kawajuku.pc@gmail.com