Discuss Scratch

Poteto143
Scratcher
1000+ posts

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

本トピックはScrachに存在するテクニックの一つである「100%pen」を扱うトピックです。

そもそも100%penってなに?
100%penとは、ステージに表示する全ての物をペンを使って描画するテクニックのことです。
スプライトそのもの、リスト、変数などを表示させてはいけないといったローカルルールがあります。
また、画面の大部分にペンを使いながら一部にのみペン以外を使うものは、99%penといったように割合を減らした形で呼ばれることがあります。

どうやって作るの?
100%penを作るには「画面を再描写せずに実行する」を有効にした定義ブロック、多くの変数やリスト、演算ブロックなどを活用して作ります。
詳しくはこちらを読んでみてください。

本トピックを利用する上でのお願い
  • 本トピックは100%penの作品の制作に取り組む方や、それに関して困っている方への手助けを目的としています。それ以外の話題は、それぞれ用途に合ったトピックを利用してください。

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

Last edited by Poteto143 (Feb. 2, 2025 08:36:36)

apple502j
Scratcher
1000+ posts

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

お、いいですね!

100%penでゲームを作ると、当たり判定が面倒ですね
三角形との当たりとか作れる人いるかな。
YY04
Scratcher
100+ posts

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

まず、100%Penで、動かせるオブジェクトの作り方がわからない…
Poteto143
Scratcher
1000+ posts

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

YY04 wrote:

まず、100%Penで、動かせるオブジェクトの作り方がわからない…
まず、ペンそのものでは動く物体を作る事は無理です。
そこで、物体を消しては動かして書く、消しては動かして書くをして物体が動いているように見せます。
物体を置き直して撮るのを繰り返す、ストップモーションのようなイメージです。
例えばペンで出来た物体を横に動かしたいときは
@Greenflag がクリックされたとき
x座標を (-200) 、y座標を (0) にする//座標の初期化
ペンの太さを (30) にする//ペンの初期化
(50) 回繰り返す
消す//処理の始めにペンの線を全部消す(紙に描かれた絵を全部消すイメージ)
ペンを下ろす//丸(点?)を描く
ペンを上げる
x座標を (8) ずつ変える//座標を変える
end
のようにします。
YY04
Scratcher
100+ posts

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

なるほど。
でもそのプログラムでいうと、当たり判定をどうやってつけるんですか?
座標で管理するのが難しそうな気がするのですが。
Poteto143
Scratcher
1000+ posts

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

丸の当たり判定を作るには三平方の定理(ピタゴラスの定理とも)を使います。
三平方の定理とは、直角三角形の底辺の長さの二乗と高さの二乗は斜辺の長さの二乗に等しいという物です。
これを利用すると、任意の座標から座標までの距離を求めることが出来ます。
出かけるのでまた後で追記します
Poteto143
Scratcher
1000+ posts

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

上の続きです。
三平方の定理を使って丸とマウスポインターの当たり判定を作りたい場合、以下の様にします。
<[25] > (((((x座標) - (マウスのx座標)) * ((x座標) - (マウスのx座標))) + (((y座標) - (マウスのy座標)) * ((y座標) - (マウスのy座標))))の[平方根 v]::operators)>
左の数値には円の半径を入れます。

こちらのプロジェクトも参考になるかもしれません。三平方の定理を使ってマウスへの距離を求める
YY04
Scratcher
100+ posts

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

おお!ありがとうございます!
やってみます。
Poteto143
Scratcher
1000+ posts

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

言い忘れましたが、一番右には「平方根」が隠れています!!
お忘れのないように。
ARATAKU
Scratcher
500+ posts

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

penが使えれば、scratchで出来ないことは基本的にないのではないかと思ってますがそれはさておき、


今、とにかく多角形の塗りつぶしプログラムが作りたいのですが、うまい方法が思いつきません。
scratchで素早く多角形を塗り潰す方法を知ってる人いますか?
YY04
Scratcher
100+ posts

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

僕の作った作品が参考になるかも。
https://scratch-mit-edu.ezproxyberklee.flo.org/projects/330630300
ZeroX_Game
Scratcher
100+ posts

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

apple502j wrote:

お、いいですね!

100%penでゲームを作ると、当たり判定が面倒ですね
三角形との当たりとか作れる人いるかな。
作ったことあるよー。
三角形の全部の角から見た時に、それぞれの角の内側にあれば中にあるからっていうやつ。

https://scratch-mit-edu.ezproxyberklee.flo.org/projects/146052708/
watashida
Scratcher
500+ posts

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

ARATAKU wrote:

今、とにかく多角形の塗りつぶしプログラムが作りたいのですが、うまい方法が思いつきません。
scratchで素早く多角形を塗り潰す方法を知ってる人いますか?

三角形は上のように内心を使うのが一番高速ですね

正凸多角形だとある点から時計回りに分割するのが簡単です。

でもこの方法だと凹んでいる図形だと失敗することがあるので

角度が最大の頂点から一番近い隣接していない頂点に辺をひいて再帰的に分割するのが簡単だと思います。
これでも失敗するやばい図形もありますが

Last edited by watashida (Sept. 30, 2019 10:42:47)

ARATAKU
Scratcher
500+ posts

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

ありがとうございます!

チョウチョ型の四角形までカバーできる物があるといいんですが・・・。

Last edited by ARATAKU (Sept. 30, 2019 11:15:39)

watashida
Scratcher
500+ posts

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

スキャンライン法だとちょうちょ型もできますが、そこまで高速じゃないですね…
交点を出してごり押しをするって手もあります

Last edited by watashida (Sept. 30, 2019 11:28:36)

Poteto143
Scratcher
1000+ posts

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

Ageも兼ねて投稿します
100%penのプロジェクトを作っている方に2つ質問があります。

1.
ずっと
表示する
もし <[#62d09f] 色に触れた> なら
...
end
隠す
end
のようなスクリプトは100%penでは認められると思いますか?

2.一部のPTEでは文字列の判定にコスチュームを使いますが、そのようなPTEは100%penで使ってもいいと思いますか?

記事などの説明を元にするのではなく、あなたの独断で回答をお願いします。
Poteto143
Scratcher
1000+ posts

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

ちなみに、僕は
1.あのようなプログラムでは一瞬でもスプライトが表示されることはないので良い
2.コスチュームの変更によって画面の表示に影響が出るわけではないので良い
という考えです。
daidaidai1
Scratcher
1000+ posts

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

「100%Pen」に厳密な定義があるわけではないので、あなたがそうしたいなら100%Penだと言って大丈夫だと思います。

私が100%Penのプロジェクトを作るときは、スプライトによる当たり判定は行わないようにしています。PTEに関しては、コスチュームを使ったPTEを含んだプロジェクトでも100%Penと名乗ってきました。
ZeroX_Game
Scratcher
100+ posts

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

wiki曰く、スプライトを表示してはいけないので、色に触れた判定が使えないので、日本人に対しては100%ペンを名乗れません。が、外国の人たち的にはおっけーみたいです。
matunyan0930
Scratcher
500+ posts

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

ZeroX_Game wrote:

wiki曰く、スプライトを表示してはいけないので、色に触れた判定が使えないので、日本人に対しては100%ペンを名乗れません。が、外国の人たち的にはおっけーみたいです。
外国人の100%ペンの定義は「画面上に描画されるものが全てペン」
日本人の100%ペンの定義は「画面上で使用されるものが全てペン」
ってことです?

Powered by DjangoBB