スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Pixiaで線画を作るときの備忘録

個人的なメモです。(^^;

Ver. 4 を使う(5は調子悪い...)

ベースレイヤーは白塗り状態(透明ではない)
・追加レイヤーは透明
・なので、追加する線画レイヤーは「乗算」にして、先に白く塗りつぶしておく。
(線の修正に「消しゴム」を使う必要がなく、白いペンでOKになる)
・透明でない白地に黒線のレイヤでも、あとで「線画抽出」(透明地に黒)ができる
線画抽出は専用のプラグインや、マスクを使う方法(下記動画参照)がある

・下書きの線(ペン)の太さ:800x600に対して3x3程度?
・レイヤ上を右クリックで色が取得できる。
・透明の時の色(背景色)はレイヤー関連の部分、「画像」「編集」の下の色、
クリックで設定可能
・つくったパスに 「Ctrl + L」で、すぐに線が引ける
・黒で線を引いても、「カラーバランス」で、有彩色の色みを加えられる
・下書きは黒、線画は明るい色(とか)
・拡大・縮小は 「Ctrl + ホイール」。マウスポインタを中心に調整される
・「ベジェ曲線」で、ドラッグすると、曲線を調整しながら制御点を決められる

スポンサーサイト

整数問題とか結構忘れてしまった

突然ですが、

自然数 m, n (ただしm<n)について、
n(n+1) = 2m(m+1)
を満たすm, n の組


について、求めようと思ったんですが、なかなかうまくいきません。

解の1つに、

m=2, n=3


があることや、式変形により、(m,nの直交座標での)

双曲線 8 (m + 1/2)2 - 4 (n + 1/2)2 = 1


上の格子点に相当することまでは分かったんですが、

①解の個数が有限なのか
②解の個数が無限にある場合、各nに対して、mが存在するか、また存在する場合、そのmの値は何かが容易にわかる方法はあるか
についてが謎です。

(mの2次方程式とみなすことにより、「2n2+2n+1 が奇数の2乗になる」という必要十分条件が得られるのですが、これだと解の有限性の判断や、個々の解の導出は困難だと思います。)

別に数学屋さんというわけではないのに、急に気になってしまったわけですが、
だれか、分かる方いらっしゃいませんか?(^^;

ベジェ曲線を使う

あまりベジェ曲線を使ったことがないのですが、Androidアプリのアイコンが汚いかな…と思ったので、書きなおしてみました。

まぁもともと低解像度だけ作っていたアイコンを無理に引き伸ばしてアンシャープとか適当に編集したので、高解像度用のアイコンでは結局ぼやけてしまっていました。そのうえ、曲線が汚い(フリーハンドで描いていた)ので、今回修正したわけですが、なんとか少しはまともになったのかな…?

左が512x512の超高解像度アイコン(クリックで実際の大きさに拡大)、右が72x72のアプリ内に埋め込んで使う用のアイコンです。

Before
「音量さん」アイコン「音量さん」アイコン 72x72


After
「音量さん」アイコン改「音量さん」アイコン改 72x72

Androidアプリ(ゲーム)「ラムゼーゲーム」開発記

ということで、Androidゲームで「ラムゼーゲーム」というアプリを作りましたので、お知らせいたします。



「ラムゼーゲーム」アイコン「ラムゼーゲーム」
お互いに15本の辺へ色を塗っていき、先に三角形を作ったほうが負け!

https://market.android.com/details?id=com.rea33.android.ramseygame


Android端末からは、以下のQRコードよりダウンロードページに移動できます。
「ラムゼーゲーム」QRコード



ゲームの種類としては既存のものですが、国内ではあまり馴染みがないゲームではないでしょうか。
丁寧な解説をされているページがありますので、URLを記しておきます。
すぐるの算数カルチャー講座

↑実際にゲームをすることもできます。おそらくJavaScriptで実装していると思います。

このブログには書いていないのですが、Androidゲームでは前に「15パズル」も作っていました。タッチ操作が活かせるアプリを作りたいと思い、「マウスでパネルをクリックするよりは指でタッチしたほうが操作性が良さそう」ということで、有名なパズルではありますが作っていたんですね。(15パズルについては、また別の日に開発記を書くと思います。)

同じように、「ラムゼーゲーム」もマウスではなく、指で頂点をタッチして彩色するという操作ができればということで、Androidアプリを作りました。そして、COM対戦では必須の人工知能(AI)の実装を行なうというのが、15パズルとの大きな違いですね。

ラムゼーゲームのルールは単純で、手順としては、お互いに合計15本の辺を彩色していくというものです。コンピュータは赤・自分は青で塗るのですが、先に三角形(頂点どうしを結んでできる三角形)を作ってしまったほうが「負け」になります。つまり、うまく三角形を作らないように辺を選んでいく必要があるのはもちろん、勝つためには、相手に三角形を作らざるを得ない状況に追い込む戦略も立てなければいけません。

適当に辺を塗って勝つ場合ももちろんあると思います。しかし、COMに搭載した人工知能では、難易度が高く設定されるほど、何手先もの手を読んで、戦略的に色を塗る辺を選ぶを選ぶようになっています。


ここから、人工知能(AI)についてですが・・・

辺は合計15本あります。相手(COM)が先手だとすると、最初に選べる辺は15本。次に自分が選ぶ辺は14本になります。その次に、再度相手が選ぶ辺は13本。…このようにして、15本の辺を順に選んで塗っていく方法は、全部で

15! = 15×14×13×・・・×3×2×1 = 1 307 674 368 000 通りあります。

1兆を超えます。

実際は15本塗り終わるまでに決着がつく場合があるので、もっと少ないんでしょうが、COMが先の塗られ方を、塗る前に考えていたら、つまり先読みをしていれば、次にどの辺を選べばよいか、という戦略が立てられるということになります。よく、コンピュータがチェスや将棋で人間と対戦するなんていうニュースがありますが、基本的にこのような先読みを行なっています。人間の方も何手か先までは先読みをしながら戦っていくと思われるので、思考としては似てるかもしれません。

まぁ、このままでは1兆以上という、あまりにも厖大な手の数を調べなければならないので、そこまでは先読みをするのは現実的ではありません。そのため、このゲームもそんなに先の手までは読まないようになっています。

ただ、終盤になると、最後まで手を読むことが現実的にできるようになります(例えば、ラムゼーゲームの場合、10手目あれば、最大で6! = 6×5×4×3×2×1 = 720通りの手を調べるだけでOK)

本ゲームの先読みでは、COMが先読みできる範囲で一番イイ手を打つために、COMの相手(つまり、自分)も一番イイ手を打ってくる、という前提で戦略を立てています。ミニマックス法とよばれる方法です。両者とも同じレベルで先読みをし、一番いい手を打つという前提で次に打つ手を決めることにより、「理詰めで確実な手」を選ぶようになっています。なかなかうまく説明ができませんが、まぁ、ネット上に資料はたくさんありますので・・・(^^;

正確には、さらに効率的に先読みができるアルファベータ法という、ミニマックス法の改良版を実装しています。

実装はこのへんが一番難しかったですかね。先読み方法の説明はわかっても、どうコードを書いていいのかということで、かなり戸惑っていました・・・

後は難易度の調整時でテストを重ねる過程で、AIが思考し過ぎで途中で画面が止まったりとか・・・
端末では種類によってはCPUの性能に差があると思うので、自分ので動作確認が済んでも、他の端末でエラーを起こさないかは不安でもあります。(といっても「強制終了しますか」のメッセージがでるだけで、致命的なエラーではなく、終了させずに待機していれば問題はないと思うのですが・・・)

なにはともあれ、遊んでいただければ幸いです。
(難易度がHARDで、かつ自分が先手だと、かなり勝つのが難しいようになっています…)




義援金募集
FC2「東北地方太平洋沖地震」義援金募集につきまして
プロフィール

れあ

Author:れあ
Twitter(@reakoirer)
数学の問題出題(@mathtam_jp)


ニコ動のユーザーページ


メール:
reakoirer.contact+blog[]gmail.com
([]を@に変えてください。返信不確実;;)

Twitter...A

れあ < > Reload

カレンダー
最新記事
最新コメント
カウンター
月別アーカイブ
カテゴリ
検索フォーム
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。