Discuss Scratch
- Discussion Forums
- » 日本語
- » 100%penについて話し合う所
- Splash_monster
-
Scratcher
9 posts
100%penについて話し合う所
#260>>しかし、中を見てもなぜそうなるのかがわからないんです…リストとか使っているんで理解するのが難しくて…
- KimiruHamiru
-
New Scratcher
500+ posts
100%penについて話し合う所
イントロで言うモザイクってどういう仕組みで作られててどうやって作られているのでしょうか
このようなものです。正直サンプルのコードは複雑でいまいち読めてないのですが、
「そういうモザイク模様」の仕組み一般について言えば、
モザイクとは「タイル」を「並べたもの」
なので、
「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)で割った余り)にする
ペンを上げる
「座標値をそのまま変えるのではなく、変数を使って、間接的に操作する」
というやり方は、よく使います。特に、単純な要素に分解したものを「組み合わせる」時に強いはずです。
- KimiruHamiru
-
New Scratcher
500+ posts
100%penについて話し合う所
すみません、質問なんですけど、このプロジェクトなのですが、なぜ地面に埋まってしまうのでしょうか。ちょっとプログラムが大きくて斜め読みなのですが、
100%penはほぼ初めてなもので…
差し当たって変数「yだー」は0とかに初期化するとよさそうに見えます。
その上で、
・player.Y
・地面の高さ
・yだー
の3つの変数の値を画面に表示して
<(player.Y)=((地面の高さ)+(10))>がどうなるはずか考えつつ、実際どうなるか観察してみる、と何かわかるかもと思います。
あと、一般論ですが、数の大きさを比べるときは、「=」ではなく「<」を使う方が安全です。
特に「加速度的に動いて大きな値になるもの」とか「小数点以下の値を持つもの」を「=」で比較すると、たいていトラブルになります。
- k0mune8
-
Scratcher
81 posts
100%penについて話し合う所
ありがとうございます!その御蔭で治りました!すみません、質問なんですけど、このプロジェクトなのですが、なぜ地面に埋まってしまうのでしょうか。ちょっとプログラムが大きくて斜め読みなのですが、
100%penはほぼ初めてなもので…
差し当たって変数「yだー」は0とかに初期化するとよさそうに見えます。
その上で、
・player.Y
・地面の高さ
・yだー
の3つの変数の値を画面に表示して<(player.Y)=((地面の高さ)+(10))>がどうなるはずか考えつつ、実際どうなるか観察してみる、と何かわかるかもと思います。
あと、一般論ですが、数の大きさを比べるときは、「=」ではなく「<」を使う方が安全です。
特に「加速度的に動いて大きな値になるもの」とか「小数点以下の値を持つもの」を「=」で比較すると、たいていトラブルになります。
- yuzupon1133-sub
-
Scratcher
1000+ posts
100%penについて話し合う所
ベクトルの外積とかで検索してみてください。
例えば: https://okwave.jp/qa/q7837052.html
例えば: https://okwave.jp/qa/q7837052.html
- KimiruHamiru
-
New Scratcher
500+ posts
100%penについて話し合う所
ペンのこと全然知らないです、教えていただけますか?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について話し合う所
ペンのこと全然知らないです、教えていただけますか?等と書いてから思い出したのですが、
NHK Why!?プログラミングの「奇跡のチョウを直せ」の回
https://www2.nhk.or.jp/school/movie/outline.cgi?das_id=D0005180312_00000
も見てみると良いと思います。
- sansuu-daisuki1217
-
Scratcher
64 posts
100%penについて話し合う所
wiki曰く、スプライトを表示してはいけないので、色に触れた判定が使えないので、日本人に対しては100%ペンを名乗れません。が、外国の人たち的にはおっけーみたいです。外国人の100%ペンの定義は「画面上に描画されるものが全てペン」
日本人の100%ペンの定義は「画面上で使用されるものが全てペン」
ってことです?
すげー今、とにかく多角形の塗りつぶしプログラムが作りたいのですが、うまい方法が思いつきません。
scratchで素早く多角形を塗り潰す方法を知ってる人いますか?
三角形は上のように内心を使うのが一番高速ですね
正凸多角形だとある点から時計回りに分割するのが簡単です。
でもこの方法だと凹んでいる図形だと失敗することがあるので
角度が最大の頂点から一番近い隣接していない頂点に辺をひいて再帰的に分割するのが簡単だと思います。
これでも失敗するやばい図形もありますが
- yamaguchi03
-
Scratcher
32 posts
100%penについて話し合う所
ペンで3Dを作りたいのですがいやぁ 初心者だと3Dはかなり難しめですね。ちょー頑張ればできると思います()
初心者です

















