スクラッチプログラミング日記

簡単に作れるスクラッチプログラミング。プログラミング教育用に使っていければと思います。コードは自由に使って下さい。

スクラッチプログラミング:クローンの使い方

クラッチプログラミングで同じスプライトを複数作りたいと思った事はありませんか?それを実現するのがクローンというコードです。

制御の中から以下の”自分自分のクローンを作る”を選びます。これを実行するとスプライトが複製されます。

f:id:rei_taitai:20210220151259p:plain

複製されたクローンは、オリジナル(クローン作成前のスプライト)と同じ位置に出現するので、スプライトを並べて表示するには、クローン後に移動すればよいです。その場合は、動きから選びましょう。ここでは”10歩動かす"を選びます。X座標、Y座標でもよいです。

f:id:rei_taitai:20210220152737p:plain

10歩を100歩にして、それぞれを繋げると以下になります。

f:id:rei_taitai:20210220153823p:plain

これを3回実行すると、以下のようにクローンが作られた事になります。

f:id:rei_taitai:20210220154029p:plain

クローンを使ったプログラミング例はこちらにあります。

スクラッチプログラミング:ボールから逃げるゲーム - スクラッチプログラミング日記 (hatenablog.com)

 

スクラッチプログラミング:撃ち落とすゲーム3

クラッチプログラミング:

ここでは、作成したクローンを独立して動作する事を行っています。

f:id:rei_taitai:20210313201747p:plain
操作方法:

マウスで操作すると左右に移動
スペースキーでボールを発射し、当てる
スコアが3上がる毎にスプライトが増える

 

https://scratch.mit.edu/projects/468978150

 

 

要求仕様
・スプライト1は左右に移動しながら段々と下に降りてくる
・スプライト2はマウスで左右に操作できる
・スペースキーを押すとスプライト2から、ボールが発射される
・スプライト1にボールが当たると、スプライト1とボールが消えて、スコアがアップする
・スプライト1とスプライト2がぶつかるとゲームオーバー
・スコアが上がる毎にスプライト1が増えていく

 

コードはこちら

f:id:rei_taitai:20210203183305p:plain

f:id:rei_taitai:20210203183320p:plain

f:id:rei_taitai:20210203183344p:plain

f:id:rei_taitai:20210203183356p:plain

f:id:rei_taitai:20210203183418p:plain

f:id:rei_taitai:20210203183446p:plain

f:id:rei_taitai:20210203183502p:plain









 

 

 

 

 

 






 

スクラッチプログラミング:追跡ゲームの作り方

チュートリアル(追跡ゲームを作ろう)

https://scratch.mit.edu/projects/487485135/editor

では矢印キーで移動し、スプライトを追いかけるゲームですが、追いかけられるほうのコードを変更しています。ここでは、イベントとしてのキーだけでなく、条件判断文を使って、キーを押した事を判断する事を学習出来ればと思います。

 

要求仕様は以下としました。

  1. 旗がおされた時にスタートし、スコアを0にする
  2. 上下左右のキーを押すと、ネコのスプライトが上下左右に移動する。
  3. 星のスプライトは、上下左右キーでネコとは異なる動きをする。
  4. ネコと星が接触すると、音を出してスコアが1上がって、星は色を変えて別な場所に移動する

1.旗がクリックされた時に、スコアを0、大きさを小さくし、出現場所をどこか適当な所にする。

・変数を作成するをクリックすると以下のウィンドウが出る。

f:id:rei_taitai:20201129135523p:plain

・上記に、スコアを入力すると、スコアの変数が作成できる

  • イベントから旗が押された時
  • 変数のところから、"スコアを0にする” (変数が表示されている場合は、クリックしてスコアを選択する)
  • 見た目から、”大きさを100%にする”。(100の所を50に変更する。大きすぎると追跡時に当たり判定がしやすくなってしまう為)
  • 動きのところから、”どこかの場所へ行く”(適当な場所に出現させる為)

というコードを移動させて繋げる。

f:id:rei_taitai:20210213174227p:plain


