プログラミングは初めてで、stackoverflow コミュニティの新しいメンバーです。このコードの目的のために、私はここからのトピック、使用されるプロセスに関するチュートリアルなどを読んでいます.
私のプロジェクトは、4 人用のオンライン カード ゲーム (tichu) に関するもので、リアルタイムでプレイされるカード (合計 56 枚のカード) を数える必要があります。したがって、使用可能なカード (tkinter) を表示するウィンドウを作成します。すべてのカードのごく一部 (12x24 ピクセル) を使用して、デスクトップ (ゲームがプレイされる場所) に一致させます。プログラムは画面に表示されているすべてのカードをスキャンし、見つかった場合は GUI の暗いアイコンに置き換えます。ゲーム内にリセットボタンが表示されると、GUIがリセットされます(pyautogui)。ここでの問題は、スキャンとそれに伴う GUI の更新が非常に遅く、多くのカードを見逃すことです (次のプレイヤーの移動の原因)。56 枚のカードすべてをリアルタイムでマルチスキャンするプログラムが必要です。出来ますか?opencvは解決策ですか?私は自分のコードにそれを実装する手がかりがありません:/
プログラムが実行を開始し、カードが表示されるのを待ちます。まったく同じサイズと解像度のカードのみを認識します。「reset.png」画像を読み取ると、プログラムが停止します。
以下に、テストするコードとスクリーンショットを示します。
from Tkinter import *
from PIL import Image, ImageTk
import pyautogui
root = Tk()
root.title("Available Cards Playing")
for i in range(4):
for j in range(14):
tableCard = 'c%d%d' % (i, j) # building GUI table
photo = PhotoImage(file='card_table/'+tableCard+'.gif')
l = Label(image=photo)
l.image=photo
l.grid(row=i, column=j, sticky=NSEW)
root.attributes("-topmost", True) # window always on top
root.attributes("-toolwindow", 1) # window no minimize
loop = 0
while loop < 1: # program is running infinitelly till we close the window
resetTable = pyautogui.locateCenterOnScreen('cards/reset.png')
if resetTable is None:
for i in range(4):
for j in range(14):
sCard = 's%d%d' % (i, j) # 56 cards one-by-one are being scanned
checkCard = pyautogui.locateCenterOnScreen('cards/'+sCard+'.png')
if type(checkCard) == tuple: # checking if card was founded, then disable it on GUI
shadow = PhotoImage(file='card_table/dc%d%d.gif' % (i, j))
l = Label(image=shadow)
l.image=shadow
l.grid(row=i, column=j, sticky=NSEW)
root.update()
elif type(resetTable) == tuple: # if reset button is scanned, GUI resets
for i in range(4):
for j in range(14):
#
tableCard = 'c%d%d' % (i, j)
photo = PhotoImage(file='card_table/' + tableCard + '.gif')
l = Label(image=photo)
l.image = photo
l.grid(row=i, column=j, sticky=NSEW)
root.update()
root.mainloop()
これは、機能をテストするために使用できるGUI インターフェイスです。
これは、.py とすべての画像 (173kb) zipを含むプロジェクトの一時的なリンクで、その機能を試すことができます。
よろしくお願いしますジオ!