ソースコード投稿/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の一覧表。これをギザギザの罫線のように再構成したものが下の表。このソースコードは、要は上の表を下の表のように組み替える計算です。
| 固定リンク
この記事へのコメントは終了しました。
コメント