Skip to content

Latest commit

 

History

History
158 lines (123 loc) · 6.68 KB

book-kirakira-ruby-source.md

File metadata and controls

158 lines (123 loc) · 6.68 KB

書籍連携チュートリアル 出典スニペット(きらきらRuby)

🆕 Smalruby 独自 — 書籍プロモーションを兼ねた Block 軸チュートリアル(#680)の実装源データ。

このドキュメントは、書籍『小学生から楽しむ きらきらRubyプログラミング』の前半プログラムの一部を 引用の範囲で抜き出し、チュートリアル実装(packages/scratch-gui/src/lib/libraries/decks/)が 書籍 PDF 非依存で進められるようにするための出典スニペット集。

  • 引用元 PDF(tmp/・非公開・worktree からは参照不可)を worker が読めないため、ここに committed 形で残す。
  • 引用許諾: 共著者の 1 人 takaokouji 本人が、書籍販売につなげる目的での引用の範囲での利用に同意済み。 各章とも「基本」の前半のプログラムのみを対象とし、後半・発展は載せない。

書誌情報

項目 値
書名 小学生から楽しむ きらきらRubyプログラミング
著者 高尾 宏治・藤村 健吾(著)/ まつもとゆきひろ(監修)
発行元 日経BP
発行日 2020年05月25日
ISBN 978-4-8222-8639-2
価格 2,200円(税込)
ページ数 180ページ/判型 B5
購入リンク https://bookplus.nikkei.com/atcl/catalog/20/P60510/

購入リンクは実装時に定数 1 箇所にして各 deck から参照する。

レベル設計(Mesh チュートリアル形式・.claude/rules/scratch-gui/tutorial.md に準拠)

Lv 方法 目的
Lv1 ブロック。code + codeType: 'blocks' で完成コードを挿入し、一部パラメータだけ変える(例: 台詞・歩数) まず動かして遊ぶ・体験
Lv2 ブロック。Lv1 と同じものを一部だけ入力済みにして、ほとんど自分で組み立てる。重要な概念(if / until / 座標 / クローン等)を説明 ブロックの構造を理解
Lv3 同じ内容を Ruby で入力・編集(code を Ruby エディタへ挿入し一部を変更) Ruby で書けるようになる

各 deck は冒頭で書誌情報、末尾で「続きは書籍で」+購入リンクを表示し、説明は最小限にして 「書籍のふんいき」を味わえるようにする(販売導線)。


第1章 blockBasics — ネコからにげる簡単なゲーム

ゲーム設計(本文の「どうやってつくるか考える」)

  1. ネコがマウスのポインターの方向を向く
  2. ネコがマウスのポインターのある方向に歩き出す
  3. もしネコがマウスのポインターにふれたなら「こんにちは!」と 2 秒間言う

→ 実体は「マウスポインターを追いかけるネコ(オニごっこ)」。ユーザーはマウスでネコから逃げる。

完成プログラム(ネコ=スプライト1)

ブロック(Lv1/Lv2 が組む形):

[🏳 が押されたとき]
 └ ずっと
     ├ [マウスのポインター ▼] へ向ける
     ├ (10) 歩動かす
     └ もし〈[マウスのポインター ▼] に触れた〉なら
          └ (こんにちは!) と (2) 秒言う

Ruby(Lv3 / code 挿入に使う):

when(:flag_clicked) do
  loop do
    point_towards("_mouse_")
    move(10)
    if touching?("_mouse_")
      say("こんにちは!", 2)
    end
  end
end

Lv1 で変えるパラメータ例: 台詞 "こんにちは!" / 歩数 10 / 秒数 2。


第4章 blockGames — シューティングゲーム

ゲーム設計(本文の「シューティングゲームのやり方」)

  1. キーボードの方向キー(上下)で、ネコが上下に移動する
  2. スペースキーで、ネコが右に向かってタマを出す(発射)
  3. ガイコツはつねに画面右はしで上下に移動する
  4. ガイコツにタマが当たったら、ガイコツは消える

3 スプライト構成: ネコ(スプライト1・自機) / タマ(Arrow1) / ガイコツ(Skeleton・敵)。

ネコ(スプライト1)— 上下移動

Ruby:

when(:key_pressed, "up arrow") do
  self.y += 10
end
when(:key_pressed, "down arrow") do
  self.y += -10
end

(ブロック: 「[上向き矢印▼] キーが押されたとき → y座標を (10) ずつ変える」/下は -10。 y 座標=上下位置。大きく=上、- で小さく=下。キーは w/s でも可。)

タマ(Arrow1)— 発射して右へ飛び、はしで消える

Ruby:

when(:flag_clicked) do
  hide
end
when(:key_pressed, "space") do
  go_to("スプライト 1")
  show
  until touching?("_edge_")
    self.x += 10
  end
  hide
end

(ブロック: 旗→「隠す」。スペース→「[スプライト1▼] へ行く」「表示する」「〈[端▼]に触れた〉まで繰り返す(x座標を10ずつ変える)」「隠す」。 touching?("_edge_")=端に触れた。_edge_→_mouse_ でマウス判定にもできる。)

ガイコツ(Skeleton)— 右はしで上下移動し、タマに当たると消える

事前設定: スプライトの「向き」を 0 度(上向き)にする。

Ruby:

when(:flag_clicked) do
  self.rotation_style = "left-right"
  show
  until touching?("Arrow1")
    move(10)
    bounce_if_on_edge
  end
  hide
end

(ブロック: 旗→「回転方法を [左右のみ▼] にする」「表示する」「〈[Arrow1▼]に触れた〉まで繰り返す((10)歩動かす/もし端に着いたら、跳ね返る)」「隠す」。 bounce_if_on_edge=もし端に着いたら跳ね返る。rotation_style="left-right" で向きが乱れないようにする。 touching?("Arrow1") の "Arrow1" はタマのスプライト名。別画像を選んだ場合はその名前にする。)

発展(block-*-advanced・Lv0 相当で「見せるだけ」)

  • タマをたくさん出せるようにする → クローン機能を使う(self のクローンを作ってタマを増やす)。 発展は完成コードを動かして見せるに留め、詳細は書籍へ誘導する。

出典ページ対応

シリーズ 章 引用元 PDF(非公開) 状態
blockBasics 第1章 tmp/008-029_Ruby-chap1-3rd.pdf(第1章) 抽出済み(上記)
blockGames 第4章 tmp/072-095_Ruby-chap4_3rd.pdf(第4章 p.1–8=基本) 抽出済み(上記)
blockMath 第5章 未提供 出典待ち
blockScience 第6章 未提供 出典待ち