※この記事はネタ記事です
深夜のDiscordで盛り上がったネタが、地味にクラスの概念を学ぶのに役立ったので、ここに残しておきます。
ちなみに私は夢女ではありません。夢女は私の友人です。
目次
とりあえず書いてみる
Step1.AくんとBくんに告白して返事をもらう
class Akun:
def express_love(self):
print("好き")
class Bkun:
def express_love(self):
print("あー、はいはい")
class Girl:
def __init__(self, boyfriend):
self.boyfriend = boyfriend
def beg_love(self, times):
for in range(times):
self.boyfriend.express_love()
girl = Girl(Akun())
girl.beg_love(10)
girl = Girl(Bkun())
girl.beg_love(10)
オブジェクトA君とB君と少女を作成、少女が男性2名に10回告白。(重いのか軽いのか)
オブジェクト少女を定義するときに対象の男性も指定し、そのあとに10回告白する流れです。
Step2.好感度を付ける
class Akun:
def express_love(self):
self.love_level = 10
if self.love_level == 10:
print("好きだぜ")
elif 5 <= self.love_level <= 9:
print("ちょっとはな")
self.love_level += 1
elif 2 <= self.love_level <= 4:
print("何言ってんだこいつ")
self.love_level += 1
else:
print("はぁ?")
self.love_level += 1
class Bkun:
def express_love(self):
self.love_level = 10
if self.love_level == 10:
print("あーはいはい")
elif 5 <= self.love_level <= 9:
print("そうだね、よかったね")
self.love_level += 1
elif 2 <= self.love_level <= 4:
print("めんどくせぇ")
self.love_level += 1
else:
print("話しかけんな")
self.love_level += 1
class Girl:
def __init__(self, boyfriend):
self.boyfriend = boyfriend
def beg_love(self, times):
for _ in range(times):
self.boyfriend.express_love()
girl = Girl(Akun())
girl.beg_love(10)
girl = Girl(Bkun())
girl.beg_love(10)
AくんとBくんのexpress_love関数に分岐で好感度(love_level)を付けました。
ちなみにこれ、全部好感度がプラスされる実装なので10以下の好感度は見ることはできない罠(笑)
友人曰く「単純接触効果」らしいのですが、リアルでこんなことしたら嫌われるから注意しましょう。
Step3.継承(オーバーライド)を使う
class BoyFriend:
def __init__(self):
self.love_level = 0
def express_love(self):
raise NotImplementedError
class Girl:
def __init__(self, boyfriend):
self.boyfriend = boyfriend
def beg_love(self, times):
for _ in range(times):
self.boyfriend.express_love()
class Akun(BoyFriend):
def __init__(self):
self.love_level = 10
def express_love(self):
if self.love_level == 10:
print("好きだぜ")
elif 5 <= self.love_level <= 9:
print("ちょっとはな")
self.love_level += 1
elif 2 <= self.love_level <= 4:
print("何言ってんだこいつ")
self.love_level += 1
else:
print("はぁ?")
self.love_level += 1
class Bkun(BoyFriend):
def __init__(self):
self.love_level = 1
def express_love(self):
if self.love_level == 10:
print("あーはいはい")
elif 5 <= self.love_level <= 9:
print("そうだね、よかったね")
self.love_level += 1
elif 2 <= self.love_level <= 4:
print("めんどくせぇ")
self.love_level += 1
else:
print("話しかけんな")
self.love_level += 1
girl = Girl(Akun())
girl.beg_love(10)
girl = Girl(Bkun())
girl.beg_love(10)
クラス「BoyFriend」を作り、好感度の概念とエラー処理を施します。
BoyFriendの時点では好感度(love_level)0で作成(リセット)ですが、AくんBくんを作成するときに好感度と「express_love」関数を上書き処理をしています。
Aくんは10のままですが、Bくんは1からだんだん好感度が上がってセリフが変わる仕様です。
牧場物語とかギャルゲーでよくあるやつですね。ツンデレですか?
最後に
……ふぅ。
なんでこんなプログラムを書いたのか。私含めてみんなわからない。
正直「ブログに書く」って言ったこと、若干後悔してます。
まあ、勉強になったからええか……。