Help us understand the problem. What is going on with this article?

Scratch 2.0をハッキングしてみよう その1

More than 1 year has passed since last update.

はじめまして!
何回かに分けてScratchのプロジェクトをハッキング(=ソースコードを特別な方法で編集する)する方法をまとめました。今回は1回目です。

ハッキングとは?

プロジェクトのソースが入っているJSONを編集して改造することを指す。
クラッキングとは異なる。

方法

  1. Scratch 2.0エディターの灰色のバーにあるファイルをクリックしてドロップダウンメニューを表示させる(上の方にある)。
  2. 手元のコンピューターにダウンロードを選択。
  3. ファイル名を[プロジェクト名].sb2から[プロジェクト名].zipに変えてダウンロード。
  4. ダウンロードしたファイルを解凍して、project.jsonを開く。

jsonの解説

test.jpg
このプログラムをHackしてみる。

project.json
    "objName": "Stage",
    "sounds": [{
            "soundName": "pop",
            "soundID": 1,
            "md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",
            "sampleCount": 258,
            "rate": 11025,
            "format": ""
        }],
    "costumes": [{
            "costumeName": "backdrop1",
            "baseLayerID": 3,
            "baseLayerMD5": "739b5e2a2435f6e1ec2993791b423146.png",
            "bitmapResolution": 1,
            "rotationCenterX": 240,
            "rotationCenterY": 180
        }],
    "currentCostumeIndex": 0,
    "penLayerMD5": "5c81a336fab8be57adc039a8a2b33ca9.png",
    "penLayerID": 0,
    "tempoBPM": 60,
    "videoAlpha": 0.5,
    "children": [{
            "objName": "Sprite1",
            "scripts": [[13, 21, [["whenGreenFlag"], ["say:", "Hello World!"], ["say:", "縺薙s縺ォ縺。縺ッ 荳也阜���"]]]],
            "sounds": [{
                    "soundName": "meow",
                    "soundID": 0,
                    "md5": "83c36d806dc92327b9e7049a565c6bff.wav",
                    "sampleCount": 18688,
                    "rate": 22050,
                    "format": ""
                }],
            "costumes": [{
                    "costumeName": "costume1",
                    "baseLayerID": 1,
                    "baseLayerMD5": "f9a1c175dbe2e5dee472858dd30d16bb.svg",
                    "bitmapResolution": 1,
                    "rotationCenterX": 47,
                    "rotationCenterY": 55
                },
                {
                    "costumeName": "costume2",
                    "baseLayerID": 2,
                    "baseLayerMD5": "6e8bd9ae68fdb02b7e1e3df656a75635.svg",
                    "bitmapResolution": 1,
                    "rotationCenterX": 47,
                    "rotationCenterY": 55
                }],
            "currentCostumeIndex": 0,
            "scratchX": 0,
            "scratchY": 0,
            "scale": 1,
            "direction": 90,
            "rotationStyle": "normal",
            "isDraggable": false,
            "indexInLibrary": 1,
            "visible": true,
            "spriteInfo": {
            }
        }],
    "info": {
        "scriptCount": 1,
        "hasCloudData": false,
        "userAgent": "Mozilla.......",
        "projectID": "236389663",
        "swfVersion": "v461",
        "spriteCount": 1,
        "videoOn": false,
        "flashVersion": "WIN 21,0,0,213"
    }

まず、3~10行目のソースコード

3~10行目
    "sounds": [{
            "soundName": "pop",
            "soundID": 1,
            "md5": "1234567890.wav",
            "sampleCount": 258,
            "rate": 11025,
            "format": ""
        }],

ここは背景のサウンド関連のコードとなっている。
ここの中の2行目はサウンドの名前,4行目がサウンドファイルのファイル名となっている。

次に11~19行目

11~19行目
    "costumes": [{
            "costumeName": "backdrop1",
            "baseLayerID": 3,
            "baseLayerMD5": "1234567890.png",
            "bitmapResolution": 1,
            "rotationCenterX": 240,
            "rotationCenterY": 180
        }],

ここも背景の画像関連のコードとなっている。
サウンドのコードと同じ要領だ。

そして、20行目からはスプライトのサウンド,画像そしてプログラムのコードとなっていく。

そのコードがこのコード

文字化けしているのは気にしない。多分zipでDLしたから。:sweat:
もし気になるのであれば(というか、DLしたままjsonを編集しようとすると、書き込み禁止の場合もあるし、編集しにくい。でも、zipから外に出してあげると文字化けも解消される。)

project.json
"scripts": [[13, 21, [["whenGreenFlag"], ["say:", "Hello World!"], ["say:", "縺薙s縺ォ縺。縺ッ 荳也阜���"]]]],

まずは["say:","Hello World!"]
"say:"というのは()と言うブロックを表す。そして、"Hello World!"は、そう。
白い部分Hello World!という引数を表す。
test.jpg
そして、["say:", "縺薙s縺ォ縺。縺ッ 荳也阜���"]は、こんにちは 世界!を表す。

ハッキングの一歩手前

では、今回は["say:", "縺薙s縺ォ縺。縺ッ 荳也阜���"]の文字化けしてる部分を(すいません。zipから出すのさぼりました...今度からはちゃんとzipファイルから出して文字化けしないようにします...)["say:", "ほげ"]というように書き換えてみよう。
そして、以下の手順でアップロードしてみよう!
1. 編集したjsonをzipに戻す(このとき編集前のjsonが残っている場合は置き換えてください)。
2. Scratchエディターに戻る。
3. 灰色のバー(初めと同じところ)にあるファイルから手元のコンピューターからアップロードを選択して、そのzipを選択してアップロードする(表示されるファイルの種類をカスタムファイルからすべてのファイルにしないとzipは表示されない)。
4. アップロードしますか?的な事を聞かれるので迷わずOK。
5. 引数が変わっていることを確認。>終了!

今回はここまで。次回は有意義なハッキングをします(そもそも今回はハッキングではないが)!

kobotyann
HTML,JavaScript,CSSを中心にやってます。 Scratchが初めて触った言語で、現在もやってます。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした