Discuss Scratch

KimiruHamiru
New to Scratch
500+ posts

質問コーナー3

ペンテキストエンジンに必要なこと、その3)「ペンの動きを文字列化して効率的にやる
(といいつつ「必要」ではないような気もします)

ペンテキストエンジンでは

・「ペンの動かし方を数値化」して
・その数値を、「文字列」として1つの変数(一般にはリストの1行分のデータとして)に入れておいて
・描画するときには、その文字列を読み出して
・「文字列」から取り出した数値に従ってペンを動かす

という仕組みがよく使われます。いくつかプロジェクトを読んだことがありますが、ペンテキストエンジンと名乗っているプロジェクトは全部これにあてはまるようでした。

「ペンの動かし方を数値化」というのは言葉で書くと何やらかっこよさそうですが、「画面の真ん中の☆を描く」のを「画面の別の3か所に☆を描く」ようにするためにはどうしたらいいか、という程度の話です。ペンで図形を描くことに慣れてくれば、だんだんやり方が見えてくると思います。

この「文字列」は「297998967525@2921」みたいな、意味を知らないでそれだけ見るとかなり謎な感じになります。書いた本人以外は「文字列を見ても意味が分からない」ので「コードを読んで理解する」しかありません(余談ですが、Scratchはバイナリデータを扱うのがすごく面倒なのもあって一般に「文字列として保存」します。WindowsやMacで使われる「OpenTypeフォントのglyfレコード」なんかも、文字列化せずバイナリで保存するだけでやってることは同じです)。

この部分の作り方はかなり幅があって、オリジナルの文字列化の方法がしばしば作られているように思います。この部分がペンテキストエンジンという分野の本質のように思うのですが、長くなってきたので、まずはここまで。

手探りしている段階では、効率化にこだわらず、まずは変数に「ABC」が入っていたら「ABC」とペンで描くあたりまで作ってみるとよいと思います。

ある程度慣れてきたら、最初に戻りますが、「ほかの人のプロジェクトを読んでみる」のも現実的になってくるはずです。
YY04
Scratcher
100+ posts

質問コーナー3

KimiruHamiru さん、詳しい説明、ありがとうございます!とても参考になりました!
さらに質問なんですが、よく海外の方が作っているのを見ると、大きさを変えて描画できるのが多いです。
その大きさの基準はどれくらいなんでしょうか?(縦横30pxとか…)

受験勉強中のため、活動休止(減少)しています。…といいつつ実はたまに作品上げてたりする。
要件はこちらに。

<おすすめプロジェクトランキング>
1.Minecraft実況 ~全実績解除を目指して~ 再生リスト ←参照数増加中!!
2.仮想世界地図主力事業
3.デジタル時計自信作

ZeroX_Game
Scratcher
100+ posts

質問コーナー3

YY04 wrote:

KimiruHamiru さん、詳しい説明、ありがとうございます!とても参考になりました!
さらに質問なんですが、よく海外の方が作っているのを見ると、大きさを変えて描画できるのが多いです。
その大きさの基準はどれくらいなんでしょうか?(縦横30pxとか…)
その基準は人次第です。自分が100%にしたい大きさを決め、大きさを変える引数(百分率)で移動する量をかけてあげるといいです

気長にまとう
1年とか10年とか
KimiruHamiru
New to Scratch
500+ posts

質問コーナー3

YY04 wrote:

KimiruHamiru さん、詳しい説明、ありがとうございます!とても参考になりました!
さらに質問なんですが、よく海外の方が作っているのを見ると、大きさを変えて描画できるのが多いです。
その大きさの基準はどれくらいなんでしょうか?(縦横30pxとか…)
表示サイズじゃなくて、「拡大率100%(おおきくもちいさくもしない)状態の1文字のデータの話」と理解したのですがあってるでしょうか。

これは、「ペンの動かし方の文字列化」と同様、というか文字列化の効率のために調整されることが多いように思います。
「何とも言えない」というのが一つの答えなのですが、考え方として、

