viscuit-save

 【スクラッチ】オンラインテキストのページ

児童向け、小学生から始めるプログラミング言語として、スクラッチ(Scratch)は最適です。
たくさん用意されているキャラクターや背景を使っていろんな種類のオリジナル作品を作ろう!
スクラッチは計算が得意なプログラミング言語です。楽しみながら賢くなれるなんて理想的です。
プログラミングの力がつくと、算数や理科をはじめいろんな教科の応用力も身に付くのも嬉しいね!

ここはどんなページ? 

Scratch

方向キーでじゃんけんをするプログラム

登場キャラにアクションを渡す

◇◆ 目的 ◆◇
いわゆるじゃんけんができるプログラムを作ります。
(メッセージを送る)変数ブロック定義ブロックの使い方を実践で学ぼう。


番号イメージ内容
Xs-01
じゃんけん2020 vol.1

←はグー、↑はチョキ、→はパー、キーを押してじゃんけんをしよう
習得:プログラムの処理をスプライト間でやりとりする方法と、 キーを押したときの処理を実践で学ぶ

準備をしよう ~キャラと背景~

まずは登場キャラと背景を出しておこう

準備(じゅんび)
テラ(自分) 恐竜(相手) カニ

『スプライトの追加』で
これら3つ出しておこう。

自分のキャラ、相手のキャラ、審判のキャラの3つが必要だよ。

chain

登場キャラはこれらの4種類

背景は『Playground』を選んでみました。

遊び場、そのまんまですね。お遊びな雰囲気がちょうどいいと思います。
もちろん、「こんなところでじゃんけんかよ!」っていう意外性を狙うのも面白い。


作りたいプログラムをイメージしよう

どんなプログラムか、動画で見てみよう

作るものをイメージするから、カタチになる

実際は自分の頭で想像して、それをプログラムに変換するんだ。難しい?テキストに載ってないことをするときには、キミもすでにやっているんじゃないかな?



ポイント を かいせつ

役割を押さえておこう
  動作の流れの順に考えるのがポイント 
キャラクター 概要 解説
この物語の主人公 このプログラムの主人公
キミが操作するのはこのキャラクター
①最初は普通の姿にしておく
②『最初はグー、じゃんけん...』と言う
③←キーを押したらグーを出す
④↑キーを押したらチョキを出す
⑤→キーを押したらパーを出す
 どれかの手を出したら相手も手を出す。
⑥勝ったら喜び、負けたら悔しがる
じゃんけんの相手 じゃんけんの手ごわい相手
力じゃ勝てないけどじゃんけんなら勝てる!
①最初は普通の姿にしておく
②『最初はグー、じゃんけん...』と言う
主人公キャラが手を出したらランダムで手を出す。
④手を出したら審判の判定に移る
⑤勝ったら喜び、負けたら悔しがる
判定する存在 勝敗を判定する勝負の番人
じゃんけんは苦手だから審判をやる
①ゲームが始まったとき、『勝負!』と言う
両者の手が出たら、勝ち負けの判定に移る
③両者が同じ手だったら『あいこ』と言う
④自分の手がグーのとき、相手がチョキなら『あなたの勝ち』と言い、
            相手がパーなら『あなたの負け』と言う
⑤自分の手がチョキのとき、相手がグーなら『あなたの負け』と言い、
             相手がパーなら『あなたの勝ち』と言う
⑥自分の手がパーのとき、相手がグーなら『あなたの勝ち』と言い、
            相手がチョキなら『あなたの負け』と言う
⑦勝敗の結果を送り、少し(1秒)待つ
⑧『次の試合』と言い、次の試合を始める合図を送る


プログラミングしてみよう

日本語をプログラム(ブロック)に変換する

プログラムの流れに沿って作っていこう
  一気に作らず、動作の流れの順に作っていくのがポイント 

 最初は旗を押してスタート 

主人公キャラ

主人公(Tera)を選択


chain


  ★ 変数(自分の手)を作っておこう。
