Discuss Scratch

Splash_monster
Scratcher
9 posts

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

#260>>しかし、中を見てもなぜそうなるのかがわからないんです…リストとか使っているんで理解するのが難しくて…
k0mune8
Scratcher
81 posts

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

すみません、質問なんですけど、このプロジェクトなのですが、なぜ地面に埋まってしまうのでしょうか。
100%penはほぼ初めてなもので…
スミマセン、治りました。

Last edited by k0mune8 (March 6, 2022 09:16:15)

KimiruHamiru
New Scratcher
500+ posts

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

Splash_monster wrote:

イントロで言うモザイクってどういう仕組みで作られててどうやって作られているのでしょうか

Splash_monster wrote:

このようなものです。
正直サンプルのコードは複雑でいまいち読めてないのですが、

「そういうモザイク模様」の仕組み一般について言えば、
モザイクとは「タイル」を「並べたもの」
なので、
「1枚のタイルの描き方」と「タイルの並べ方」に分解して考えると、話は単純になるかなと思います。
単純な要素に分解して、実際に動かして
そこから徐々に複雑にしていく、というやり方は、
「どうやって作られている」を突き詰めるのには役に立つかなと思います。

サンプルのような模様を描くには、
・1枚のタイルの模様を描くだけ
・1枚のタイルの模様を動かすだけ
・1枚のタイルの模様の向きを90度変えるたものを描くだけ
・単なる正方形タイルを並べるだけ
といった単純な要素を、それぞれきっちりコードとして動かせる、ということは多分必須です。
逆に、そこまで行けば、ゴールは見えてくるかなと思います。

差し当たって、「1枚のタイルの描き方」は、「サンプルの見た目をペンで再現する」という条件なら例えばこんな感じでしょうか。
定義 drawTile
消す
(5)回繰り返す
drawLine (0)
[変数 v]を(10)ずつ変える
end
(5)回繰り返す
drawLine (50)
[変数 v]を(10)ずつ変える
end
定義 drawLine (端)
x座標を((変数)を(50)で割った余り)、y座標を(端)にする
ペンを下ろす
x座標を(端)、y座標を((変数)を(50)で割った余り)にする
ペンを上げる

「座標値をそのまま変えるのではなく、変数を使って、間接的に操作する」
というやり方は、よく使います。特に、単純な要素に分解したものを「組み合わせる」時に強いはずです。
mikan__s
Scratcher
71 posts

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

Splash_monster wrote:

#260>>しかし、中を見てもなぜそうなるのかがわからないんです…リストとか使っているんで理解するのが難しくて…
これの中のコメントを見ればわかると思います。
大まかに言うと、

リセットする

更新

描写
の繰り返しです。

描写は、
◇を各場所に描く

書いていないところを書く

です。
KimiruHamiru
New Scratcher
500+ posts

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

k0mune8 wrote:

すみません、質問なんですけど、このプロジェクトなのですが、なぜ地面に埋まってしまうのでしょうか。
100%penはほぼ初めてなもので…
ちょっとプログラムが大きくて斜め読みなのですが、

差し当たって変数「yだー」は0とかに初期化するとよさそうに見えます。
その上で、
・player.Y
・地面の高さ
・yだー
の3つの変数の値を画面に表示して
<(player.Y)=((地面の高さ)+(10))>
がどうなるはずか考えつつ、実際どうなるか観察してみる、と何かわかるかもと思います。

あと、一般論ですが、数の大きさを比べるときは、「=」ではなく「<」を使う方が安全です。
特に「加速度的に動いて大きな値になるもの」とか「小数点以下の値を持つもの」を「=」で比較すると、たいていトラブルになります。
k0mune8
Scratcher
81 posts

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

KimiruHamiru wrote:

k0mune8 wrote:

すみません、質問なんですけど、このプロジェクトなのですが、なぜ地面に埋まってしまうのでしょうか。
100%penはほぼ初めてなもので…
ちょっとプログラムが大きくて斜め読みなのですが、

