カテゴリー「プログラミング」の2件の記事

2017年4月 1日 (土)

ソースコード投稿/Excelデータ埋め込みテスト

テスト投稿です。4/1記事追加。あっ、あれも、これもと思ってたらあっという間に長くなってしまった。

:;;;:+*+:;;;:+*+:;;;:+*+:;;;:+*+:;;;:+*+

「十三の月の暦」のKINから銀河の署名を得るのは簡単にできます。色はKINを4で割った余り、音はKINを13で割った余り、紋章はKINを20で割った余り。

// getKinWithDate関数内でKINを返しているものとする
int kin = getKinWithDate(2017, 4, 1);  // 1~260

// 内部処理的には0開始にする
kin--;  // 0~259
int color = kin % 4; // 0~3
int tone = kin % 13; // 0~12
int seal = kin % 20; // 0~19

// 対外的には1開始に変換
kin++;  // 1~260
color++;  // 1~4
tone++;  // 1~13
seal++;  // 1~20

日付からKINを出すのは難しいけど、公式があるのでコピペすればいいだけだし、そこから色、音、紋章を組み合わせた「銀河の署名」を出すのは上のように実に簡単。

だけど銀河の署名からKINを得るのはちょっと考えないといけなかったのでメモしておく。

配列で表を作れば別に簡単なんだけど、それではなんか悔しいので、計算で出してみた。もっといい方法あるのかもしれないけど、とりあえず思いついた方法がこれ。

// 銀河の音と太陽の紋章からKINを得るテスト
int getKinWithToneAndSeal(int tone, int seal)
{
    if (tone < 1 || tone > 13)
        return 0;
    if (seal < 1 || seal > 20)
        return 0;
    
    int mon = seal;
    int oto = tone;
    int col = 0;
    int lin = 0;
    int kin = seal;
    
    if (mon > 13)
        mon -= 13;  // seal14~20 は mon1~7 になる
    if (oto < mon)
        oto += 13;
    oto -= mon;     // otoは 0~12
    
    lin = oto / 7;  // 行は 0~1
    col = oto % 7;  // 列は 0~6
    kin += (col * 2 + lin) * 20;
    
    return kin;
}

さらに、getKinWithToneAndSeal関数を呼び出す際、引数をこのようにenumで指定しておくと幸せになれますね! ⭐️ COSMIC STAR! ⭐️

enum Tones {
    TONES_ERR,
    MAGNETIC, LUNAR, ELECTRIC, SELF_EXISTING, 
    OVERTONE, RHYTHMIC, RESONANT, GALACTIC, 
    SOLAR, SPECTRAL, PLANETARY, CRYSTAL, COSMIC
};

enum Seals {
    SEALS_ERR,
    DRAGON, WIND, NIGHT, SEED, SERPENT, 
    WORLD_BRIDGER, HAND, STAR, MOON, DOG, 
    MONKEY,HUMAN, SKYWALKER, WIZARD, EAGLE,
    WARRIOR, EARTH, MIRROR, STORM, SUN
};

int kin = getKinWithToneAndSeal(COSMIC, STAR);

本当はObjective-Cで書いてるんだけど、汎用性を考えてC言語に書き換えてます。ちなみにObjective-Cの場合は関数じゃなくてメソッドだけど、引数を複数取るメソッド名は

+(NSInteger)getKinWithTone: (NSInteger)tone 
    AndSeal: (NSInteger)seal;

のようにラベルで分割しています。これがなかなかいいなぁと感心してます。

ついでにOneDriveのExcelデータの埋め込みテスト。上は普通のKINの一覧表。これをギザギザの罫線のように再構成したものが下の表。このソースコードは、要は上の表を下の表のように組み替える計算です。

| | コメント (0)

2017年3月29日 (水)

プログラミングのカテゴリを作りました

2015年秋に下書きを書いたまま忘れてた記事発見。もう仕事にほとんどの時間を奪われて、ちっともブログ書けません。電波浴がそもそも全然できない!ほとんどの文章自分で書いてるようで電波に書かされてるからな。電波がなきゃ記事書けん! No Dempa, No Blog!

というわけでプログラミングのカテゴリはやっぱり作ろうと思うのでUPしときます。プログラミングはなけなしの空いた時間を費やして着々と勉強してます。今はすっかりマカーですよマカー。Win32APIは重いコンダラな卒論でしたけどやっと卒業して、今はObjective-Cやってます。AppleScriptも少々。Swiftはまだ先です。次の課題はCocoa!

ではでは。

◆◇◆ ◇◆◇ ◆◇◆

最近、Windowsのプログラミング(Win32API)に凝っていて、以前JavaScriptで書いたプログラムをWindowsに移植しました。こちらでは十三の月の暦/KIN/銀河の署名判定と、ダイモン判定を一体化し、さらに検索機能等をつけて、より高機能になりました。

はっきりいって、Win32APIは難しい!取っつきにくい!でも一旦覚えてしまえばJavaScriptよりずっと面白くてハマっています。そりゃあ、OSで直接動かせるからね。ブラウザでしか動かないJavaScriptよりずっと多くのことができる…はず。

C言語オンリーでやってるので余計に難しい。本当はC++ぐらい覚えからやったほうがいいと思うんだけどね。MFCも覚えればもっと世界が広がるかも。でも今のところは頑固にC言語のみでw

最初はエクセルだけでやってたの。それがJavaScriptになって、C言語でコンソールアプリを作って、さらにWin32に移植することも実現した!なんか達成感!いずれはiPhoneのアプリも作りたいと思います。その前にMac買って、Swiftも覚えないと~~~…いつになるやらw

いずれちゃんとしたアプリになってきたなと思えるぐらいになってきたら、当サイトから配布することも考えています。まあ、今のところは自分が使うためのツールですね。

あ、そうそう、もうひとつ、五十鈴というプログラムも作りました(こっち先に作った)。こちらは五十音コトタマから色を解析するアプリです。なんの役に立つのかはわかりませんが、まあ、いろんな色で結果が出るので見ていて楽しいかなとw

(→あと、図形の座標を取得するための簡単な作画ツールも作った!意外とこれが一番ハードコアだった)

とりあえず、スクショ。(→まだ撮ってません(;;;´Д`))

アプリに使う花やダイモンの画像はまだ全然作ってません。銀河の署名の図形は関数で直接描いてます。これがまたプログラミングしてる!って感じでおもしろい。さすがに絵のようなものはわたしのプログラミング技術では描けないからね、Painter様にお願いします。Illustrator様かCorelDRAW様、どちらかの援軍もいずれは導入したい所存。(→CorelDRAWはMac版がないことがわかり、Illustrator一択に。やっぱり天下のAdobe様ですよ)

図形の中でお気に入りはpie関数だよパイパイ!pie関数で遊んでいたのが五十鈴アプリの始まりだったの。サインコサインで座標を出すまではよかったけ ど、その座標と実際にクライアント領域に作画するための座標が違うってことがわかるまでは悩んだなぁ。そのあたりについてとかも記事に起こしてみようかな。

今一番ハマってることなので、今後、プログラミング関係のカテゴリも作ろうかなと思ってます。メモというか覚え書きというかね。

Twitterも最近はプログラミング関係のつぶやきばかりになってます。でもTwitterでは短くてソース載せたりとかできないからね。こっちに書きます。

| | コメント (0)