2.矢印キーでスプライトのネコを移動させる

  • チュートリアルを参照。
  • イベントから、”スペースキーが押させたとき”をもってきて、”右向き矢印””左向き矢印””上向き矢印””下向き矢印”をそれぞれ選択する
  • 動きから”x座標を10ずつ変える””y座標を10ずつ変える”をそれぞれもってくる

それぞれのコードを結合する。これでネコのスプライトのコード作成は終了。

f:id:rei_taitai:20210213191836p:plain

3.星のスプライトのコードを作成する

  • 動きのところから、”どこかの場所へ行く”(適当な場所に出現させる為)をもってくる

f:id:rei_taitai:20210213194417p:plain

 4.キーを押した時に移動させるコードを作成する

・制御から”もし~なら”と、調べるから”スペースキーが押された”を結合し、スペースキーを上向き矢印に変更

f:id:rei_taitai:20210213202545p:plain

・この条件判断文の中に、実行するコードをもってくる。ここでは、以下のコードを動ぎの中からもってくる。これで、上と右に移動するコードになる

f:id:rei_taitai:20210213203108p:plain

・さらに、上の画面に行き過ぎたら、下の画面に移動するようにする以下のコードも入れる。”もし~なら”と演算とを結合。

f:id:rei_taitai:20210213203431p:plain

 ・これらを繋げると以下のようになる

f:id:rei_taitai:20210213203657p:plain

・同じように、下向き矢印、右向き矢印、左向き矢印の時も作る

5.ネコのスプライトに追いつかれた時にスコアアップする

  • 変数から”スコアを1ずつ変える”
  • 音から”~の音をならす”
  • 見た目から”色の効果を25ずつ変える”
  • 動きから”どこかの場所へ行く”

・これらを制御から”もし~なら”と調べるから”スプライト1に触れた”の条件の中にいれる

f:id:rei_taitai:20210213204943p:plain

・星のスプライトの全体のコードは以下となる

f:id:rei_taitai:20210213205149p:plain

これでプログラミングは終了です。

以下のリンクから中を見るでコードが見れます

https://scratch.mit.edu/projects/487485135

 

 

 

 

 

スクラッチプログラミング:9パズルゲーム

クラッチプログラミング:

ここでは、パズルゲームの15パズルの類似の9パズルを作成します。

バックパックという機能を使って同じコードを全てのスプライトに入れています。

f:id:rei_taitai:20210313201444p:plain
操作方法:

数字をクリックすると空白のマスが隣にある場合に移動します。
123
456
78
の並びにすると終わり

https://scratch.mit.edu/projects/477992796

 

 

・スプライトは以下の数字を選ぶ

f:id:rei_taitai:20210124201921p:plain

・背景は描くを使って、作成する

f:id:rei_taitai:20210124201951p:plain

・直線を使って、9マスの格子を作る

f:id:rei_taitai:20210124202047p:plain

 ・変数は以下を準備する

f:id:rei_taitai:20210124202212p:plain

変数で使っている位置の数字は
1:左上
2:中上
3:右上
4:左中
5:中中
6:右中
7:左下
8:中下
9:右下
ここでの処理は、隣が空白位置なら、そこに移動し、空白位置を変更している。

コードはこちら

f:id:rei_taitai:20210124202357p:plain

f:id:rei_taitai:20210124202408p:plain

f:id:rei_taitai:20210124202430p:plain

f:id:rei_taitai:20210124202442p:plain

f:id:rei_taitai:20210124202454p:plain

f:id:rei_taitai:20210124202505p:plain

ここと同じコードをそれぞれのスプライトに入れる。

同じ内容を入れるのは面倒なので、下の方のバックパックをクリックして、コード全体を下のほうにドラックするとバックパックというエリアにコピーされます。

f:id:rei_taitai:20210124210443p:plain

他のスプライト上でバックパックからドラックすると同じコードがコピーされます。

※変数1位置のところだけ、そのスプライトにあわせた変数〇位置に変更します。

f:id:rei_taitai:20210124202517p:plain

f:id:rei_taitai:20210124202531p:plain

