#1【Python】Tkinterでクソゲーを作ってみる(1)
《目次》
《内容》
初投稿です.見づらい点あるとは思いますがご了承ください.
また,プログラミングも勉強中の身であります.
今回はPythonのGUI作成ツールである「Tkinter」使用し,ゲーム的なものを作っていきたいと思います.
機能は少しずつ追加していきたいです.
↓読み取るCSVファイルの内容↓
1,1,1,1,1,1,1,1,1,1
1,0,0,2,0,0,0,0,0,1
1,1,0,1,0,1,1,1,0,1
1,2,0,1,0,1,0,0,0,1
1,0,1,1,0,0,0,0,1,1
1,0,0,0,0,0,1,0,1,1
1,0,1,1,0,0,1,0,1,1
1,2,1,0,0,1,1,1,1,1
1,0,0,0,0,0,0,0,0,1
1,1,1,1,1,1,1,1,1,1
《プログラム》
import tkinter as tk import time as tm import pandas as pd df = pd.read_csv("meiro.csv",header=None).values.tolist() xl=8 yl=8 rt1 =tk.Tk() rt1.geometry("190x210") rt1.title("クソゲー") rt1.resizable(0,0) def forward(event): #Wキーが押されると前へ global xl xl-=1 lbl1.grid(row=xl,column=yl) def back(event): #Xキーが押されると後へ global xl xl+=1 lbl1.grid(row=xl,column=yl) def right(event): #Dキーが押されると右へ global yl yl+=1 lbl1.grid(row=xl,column=yl) def left(event): #Aキーが押されると左へ global yl yl-=1 lbl1.grid(row=xl,column=yl) def gun(event): #Sキーが押されると銃弾的なものを発射 lbl2 = tk.Label(rt1,text="●") global yl global xl yb = yl xb = xl for i in range(5): tm.sleep(0.05) xb -=1 lbl2.grid(row=xb,column=yb) lbl2.update() lbl2.grid_forget() n = len(df) for i in range(n): for j in range(n): if df[i][j] == 1: #CSV1なら■ lbl = tk.Label(rt1,text="■") lbl.grid(row = i,column = j) if df[i][j] == 0: #CSV0なら空白 lbl = tk.Label(rt1,text=" ") lbl.grid(row = i,column = j) if df[i][j] == 2: #CSV2なら★ lbl = tk.Label(rt1,text="★") lbl.grid(row = i,column = j) lbl1 = tk.Label(rt1,text="☻") #動かすキャラクター lbl1.grid(row=xl,column=yl) rt1.bind("<Key-w>",forward) rt1.bind("<Key-x>",back) rt1.bind("<Key-d>",right) rt1.bind("<Key-a>",left) rt1.bind("<Key-s>",gun) rt1.mainloop()
《プチ解説》
このように記載することで,csvファイルを自動で配列に格納してくれる.
header=Noneを入れないと,最初の行を読み込みません.
- root.bind("
",function)
このように記載することで,キーバインドが可能となる.
- root.resizable(0,0)
このように記載することでウィンドウサイズを固定できる.
《今後の課題》
- 「■」は壁なので進めないようにする.
- 「★」にぶつかったら,何かしらの処理が発生するようにする.
- 最終的にはRPGのようなものを作る予定です.
実行画面は以下のようになります.
まだまだですね~.
今回は以上になります.
詳細に解説するほど知識はないので,あまりしません.
今後の成長具合を楽しみにしていただければ幸いです.