« プログラミングのカテゴリを作りました | トップページ

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の一覧表。これをギザギザの罫線のように再構成したものが下の表。このソースコードは、要は上の表を下の表のように組み替える計算です。

|

« プログラミングのカテゴリを作りました | トップページ

コメント

コメントを書く



(ウェブ上には掲載しません)




« プログラミングのカテゴリを作りました | トップページ