※変数の作り方はもうちょっと下の『変数の作り方』で解説するね


主人公(Tera)のコード その1 ~旗が押されたとき~
初期旗が押されたときの処理   ①最初は普通の姿にしておく
        旗が押されたときコスチュームを(Tera-a)にする
  ②『最初はグー、じゃんけん...』と言う
        (最初はグー)と(2)秒言う(じゃんけん...)と言う

主人公(Tera)のコード その2 ~[←][↑][→]キーが押されたとき~
方向キーが押されたときの処理   ③←キーを押したらグーを出す
    ←キーを押したら[左向き矢印▼]キーが押されたとき
    グーを出す(グー)と言う
    [自分の手▼]を(1)にする
    ※自分の出した手を数字に変えて変数に入れておくことで、プログラムの中で      「自分がグーチョキパーどれを出したか」を記憶しておくことができる。
  ④↑キーを押したらチョキを出す⇒同上
  ⑤→キーを押したらパーを出す⇒同上
   どれかの手を出したら相手も手を出す。(あなたの番)を送る

(あなたの番)を送るってどこにあるの?

これは、イベントカテゴリにあるメッセージを送るブロックです。

メッセージを送る1 新しいメッセージ名:に「あなたの番」と入力して[OK]をクリックしよう


変数の作り方

 ★ 変数(自分の手)の作り方 

変数カテゴリの[変数を作る]をクリックし、新しい変数の名前を入れてOKを押せば
新しい変数が追加されるよ。変数名は自由に決めていいよ。

ところで、変数って何?って疑問に思うかもしれない。

『変数』とは、決まった値ではなく、変化する数のことを言います。
例えば、『体重』は変数です。ちょこちょこ変わるでしょ?
『気温』や『サイフの中のお金』なども変数です。決まった数字ではありません。

じゃあ、変数じゃないものはなんていうの?と思うのは自然な流れで、
変数じゃないものは変わらない値、【固定値】と言います。
固定値はどんなものがあるか?というと、『富士山の高さ』や『1円玉の重さ』などが挙げられます。
自分の手も、グーチョキパーのどれになるか分からないので変数なんですね。




 今はここまでしか作れないので、次のスプライトのプログラミングをします。 


chain

次のスプライト(キャラクタ)を選択します

相手の恐竜
相手(Dinosaur4)を選択


chain

相手(Dinosaur4)のコード その1 ~旗が押されたとき~
初期旗が押されたときの処理 ①最初は普通の姿にしておく
旗が押されたときコスチュームを(dinosaur4-a)にする
②『最初はグー、じゃんけん...』と言う
(最初はグー)と(2)秒言う(じゃんけん...)と言う

相手(Dinosaur4)のコード その2 ~[あなたの番]を受け取ったとき~
方向キーが押されたときの処理 主人公キャラが手を出したらランダムで手を出す。
主人公キャラが手を出したら(あなたの番)を受け取ったとき
    ランダムで手を出す[相手の手]を(1)から(3)までの乱数にする
      もし (相手の手)=(1) なら(グー)と言う
もし (相手の手)=(2) なら(チョキ)と言う
もし (相手の手)=(3) なら(パー)と言う

④手を出したら審判の判定に移る(判定してね)を送る




 今はここまでしか作れないので、次のスプライトのプログラミングをします。 


chain

次のスプライト(キャラクタ)を選択します

審判のカニ
審判(Crab)を選択


chain

審判(Crab)のコード その1 ~旗が押されたとき~
初期設定  ①ゲームが始まったとき、『勝負!』と言う
   ゲームが始まったとき ⇒ 旗が押されたとき
   『勝負!』と言う   ⇒ (勝負!)と言う


審判(Crab)のコード その2 ~「判定してね」を受け取ったとき~
初期設定

  両者の手が出たら、勝ち負けの判定に移る
     ⇒「判定してね」を受け取ったときだけ、この先の処理を行う

  ③両者が同じ手だったら『あいこ』と言う
    両者が同じ手だったら ⇒ もし  (自分の手) = (相手の手)  なら
    『あいこ』と言う  ⇒⇒ (あいこ)と言う

