Discuss Scratch

KimiruHamiru
New Scratcher
500+ posts

100%penについて話し合う所

skyblueball2 wrote:

質問です。
ペンで描画したものに当たり判定を持たせるにはどうしたらよいでしょうか。

「ペンで描画したもの」と「何」の当たり判定か

で話が違ってくると思うのですが、

「ペンで描画したもの」と「スプライト」の当たり判定
であれば、スプライトの方で
<[#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より大きい場合は、処理も複雑に、処理時間もとても長くなっていくので、効率化のために工夫が必要になってくるかと思いますが、考え方はこの延長になるかなと思います。
Himmajin_Scratch_3rd
Scratcher
11 posts

100%penについて話し合う所

skyblueball2 wrote:

質問です。
ペンで描画したものに当たり判定を持たせるにはどうしたらよいでしょうか。
リストを使って、リスト内の変数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について話し合う所

skyblueball2 wrote:

質問です。
ペンで描画したものに当たり判定を持たせるにはどうしたらよいでしょうか。
クローンでやってみたらどうでしょうか。(ターボワープで)
または、<()色に触れた>ブロックを使ってみてはいかがでしょうか。
ke1002
Scratcher
9 posts

100%penについて話し合う所

RUKENA
Scratcher
2 posts

100%penについて話し合う所

skyblueball2 wrote:

質問です。
ペンで描画したものに当たり判定を持たせるにはどうしたらよいでしょうか。
前提としてペンで描画したものの情報をすべてリストに記録している状態にしている必要があります。
※ペンで描画した二つのものを「A」、「B」と置きます

丸いものに当たり判定をつける場合、三平方の定理を用いて「A」の半径と「B」の半径を足したものより「A」と「B」の距離が短かった場合が「当たった」ということになります。
参考:https://scratch.mit.edu/projects/1070370832/
skyblueball2
Scratcher
100+ posts

100%penについて話し合う所

#541-#546 ありがとうございます!参考にさせていただきます。
MacBookProM3MAX
Scratcher
100+ posts

100%penについて話し合う所

そもそもPenってどうやって使うんですか?使い方&やり方をお教えしてもらってもいいですか?
set pen color to [#01a15b]
when green flag が押されたとき
kaisuke9244
Scratcher
100+ posts

100%penについて話し合う所

#548

[s wrote:

scratchコーチプログラミングツール]『ペン』のコードで使用頻度が多いのは

全部消す
ペンを下ろす
ペンを上げる
ペンの色を〇〇にする
以上のコードの使い方を理解しておけば大丈夫でしょう。

「全部消す」は一度書かれたペンの線を消す処理になります。

「ペンを下ろす」は画面に線を書かせる処理になります。

「ペンを上げる」は画面に線を書かせない状態にさせる処理になります。

「ペンの色を〇〇にする」はペンで書かれる線の色を指定できる処理になります。

このコードの処理は書かれている通りなので動作を確認すればすぐ理解できると思います。

次に、ペンのコードで使用頻度が少ないのは

スタンプ
ペンの太さを〇〇にする
ペンの色を〇〇ずつ変える
ペンの太さを〇〇ずつ変える
以上のコードの使い方は理解しなくても大丈夫でしょう。

「スタンプ」はネコのスタンプが押される処理になります。

「ペンの太さを〇〇にする」は書く線の太さを変える処理になります。

「ペンの色を〇〇ずつ変える」は数値を指定すれば色を変更することができる処理になります。繰り返し処理などに組み込む処理で使われます。

「ペンの太さを〇〇ずつ変える」は数値を指定すれば線の太さを変更することができる処理になります。繰り返し処理などに組み込む処理で使われます。

動作を確認しましたが、やはり使いどころが判らない処理でした。

以上がペンのコードの処理の解説になります。使用頻度が多いコードだけ理解しておけば大丈夫でしょう。
スタンプはそのままのコスチュームがかかれる。
特定のペンを消すことはできない。背景色で上から塗りつぶすなどが有効

Last edited by kaisuke9244 (March 20, 2025 21:42:38)

yukiscratch44
Scratcher
15 posts

100%penについて話し合う所

skyblueball2 wrote:

質問です。
ペンで描画したものに当たり判定を持たせるにはどうしたらよいでしょうか。
その図形の当たり判定を座標で行えるプログラムを作ればよいと思います。
ioqj
Scratcher
500+ posts

100%penについて話し合う所

kaisuke9244 wrote:

#548

scratchコーチ wrote:


記事のリンクを提供しないと、正当な引用にはなりません。
MacBookProM3MAX
Scratcher
100+ posts

100%penについて話し合う所

#589ありがとうございます参考になります

Last edited by MacBookProM3MAX (March 21, 2025 06:55:18)

Sasaki-Kaito
New Scratcher
2 posts

100%penについて話し合う所

スタンプも100%ペンには含まれていますか?
finalbacon
Scratcher
100+ posts

100%penについて話し合う所

#553

Poteto143 wrote:

(#1)
よくある質問
Q. どのような作品が100%penになるのですか?
A. 100%penについての具体的な決まりはありません。そのため、作者が100%penだと思うのであれば100%penを名乗ることができます。
こう書かれている通り、あなたがスタンプが含まれると思うのなら含まれます。

Last edited by finalbacon (May 18, 2025 06:07:39)

U-Y-Scratch2
Scratcher
17 posts

100%penについて話し合う所

finalbacon wrote:

#553

Poteto143 wrote:

(#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について話し合う所

kakeoti wrote:

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からという風になってます。
minepra
Scratcher
25 posts

100%penについて話し合う所

すみませんもう出てるかと思いますが3角形の描画の仕方を教えて下さい。
内接円の半径、xy座標はもう求められました。
ioqj
Scratcher
500+ posts

100%penについて話し合う所

minepra wrote:

すみませんもう出てるかと思いますが3角形の描画の仕方を教えて下さい。
内接円の半径、xy座標はもう求められました。
内接円を求めた、ということは、塗りつぶしでしょうか。
次の段階は、三角形の頂点からの距離と、その太さを計算して、三角形の頂点を描画する必要があります。
このプロジェクトがわかりやすいと思います。

Powered by DjangoBB