Discuss Scratch
- KimiruHamiru
-
New Scratcher
500+ posts
100%penについて話し合う所
質問です。
ペンで描画したものに当たり判定を持たせるにはどうしたらよいでしょうか。
「ペンで描画したもの」と「何」の当たり判定か
で話が違ってくると思うのですが、
「ペンで描画したもの」と「スプライト」の当たり判定
であれば、スプライトの方で
<[#1b37da]色に触れた>のブロックを使えば、わりと簡単にできるかなと思います。
「どの色に当たったことを調べるか」の部分は、ちゃんと考える必要がありますが、ペンで何かを描くプログラムをかいたことのある人なら、試していればわかると思います。
「ペンで描画したもの」と「ペンで描画するもの」の当たり判定
の場合、例えば、「スプライトを表示しないで当たり判定にだけスプライト(コスチューム)を使う」ということができます。(「隠す」じゃなく「幽霊の効果を100にする」ならできるとかちょっとクセはあります。「スキャン(scan)」とか呼ばれてるので、探せば参考になるプロジェクトも見つかると思います)
「ペンで描画したもの」と「表示しないスプライト」の当たり判定が終わった後に、表示しないスプライトのある場所に、改めてペンで描いたりすればよいです。
ということで「ペンで描かれたものは、とくに工夫しなくても、当たり判定を持っている」ということは言えます。
そのうえで…
- KimiruHamiru
-
New Scratcher
500+ posts
100%penについて話し合う所
「ペンで描画したもの」と「ペンで描画するもの」の当たり判定で「スプライト(コスチューム)は使わない!」
という話題になると、急に難度が上がります。
基本的な考え方は、
「画面のどこに何を描いたか」を「変数(もしくはリスト)に記録しておいて」、
そのデータと「画面のどこに何を描くか」の情報を使ってやることになるかなと思います。
すごいおおざっぱには、たとえば
画面が4x4ドット、「まんなかのちょっと左上」にペンで何かを描いた状態
□□□□
□■□□
□□□□
□□□□
は、
「16マス分の情報」
0000
0100
0000
0000
として表現できます。
さらに、変数として扱いやすそうな形で
0000010000000000
みたいな「16個(16文字)分のデータ」として扱うことができます(変数じゃなくリストの形でもいいです)。
16個の情報がぜんぶ0なら「画面に何も描かれていない」
16個の情報がぜんぶ1なら「画面が塗りつぶされている」
という情報です。
で、
「これから描くもの」の位置が
左上なら、この16文字の1文字目、
右下なら、この16文字の16文字目、
まんなかちょっと左上なら、この16文字の6文字目、
を調べれば、そこに何か描かれているかわかるので、当たり判定ができる。
という感じです。
画面が4x4より大きかったり、「これから描くもの」が1x1より大きい場合は、処理も複雑に、処理時間もとても長くなっていくので、効率化のために工夫が必要になってくるかと思いますが、考え方はこの延長になるかなと思います。
という話題になると、急に難度が上がります。
基本的な考え方は、
「画面のどこに何を描いたか」を「変数(もしくはリスト)に記録しておいて」、
そのデータと「画面のどこに何を描くか」の情報を使ってやることになるかなと思います。
すごいおおざっぱには、たとえば
画面が4x4ドット、「まんなかのちょっと左上」にペンで何かを描いた状態
□□□□
□■□□
□□□□
□□□□
は、
「16マス分の情報」
0000
0100
0000
0000
として表現できます。
さらに、変数として扱いやすそうな形で
0000010000000000
みたいな「16個(16文字)分のデータ」として扱うことができます(変数じゃなくリストの形でもいいです)。
16個の情報がぜんぶ0なら「画面に何も描かれていない」
16個の情報がぜんぶ1なら「画面が塗りつぶされている」
という情報です。
で、
「これから描くもの」の位置が
左上なら、この16文字の1文字目、
右下なら、この16文字の16文字目、
まんなかちょっと左上なら、この16文字の6文字目、
を調べれば、そこに何か描かれているかわかるので、当たり判定ができる。
という感じです。
画面が4x4より大きかったり、「これから描くもの」が1x1より大きい場合は、処理も複雑に、処理時間もとても長くなっていくので、効率化のために工夫が必要になってくるかと思いますが、考え方はこの延長になるかなと思います。
- Himmajin_Scratch_3rd
-
Scratcher
11 posts
100%penについて話し合う所
質問です。リストを使って、リスト内の変数360個作り、特定の色などを1、それ以外を0にして、他のペンで描画したものにもリストを作り、
ペンで描画したものに当たり判定を持たせるにはどうしたらよいでしょうか。
リストとリストを一行ずつ足し算し、1列1列検査して、2が含まれたら触れているとするのはどうでしょう。
1つのリスト複数の物体を管理する必要がある場合、先頭に0か1か2以外の文字を入れるといいと思います。
追記
2じゃなくて、2以上でした。すみません。
Last edited by Himmajin_Scratch_3rd (Jan. 31, 2025 23:09:53)
- ke1002
-
Scratcher
9 posts
100%penについて話し合う所
質問です。クローンでやってみたらどうでしょうか。(ターボワープで)
ペンで描画したものに当たり判定を持たせるにはどうしたらよいでしょうか。
または、<()色に触れた>ブロックを使ってみてはいかがでしょうか。
- RUKENA
-
Scratcher
2 posts
100%penについて話し合う所
質問です。前提としてペンで描画したものの情報をすべてリストに記録している状態にしている必要があります。
ペンで描画したものに当たり判定を持たせるにはどうしたらよいでしょうか。
※ペンで描画した二つのものを「A」、「B」と置きます
丸いものに当たり判定をつける場合、三平方の定理を用いて「A」の半径と「B」の半径を足したものより「A」と「B」の距離が短かった場合が「当たった」ということになります。
参考:https://scratch.mit.edu/projects/1070370832/
- MacBookProM3MAX
-
Scratcher
100+ posts
100%penについて話し合う所
そもそもPenってどうやって使うんですか?使い方&やり方をお教えしてもらってもいいですか?
set pen color to [#01a15b]
when green flag が押されたとき
- kaisuke9244
-
Scratcher
100+ posts
100%penについて話し合う所
#548
特定のペンを消すことはできない。背景色で上から塗りつぶすなどが有効
scratchコーチプログラミングツール]『ペン』のコードで使用頻度が多いのはスタンプはそのままのコスチュームがかかれる。
全部消す
ペンを下ろす
ペンを上げる
ペンの色を〇〇にする
以上のコードの使い方を理解しておけば大丈夫でしょう。
「全部消す」は一度書かれたペンの線を消す処理になります。
「ペンを下ろす」は画面に線を書かせる処理になります。
「ペンを上げる」は画面に線を書かせない状態にさせる処理になります。
「ペンの色を〇〇にする」はペンで書かれる線の色を指定できる処理になります。
このコードの処理は書かれている通りなので動作を確認すればすぐ理解できると思います。
次に、ペンのコードで使用頻度が少ないのは
スタンプ
ペンの太さを〇〇にする
ペンの色を〇〇ずつ変える
ペンの太さを〇〇ずつ変える
以上のコードの使い方は理解しなくても大丈夫でしょう。
「スタンプ」はネコのスタンプが押される処理になります。
「ペンの太さを〇〇にする」は書く線の太さを変える処理になります。
「ペンの色を〇〇ずつ変える」は数値を指定すれば色を変更することができる処理になります。繰り返し処理などに組み込む処理で使われます。
「ペンの太さを〇〇ずつ変える」は数値を指定すれば線の太さを変更することができる処理になります。繰り返し処理などに組み込む処理で使われます。
動作を確認しましたが、やはり使いどころが判らない処理でした。
以上がペンのコードの処理の解説になります。使用頻度が多いコードだけ理解しておけば大丈夫でしょう。
特定のペンを消すことはできない。背景色で上から塗りつぶすなどが有効
Last edited by kaisuke9244 (March 20, 2025 21:42:38)
- yukiscratch44
-
Scratcher
15 posts
100%penについて話し合う所
質問です。その図形の当たり判定を座標で行えるプログラムを作ればよいと思います。
ペンで描画したものに当たり判定を持たせるにはどうしたらよいでしょうか。
- MacBookProM3MAX
-
Scratcher
100+ posts
100%penについて話し合う所
#589ありがとうございます参考になります
Last edited by MacBookProM3MAX (March 21, 2025 06:55:18)
- U-Y-Scratch2
-
Scratcher
17 posts
100%penについて話し合う所
#553「ペン」という拡張機能に含まれています。(#1)こう書かれている通り、あなたがスタンプが含まれると思うのなら含まれます。
よくある質問
Q. どのような作品が100%penになるのですか?
A. 100%penについての具体的な決まりはありません。そのため、作者が100%penだと思うのであれば100%penを名乗ることができます。
「ペン」が拡張機能「ペン」に含まれていると考えるなら、100%ペンですし、
「ペン」が拡張機能「ペン」の中の「ペン」というブロック
pen down(↑のようなブロック)
pen up
set pen color to [#01a15b]
のみのことと考えるならスタンプを使うと100%を名乗れなくなります。
(後者の方が多い気がします)
【追記】
Japanese Scratch Wikiにペンは利用可能かが記載されていました。
【追々記】
New Scratcherなので、リンクを貼れませんでした。本垢はScratcherなので本垢が貼ります。
【追々々記】
Scratcherに昇格しました。経験上、
だと思います。(公式の情報ではありませんが。)もし <<アカウント作成から2週間以上経過> かつ <2つ以上のプロジェクトを作成>> なら
Scratcherに昇格
end
そして条件を満たした次の日の午前中(日本時間)に招待されました。
Last edited by U-Y-Scratch2 (June 29, 2025 08:55:30)
- U-Y-Scratch
-
Scratcher
500+ posts
100%penについて話し合う所
#トリプルファイブ
【追記】
Japanese Scratch Wikiにペンは利用可能かが記載されていました。
【追々記】
New Scratcherなので、リンクを貼れませんでした。本垢はScratcherなので本垢が貼ります。
Japanese Scratch Wikiにペンは利用可能かが記載されていました。です。
Last edited by U-Y-Scratch (June 19, 2025 22:27:22)
- tiiima
-
Scratcher
7 posts
100%penについて話し合う所
100%penって、実際作るのは難しいですか?(アクシン系)慣れている人だとそこまで難しくはありませんが、少なくとも非PENで作るよりは難しいと思います
- tuneninemuihito
-
Scratcher
59 posts
100%penについて話し合う所
penで作品を作ってみました。
これです。
元々こちらを画面上の全ての点(360*480=172800個)を描画することで実現出来ないかと考え作成してみました。
縦12で横16の192マスに全体を区切って、それぞれが30*30の描画をしています。
少し気になってテキストを表示できる様にしてみたのですが、どうでしょうか?
やり方
旗を押す
ターボモードにする(ほぼ必須)
何かしらのキーを押す
文章を入力する
位置を入力する
少し待つ
完成
過去に作った1500枚ほどのテキストのsvgファイルをscratchで30*30のデータに変換してリストに読み込ませてあるので、入力に対応したデータに置き換える形です。
この作品に対して何か改善案などあったりしませんか?
個人的にはリストデータを1マス毎じゃなくて900(30*30)マス毎にした方が早いかな〜と思っていたり
ちなみに位置は左上から右に向かって0,1,2…と続いて次の行が16からという風になってます。
これです。
元々こちらを画面上の全ての点(360*480=172800個)を描画することで実現出来ないかと考え作成してみました。
縦12で横16の192マスに全体を区切って、それぞれが30*30の描画をしています。
少し気になってテキストを表示できる様にしてみたのですが、どうでしょうか?
やり方
旗を押す
ターボモードにする(ほぼ必須)
何かしらのキーを押す
文章を入力する
位置を入力する
少し待つ
完成
過去に作った1500枚ほどのテキストのsvgファイルをscratchで30*30のデータに変換してリストに読み込ませてあるので、入力に対応したデータに置き換える形です。
この作品に対して何か改善案などあったりしませんか?
個人的にはリストデータを1マス毎じゃなくて900(30*30)マス毎にした方が早いかな〜と思っていたり
ちなみに位置は左上から右に向かって0,1,2…と続いて次の行が16からという風になってます。
- minepra
-
Scratcher
25 posts
100%penについて話し合う所
すみませんもう出てるかと思いますが3角形の描画の仕方を教えて下さい。
内接円の半径、xy座標はもう求められました。
内接円の半径、xy座標はもう求められました。