各スプライトの位置それぞれにx座標、Y座標を入れます。

コードを見る場合は、以下のリンクから中を見るで見れます。

https://scratch.mit.edu/projects/477992796








 

 

 

 

 

 

 






 

スクラッチプログラミング:撃ち落とすゲーム2

クラッチプログラミング:

ここでは、演算により変数のプラスの数値をマイナスにする事を行っています。

 f:id:rei_taitai:20210313200801p:plain

操作方法:

マウスで操作すると左右に移動
スペースキーでボールを発射し、当てる
スコアが上がる毎にスプライトの速度が速くなる 

https://scratch.mit.edu/projects/468708310

 

 

要求仕様:

・スプライト1は左右に移動しながら段々と下に降りてくる
・スプライト2はマウスで左右に操作できる
・スペースキーを押すとスプライト2から、ボールが発射される
・スプライト1にボールが当たると、スプライト1とボールが消えて、スコアがアップする
・スプライト1とスプライト2がぶつかるとゲームオーバー
・スコアが上がる毎にスプライト1の移動が速くなる

 

コードはこちら

f:id:rei_taitai:20201228173147p:plain

 

f:id:rei_taitai:20201228173221p:plain

f:id:rei_taitai:20201228173235p:plain

f:id:rei_taitai:20201228173247p:plain

f:id:rei_taitai:20201230140444p:plain

f:id:rei_taitai:20201228173309p:plain






 

スクラッチプログラミング:撃ち落とすゲーム

クラッチプログラミング:

ここでは、ブロック定義というのを使用しています。

同じコードを何回も書くより1つにまとめる時に使います。

f:id:rei_taitai:20210313200801p:plain

操作方法:

マウスで操作すると左右に移動
スペースキーでボールを発射し、当てる
時間内にどれだけスコアを上げられるか

 

https://scratch.mit.edu/projects/468127455

 

 

要求仕様:

・スプライト1は左右に移動しながら段々と下に降りてくる
・スプライト2はマウスで左右に操作できる
・スペースキーを押すとスプライト2から、ボールが発射される
・スプライト1にボールが当たると、スプライト1とボールが消えて、スコアがアップする
・スプライト1とスプライト2がぶつかるとゲームオーバー
・残り時間を設定し、残り時間がなくなるとゲームオーバー

 

コードはこちら

f:id:rei_taitai:20201228173147p:plain

f:id:rei_taitai:20201228173211p:plain

f:id:rei_taitai:20201228173221p:plain

f:id:rei_taitai:20201228173235p:plain

f:id:rei_taitai:20201228173247p:plain

f:id:rei_taitai:20201228173257p:plain

f:id:rei_taitai:20201228173309p:plain






 

プログラミング教育:英語の問題を作ってみよう

クラッチプログラミング:

お題:英語の問題を作ってみる

狙い:英語に対して日本語を選ぶ問題作成をプログラミングを通して学ぶ

導入:英語の単語に対して、複数の選択肢を作って、正解の日本語を選ぶような問題をプログラミングによって実現してみましょう。

ここでは、英語の2択問題を作ってみます。

 クラッチプログラミングのやり方:

1.適当なスプライトを3つ選ぶ

・ スプライト1、Bear、Penguin2

f:id:rei_taitai:20210114202617p:plain

この中で問題を出すスプライトが1つと、答えを出すスプライトを2つ決めておく

 

2.各スプライト適当な位置に配置する

f:id:rei_taitai:20210114202904p:plain


ここで、スプライトの大きさが大きすぎる場合は、大きさの所を数値を小さくする。

 

 3.問題を出すスプライトの画面で行う操作

・イベントから、「このスプライトが押されたとき」をドラッグ&ドロップする

f:id:rei_taitai:20210114211513p:plain

・変数から、「変数を0にする」をドラッグ&ドロップする

f:id:rei_taitai:20210114211601p:plain

・演算から、「1から10までの乱数」をドラッグ&ドロップする

f:id:rei_taitai:20210114211637p:plain

