第七話 キーワードをファイルから読み込めるようにしてみる ~生まれ変わったら剣豪の中心でお兄ちゃん冷たい
フレ登録、ブクマ、ポイント、ご質問などお気軽にどうぞ。
なおコードの左に全角スペースが2個入っている所が、実行時にエラーになる場合は、Tabに変更して実行してください。
2022.02.06 コード中のtabがそのままになっていたので、全角空白2つに変更しておきました。すみません。
みなさんこんにちは。なろう系タイトルジェネレータ開発の第七話です。
第六話では、大量のキーワードを登録して、そこそこ自由奔放なタイトルを出力できるようにまで、してみました。ただ、ソースコードをいじらないと、キーワードが登録でないので、使い勝手がすごく悪いし、今後の機能拡張も、ものすごく大変になりそうという気がしています。
そこで今回は、キーワードをテキストファイルに保存しておいて、Pythonのコードでそれを読み込み、名前の自動生成に使えるようにしてみることにしました。
まず、そのコードがこちらになります。
(コードその1 ここから)
# -*- coding: utf-8 -*-
import tkinter
import random
use_encode='shift-jis' #shift-jis or utf-8
with open('word_list01.txt',mode="rt",encoding=use_encode) as f:
read_data= list(f)
list_word=[] #配列の宣言
for i in read_data:
list_word.append(i.replace('\n',''))
n_word=len(list_word)
#ウインドウ設定
tk=tkinter.Tk()
tk.title(u"なろう系タイトルジェネレータ")
tk.minsize(480,200)
#ウインドウ表示
win=tkinter.Canvas(bg="black",width=480,height=200)
win.place(x=0,y=0)
btn_quit = tkinter.Button(tk, text='終了')
btn_quit.place(x=130, y=80)
btn_create = tkinter.Button(tk, text='自動作成')
btn_create.place(x=50, y=80)
txt_title=tkinter.Label(text=u"ここにランダムで作成したタイトルが表示されます。")
txt_title.place(x=0,y=0)
def display_title():
title_str = ""
for i in range(0, random.randint(3,9)):
title_str=title_str+list_word[random.randint(1,n_word)-1]
txt_title["text"]=title_str
print(title_str)
btn_create["command"]=display_title
def destroy_tk():
tk.destroy()
btn_quit["command"]=destroy_tk
tk.mainloop()
(コードその1 ここまで)
比較的上の方にある、「with open('word_list01.txt'」、という所で、読み込むファイルの名前を設定しています。ですので、メモ帳などでword_list01.txtを、実行フォルダに自分で作っておくと、そのファイルがキーワードとして読み込まれ、タイトルの自動生成に使われることになります。
例えば、下の画像のように、1行ごとに、あ、い、う、などの文字を書いたファイルを読み込ませると……。
下の画像のように、謎の言葉を自動生成させることもできます(笑)。
そして最後に、前回はコード内に埋め込まれていたキーワードのリストを、ファイルに自動出力するためのコードを掲載しておきますね。下のコードをそのまま実行すれば、「list_word」という配列変数に登録されたキーワードが、「word_list01.txt」というファイルに、自動で出力されます。これを読み込ませて、自動生成させると、前回のコードと同じ結果が得られます。
※既存のword_list01.txtは上書きされてしまいますので、必要ならword_list01.txtのコピーをとってから、実行してください。
(コードその2 ここから)
# -*- coding: utf-8 -*-
#listをファイル出力する
list_word=[
"ですし","じゃない?","ねえ、","いいですか?","したかった","守って","どうでしょう?","負けない",
"ようこそ","でござる","ないですか?","あげてください","お楽しみください","だからね!","です","してる?"
"頂戴","ちょうだい","いいと思うよ?","した件","怒らないでよ","美味しいです","大嫌い","しないで","教えてね",
"のせて","つまらない","だいじょうぶ","伝えたい"
,
"天国","地獄","エンジェル"
,
"今夜","抱きしめて","映画のような","戻れない","もう一度","伝えたい","止めて","忘れないで",
"寄りそう","大胆に","心を","強く","あふれる","目隠し","そっと","破って","シャワー","都会",
"浴びて","はみ出した","夢のように","小さく","震えて","ヒール","ファッション雑誌","恋の","輝いて","下着"
,
"バニーちゃん","アンノ","ミコン","ニュートン","シュレディンガー","アインシュタイン","シェリー","ジャック",
"ストーン","アックス","トビー","トム","シュタインズ・"
,
"出会い","別れ","始まり","終り","始まる","日"
,
"もし","だったら","オンライン","RPG","ダンジョン","生まれ変わったら","ときどき","いろいろと","っ子","日々",
"人生","早見表","シチュエーション","結果","した場合","するとこうなる","ファンタジー","物語","大きくなったら",
"理由","妄想","と","の家","になります","祝福を","でした","すぎ","にして","なれど","なんていらない",
"していく","スタイル","もしもどこかで"
,
"ゲーム","プレイ","人生ゲーム","レース","大会"
,
"僕の","僕が","私の","私が","あなたの","あなたが","僕","私","あなた","あいつ"
,
"かわいい","痛い","終らない","のんびり"
"強い","甘い","七つの","知らない"
,
"記す","あがなう","問われる","本気出す","焼かれる","焼かれた","叫ぶ","叫べ","叫んだ",
"された","した","壊された","奪われた","とらわれた",
"走る","死んだ","連なる","したい","行く","えがいた","届く","届け","包みこめ","抱きしめる"
,
"瓶詰め","脳内","ランダム","晒す","一切ナシ","大人の","死亡フラグ","砲","機械",
"露骨な","漬け","の刃","みたいな","感じの","的な","燃え尽きた","手違い","誰かに",
"誰かの","例の","の上で","の下で","の中心で","プレ","の妹","オーバー","のいない",
"ブルーな","お","み","トレス","トラン","絞り","トップ","ガン","突然に","瞬間","な"
,
"ホラー","奇怪","不死者","残酷","残虐","怪談","怪","異形","オカルト","アングラ",
"カルト","地下","都市伝説","石仏","儀式","埋葬","怪奇","殺戮","殺害","殺人",
"霊","の書","チャネリング","チャネラー","神隠し","神隠れ"
,
"ハザード","パンデミック","汚染","流出","漏洩","浸食","侵食"
,
"セブン","ビート","ユーロ","レイジ"
,
"コーラ","サイダー","ラムネ","すかっと","レモン","サワー","マスカット"
,
"祭り","越え","剣豪"
,
"風見鶏","八方"
,
"デスルーラ"
,
"コンピュータ","スイッチ","マシン","ハード"
,
"電脳世界","電脳","シミュレーション","人工","AI","人工知能","バーチャル",
"ニューロ","ニューロン","ニューラル","プログラム","ソフト","テスト","チューリング",
"アルゴリズム","領域"
,
"ブレイン","ジャック","ハック","チート","バグ","ウィルス","アタック","罠",
"裏切り","反逆","革命","仮面","ブレイク","アンチ","アン","ジェイル","チェーン","ブロック"
,
"ノワール","暗殺者","死神","殺戮","殺される","監禁","調教"
,
"ハンドル","アクセル","ブレーキ","ドライブ","モーター","トルク",
"ニュートラル","フルアクセル","フルブレーキ","ワイパー","ハザードランプ",
"バックミラー","サイドミラー"
,
"時間","電子","量子","アニーリング","時計の針","未来の","天体"
,
"白い","白の","黒い","黒の","赤い","赤の","青い","青の","緑の","蒼い"
,
"本当の","後悔","紡ぐ","お手伝い","要素","適正度","神様","結晶",
"ラジオ","図書","ホワイト","必死","入門","似合わない","道のり","いつまでも","祈り"
,
"スピリチュアル","瞑想","霊界","呪いの","サイン","天使","悪魔","言霊","霊感",
"幻視","超能力","サイコパス","霊の","亡霊","サブリミナル","第六巻","パワー"
,
"メビウス","ウロボロス","ラプラス"
,
"スマイル","切り開け","走れ","笑顔","マイフレンド"
"ほのぼの","ハッピーエンド","うたた寝","夢みる","ぎゅっと","抱きしめ","小さな","注意報",
"おもちゃの","わんこ","優しい","もえる",
"大人になったら","ときめき","キュンと","君のハート","メモリアル","幸せに","ハートの",
"陽射し","ほんわか","カタチ","初めての","お兄ちゃん","オトナ","妹系","恥じらい","こと","夢"
,
"苦手な","腹黒","ニート","へっぽこ"
,
"エログロ","黒歴史","~注意","ツンデレ","絶対に","草はえる","ダイナマイト","特殊",
"過激","闇","奪取","神","死守","権化","完全","破壊","自慢の","非常識",
"切れ味","リアル","暗黒","ギガパスカル","早すぎた","神速","変貌","超絶",
"完全粉砕","ゼロ","オーバー","満載","大","超","なんでも","レイン","バトラー",
"激しい","激しく","限界の","フルパワー"
,
"響く","奏でる","歌う"
,
"キラキラ","素敵","素敵な","散りばめ","乱舞","魅力","魅惑","光る","ドキドキ",
"輝く","トロン","眩しい","花火","スター","ラッキー","ジュエルな","星空","天使の",
"ヴェール","ゆらめく","ドレスを","輝き","喜びの","水着"
,
"錆びた"
,
"恋愛","大好きだから","愛していると","恋した","一緒に","君に","無関心","夢中","結婚",
"婚活","好き","ゆれる","愛しい","一目ぼれ"
,
"欲","もらえる","ほしい"
,
"悲哀","切ない","人形","少女","片思い","崩壊","メモリー","存亡","嫉妬","眩暈",
"モノクローム","セピア","悲鳴","暗闇","思い出","夕暮れ","琥珀色の","涙"
,
"謎","隠された","忘れた頃に"
,
"身体","腹筋","股関節","瞳"
,
"味わう","おやつ","3分間で","ゆっくり","3時の","味わい"
,
"お色気","彼女","あふれ出す","満開","咲く","咲き誇る","メイド",
"染まる","咲き乱れる","生","いけない","お注射","あの娘と","乱れ咲く",
"パラダイス","セクシー","百合"
,
"生産","工場","量産型","量産機","執筆","裁縫","栽培","養殖",
"培養","小説","タイトル","ダイアモンド","クリスタル","宝石","翡翠"
,
"犬","ハムスター","猫","クマムシ","魔法犬","魔法猫","カタツムリ","プランクトン",
"かもめ","白鳥","虎","狼","ライオン","カラス","ハゲタカ","鷲","鷹","熱帯魚","うさぎ"
,
"ハーレム","薄い本","セクハラ","甘い","ちゅっちゅ","性的に"
,
"日常","生活","親子","兄弟","兄妹","トイレ","家","保険金","アルバイト",
"毎日","ライフ","日々","隣の","町外れの","あさっての","明日の","昨日の",
"今日の","満員電車"
,
"冒険","戦闘力","勇者","バトル","仲間","リベンジ"
,
"ワンパン","神拳"
,
"朝の","夜の","昼の","夜明けの","太陽の","雨の","曇天の",
"雪の","嵐の","霧の","春の","夏の","真夏の","秋の","冬の","真冬の"
"稲妻の","落雷の","時の","時空の","サマー","ウインター","オータム","スプリング",
"暁の","夕暮れの","薄暮の","オーロラ"
,
"風の","水の","土の","地の","火の","木の","天の","冥王の","海王の",
"鋼の","鉛の","弾丸の","空の","大地の","紅蓮の","妖艶の","光の","闇の",
"白銀の","灼熱の","忘我の","太古の"
,
"旅","航海記","世界","航海","船上","海","大陸","谷","山","城",
"町","村","森の","湖の","海底","火山","洞窟","沼","林","草原",
"ゲート","レイク","ランド","キャッスル","フォレスト","無人島","神殿","チケット"
,
"ツンドラ","サファリ","ステップ","ジャングル"
,
"畑","ブルーベリー"
,
"街","街角","路地","空地","オフィス街","摩天楼","水族館","動物園",
"公園","図書館","タウン","タワー","塔","門","ゲート"
,
"奇書","絵画","音楽","曲","写本","死海写本","アルバム","コーダ",
"コード","トランス","レイヴ","イズム","マーチ","協奏曲","狂想曲","葬送曲",
"アート","ミュージック","サウンド","ブック","ノート","メモ","記録","の書","の本",
"ピカソ","ルノワール","ラッセン"
,
"王家","庭師","王族","消防士","王子","王女様","家庭教師","ガーディアン",
"ハッカー","ホワイトハッカー","裁縫師","盗賊","ハンター","キング","クイーン",
"無職","農民","賢者","女王","戦士","ウォーリア","パイロット","ミュージシャン"
,
"王家の","庭師の","王族の","消防の","王子の","王女の","家庭教師の",
"ガーディアンズ・","ハッカーズ・","ホワイトハッカーズ・","裁縫師の","盗賊の","ハンターズ・",
"キングス・","クイーンズ・","無職の","農民の","賢者の","女王の","戦士の","ウォリアーズ"
,
"盾","拳","剣","ナイフ","アーム","ソード","指輪","リング"
,
"エルフ","蛮族","ドワーフ","ゴーレム","精霊","オーク","ゴブリン","サキュバス","族","レイス"
,
"魔族","ラスボス","魔王","不死者","幽霊","モンスター"
,
"異世界","能力","マスター","守護者","仮想世界","テクノロジー","ワールド","人々"
,
"魔法","変身","召喚","転生","魔法師","僧侶","魔法使い","復活","蘇生",
"マジック","サウンド魔法"
,
"倒せない","イケメン","妹","ヒロイン","ヒーロー","ペット","美少女",
"旦那","嫁","女子高生","チキン","最近流行の","娘","闘う","特徴","最強",
"最強の","空前絶後の","機械","少女","覇者","氷雪の","放浪の","流浪の",
"サバイバル","平凡な","未開の","社畜","侵略の","浸食の","暴虐の","不死の",
"サイレント","懺悔の","後悔の","神速の","大地の"
,
"ミッション","懸賞金","報酬","クエスト"
,
"伝説","聖杯","神話","戦争","王","国","記","戦記","レジェンド","ストーリー",
"奇譚","冒険譚","手記"
,
"国際","国家","ドキュメント","支配","領地","領土","王立","ユートピア","デストピア"
,
"墜落","事故","死亡","アクシデント"
,
"症候群","病","こじらせた","病","薬","診断","お薬","ワクチン"
,
"銀河の","惑星の","流星の","火星の","月の","木星の","土星の",
"冥王星の","天王星の","ジュピター","マルス","プルート","宇宙","流れ星","金星の",
"ビーナス","ムーン"
,
"ゲーム","スキル","チート","リセット","ボタン","8bitの","8bit","オートラン",
"コマンド","ジャンプ","ダッシュ","便利ボタン","ポーズ","持ち上げ","地図"
"フラグ","プレイ時間","キャラの声","ボス専用","ライフゲージ","キャラクターメイキング",
"性格","性別","名前","スカウト","エフェクト","ポーズボタン","経験値",
"最大レベル","熟練度","上限値","職業","スキル","パネル","転職","転生",
"モンスター","レベル","武器","装飾品","初期装備","素手","防具"
,
"熱い","暑い","冷たい","寒い","苦しい","悲しい","楽しい","気持ちいい"
]
with open('word_list01.txt','w') as f:
for d in list_word:
f.write("%s\n" %d)
(コードその2 ここまで)
さて、ちゃんとword_list01.txtはできたでしょうか。できたら、「コードその1」で読み込んでみて、自動生成できるか試してみてください。
今回はここまでです。次回は「より自然なタイトルを作れるように改善する」、をお送りする予定です。一応案はあるので、順調にいけばあまり苦労せずに完成する予定ですけど、順調でなかった場合、更新までに少し時間がかかるかもしれません(汗。
では次回またお会いしましょう。