Code: Alles auswählen
from Tkinter import *
from thread import*
import Image
import ImageTk
import array
# 0,0: Turm T
# 0,1: Pferd P
# 0,2: Läufer L
# 0,3: Dame D
# 0,4: König K
# 0,5: Läufer
# 0,6: Pferd P
# 0,7: Turm T
# 1,0 - 1,7: Bauer B
# 6,0 - 6,7: Bauer
# 7,0: Turm
# 7,1: Pferd
# 7,2: Läufer
# 7,3: Dame
# 7,4: König
# 7,5: Läufer
# 7,6: Pferd
# 7,7: Turm
"""
ursprung = [
['T', 'P', 'L', 'D', 'K', 'L', 'P', 'T'],
['B' for x in range(8)],
['0' for x in range(8)],
['0' for x in range(8)],
['0' for x in range(8)],
['0' for x in range(8)],
['B' for x in range(8)],
['T', 'P', 'L', 'D', 'K', 'L', 'P', 'T']
]
"""
root = Tk()
img_bauer = PhotoImage(file="bauer.gif")
img_bg = PhotoImage(file="bg.gif")
class Spielfigur(object):
def __init__(self, pid, startpos, canvas, spieler):
self.pid = pid
self.pos = startpos
self.spieler = spieler
self.canvas = canvas
self.dead = False
if pid == "B":
self.image = canvas.create_image(self.pos, image=img_bauer, anchor=NW)
else:
self.image = 0
def GetPosition(self):
return self.pos
def GetImage(self):
return self.image
def SetPosition(self, new_pos):
self.pos = new_pos
self.canvas.coords(self.image, self.pos)
def AllowedMove(self, previous_pos, new_pos):
if self.pid == 'B':
if self.spieler == 'oben':
bewegung_y = new_pos[1] - previous_pos[1]
if previous_pos[0] != new_pos[0] or bewegung_y != 50:
return False
elif self.spieler == 'unten':
bewegung_y = new_pos[1] - previous_pos[1]
if previous_pos[0] != new_pos[0] or bewegung_y != -50:
return False
return True
def Kill(self):
if self.dead == False:
if self.image != 0:
self.canvas.delete(self.image)
self.dead = True
def IsDead(self):
return self.dead
class Application:
def __init__(self):
self.clicked_figur = False
self.canvas = Canvas(root, width=400, height=400)
self.canvas.bind("<ButtonPress>", self.click)
self.canvas.bind("<Motion>", self.move)
self.canvas.bind("<ButtonRelease>", self.release)
self.canvas.pack()
# bilder für die figuren laden
bg = self.canvas.create_image(0, 0, image=img_bg, anchor=NW)
self.canvas.coords(bg,0,0)
self.spielfiguren = []
spieler_weiss = [
['T', 'P', 'L', 'D', 'K', 'L', 'P', 'T'],
['B' for x in range(8)],
]
for x in range(8):
for y in range(2):
if spieler_weiss[y][x] != "0":
figur = Spielfigur(spieler_weiss[y][x], (x*50, y*50), self.canvas, 'oben')
self.spielfiguren.append(figur)
spieler_schwarz = [
['B' for x in range(8)],
['T', 'P', 'L', 'D', 'K', 'L', 'P', 'T']
]
for x in range(8):
for ty in range(2):
y = ty + 6
if spieler_schwarz[ty][x] != "0":
figur = Spielfigur(spieler_schwarz[ty][x], (x*50, y*50), self.canvas, 'unten')
self.spielfiguren.append(figur)
def KillFigureOnPosition(self, position):
for figur in range(32):
if self.spielfiguren[figur].GetPosition() == position:
print figur
self.spielfiguren[figur].Kill()
def click(self, event):
for figur in range(32):
if self.spielfiguren[figur].IsDead() == False:
pos = self.spielfiguren[figur].GetPosition()
if event.x > pos[0] and event.x < pos[0]+50 and event.y > pos[1] and event.y < pos[1]+50:
self.clicked_figur = figur
self.previous_pos = pos
self.abstand_x = event.x % 50
self.abstand_y = event.y % 50
def move(self, event):
if self.clicked_figur != False:
#print self.clicked_figur
self.spielfiguren[self.clicked_figur].SetPosition((event.x-self.abstand_x, event.y-self.abstand_y))
def release(self, event):
if self.clicked_figur != False:
pos = self.spielfiguren[self.clicked_figur].GetPosition()
pos = (pos[0]+25, pos[1]+25)
new_pos = (pos[0]- ((pos[0])%50), pos[1] - ((pos[1])%50))
print new_pos
if self.spielfiguren[self.clicked_figur].AllowedMove(self.previous_pos, new_pos) and self.previous_pos != new_pos:
self.KillFigureOnPosition(new_pos)
self.spielfiguren[self.clicked_figur].SetPosition(new_pos)
else:
self.spielfiguren[self.clicked_figur].SetPosition(self.previous_pos)
self.clicked_figur = False
app = Application()
root.mainloop()
Soweit war ich gekommen, vlt intressierts ja einen.