素人プログラマーの日常

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

魚へんの需要

ここまで、最近作ったものを3つほど紹介しました。なんだか創作意欲が沸々とたぎってくるのを感じます。「何か作れ~」と無意識が語り掛けてくるような気がしますが、なんなんでしょうね、この感じ。ちょこちょこコードを書いてるので、簡単なアルゴリズムならあまり考えずに書けるようになったから自信につながっているんでしょうかね~。

 

ってことで、その自信が冷めやらぬ内に、少し簡単なものをいくつかサクっと作って「このくらいなら余裕で作れるぜっ」と言ってみるコーナー、はじまりはじまり~。

 

今回紹介するプロダクトはゲームというとちょっと違う気もしますが、ゲーム気分で楽しんで学習できる…何を?…まあ、あまり実用的な学習ではありませんが、個人的にはこういう蘊蓄を好む傾向はありますね。それは魚へんの漢字です。たくさんありますよね。お寿司屋さんの湯呑みにびっしり書いてあるイメージなんですけど、あれ全部読める人は少ないと思います。

f:id:dgen:20180125140835p:plain

魚へんはほんとややこしいことになっていて、1つの漢字で複数の読み方があって、それが別の種類の魚を表すものだったりするんですよね。なのでそのへんの細かいところは宇宙の果てまでぶん投げて今回はあくまでサクっと仕上げることに専念しました。それでも自分の知っている限りは一般に浸透しているであろう読みをチョイスしたつもりです。(ほとんど知らんけど)

 

いつものようにC言語でDxライブラリを使ってコードを書いていくのですが、ちょっとした問題が発生しました。一部の魚へんの漢字はマルチバイト文字に対応していないんです。マルチバイト文字を簡単に説明すると、半角英数が1バイトで表現できるところを2バイト使って全角文字を表現するものです。2バイトだと表現できる数が少ないので難しい漢字は端折られて対応してません。魚へんを調べてコピーして配列にぶち込もうと考えていましたが、それで実行するとちゃんと文字を描画してくれないんですよね。

 

設定を Unicode(使える漢字が増える)に変えるのもありですが「なんかそれは違う」と私の中の誰かが言うので、文字を画像に置き換えることにしました。なにげにこうすることでフォントの違いも回避できます。フォントも扱いが面倒なところがあって、インストールされていないフォントをプログラム内で設定すると無視されてデフォルトのフォントになってしまいます。今回使ったフォントは "HG正楷書体-PRO" でして、win8くらいから標準になってます(win10でしか使ったことないから間違ってるかも)。これをwin7で使うとデフォルトのゴシックになってしまい、漢字のカッコ良さを見せたいというこちらの思惑が台無しになってしまいます。

f:id:dgen:20180125141039p:plain

"HG正楷書体-PRO" は見た目がカッコイイ漢字にはぴったりで、最近ではこれしか使わないというくらいよく使うようになりました。ただ文字サイズが小さくなるとかすれたように弱弱しい印象になったり文字間の幅が広すぎて気になるので、文章にはあまり向いてないといった欠点もあります。文字サイズは最低でも20ピクセル以上ですかね。

 

まあ、そんなこんなで文字を画像にする作業が大変でした。労力でいうと、ほとんどが画像を編集する時間だったように感じるくらい画像の置き換え作業は面倒でした。それに比べコードのほうは冒頭で書いたようにサクっと完成です。漢字をランダムに並び替えて正解をクリックするだけですからね。何も難しいことはありません。あとは効果音をちょっと付け加えて完成です。

 

「このくらいなら余裕で作れるぜっ」

 

にしても、どうして魚へんの漢字に微妙ながら惹かれるんでしょうね~?完成後に木へんや金へんでも作ろうとしましたが、魚へんと比べると私の中で需要がないことに気付きます。ただ漢字の画像と読みを入れ替えるだけでできるんですけどね。