差し当たって変数「yだー」は0とかに初期化するとよさそうに見えます。
その上で、
・player.Y
・地面の高さ
・yだー
の3つの変数の値を画面に表示して
<(player.Y)=((地面の高さ)+(10))>
がどうなるはずか考えつつ、実際どうなるか観察してみる、と何かわかるかもと思います。

あと、一般論ですが、数の大きさを比べるときは、「=」ではなく「<」を使う方が安全です。
特に「加速度的に動いて大きな値になるもの」とか「小数点以下の値を持つもの」を「=」で比較すると、たいていトラブルになります。
ありがとうございます!その御蔭で治りました!
syokaki
Scratcher
100+ posts

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

penの傾いた四角形の当たり判定の仕方を教えてください。
yuzupon1133-sub
Scratcher
1000+ posts

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

ベクトルの外積とかで検索してみてください。
例えば: https://okwave.jp/qa/q7837052.html
rinasora
Scratcher
44 posts

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

ペンのこと全然知らないです、教えていただけますか?
yuzupon1133-sub
Scratcher
1000+ posts

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

まず何から教えればいいのか疑問です。
私たちは分からない「部分」をお答えします。
3659662244
Scratcher
100+ posts

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

ペンの線を動かす場合って消して書く消して書くの繰り返しの方法しか存在しないのですか?
yuzupon1133-sub
Scratcher
1000+ posts

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

そうです。
KimiruHamiru
New Scratcher
500+ posts

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

rinasora wrote:

ペンのこと全然知らないです、教えていただけますか?
Scratchのエディタ画面の左下隅の四角い青いボタンを押して、拡張機能「ペン」を選ぶ。
というのはいいでしょうか?

ペンカテゴリのブロックが表示できたら、
@greenFlagがクリックされたとき
描画する
定義 描画する
消す
ペンを下ろす
x座標を(0)、y座標を(0)にする
x座標を(100)、y座標を(0)にする
x座標を(100)、y座標を(100)にする
x座標を(0)、y座標を(0)にする
ペンを上げる
みたいなコードを書いて実行してみてください。

Scratchでの「座標」がなんとなくわかって、
「ネコを画面上の狙った場所に表示するコード」が書けるなら、
上のコードの実行結果を見て、何が起きているか、何となくわかるかなと思います。

そのへんまで動くとこまで行けば、
ペンカテゴリのブロックは9種類しかないし、名前から何が起こるか予想できると思います。
ここまでできたら、あとは実験したり、他の人のコードを読んだり、新たに質問したり、です。

ペンを、変数とか、リストとか、定義とか、と組み合わせて使うと、結構とんでもないこともできます。
たとえばこんなの( https://scratch.mit.edu/projects/611411231/ )はペン機能が必須かなと思います。

・「動き」ブロックで、どういう動きにするか
・どうすれば効率化できるか
というのは、数学の深さのようにやたらに深い話で、全部を語ると何か月何年も何十年もかかるかもと思います。
「ペンの話」というより「(ペンで)これをやるにはどうしたら」みたいな話になってくと思います。
KimiruHamiru
New Scratcher
500+ posts

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

rinasora wrote:

ペンのこと全然知らないです、教えていただけますか?
等と書いてから思い出したのですが、

NHK Why!?プログラミングの「奇跡のチョウを直せ」の回
https://www2.nhk.or.jp/school/movie/outline.cgi?das_id=D0005180312_00000

も見てみると良いと思います。
sansuu-daisuki1217
Scratcher
64 posts

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

matunyan0930 wrote:

ZeroX_Game wrote:

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

watashida wrote:

ARATAKU wrote:

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

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

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

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

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

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

削除

Last edited by noty2008 (March 20, 2022 06:03:35)

rslabo20106
Scratcher
2 posts

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

難しそうですね。
tnt1739
Scratcher
20 posts

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

ペンで3Dを作りたいのですが
初心者です
StrongPeanut
Scratcher
1000+ posts

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

こちらを読んでみてください。
yamaguchi03
Scratcher
32 posts

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

tnt1739 wrote:

ペンで3Dを作りたいのですが
初心者です
いやぁ 初心者だと3Dはかなり難しめですね。ちょー頑張ればできると思います()

Powered by DjangoBB