・これらを以下のように結合して、乱数の数値を変更する。数値は問題の数にする(ここでは4問出すので4にする)

f:id:rei_taitai:20210114212056p:plain

これでこのスプライトがクリックされた時、変数が1から4のランダムな値になる

〇問題文を作成する

・制御から「もし なら」

f:id:rei_taitai:20210114223034p:plain

・演算から以下をもってくる

f:id:rei_taitai:20210114223111p:plain

・変数をもってきて、以下のように結合し、数値を1に変更する

f:id:rei_taitai:20210114223347p:plain

・見た目から「こんにちは!と言う」をもってきて、「こんにちは!」を「apple」に変更

f:id:rei_taitai:20210114224313p:plain 

f:id:rei_taitai:20210114224335p:plain

これは、スプライトが吹き出しの中に「apple」という言葉を表示するのに使用する

・新しいメッセージを選択

f:id:rei_taitai:20210103155620p:plain

apple」と入力する

f:id:rei_taitai:20210114224714p:plain

そうすると、以下のように「apple」というメッセージを送るコードが出来る

f:id:rei_taitai:20210114224805p:plain

・以下のように結合する

f:id:rei_taitai:20210114224940p:plain

これで変数が1の時に、スプライトがappleと話し、appleというメッセージを送るコードが出来る。これが1つ目の英語の単語問題となる。

f:id:rei_taitai:20210116104927p:plain


・同様なやり方で2、3、4つ目の問題を作成し、全てを結合する

f:id:rei_taitai:20210114225327p:plain

これで問題を出すほうのスプライトのコード入力は終わり

4.答えを出すスプライトの画面で行う操作:答えを出す

・イベントから「~を受け取った時」のappleを選ぶ

f:id:rei_taitai:20210116103012p:plain

・正解の時の言葉を選ぶ。見た目から「~と言う」を選び、「りんご」と入力

f:id:rei_taitai:20210116104631p:plain

こうすると、appleという問題が出た時に、りんごという言葉をいう

f:id:rei_taitai:20210116105130p:plain

・不正解の時の言葉も別のスプライトに準備する

f:id:rei_taitai:20210116105656p:plain

 

そうすると以下のようになる

f:id:rei_taitai:20210116105800p:plain

 同様に他のメッセージでも正解、不正解の言葉を作る。

5.答えを出すスプライトの画面で行う操作:正解不正解の表示

・答えを出すスプライト2つに対して、それぞれ変数を1つ作る。ここでは、「このスプライトのみ」にするのがポイント。

そうすると、作った変数はスプライト毎に独立したものになる。

f:id:rei_taitai:20210116112257p:plain

f:id:rei_taitai:20210116112515p:plain

・画面に変数を表示させないように、変数のチェックを消す

f:id:rei_taitai:20210116113345p:plain

・正解のほうの言葉のほうに、この変数を1にするを入れる

f:id:rei_taitai:20210116113558p:plain

・不正解のほうの言葉のほうに、この変数を0にするを入れる

f:id:rei_taitai:20210116113724p:plain

 ・スプライトをクリックした時に、正解か不正解かを表示するコードを作る

変数が1の時に正解、0の時に不正解を出す時はこちら

f:id:rei_taitai:20210116114014p:plain

6.実際に問題を出すスプライトを押してみよう

・マウスで問題を出すスプライトの絵をクリックすると、正解か不正解の言葉を話すようになる。

f:id:rei_taitai:20210116114503p:plain

正解のほうをクリックすると「正解」、不正解のほうをクリックすると「不正解」の言葉を話す

f:id:rei_taitai:20210116114736p:plain

7.まとめ

英語の学習では、英単語を覚えるというのがありますが、それがクイズのようにした時にどのような仕組みで作られているかをプログラミングを通して学びます。

さらに応用として、背景、選択肢の追加、問題を追加するとよいと思います。もちろん、英語以外の問題も作れます。

 

※実際に作成したコードみたい場合は以下のURLから、「中を見る」を押すと見れます

https://scratch.mit.edu/projects/469613279

完成したものはこちらです。