素人プログラマーの日常

効率の良いコード、美しいコードなんて書けません。

真円プロジェクト

今回のタイトル名は「真円プロジェクト」に決定しました。

 

f:id:dgen:20150806142944p:plain


タイトル名に限らずキャラクターの名前とか魔法の名前とか、名前を付けるときって結構悩みます。「名は体を表す」とも言いますからね。それっぽい名前が浮かばないと、どこかムズ痒い気持ちになります。私は直感的に命名することがほとんどで、候補をいくつも並べて決めるなんてことはまずしません。今回のタイトル名も第2候補さえ考えずに浮かんだものを直感的に採用しました。理想としては、このソフトがどんどん広まって絵描きさんの必須アイテムになるイメージがあったので、それも含めてプロジェクトという言葉がしっくりきたわけです。まあ現実的にはそれほど広まるとは思えませんが(汗

プログラミングのほうは、前回書いたようにサラっとあっさりしています。ただ円を描いてその判定をするだけですからね。なのでビジュアル的にもシンプルに落ち着いたグレーで統一するようにしました。そこで気付いたのは、シンプルにすると逆にオシャレな感じになる!(今更!?今更気付いたの!?)今回はゲームとは呼べないものなので、より実用的にと考えたら、円を描くことに集中出来るように余計なエフェクトを省くことです。その結果シンプルになっただけの話ですが、個人的にはなかなか良い感じです。

アルゴリズムで困ったのは、「1周」の判定です。描き出しの地点(任意の点)からぐるっと回って「はい、ここで1周」とするにはどう判定すべきか迷いました。最終的に円を4分割して、その4つのエリアを全部通った後で最初の地点を越えたときを、中心点からの角度で判定することにしました。角度(ラジアン)は -3.14~3.14 の範囲でループするので、単純に最初の地点と現在の地点を比較出来ないんですよね。4分割することで -3.14 から 3.14 への遷移(逆も)が判定しやすくなります。右回りと左回りも考慮すると、なんとも解かりづらいコード(掲載は次回?)となりましたが、きっともっと簡単なアルゴリズムがあるはず・・・。

こんな感じでメインの円を描くところは出来上がりました。後は円の判定をして点数を出して…などなど細部をととのえて完成です。