Habe mal versucht ein Memory zu machen. Die Karten werden noch nicht gemischt - ist aber nicht das Probleme. Wollte nur wissen, ob der Ansatz soweit ok ist und wie ich das Fenster kurz (evt. time.sleep()) halten kann, damit der Nutzer die falsch aufgedeckte Karten sieht.
Code: Alles auswählen
#! /usr/bin/env python
# -*- coding: utf-8
import Tkinter as tk
class Memory(object):
spiel_feld = [[[0, 'A', tk.NORMAL], [0, 'B', tk.NORMAL ],
[0, 'C', tk.NORMAL], [0, 'D', tk.NORMAL]],
[[0, 'E', tk.NORMAL], [0, 'F', tk.NORMAL],
[0, 'G', tk.NORMAL], [0, 'H', tk.NORMAL]],
[[0, 'A', tk.NORMAL], [0, 'B', tk.NORMAL],
[0, 'C', tk.NORMAL], [0, 'D', tk.NORMAL]],
[[0, 'E', tk.NORMAL], [0, 'F', tk.NORMAL],
[0, 'G', tk.NORMAL], [0, 'H', tk.NORMAL]]]
def __init__(self):
self.vergleich = list()
self.gui()
def gui(self):
self.memory_gui=tk.Tk()
self.spiel_feld_rahmen=tk.Frame(self.memory_gui)
label=tk.Label(self.spiel_feld_rahmen, text='MEMORY', font=('Arial', 34))
label.grid(row=0)
self.spiel_feld_rahmen.grid(row=0)
button_frame=tk.Frame(self.memory_gui)
button=tk.Button(button_frame, text='START', command=self.anzeigen)
button.grid(row=0)
button_frame.grid(row=1)
self.memory_gui.title('Memory')
self.memory_gui.tk.mainloop()
def anzeigen(self):
self.spiel_feld_rahmen = tk.Frame(self.memory_gui)
for row, karten in enumerate(self.spiel_feld):
for column, karte in enumerate(karten):
if karte[0] == 0:
text = '?'
else:
text = karte[1]
button=tk.Button(self.spiel_feld_rahmen, text=text, width = 2,
state = karte[2], command=lambda karte=karte:
self.auswerten(karte))
button.grid(row=row, column=column)
self.spiel_feld_rahmen.grid(row=0)
def auswerten(self, karte):
karte[0] = 1
self.vergleich.append(karte)
if len (self.vergleich) == 2:
if self.vergleich[0][1] == self.vergleich[1][1]:
for karte in self.vergleich:
karte[2] = tk.DISABLED
self.vergleich = list()
else:
for karte in self.vergleich:
karte[0] = 0
self.vergleich = list()
self.anzeigen()
Memory()
edit: Wenn man einen Button zweimal drückt, dann ist der auch gesperrt