どういうサイズなら、使いたい文字の形が表現できるか
「文字列化(ペンの動きの符号化)」したときの、「扱いやすさ」

あたりに左右されているように思います。

Scratchでは、取り回しが楽なのか、
「1文字の表示領域を9x9の方眼に見立てて、x座標に1文字、y座標に1文字使って数字2文字」で表現してペンを動かす
というPTEが多かったような気もします。

つまり文字の形は「縦横9pxのデータ」として保存しておいて、表示必要に応じて拡大する感じです。わたしもそんなたくさん読んでるわけじゃないので、他にもあると思いますが、桁数が変化したり桁数大きくなったりすると処理の手間が増えていきますし、文字デザインの労力が大爆発するはずなので、練習用にはこのサイズが無難なような気がします。


あと、うろ覚えなのですが、
・OSが使っているアウトラインフォントは画面表示用で1024x1024、印刷用で4096x4096とか
・日本の8ビットコンピュータの時代は8x8に収まるフォントがよく使われた
・5x7ぐらいが、「アルファベット+数字」全部表現するためのぎりぎりの線で、英語圏の古いコンピュータのフォントは確かそんな感じ

あたりが参考になるでしょうか。

別に「ドット絵とか整数の枠組みに縛られる必要」はないので、「小数で管理して曲線の組み合わせで描く」とかいう可能性もありそうですし、「7セグメントディスプレイ」とか調べると全く違った方向が見えてくるかもしれません。
YY04
Scratcher
100+ posts

質問コーナー3

わかりました。やってみます。

受験勉強中のため、活動休止(減少)しています。…といいつつ実はたまに作品上げてたりする。
要件はこちらに。

<おすすめプロジェクトランキング>
1.Minecraft実況 ~全実績解除を目指して~ 再生リスト ←参照数増加中!!
2.仮想世界地図主力事業
3.デジタル時計自信作

SYOUI-2
Scratcher
100+ posts

質問コーナー3

apple502j wrote:

アシカは絶滅危惧種です。
scratchアシカの事ですか?

ヘイトスピーチはコミュニティガイドライン違反です、スクラッチで人種差別はやめましょう。
※投稿とは関係ないことが書かれていますがこれは署名と言っていちいち手動で書いていません
↓サブアカウント↓
MSK-collaborationsabusizu2007
amagasakijrw
ZeroX_Game
Scratcher
100+ posts

質問コーナー3

SYOUI-2 wrote:

apple502j wrote:

アシカは絶滅危惧種です。
scratchアシカの事ですか?
個人的質問はプロフィールで行ってくれるとみんなの質問が埋もれずにすみます。次からプロフィールで行ってくれると嬉しいです。

気長にまとう
1年とか10年とか
itnkmkw
Scratcher
1000+ posts

質問コーナー3

ZeroX_Game wrote:

SYOUI-2 wrote:

apple502j wrote:

アシカは絶滅危惧種です。
scratchアシカの事ですか?
個人的質問はプロフィールで行ってくれるとみんなの質問が埋もれずにすみます。次からプロフィールで行ってくれると嬉しいです。
別に個人的な質問ではありませんし、会話の流れ的につながってるので大丈夫ではないでしょうか。ただし、古い投稿の掘り起こしではありますが。(下線部追加)

Last edited by itnkmkw (July 26, 2019 10:05:35)


トラウマは存在しない。存在するのは今だけなんだ。過去のトラウマが原因で今の行動をとってしまったんじゃない。
今,自分でその行動をとる判断をしたんだ。過去は関係ない。だから,トラウマに取りつかれるのはやめよう。今から変われるんだ。
Start in your life…
興味のある方はこちら。itnkmkw と一緒に 心 について考えるスタジオ

※この署名のメッセージは不定期で変更されています。もしかしたらあなたへのメッセージかもよ~^^

皆さ~ん!「聖書」と言う言葉を聞いてどう思いますか?興味のある方はここココここへ!

@itnkmkwと申します。沖縄在住(ホームスクーラー)です。心理学音楽やってます。MIX依頼募集中!

《コミュニティーをより良い所にするために》Scratch に関係ないトピックについての意見交換所では議事進行役を務めております(名ばかりですが)。どーぞよろしく
最近プロジェクト作ってませんが、もうすぐ聖書RPGの製作を再開しますので…いまは彩雲が忙しいのだ。

ZeroX_Game
Scratcher
100+ posts

質問コーナー3

うーん、個人的な確認はプロフィールでいいと思います。今コメント欄閉じてるみたいですけど。

気長にまとう
1年とか10年とか
rakurakutonton
Scratcher
94 posts

質問コーナー3

今シューティングゲームを作っています
敵がランダムに出てこさせるにはどうやったらいいですか?

こ↑こ↓から僕のことをフォローできるよ、フォローしないと家に隕石落ちてくるよ。下のやつやらないとピーマン以外食べられなくなる呪いにかかるよ。やろうね。


YY04
Scratcher
100+ posts

質問コーナー3

rakurakutonton wrote:

今シューティングゲームを作っています
敵がランダムに出てこさせるにはどうやったらいいですか?
「画面全体のランダムな位置に出させる」ことなら、このようにできます。
ずっと
x座標を ((-240) から (240) までの乱数) 、y座標を ((-180) から (180) までの乱数) にする
[敵 v] のクローンを作る
() 秒待つ
end
クローンされたとき
敵の行動
何秒かの待機時間は必要です。

受験勉強中のため、活動休止(減少)しています。…といいつつ実はたまに作品上げてたりする。
要件はこちらに。

<おすすめプロジェクトランキング>
1.Minecraft実況 ~全実績解除を目指して~ 再生リスト ←参照数増加中!!
2.仮想世界地図主力事業
3.デジタル時計自信作

apple502j
Scratcher
1000+ posts

質問コーナー3

「どこかの場所へ行く」というブロックもありますね。

署名は、ディスカッションフォーラムの機能である。署名は、その人のすべての投稿の下部に追加される。署名は、BBCodeで記述できる。 署名を追加/変更/削除したい場合は、ディスカッションフォーラムのホームの一番下に行き、「Change your signature」を押す。署名の大きさは150pxまでである。これには、改行、画像を含む。- Japanese Scratch-Wiki 「署名
hikahikaru
Scratcher
100+ posts

質問コーナー3

ARATAKU wrote:

スクラッチ3.0のプロジェクトをhtml化することができるものがあったと思うのですが、思い出せません。教えてくださるとありがたいです。
3.0はそもそもhtmlです。現在ではそのプロジェクトは意味をなしません。

あれから5年たち、私はすっかり最先端の時の流れについていけなくなってしまった。
署名ショートカット
hikahikaru
Scratcher
100+ posts

質問コーナー3

ibuki1128 wrote:

色をコピーして塗るのはどうすればいいですか?
コスチュームの話ならスポイトで色をコピーするだけです。

あれから5年たち、私はすっかり最先端の時の流れについていけなくなってしまった。
署名ショートカット
rakurakutonton
Scratcher
94 posts

質問コーナー3

YY04 wrote:

rakurakutonton wrote:

今シューティングゲームを作っています
敵がランダムに出てこさせるにはどうやったらいいですか?
「画面全体のランダムな位置に出させる」ことなら、このようにできます。
ずっと
x座標を ((-240) から (240) までの乱数) 、y座標を ((-180) から (180) までの乱数) にする
[敵 v] のクローンを作る
() 秒待つ
end
クローンされたとき
敵の行動
何秒かの待機時間は必要です。
では、上の方からランダムに出現させることはできますか?

こ↑こ↓から僕のことをフォローできるよ、フォローしないと家に隕石落ちてくるよ。下のやつやらないとピーマン以外食べられなくなる呪いにかかるよ。やろうね。


