腐女子によるBLプログラミング3~Pythonで合意なしじゃんけんを作る~
今回の記事には非常にセンシティブな内容が含まれている可能性があるため、その部分はXXXXでマスキングまたは削除してお送りします。
お読みの方は身体・精神を問わない暴力表現・性的表現の暗示、またBLという言葉に抵抗がない方のみ、お読み進めください。
合意なしじゃんけんのお題はSさんよりいただきました!ありがとうございます。
BLプログラミング1と2はこちら→
いよいよBLプログラミングも第三弾です。Data Campもちょっとやっていたのですがフルスクラッチ(と言いつつ色々他の人のコードを参考にしつつ、制作をする行為)で1つのプログラムを作る方が楽しいのでそればかりやっております。
★今回のテーマ
DBにCSVファイルを登録、登録したDBからのデータ読み込みをPythonで行いたい
★今回の要件
・プレイヤーとコンピューターで「合意なしじゃんけん」をし、その詳細と勝敗結果を表示する。
ーー合意なしじゃんけんとは?
様々な合意のない行為、壁ドンから心中までに「番号、攻め様の台詞、点数」をデータベースに置きます。
プレイヤーの攻撃時、3つそれをランダムに選んで出力、表示されるようにします。そして各プレイヤーの点数の合計をそれぞれ出力した後、最後に勝敗を表示します。
完成した合意なしじゃんけんのイメージ図
合意なしゲームです。合意なしダイスを振り、得点が高い方が勝利します。
Playerのこうげき1回目!'「今日からここで寝ろ(強制引っ越し)」'点数は5点!
Playerのこうげき2回目!'「俺以外を見ることは許さない(目隠し)」'点数は2点!
Playerのこうげき3回目!'「今誰を見ていた?(嫉妬)」'点数は1点!
Playerの点数の合計は8点!
Computerのこうげき1回目!'「今誰を見ていた?(嫉妬)」'点数は1点!
Computerのこうげき2回目!'「俺が与える痛みを感じろ(鞭)」'点数は4点!
Computerのこうげき3回目!'「お前の帰る場所はない(XX)」'点数は8点!
Computerの点数の合計は13点!
Computerの合意なしの勝利!
★構成
今回の構成はシンプルですが、環境構築が大変すぎました。
※ライブラリというのはPythonで使える便利ツールのようなもので、インポートすることで色々な機能が利用できるようになります。
準備1 Sqlite3というDBが使える環境を用意(Pythonにライブラリがあるため)
.DBファイルとかを作ったり、元々入ってないライブラリゆえにライブラリを導入したりと色々大変でした。(もう記憶が曖昧)
準備2 CSVファイルを使うことができるライブラリをインポート
(今回はcsvとpandasというライブラリを使いました)
基本的には、事前に「番号(10個のデータなら1~10)、攻め様の台詞、点数」をそれぞれ記録したCSVをDBへ登録。
そしてここからが合意なしじゃんけん本番。
対戦するのはPlayerとComputerの2名です。
def serifu 台詞を表示する関数
def point 点数を表示する関数
def Dice 3回こうげきを繰り返し、その度に上の2つの関数を呼び出します。さらに最後に3回の攻撃で表示された点数を合計し、合計点数を出します。
randintという整数をランダムに出す関数を使ってまず、ランダムな整数を「playerの数字」として割り当てます。この時割り当てられる数の範囲は、登録されたデータの「番号」の範囲にしておきます。
そして、この「playerの数字」を使い、DBを探して、「playerの数字」が「番号(10個のデータなら1~10)、攻め様の台詞、点数」の「番号」と一致するものを探し当てます。探し当てたら「攻め様の台詞」と「点数」を表示します。
3回これを繰り返し、最後に3つの点数の合計を「プレイヤーの点数」として表示します。
次にComputerの番です。
上記の処理をComputerに対しても行います。
それが終わったら点数を合計し、どちらの勝利かを表示します!
今回はコードが今のPCにないため、ここには貼りません。
(移行したら考えるかもしれない)
★たいへんポイント
Sqllite3はSQL文というpythonとはまた別の言語を使っています。SQLについてはprogateでコース終わらせてはいたが、それをどうPythonと組み合わせるかが難しかったです。
上手くCSVを呼び出せはしたが、いまいちよく分からない部分もあった。
★抱負
次はランダムに属性を振り当てカップリングを生成する プログラムか、有料かもなので難しい気がするがwebアプリを作ってみたい。