ピンタ博士の導き
 ★あいこじゃない場合、自分の手と相手の手を見比べて判定するよね。
  自分の手がグーチョキパーのどれかで判定を分けておくとスッキリするね。
  ブロック定義でまとめておくとこんなに見やすくなるよ。


 ブロック定義の中身の説明の前に、次の試合に移る仕掛けの説明を済ませておきます。

 ⑦勝敗の結果を送り、少し(1秒)待つ
   勝敗の結果を送り、⇒(勝ったよ)を送る or (負けたよ)を送る
   少し(1秒)待つ ⇒ (1)秒待つ
  ⑧『次の試合』と言い、次の試合を始める合図を送る
   『次の試合』と言い、⇒ (次の試合)と言う
   次の試合を始める合図を送る ⇒ (次の試合)を送る
   


ピンタ博士の導き
 ★ここから ブロック定義 の解説をしていきます。
  カテゴリブロック定義[ブロックを作る]をクリックしよう。
 



ブロック定義  ブロック定義グーのときチョキのときパーのとき
 3つを用意しよう。

ブロック定義の作り方

審判(Crab)のコード その3 ~『グー/チョキ/パーのとき』定義の内容~
 グーの定義
グーのときの定義
  ④自分の手がグーのとき、相手がチョキなら『あなたの勝ち』と言い、
              相手がパーなら『あなたの負け』と言う
   自分の手がグーのとき、 ⇒  もし (自分の手)=(1) なら
   相手がチョキなら⇒  もし (相手の手)=(2) なら
   『あなたの勝ち』と言い、⇒ (あなたの勝ち)と言う
   相手がパーなら ⇒  もし (相手の手)=(3) なら
   『あなたの負け』と言う ⇒ (あなたの負け)と言う


チョキの定義
チョキのときの定義
  ⑤自分の手がチョキのとき、相手がグーなら『あなたの負け』と言い、
               相手がパーなら『あなたの勝ち』と言う
   自分の手がチョキのとき、⇒  もし (自分の手)=(2) なら
   相手がグーなら ⇒  もし (相手の手)=(1) なら
   『あなたの負け』と言い、⇒ (あなたの負け)と言う
   相手がパーなら ⇒  もし (相手の手)=(3) なら
   『あなたの勝ち』と言う ⇒ (あなたの勝ち)と言う


パーの定義
パーのときの定義
  ⑥自分の手がパーのとき、相手がグーなら『あなたの勝ち』と言い、
              相手がチョキなら『あなたの負け』と言う
   自分の手がパーのとき、⇒  もし (自分の手)=(3) なら
   相手がグーなら ⇒  もし (相手の手)=(1) なら
   『あなたの勝ち』と言い、⇒ (あなたの勝ち)と言う
   相手がチョキなら⇒  もし (相手の手)=(2) なら
   『あなたの負け』と言う ⇒ (あなたの負け)と言う

ピンタ博士のコメント
自分の手相手の手が まぎらわしいから、間違えないように気を付けよう
慣れてきたら、『間違えにくい変数名を付ける』のもテクニックだよ


定義ブロックの作り方は分かったけど、使い方を詳しく
最初は何もない。自分で作るものだから。 ブロックを作ると出てくるブロック
 ブロックを作ると、例えば『グーのとき』の名前で作ったグーのときブロックが
 [ブロックを作る] の下に出てくると同時に、
スクリプトエリア(ブロックを並べるところ)に定義[グーのとき]が出てくるよ。
この定義の下に並べたブロックの処理をまとめて、小さい方のグーのときブロックが実行してくれるんだ。

「なんでそんなことをするの?」と思うかもしれない。
その疑問に対する答えは二つ。
①見た目がスッキリすること
②同じ処理を別の何ヶ所かでやる場合、まとめておけば1つで済む。