ZeroX_Game
Scratcher
100+ posts

質問コーナー3

hikahikaru wrote:

ARATAKU wrote:

スクラッチ3.0のプロジェクトをhtml化することができるものがあったと思うのですが、思い出せません。教えてくださるとありがたいです。
3.0はそもそもhtmlです。現在ではそのプロジェクトは意味をなしません。
この場合のhtml化は多分、単体で動かせるようにすることだと思われます。あとこの質問自体割と前のもので古い投稿を掘り起こすと、最新の質問が次ページに降りてしまうことがあるので日付等を確認してから返信しておい他方がいいと思います

気長にまとう
1年とか10年とか
ZeroX_Game
Scratcher
100+ posts

質問コーナー3

rakurakutonton wrote:

YY04 wrote:

rakurakutonton wrote:

今シューティングゲームを作っています
敵がランダムに出てこさせるにはどうやったらいいですか?
「画面全体のランダムな位置に出させる」ことなら、このようにできます。

何秒かの待機時間は必要です。
では、上の方からランダムに出現させることはできますか?
そのまま上のプログラムを応用すればよくて、少し考えるとわかるのですが、y座標が変化せずに上で固定すればいいのでそのようにするために乱数のブロックを外して、180あたりの数を書けばいいです

Last edited by ZeroX_Game (July 27, 2019 01:38:10)


気長にまとう
1年とか10年とか
YY04
Scratcher
100+ posts

質問コーナー3

rakurakutonton wrote:

YY04 wrote:

rakurakutonton wrote:

今シューティングゲームを作っています
敵がランダムに出てこさせるにはどうやったらいいですか?
「画面全体のランダムな位置に出させる」ことなら、このようにできます。
ずっと
x座標を ((-240) から (240) までの乱数) 、y座標を ((-180) から (180) までの乱数) にする
[敵 v] のクローンを作る
() 秒待つ
end
クローンされたとき
敵の行動
何秒かの待機時間は必要です。
では、上の方からランダムに出現させることはできますか?
「上からランダムに出てきて下に落ちていく」感じなら、
ずっと
x座標を ((-240) から (240) までの乱数) 、y座標を (180) にする
[敵 v] のクローンを作る
() 秒待つ
end
クローンされたとき
<(y座標) < [-180]> まで繰り返す
y座標を (落下スピード) ずつ変える
敵の行動
end
このクローンを削除する
こうなると思います。

Last edited by YY04 (July 27, 2019 02:34:03)


受験勉強中のため、活動休止(減少)しています。…といいつつ実はたまに作品上げてたりする。
要件はこちらに。

<おすすめプロジェクトランキング>
1.Minecraft実況 ~全実績解除を目指して~ 再生リスト ←参照数増加中!!
2.仮想世界地図主力事業
3.デジタル時計自信作

Poteto143
Scratcher
1000+ posts

質問コーナー3

「クローンされたとき」の下の青いブロック、「x座標」じゃなくて「y座標」ですね・・・
また、「落ちていく」感じにしたいのなら、
y座標を () ずつ変える//マイナスの値を入れる
も必要だと思います。

6周年になりました。ありがとうございます
YY04
Scratcher
100+ posts

質問コーナー3

Poteto143 wrote:

「クローンされたとき」の下の青いブロック、「x座標」じゃなくて「y座標」ですね・・・
また、「落ちていく」感じにしたいのなら、
y座標を () ずつ変える//マイナスの値を入れる
も必要だと思います。
そうでした。直しときます。

受験勉強中のため、活動休止(減少)しています。…といいつつ実はたまに作品上げてたりする。
要件はこちらに。

<おすすめプロジェクトランキング>
1.Minecraft実況 ~全実績解除を目指して~ 再生リスト ←参照数増加中!!
2.仮想世界地図主力事業
3.デジタル時計自信作

Powered by DjangoBB