腐女子によるBLプログラミング2~Pythonでオメガバースを作る~
※今回の記事にはオメガバース(BL特有の設定)、人権軽視の設定、差別を含む世界観に関する言及、発情などの性的な行動を連想される言語・内容を含みます。そういったことがOKであり、かつ現実では許されないものであるということをご認識いただける方のみ、お読みください。
こんにちは!腐女子によるBLプログラミング第二弾、今回は「オメガバースを作る」です。
1はこちら(受けオークション作成)
https://note.com/filledteapot/n/n78272dbb74b6
ネタ自体は某Rさんからいただきました。ありがとうございます!
今回のテーマは色々な関数やモジュールを呼び出したいということでした。そのため第二回から開発環境をGoogle CollaboratoryからVisual Studio Codeに変えています。プログラムの構文チェックやデバッグもしてくれるので非常に便利です。
★今回のテーマ
モジュールの呼び出しを練習する。
ここはオメガバース。アルファ、ベータ、オメガが存在する。今オメガととある人物が出会った!果たして番は成立し幸せになることができるのか?
★今回の要件
・ランダムでオメガに出会う人物の性別を設定します(アルファ、ベータ、オメガ)
・オメガは一定の確率で発情します。
―もし出会った2人がアルファとオメガだった場合、一定の確率でアルファがオメガを嚙み、運命の番になります。ただしオメガが発情している場合、アルファは必ずオメガを嚙みます。
―もし出会った2人がベータとオメガだった場合、ベータは通常ではオメガをスルーします。もしオメガが発情していた場合、ベータは必ずオメガを襲います(オメガは必ず捨てられます)
ーもしオメガの二人が出会ったら、二人はお茶を飲みます。かわいいですね。(発情していようといまいと変わりません)
・繰り返し処理
処理が終わった後に、続けますか?と聞きます。
Yが入力されればこのプログラムの処理を繰り返し、Nが入力されれば停止します。それ以外が入力された際は「半角大文字のYかNを入力してください」と表示し、もう一度「続けますか?」と聞きます。
★構造
menu.py (処理をスタート・継続・中止するメイン画面、モジュールを呼び出し、そのモジュールの繰り返し処理の判断をします)
Kami.py オメガと出会った人物に起きる出来事の判断を上記の要件に従って行います。(人物の性別と確率、またオメガの発情有無が処理に関係します)
Pome.py オメガの発情有無の判定を行います。
script.py メインのスクリプト置き場。オメガと出会った人物の性別の決定します。また発情有無の判定をPomeから受け取り、Kamiに渡します。その後Kamiの内容を表示させ、最後にConcheckで継続するかどうか判定を行います。そして継続判定の結果をmenu.pyに渡します。
★コード
このコード、なんか継続処理の部分で初期値にクリアされない値がある気がしているのですがとりあえずここまでとしたので公開します。
Pythonでオメガバースを作りたい方はもしよろしければ参考にしてください。
menu.py
from script import Maindayo
main1 = Maindayo()
main1.Hyouji()
main1.ConCheck()
Keizokukakunin = 1
keizoku = main1.keizoku
while True:
if keizoku == 'Y':
print('--Retry Yes--')
main1.Hyouji()
print('--Hyouji--')
main1.ConCheck()
keizoku = main1.keizoku
elif keizoku == 'N':
print('--STOP--')
break
else:
print('繰り返し処理')
main1.ConCheck()
keizoku = main1.keizoku
#if keizoku == 'N':
# print('処理を中止しました。画面を閉じてください。')
Kami.py
class Omegaba:
def Kami(self):
if self.seibetu == 'alpha':
# print('性別が設定されました。')
if self.Hatujyo == True:
return('アルファはオメガを嚙みました。番ができました♥♥♥これでいっしょうしあわせです♥♥♥♥♥♥')
elif KamiKakuritu <= 3:
return('アルファはオメガを嚙みました。番ができました♥♥♥これでいっしょうしあわせです♥♥♥♥♥♥')
else:
return('アルファはオメガをスルーしました。運命の番ではなかったようです。')
elif self.seibetu == 'beta':
if self.Hatujyo == True:
return('ベータはオメガを襲いました。「お前が悪いんだぞ……」オメガは捨てられました。')
else:
return('ベータはオメガをスルーしました。劣ったオメガなんぞに興味はありません。')
else:
return('オメガとオメガが出会いました。お茶を飲みました。かわいいね♥')
Pome.py
import random
HatuKaku = random.randint(1,10)
class Pome:
def Hatujyo(self):
if HatuKaku <= 10:
self.Hatujyo = True
print('オメガは発情しました。フェロモンがあふれます。')
else:
print('オメガの様子に変わりはありません。かわいいね♥')
script.py
class Maindayo:
def Hyouji(self):
import random
from Kami import Omegaba
from Pome import Pome
seibetu = ['alpha', 'beta', 'omega']
omegaba1 = Omegaba()
hatujyo1 = Pome()
hatujyo1.Hatujyo()
omegaba1.seibetu = random.choice(seibetu)
if hatujyo1.Hatujyo == True:
omegaba1.Hatujyo = True
else:
omegaba1.Hatujyo = False
print(omegaba1.Kami())
print('続けるにはYを入力してください。止めるにはNを入力します。')
def ConCheck(self):
self.keizoku = input('続けますか?:')
if self.keizoku == 'Y':
print('--Y--')
return 0
elif self.keizoku == 'N':
print('--N--')
return 1
else:
print('半角大文字のYかNを入力してください。')
return 2