「良く言えば、個性的ね...」が 代名詞。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
こちら に「らじあるすらいだー」の最新を。
無事、画質劣化問題も解決し、その他もろもろの問題も片付きまして、とりあえず遊べるようになりました。もっとも、まだ自テストが少なすぎますけど、早く見てもらいたくって。 (*^.^*)
五角形をやっていて気がついたのですが、通常の15パズルでは解けないようなパターンも、右端と左端が繋がっているからなのかどうかは知りませんが解くことができるように思えます。そう、隣同士が入れ替わっているというパターンに出くわしたのです。
# でもって、ぐりぐりしている内に解けました。
ということで、なかなかに新鮮かも。
見た目は画数の多いほうがきれいな印象がありますが、実際にとりかかるとたくさんのピースを動かすのが手間でうざったいです。
やはり、正五角形か正六角形くらいで遊ぶのが楽しいかな?
無事、画質劣化問題も解決し、その他もろもろの問題も片付きまして、とりあえず遊べるようになりました。もっとも、まだ自テストが少なすぎますけど、早く見てもらいたくって。 (*^.^*)
五角形をやっていて気がついたのですが、通常の15パズルでは解けないようなパターンも、右端と左端が繋がっているからなのかどうかは知りませんが解くことができるように思えます。そう、隣同士が入れ替わっているというパターンに出くわしたのです。
# でもって、ぐりぐりしている内に解けました。
ということで、なかなかに新鮮かも。
見た目は画数の多いほうがきれいな印象がありますが、実際にとりかかるとたくさんのピースを動かすのが手間でうざったいです。
やはり、正五角形か正六角形くらいで遊ぶのが楽しいかな?
PR
懸念点が概ね解決したので、いよいよパズル作りにはいろうと思います。
先にも書いたように、今回はアニメーションの部分が先にできてしまったので、いつもの順序とは違い、パズルのピースの配置の記憶ではなくて、アニメーションのところから実装してみることにしました。
で、こちら が今日までのところです。
まだピースの配置を記憶する部分ができていないので、シャフルも実装していません。が、今回は最初の設計をきっちりおこなったので、この段階で、数字キーで以下のように変更されます。
1 ・・・ 段数を3段に
2 ・・・ 段数を4段に
3 ・・・ 正三角形
4 ・・・ 正四角形
5 ・・・ 正五角形
6 ・・・ 正六角形
7 ・・・ 正七角形
8 ・・・ 正八角形
9 ・・・ 正九角形
今のところ、14通りのパターンが用意されていることになります。
先にも書いたように、今回はアニメーションの部分が先にできてしまったので、いつもの順序とは違い、パズルのピースの配置の記憶ではなくて、アニメーションのところから実装してみることにしました。
で、こちら が今日までのところです。
まだピースの配置を記憶する部分ができていないので、シャフルも実装していません。が、今回は最初の設計をきっちりおこなったので、この段階で、数字キーで以下のように変更されます。
1 ・・・ 段数を3段に
2 ・・・ 段数を4段に
3 ・・・ 正三角形
4 ・・・ 正四角形
5 ・・・ 正五角形
6 ・・・ 正六角形
7 ・・・ 正七角形
8 ・・・ 正八角形
9 ・・・ 正九角形
今のところ、14通りのパターンが用意されていることになります。
さて、これでパズルを作り始めれる...と思ったら、まだ問題があることに気がつきました。
空白のピースから隣のピースにマウスが移った時に、始めてその(逆の)方向にピースを動かす...といった動作をさせるためには、現在のマウスがどのピースの上に存在するかということを判定しなければなりません。
今までは、長方形や円に近似させれば良かったのですが、今回は斜め向きの台形などもあるため、もう少し真面目に内外判定をしなければユーザーの思ったとおりの動きにはならないことに気がつきました。
う~ん、これは数学に頼るしかない...。
ということで、「内外判定」「座標」あたりで検索をかけると、
「偏角の原理」というものを見つけました。
あなたがビルのてっぺんにいるとします。
4つの地点を結んでできる四角形の左回り(または右回り)の順番で
それぞれの地点を見ていく時、元の頂点に戻るまでに一周したら
あなたは4つの地点の内部にいます。
一周せずに体をねじるだけに終わったら外部にいることになります。
...なるほど、体感しました。
で、これを式に表すと
すべての辺に対し対象点との外積が全て同一符号なら内部
(P-A)×(B-A)
(P-B)×(C-B)
(P-C)×(D-C)
(P-D)×(A-D)
となるそうです。
ちなみに外積は
Q×R = Qx × Ry - Rx × Qy
= |Q||R|sin(θ)
なので、2つをあわせると
(Px - Ax)×(By - Ay)-(Bx - Ax)×(Py - Ay)
(Px - Bx)×(Cy - By)-(Cx - Bx)×(Py - By)
(Px - Cx)×(Dy - Cy)-(Dx - Cx)×(Py - Cy)
(Px - Dx)×(Ay - Dy)-(Ax - Dx)×(Py - Dy)
となるのではないかと。
やっとプログラムにできるところまできましたね。
空白のピースから隣のピースにマウスが移った時に、始めてその(逆の)方向にピースを動かす...といった動作をさせるためには、現在のマウスがどのピースの上に存在するかということを判定しなければなりません。
今までは、長方形や円に近似させれば良かったのですが、今回は斜め向きの台形などもあるため、もう少し真面目に内外判定をしなければユーザーの思ったとおりの動きにはならないことに気がつきました。
う~ん、これは数学に頼るしかない...。
ということで、「内外判定」「座標」あたりで検索をかけると、
「偏角の原理」というものを見つけました。
あなたがビルのてっぺんにいるとします。
4つの地点を結んでできる四角形の左回り(または右回り)の順番で
それぞれの地点を見ていく時、元の頂点に戻るまでに一周したら
あなたは4つの地点の内部にいます。
一周せずに体をねじるだけに終わったら外部にいることになります。
...なるほど、体感しました。
で、これを式に表すと
すべての辺に対し対象点との外積が全て同一符号なら内部
(P-A)×(B-A)
(P-B)×(C-B)
(P-C)×(D-C)
(P-D)×(A-D)
となるそうです。
ちなみに外積は
Q×R = Qx × Ry - Rx × Qy
= |Q||R|sin(θ)
なので、2つをあわせると
(Px - Ax)×(By - Ay)-(Bx - Ax)×(Py - Ay)
(Px - Bx)×(Cy - By)-(Cx - Bx)×(Py - By)
(Px - Cx)×(Dy - Cy)-(Dx - Cx)×(Py - Cy)
(Px - Dx)×(Ay - Dy)-(Ax - Dx)×(Py - Dy)
となるのではないかと。
やっとプログラムにできるところまできましたね。
gsquare で台形の画像が比較的簡単に拡大・縮小できるということがわかったので、1つ思いついてしまいました。
# 簡単にできるとなるとそちら方向に発想が行くというのが安易ですねぇ...。困難に立ち向かうという姿勢ではなく、安易なところから道を探すという根性があさましい...
# などとは思っていないのでした。 :-P
さて、その思いつきとは...
# 簡単にできるとなるとそちら方向に発想が行くというのが安易ですねぇ...。困難に立ち向かうという姿勢ではなく、安易なところから道を探すという根性があさましい...
# などとは思っていないのでした。 :-P
さて、その思いつきとは...
今日はとっても忙しかったので危うく見逃すところでした。 (--;
# と、あたかも毎回すぐに感想を書いているようなフリをしてみる...
じゅもくちゃんと万引き君の鉢合わせを楽しみにしております。
そこに やや影の薄い ぶじょくちゃん がどうからむか。
そして、きっと ます子 は、その舞台のセッティングを影で支えながら泣いていることでしょう...。
# と、あたかも毎回すぐに感想を書いているようなフリをしてみる...
じゅもくちゃんと万引き君の鉢合わせを楽しみにしております。
そこに やや影の薄い ぶじょくちゃん がどうからむか。
そして、きっと ます子 は、その舞台のセッティングを影で支えながら泣いていることでしょう...。
昨日考えた式を元に、簡単なサンプルを作ってみました。
...良かった。間違っていなかったようですね。
ということで、サンプルは こちら から。
今回はソース(*.hsp)と *.exe と両方入れてありますのでサンプルの動作だけを見ることもできます。
今回のサンプルは、私の動作確認が目的なので動きを期待しないように。
...良かった。間違っていなかったようですね。
ということで、サンプルは こちら から。
今回はソース(*.hsp)と *.exe と両方入れてありますのでサンプルの動作だけを見ることもできます。
今回のサンプルは、私の動作確認が目的なので動きを期待しないように。