特に②は重要で、もし間違ってたときに直すときや、もっと良くする方法を思いついたときなど1カ所を直すだけで済むので『直し忘れ』がなくなるという利点があるよ。


プログラムの流れは?

 下の図を見てほしい。
小さい方のブロックグーのときに来たら、定義[グーのとき]に飛んで
その処理を行うよ。
定義のなかの処理が全部終わったら元のグーのときに戻り、次のブロックを実行する、
といった流れになってるんだ。
パーのときの定義

★上級者になると、「細かい内容はあとで作りこむから、とりあえずプログラムの骨格を作りたい」って場合に定義にやりたいことの名前を付けてバンバン並べていくってやり方あるよ。

便利なブロックだから、使いこなそう!

審判(Crab)のプログラムはこれで全部だよ   


chain

次のスプライト(キャラクタ)を選択します

主人公(Tera)を選ぶ もういちど
主人公(Tera)を選択


chain

次の試合 ⑥勝ったら喜び、負けたら悔しがる
勝ったら ⇒ (勝ったよ)を受け取ったとき
喜び、 ⇒⇒ コスチュームを(tera-b)にする


負けたら ⇒ (負けたよ)を受け取ったとき
悔しがる ⇒ コスチュームを(tera-d)にする


次の試合 もう一回やる場合
もう一回 ⇒ (次の試合)を受け取ったとき
やる場合 ⇒ 旗が押されたときと同じことをすればいいね



主人公(Tera)のプログラムはこれで全部だよ   


chain

次のスプライト(キャラクタ)を選択します

相手(Dinosaur4)を選ぶ もういちど
相手(Dinosaur4)を選択


chain

次の試合 ⑤勝ったら喜び、負けたら悔しがる
勝ったら ⇒ (勝ったよ)を受け取ったとき
喜び、 ⇒⇒ コスチュームを(dinosaur4-d)にする


負けたら ⇒ (負けたよ)を受け取ったとき
悔しがる ⇒ コスチュームを(dinosaur4-b)にする


次の試合 もう一回やる場合
もう一回 ⇒ (次の試合)を受け取ったとき
やる場合 ⇒ 旗が押されたときと同じことをすればいいね



相手(Dinosaur4)のプログラムはこれで全部だよ   


chain

できあがり!

これで完成。遊びながらバグ取りをしよう

あとは、思った通りに動いているか、テストプレイしながら確認しよう。
あえて『変なこと』をやってみるのも実は重要です。想定外の動きは、変なことをしたときに起こりがちですから。


  改造してみよう

 ・スコアを付けてみよう。
 ・スコアが0になったらゲームオーバーにしてみよう。
 ・スコアでステージクリア制にしてみよう
    スコアがある点数以上になったら、キャラと背景を変えてみよう
    最終的にクリアの点数を決めて、エンディングを作ろう
 ・効果音を付けてみよう

  ワンポイントメモ

 今回のプログラムはキーを押したときやスプライトの処理実行中に呼び出され実行する制御ブロックを使ったものでした。

プログラムは大まかに2種類あって、
 ① 複数のキャラクタが何かをきっかけに処理が実行されるタイプのもの
 ② 順に入力していくと計算結果が求められるもの

があります。

ビスケット経験者は、①には慣れていると思います。
②はどんなものかというと、『入力した数の約数を求めるプログラム』や『速さ時間道のりを計算するプログラム』などのアクション要素のない計算系のものがそうです。

アクション(動作)のキッカケは何かをしっかり把握することが、
プログラミング上達のポイントです。

bar

ページの先頭へ戻る ☆★☆ オンラインテキストへ戻る

問い合わせ

 質問などは

ポストの画像またはリンクをクリックするとメール送信画面になります。
内容があまりにひどい場合はスルーしますが、質問等ある人はこちらへどうぞ。
post←問い合わせはポストをクリック(タイトル記入済み)
メールアドレスを直接打ち込みたい人はコチラをコピーしてご利用ください。
mailto:o.kawajuku.pc@gmail.com


ページの先頭へ戻る