実現したいこと
import tkinter
import random
img = [None] * 27
card = [0] * 26
proc = 0
tmr = 0
sel1 = 0
sel2 = 0
for i in range(26):
card[i] = 0
def draw_card():
cvs.delete("all")
for i in range(26):
if card[i] == 1:
x = (i % 7) * 120 + 60
y = int(i / 7) * 168 + 84
cvs.create_image(x, y, image=img[i])
if card[i] == 0:
x = (i % 7) * 120 + 60
y = int(i / 7) * 168 + 84
cvs.create_image(x, y, image=img[26])
def click(e):
global proc, tmr, sel1, sel2
mx = int(e.x / 120)
my = int(e.y / 168)
if 0 <= mx <= 6 and 0 <= my <= 3:
g = mx + 7 * my
if g >= 26:
return
if card[g] == 0:
if proc == 1:
card[g] = 1
sel1 = g
proc = 2
elif proc == 2:
card[g] = 1
sel2 = g
proc = 3
tmr = 0
def main():
global proc, tmr
tmr += 1
draw_card()
if proc == 0:
proc = 1
if proc == 1:
cvs.create_text(780, 580, text="1枚目捲れ")
if proc == 2:
cvs.create_text(780, 580, text="2枚目剥れ")
if proc == 3:
if img[sel1] == img[sel2]: ←ここ!!!!!
card[sel1] = 2
card[sel2] = 2
else:
card[sel1] = 0
card[sel2] = 0
proc = 1
root.after(200, main)
root = tkinter.Tk()
root.title("dd")
root.bind("<Button-1>", click)
root.resizable(False, False)
cvs = tkinter.Canvas(width=960, height=672)
cvs.pack()
img[26] = tkinter.PhotoImage(file="card/0.png")
for i in range(26):
img[i] = tkinter.PhotoImage(file="card/" + str(1 + i % 13) + ".png")
main()
root.mainloop()
今プログラミングを始めたものなのですが、神経衰弱のようなアプリを参考本を読みながらつくっているのですが2枚の画像ファイルが同じだったらcard[]の値を2にしてその2枚を描かないようにして消すというプログラムが働いてくれないです。何日も考えchatgptにも聞いているのですが、解決しませんでした、なぜ動かないのか教えて欲しいです。
ここに実現したいことを箇条書きで書いてください。
- ▲▲機能を動作するようにする
前提
pythonで作っています。
ここに質問の内容を詳しく書いてください。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
ソースコード
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー