main3
schach2.py — text/python-source, 5 KB (6035 bytes)
Dateiinhalt
# -*- coding: utf-8 -*-
from visual import *
from Figuren import *
from threading import Thread
scene.userzoom=True
scene.userzoom=True
scene.forward=(-1,-1,-1)
scene.autoscale = True
scene.range = 120
scene.center = (0,0,0)
scene.up = (0,1,0)
scene.background = color.black
scene.fov = 1
scene.fullscreen = False
scene.title = "Koordinaten"
scene.width = 610
scene.height = 700
scene.x = 0
scene.y = 0
pick=None
BauerW=[]
BauerS=[]
TurmW=[]
TurmS=[]
SpringerW=[]
SpringerS=[]
LaeuferW=[]
LaeuferS=[]
DameW=None
DameS=None
KoenigW=None
KoenigS=None
Sboxen=[]
#FeldListe
class Spielfeld(frame):
def __init__(self, pos=(0,0,0)):
self.feld=0
frame.__init__(self, pos=pos)
self.feld = []
self.groesse=10
i=0
farbe=True
while i<8:
e=0
while e<8:
if farbe:
color=(.8,.6,.5)
farbe=False
else:
color=(.6,.4,.3)
farbe=True
g = self.groesse + 0.0
self.feld.append(box( pos= (g/2 +g*e,0,g/2 + g*i), height=.1, width=g, length=g, color=color, material=materials.wood, frame=self))
e=e+1
i=i+1
if farbe:
farbe=False
else:
farbe=True
def get_pos(self, x, y):
return self.feld[x+y*8].pos + (0,.01,0)
def gfeld(self,x,y):
return self.feld[x+y*8]
class Sbox(frame):
"Thread"
def __init__(self, pos, figur):
frame.__init__(self, pos=pos)
self.f = figur
self.b = box(pos=(0,0,0), height=20, length=8, width=8, opacity=0, frame=self)
xAchse = arrow(axis=(100,0,0), shaftwidth=0.05, color=color.red)
yAchse = arrow(axis=(0,100,0), shaftwidth=0.05, color=(0,0,1))
zAchse = arrow(axis=(0,0,100), shaftwidth=0.05, color=color.green)
xAchse = label(pos=(100,0,0), text="X-Achse")
yAchse = label(pos=(0,100,0), text="Y-Achse")
zAchse = label(pos=(0,0,100), text="Z-Achse")
def spielfiguren(sfeld):
i=0
while i<8:
BauerW.append(Bauer(pos=sfeld.get_pos(i,1)))
Sboxen.append(Sbox(pos=sfeld.get_pos(i,1), figur=BauerW[i]))
i = i+1
i=0
while i<8:
BauerS.append(Bauer2(pos=sfeld.get_pos(i,6)))
Sboxen.append(Sbox(pos=sfeld.get_pos(i,6), figur=BauerS[i]))
i = i+1
#Turm
TurmW.append(Turm(pos=sfeld.get_pos(0,0)))
Sboxen.append(Sbox(pos=sfeld.get_pos(0,0), figur=TurmW[0]))
TurmW.append(Turm(pos=sfeld.get_pos(7,0)))
Sboxen.append(Sbox(pos=sfeld.get_pos(7,0), figur=TurmW[1]))
TurmS.append(Turm2(pos=sfeld.get_pos(0,7)))
Sboxen.append(Sbox(pos=sfeld.get_pos(0,7), figur=TurmS[0]))
TurmS.append(Turm2(pos=sfeld.get_pos(7,7)))
Sboxen.append(Sbox(pos=sfeld.get_pos(i,6), figur=TurmS[1]))
#Springer
SpringerW.append(Pferdchen(pos=sfeld.get_pos(2,0)))
Sboxen.append(Sbox(pos=sfeld.get_pos(2,0), figur=SpringerW[0]))
SpringerW.append(Pferdchen(pos=sfeld.get_pos(5,0)))
Sboxen.append(Sbox(pos=sfeld.get_pos(5,0), figur=SpringerW[1]))
SpringerS.append(Pferdchen2(pos=sfeld.get_pos(2,7)))
Sboxen.append(Sbox(pos=sfeld.get_pos(2,7), figur=SpringerS[0]))
SpringerS.append(Pferdchen2(pos=sfeld.get_pos(5,7)))
Sboxen.append(Sbox(pos=sfeld.get_pos(5,7), figur=SpringerS[1]))
#Läufer
LaeuferW.append(Laeufer(pos=sfeld.get_pos(1,0)))
Sboxen.append(Sbox(pos=sfeld.get_pos(1,0), figur=LaeuferW[0]))
LaeuferW.append(Laeufer(pos=sfeld.get_pos(6,0)))
Sboxen.append(Sbox(pos=sfeld.get_pos(6,0), figur=LaeuferW[1]))
LaeuferS.append(Laeufer2(pos=sfeld.get_pos(1,7)))
Sboxen.append(Sbox(pos=sfeld.get_pos(1,7), figur=LaeuferS[0]))
LaeuferS.append(Laeufer2(pos=sfeld.get_pos(6,7)))
Sboxen.append(Sbox(pos=sfeld.get_pos(6,7), figur=LaeuferS[0]))
#Dame
DameW=Dame(pos=sfeld.get_pos(4,0))
Sboxen.append(Sbox(pos=sfeld.get_pos(4,0), figur=DameW))
DameS=Dame2(pos=sfeld.get_pos(4,7))
Sboxen.append(Sbox(pos=sfeld.get_pos(4,0), figur=DameS))
#Koenig
KoenigW=Koenig(pos=sfeld.get_pos(3,0))
Sboxen.append(Sbox(pos=sfeld.get_pos(3,0), figur=KoenigW))
KoenigS=Koenig2(pos=sfeld.get_pos(3,7))
Sboxen.append(Sbox(pos=sfeld.get_pos(3,7), figur=KoenigS))
def collisionSphere(obj1,obj2):
m=mag(obj1.pos-obj2.pos)
r=obj1.radius+obj2.radius
if m<=r:
return true
else:
return false
if __name__ == "__main__":
s=Spielfeld()
spielfiguren(s)
while True:
rate(50)
if scene.mouse.events: # falls Maustaste gedrückt...
m1 = scene.mouse.getevent()
i = 0
while i<len(Sboxen): # event in m1 speichern
if m1.drag and m1.pick and m1.pick.opacity==0: # falls Mauskontakt mit Objekt
drag_pos = m1.pickpos # speichern der Kontaktkoordinaten in drag_pos
pick = m1.pick # pick gesetzt
elif m1.drop: # falls Maustaste losgelassen...
pick = None
i=i+1 # Mauskontakt vorüber
if pick: # falls Mauskontakt...
new_pos = scene.mouse.project(normal=(0,1,0), point=(0,.5,0)) # Neuposition immer in xy-Ebene..
# Kugel transparent
if new_pos != drag_pos: # falls Neuposition ungleich Mauspos...
pick.pos += new_pos - drag_pos # aktualisiert pickpos
drag_pos = new_pos # aktualisiert dragpos
m1.pick.frame.f.pos = new_pos