てめぇの仕掛けた祭りにのってみる。
お題:「ツンデレ」
επι的解釈によれば、ツンデレは「他人の前では素直になれない」です。
そこんとこをコンストラクタとファイナライザで表現してみましたぁ
using System;
class Person { ~Person() { --World.others_; } }
class あんた { ~あんた() { World.you_ = false; } }
class アタシ {
public アタシ() {
if ( World.ふたりきり ) {
Console.WriteLine("...寂しかったんだよ");
} else if ( World.you_ ) {
Console.WriteLine("べ、べつにあんたに会いにきたんじゃないんだからねっ");
} else {
Console.WriteLine("(いないんだ、アイツ...)");
}
}
~アタシ() {
if ( World.ふたりきり ) {
Console.WriteLine("...送ってよ。どうせヒマなんでしょ?");
} else if ( World.you_ ) {
Console.WriteLine("アタシ、先に帰るね");
} else {
Console.WriteLine("(つまんないの...)");
}
World.me_ = false;
}
}
class World {
internal static int others_; // アタシとあんた以外の人数
internal static bool you_; // あんたがいる♪
internal static bool me_; // アタシがいる...
public static アタシ createアタシ() {
if ( me_ ) return null;
me_ = true;
return new アタシ();
}
public static あんた createあんた() {
if ( you_ ) return null;
you_ = true; return new あんた();
}
public static Person createOthers() {
++others_; return new Person();
}
public static bool ふたりきり
{ get { return others_ == 0 && you_ && me_; }}
public static void scene1() {
Console.WriteLine("Scene-1: ひとりきり");
{ アタシ me = createアタシ(); }
}
public static void scene2() {
Console.WriteLine("Scene-2: ふたりきり");
あんた you = createあんた();
{ アタシ me = createアタシ(); }
}
public static void scene3() {
Console.WriteLine("Scene-3: 邪魔者アリ");
あんた you = createあんた();
Person p1 = createOthers();
{ アタシ me = createアタシ(); }
}
public static void Main(String[] arg) {
if ( arg.Length == 0 ) return;
switch ( arg[0] ) {
case "1": scene1(); break;
case "2": scene2(); break;
case "3": scene3(); break;
}
}
}