Links und Funktionen
Sprachumschaltung

Navigationspfad


Inhaltsbereich

Spielfeld.py

Python Source icon Spielfeld.py — Python Source, 7 KB (7917 bytes)

Dateiinhalt

from visual import *
scene.range = 15 # fixed size, no autoscaling
'''scene.stereo="redcyan"'''
class spielfeld():
    def __init__(self):
        feld=box(pos=(0,0,0),length=22,height=0.05,width=22,color=(1.5,1.5,1.5),material=materials.wood)
        #Ringe
        self.ringliste=[] 
        for i in range(-20,0):
            
                    self.s1= feldinhalt()
                    self.s2= feldinhalt()
                    self.s3= feldinhalt()
                    self.s4= feldinhalt()
                    self.s1.pos=(10+i,0.1,-10)
                    self.s2.pos=(10,0.1,10+i)
                    self.s3.pos=(10+i,0.1,10)
                    self.s4.pos=(-10,0.1,10+i)
                    self.ringliste.append(self.s1)
                    self.ringliste.append(self.s2)
                    self.ringliste.append(self.s3)
                    self.ringliste.append(self.s4)
        for i in range(0,2):
                    self.s5=feldinhalt(farbe=color.black)
                    self.s5.pos=(7+i,0.1,7)
                    self.s6=feldinhalt(farbe=color.black)
                    self.s6.pos=(7+i,0.1,8) 
                    self.s7=feldinhalt(farbe=color.green)
                    self.s7.pos=(-8+i,0.1,-7)
                    self.s8=feldinhalt(farbe=color.green)
                    self.s8.pos=(-8+i,0.1,-8)    
                    self.s9=feldinhalt(farbe=color.blue)
                    self.s9.pos=(-8+i,0.1,7)
                    self.s10=feldinhalt(farbe=color.blue)
                    self.s10.pos=(-8+i,0.1,8)
                    self.s11=feldinhalt(farbe=color.orange)
                    self.s11.pos=(7+i,0.1,-7)
                    self.s12=feldinhalt(farbe=color.orange)
                    self.s12.pos=(7+i,0.1,-8)
                    self.ringliste.append(self.s5)
                    self.ringliste.append(self.s6)
                    self.ringliste.append(self.s7)
                    self.ringliste.append(self.s8)
                    self.ringliste.append(self.s9)
                    self.ringliste.append(self.s10)
                    self.ringliste.append(self.s11)
                    self.ringliste.append(self.s12)
        for i in range(-9,-5):
                    self.d1=feldinhalt(farbe=color.blue)
                    self.d1.pos=(i,0.1,0)
                    self.d2=feldinhalt(farbe=color.green)
                    self.d2.pos=(0,0.1,i)
                    self.ringliste.append(self.d1)
                    self.ringliste.append(self.d2)
        for i in range(6,10):
                    self.d3=feldinhalt(farbe=color.orange)
                    self.d3.pos=(i,0.1,0)
                    self.d4=feldinhalt(farbe=color.black)
                    self.d4.pos=(0,0.1,i)
                    self.ringliste.append(self.d3)
                    self.ringliste.append(self.d4)
        for i in range(0,1):
                    self.w1= feldinhalt(farbe=color.orange)
                    self.w2= feldinhalt(farbe=color.green)
                    self.w3= feldinhalt(farbe=color.black)
                    self.w4= feldinhalt(farbe=color.blue)
                    self.w1.pos=(10+i,0.1,-10)
                    self.w2.pos=(-10,0.1,-10+i)
                    self.w3.pos=(10+i,0.1,10)
                    self.w4.pos=(-10,0.1,10+i)
                    self.ringliste.append(self.w1)
                    self.ringliste.append(self.w2)
                    self.ringliste.append(self.w3)
                    self.ringliste.append(self.w4)
                   
        ###Figuren
        for i in range(0,1):
            self.r1 = spielfigur(0)
            self.r2 = spielfigur(1)
            self.r3 = spielfigur(2)
            self.r4 = spielfigur(3)
            self.r1.pos=(-8+i,0.05,-7)
            self.r2.pos=(-8+i,0.05,-8)
            self.r3.pos=(-7+i,0.05,-7)
            self.r4.pos=(-7+i,0.05,-8)
      
            self.r5 = spielfigur(4,farbe=color.black)
            self.r6 = spielfigur(5,farbe=color.black)
            self.r7 = spielfigur(6,farbe=color.black)
            self.r8 = spielfigur(7,farbe=color.black)
            self.r5.pos=(7+i,0.05,7)
            self.r6.pos=(7+i,0.05,8)
            self.r7.pos=(8+i,0.05,7)
            self.r8.pos=(8+i,0.05,8)
        
            self.r9 = spielfigur(8,farbe=color.blue)
            self.r10 = spielfigur(9,farbe=color.blue)
            self.r11 = spielfigur(10,farbe=color.blue)
            self.r12 = spielfigur(11,farbe=color.blue)
            self.r9.pos=(-8+i,0.05,7)
            self.r10.pos=(-8+i,0.05,8)
            self.r11.pos=(-7+i,0.05,7)
            self.r12.pos=(-7+i,0.05,8)
       
            self.r13 = spielfigur(12,farbe=color.orange)
            self.r14 = spielfigur(13,farbe=color.orange)
            self.r15 = spielfigur(14,farbe=color.orange)
            self.r16 = spielfigur(15,farbe=color.orange)
            self.r13.pos=(7+i,0.05,-7)
            self.r14.pos=(7+i,0.05,-8)
            self.r15.pos=(8+i,0.05,-7)
            self.r16.pos=(8+i,0.05,-8)
        self.figurenliste=[self.r1,self.r2,self.r3,self.r4,self.r5,self.r6,self.r7,self.r8,self.r9,self.r10,self.r11,self.r12,self.r13,self.r14,self.r15,self.r16]
    

    def run(self):
        pick = None # no object picked out of the scene yet


        
        while True:
            rate(30)  
            if scene.mouse.events:
                m1 = scene.mouse.getevent() # get event
                if m1.drag and m1.pick:
                    for f in self.figurenliste:
                        if m1.pick in f.objects:
                            altpos=m1.pickpos-(m1.pickpos-f.pos)
                            break
                        else:
                             f = None
                    drag_pos =m1.pickpos
                    
                    drag_pos.y = 0
                    pick = f
                    
                     
                elif m1.drop and pick: # released at end of drag
                    for ring in self.ringliste:
                        ringmitte = ring.pos
                        if mag(ringmitte-pick.pos) < .5:
                            f.pos = ringmitte
                            pick=None
                            zufall=int(random.random()*6+1)
                            augen=label(text=str(zufall),pos=(0,0,0),depth=-0.3,color=color.cyan)
                            break
                    if not f.pos in [ring.pos for ring in self.ringliste]:
                        f.pos=altpos
                        pick=None
                            
                          
                    pick = None    
            if pick:
                # project onto xy plane, even if scene rotated:
                new_pos = scene.mouse.project(normal=(0,1,0))
                if new_pos != drag_pos :# if mouse has moved
                    pick.pos += new_pos - drag_pos
                    drag_pos = new_pos # update drag position+
                    
               
                    pick.pos = new_pos + pick.pos - drag_pos
                    drag_pos = new_pos # update drag position            
                    # offset for where the ball was clicked:
                    
                    

   
class feldinhalt(frame):
    def __init__(self,farbe=color.red):
        frame.__init__(self)
        self.feldinhalt=ring(frame=self,pos=(0,0,0),radius=0.5,color=farbe,axis=(0,1,0),material=materials.diffuse)





zufall=int(random.random()*6+1)
augen=label(text=str(zufall),pos=(0,0,0),depth=-0.3,color=color.cyan)



class spielfigur(frame):
    def __init__(self,nummer=0,farbe=color.green,):
        frame.__init__(self)
        self.koerper=cylinder(frame=self,pos=(0,0,0),radius=0.45,color=farbe,axis=(0,1.5,0),material=materials.chrome)
        self.Kopf=cone(frame=self,pos=(0,1.5,0),axis=(0,1,0),radius=0.45,color=farbe,material=materials.chrome)
        self.nummer=nummer
        


x = spielfeld()
x.run()





Funktionsleiste