Monopoly(unfinished)
Spiel1.py — Python Source, 29 KB (30000 bytes)
Dateiinhalt
# -*- coding: utf-8 -*- from visual import * import random import threading import time scale = 1 class Spielbrett(frame): def __init__(self, groesse): frame.__init__(self) scale = groesse #Gruene Flaeche self.brett = box(frame = self, width = 13*scale+2*0.2, length = 13*scale+2*0.2, height = 0.1, color = (192/255.0,226/255.0,202/255.0)) #Rahmen North rahmenHorizontal = shapes.rectangle(width = 13*scale, height = 2*scale, thickness = 0.05/1.5) pathN = paths.line(start = (0,0.05,-5.5*scale), end = (0,0.06,-5.5*scale)) self.rahmenNorth = extrusion(frame = self, pos = pathN, shape = rahmenHorizontal, color = color.black) #Rahmen West rahmenVertical = shapes.rectangle(height = 13*scale, width = 2*scale, thickness = 0.05/1.5) pathW = paths.line(start = (-5.5*scale,0.05,0), end = (-5.5*scale,0.06,0)) self.rahmenWest = extrusion(frame = self, pos = pathW, shape = rahmenVertical, color = color.black) #Rahmen East pathE = paths.line(start = (5.5*scale,0.05,0), end = (5.5*scale,0.06,0)) self.rahmenEast = extrusion(frame = self, pos = pathE, shape = rahmenVertical, color = color.black) #Rahmen South pathS = paths.line(start = (0,0.05,5.5*scale), end = (0,0.06,5.5*scale)) self.rahmenSouth = extrusion(frame = self, pos = pathS, shape = rahmenHorizontal, color = color.black) #Rahmen Gefaengnis rahmenG = shapes.rectangle(height = 1.5*scale, width = 1.5*scale, thickness = 0.05/1.5) pathG = paths.line(start = (-5.25*scale,0.05,5.25*scale), end = (-5.25*scale,0.06,5.25*scale)) self.rahmenSouth = extrusion(frame = self, pos = pathG, shape = rahmenG, color = color.black) #Los self.los = LosGrafik(groesse = scale) #Feldlinien for i in range(-1,2): if i == 0: pass else: for j in range(-4,5): if j < 0: self.feldlinie = box(frame = self, pos =((j+0.5)*scale,0.02,i*5.5*scale), width = scale*2, length = 0.1/1.5*scale, height =0.1, color = color.black) elif j > 0: self.feldlinie = box(frame = self, pos =((j-0.5)*scale,0.02,i*5.5*scale), width = scale*2, length = 0.1/1.5*scale, height =0.1, color = color.black) for i in range(-1,2): if i == 0: pass else: for j in range(-4,5): if i < 0: self.feldlinie = box(frame = self, pos =(i*5.5*scale,0.02,(j+0.5)*scale), width = 0.1/1.5*scale, length = scale*2, height =0.1, color = color.black) elif i > 0: self.feldlinie = box(frame = self, pos =(i*5.5*scale,0.02,(j-0.5)*scale), width = 0.1/1.5*scale, length = scale*2, height =0.1, color = color.black) #Braun for i in range (2,5): if i == 3: pass else: self.braun = Strassenfarben(farbe = (166/255.0,44/255.0,43/255.0), ausrichtung = 'h', groesse = scale) self.braun.pos = (i*scale, 0, 4.5*scale+scale/3.0) self.braun.frame = self #Hellblau for i in range(-4,0): if i == -2: pass else: self.hellblau = Strassenfarben(farbe = (62/255.0,196/255.0,223/255.0), ausrichtung = 'h', groesse = scale) self.hellblau.pos = (i*scale, 0, 4.5*scale+scale/3.0) self.hellblau.frame = self #Rosa feldVertical = shapes.rectangle(width = 0.65, height =1.4) for i in range(1,5): if i == 3: pass else: self.rosa = Strassenfarben(farbe = (242/255.0,107/255.0,165/255.0), ausrichtung = 'v', groesse = scale) self.rosa.pos = (-4.5*scale-scale/3.0, 0, i*scale) self.rosa.frame = self #Orange for i in range(-4,0): if i == -2: pass else: self.orange = Strassenfarben(farbe = (246/255.0,137/255.0,32/255.0), ausrichtung = 'v', groesse = scale) self.orange.pos = (-4.5*scale-scale/3.0, 0, i*scale) self.orange.frame = self #Rot for i in range(-4,0): if i == -3: pass else: self.rot = Strassenfarben(farbe = (224/255.0,30/255.0,38/255.0), ausrichtung = 'h', groesse = scale) self.rot.pos = (i*scale, 0, -4.5*scale-scale/3.0) self.rot.frame = self #Gelb for i in range(1,5): if i == 3: pass else: self.gelb = Strassenfarben(farbe = (248/255.0,236/255.0,30/255.0), ausrichtung = 'h', groesse = scale) self.gelb.pos = (i*scale, 0, -4.5*scale-scale/3.0) self.gelb.frame = self #Gruen for i in range(-4,0): if i == -2: pass else: self.gruen = Strassenfarben(farbe = (12/255.0,137/255.0,69/255.0), ausrichtung = 'v', groesse = scale) self.gruen.pos = (4.5*scale+scale/3.0, 0, i*scale) self.gruen.frame = self #Dunkelblau for i in range(1,5): if i == 3 or i == 1: pass else: self.dunkelblau = Strassenfarben(farbe = (58/255.0,59/255.0,151/255.0), ausrichtung = 'v', groesse = scale) self.dunkelblau.pos = (4.5*scale+scale/3.0, 0, i*scale) self.dunkelblau.frame = self class Strassenfarben(frame): def __init__(self, farbe, ausrichtung, groesse): frame.__init__(self) scale = groesse if 'h' in ausrichtung: shapeFarben = shapes.rectangle(width = scale - 0.1, height = scale/1.875) elif 'v' in ausrichtung: shapeFarben = shapes.rectangle(width = scale/1.875, height =scale - 0.1) pathFarben = paths.line(start = (0,0.05,0), end = (0,0.06,0)) self.Farben = extrusion(frame = self, shape = shapeFarben, pos = pathFarben, color = farbe) class Figur(frame): def __init__(self, farbe, groesse): frame.__init__(self) scale = groesse self.kegel = cone(frame = self, pos = (0,0,0), axis = (0,1,0), radius = 0.4, color = farbe) self.kugel = sphere(frame = self, pos = self.kegel.axis, radius = self.kegel.radius*0.5, color = farbe) self.pos = (4*scale, 0 , 5.5*scale) def Bewegen(self, zielposition = int): [x for x in felder if x.name == wuerfel] #self.pos = x.pos class LosGrafik(frame): def __init__(self, groesse): frame.__init__(self) scale = groesse sLos = 0.5 body = shapes.rectangle(height = 0.2*scale*sLos, width = 2*scale*sLos) head = shapes.triangle(length = 0.5*scale*sLos, pos = (-0.5*2*scale*sLos, 0), rotate = -pi/6) rear = shapes.rectangle(width = 0.5*scale*sLos, pos = ((scale + 0.25*scale)*sLos, 0)) + shapes.rectangle(width = mag(vector(0.25*scale, 0.25*scale))*sLos, pos = (scale*sLos, 0), rotate = pi/4) - shapes.rectangle(width = mag(vector(0.25*scale, 0.25*scale))*sLos, pos = ((scale + 0.5*scale)*sLos, 0), rotate = pi/4) pathLos = paths.line(start = (6.0*scale - scale/2.0,0.05,6.0*scale), end = (6.0*scale - scale/2.0, 0.06, 6*scale)) self.extrusion1 = extrusion(shape = head + body + rear, pos = pathLos, color = (248/255.0, 30/255.0, 31/255.0)) class Feld(): def __init__(self, nummer,position,preis,miete0,miete1,miete2,miete3,miete4,mieteH,hauspreis,hypothek): self.nummer = nummer self.position = position self.preis = preis self.miete0 = miete0 self.miete1 = miete1 self.miete2 = miete2 self.miete3 = miete3 self.miete4 = miete4 self.mieteH = mieteH self.hauspreis = hauspreis self.hotelpreis = hauspreis self.hypothek = hypothek self.spieler = 0 #gehoert niemandem def get_Nummer(self): return self.nummer def Aktion(self, spielerNummer): if self.spieler == 0: print("Kaufen? (ja/nein)") f = True while (f == True): if scene.kb.keys: s = scene.kb.getkey() if s == "j": self.spieler = spielerNummer for i in spielerFeld: if i.nummer == spielerNummer: i.kontostandAendern(-self.preis) f = False if s == "n": f = False elif self.spieler == spielerNummer: pass else: for i in spielerFeld: if i.nummer == self.spieler: i.kontostandAendern(self.miete0) for i in spielerFeld: if i.nummer == spielerNummer: i.kontostandAendern(-self.miete0) class Bahnhof(): def __init__(self, nummer, position): self.nummer = nummer self.position = position self.kaufpreis = 4000 self.spieler = 0 self.hypothek = 2000 self.miete1 = 500 self.miete2 = 1000 self.miete3 = 2000 self.miete4 = 4000 def get_Nummer(self): return self.nummer def Aktion(self, spielerNummer): pass class Los(): def __init__(self, nummer, position): self.nummer = nummer self.position = position def get_Nummer(self): return self.nummer def Aktion(self, spielerNummer): for i in spielerFeld: if i.nummer == spielerNummer: i.kontostandAendern(4000) class Werk(): def __init__(self, nummer, position): self.nummer = nummer self.position = position self.kaufpreis= 3000 self.spieler = 0 self.hypothek =1500 mietfaktor1 = 80 mietfaktor2 = 200 def get_Nummer(self): return self.nummer class Freiparken(): def __init__(self, nummer): self.nummer = nummer self.position = (-5.5*scale,0,-5.5*scale) self.geldBetrag = 0 def get_Nummer(self): return self.nummer def Aktion(self, spielerNummer): pass class gefBesuch(): def __init__(self, nummer): self.nummer = nummer self.position=(-6.25*scale,0,6.25*scale) def get_Nummer(self): return self.nummer def Aktion(self, spielerNummer): pass class imGef(): def __init__(self, nummer): self.nummer = nummer self.position =(-5.125*scale,0,5.125*scale) self.zeit1 = 0 self.zeit2 = 0 self.zeit3 = 0 self.zeit4 = 0 def get_Nummer(self): return self.nummer def Aktion(self, spielerNummer): pass class insGef(): def __init__(self, nummer): self.nummer = nummer self.position = (5.5*scale,0,-5.5*scale) def get_Nummer(self): return self.nummer def Aktion(self, spielerNummer): for i in spielerFeld: if i.nummer == spielerNummer: i.figur.insGefaengnis() class Steuerfeld(): def __init__(self, nummer, position, steuerbetrag): self.nummer = nummer self.position = position self.steuerbetrag = steuerbetrag def get_Nummer(self): return self.nummer def Aktion(self, spielerNummer): for i in spielerFeld: if i.nummer == spielerNummer: i.kontostandAendern(-self.steuerbetrag) class Ereignisfeld(): def __init__(self, nummer, position): self.nummer = nummer self.position=position def get_Nummer(self): return self.nummer def Aktion(self, spielerNummer): for i in ereigniskarten: if i.nummer == random.randrange(1,16,1): if type(i.Aktion())==int: for j in spielerFeld: if j.nummer == spielerNummer: j.kontostandAendern(i.Aktion()) class Gemeinschaftsfeld(): def __init__(self, nummer, position): self.nummer = nummer self.position = position def get_Nummer(self): return self.nummer def Aktion(self, spielerNummer): for i in gemeinschaftskarten: if i.nummer == random.randrange(1,16,1): i.Aktion() #Felder felder = [] los = Los(0, (5.5*scale,0,5.5*scale)) felder.append(los) Badstrasse = Feld(1, (4*scale,0,5.5*scale),1200,40,200,600,1800,3200,5000,1000,600) felder.append(Badstrasse) Gemeinschaftsfeld1 = Gemeinschaftsfeld(2, (3*scale,0,5.5*scale)) felder.append(Gemeinschaftsfeld1) Turmstrasse = Feld(3, (2*scale,0,5.5*scale),1200,80,400,1200,3600,6400,9000,1000,600) felder.append(Turmstrasse) Einkommenssteuer = Steuerfeld(4,(1*scale,0,5.5*scale) , 4000) felder.append(Einkommenssteuer) Suedbahnhof=Bahnhof(5, (0,0,5,5*scale)) felder.append(Suedbahnhof) Chausseestrasse = Feld(6, (-1*scale,0,5.5*scale),2000,120,600,1800,5400,8000,11000,1000,1000) felder.append(Chausseestrasse) Ereignisfeld1 = Ereignisfeld(7, (-2*scale,0,5.5*scale)) felder.append(Ereignisfeld1) Elisenstrasse = Feld(8, (-3*scale,0,5.5*scale),2000,120,600,180,5400,8000,11000,1000,1000) felder.append(Elisenstrasse) Poststrasse = Feld(9, (-4*scale,0,5.5*scale),2400,160,800,2000,6000,9000,12000,1000,1200) felder.append(Poststrasse) Gefaengnis = gefBesuch(10) felder.append(Gefaengnis) Seestrasse = Feld(11, (-5.5*scale,0,4*scale),2800,200,1000,3000,9000,12500,15000,2000,1400) felder.append(Seestrasse) Elektrizitaetswerk=Werk(12, (-5.5*scale,0,3*scale)) felder.append(Elektrizitaetswerk) Hafenstrasse = Feld(13, (-5.5*scale,0,2*scale),2800,200,1000,3000,9000,12500,15000,2000,1400) felder.append(Hafenstrasse) Neuestrasse = Feld(14, (-5.5*scale,0,1*scale),3200,240,1200,3600,10000,14000,18000,2000,1600) felder.append(Neuestrasse) Westbahnhof=Bahnhof(15, (-5.5*scale,0,0)) felder.append(Westbahnhof) Muenchnerstrasse = Feld(16, (-5.5*scale,0,-1*scale),3600,280,1400,4000,11000,15000,19000,2000,1800) felder.append(Muenchnerstrasse) Gemeinschaftsfeld2 = Gemeinschaftsfeld(17, (-5.5*scale,0,-2*scale)) felder.append(Gemeinschaftsfeld2) Wienerstrasse = Feld(18, (-5.5*scale,0,-3*scale),3600,280,1400,4000,11000,15000,19000,2000,1800) felder.append(Wienerstrasse) Berlinerstrasse = Feld(19, (-5.5*scale,0,-4*scale),4000,320,1600,4400,12000,16000,20000,2000,2000) felder.append(Berlinerstrasse) FreiParken = Freiparken(20) felder.append(FreiParken) Theaterstrasse = Feld(21, (-4*scale,0,-5.5*scale),4400,360,1800,5000,14000,17500,21000,3000,2200) felder.append(Theaterstrasse) Ereignisfeld2 = Ereignisfeld(22, (-3*scale,0,-5.5*scale)) felder.append(Ereignisfeld2) Museumstrasse = Feld(23, (-2*scale,0,-5.5*scale),4400,360,1800,5000,14000,17500,21000,3000,2200) felder.append(Museumstrasse) Opernplatz = Feld(24, (-1*scale,0,-5.5*scale),4800,400,2000,6000,15000,18500,22000,3000,2400) felder.append(Opernplatz) Nordbahnhof=Bahnhof(25, (0,0,-5.5*scale)) felder.append(Nordbahnhof) Lessingstrasse = Feld(26, (1*scale,0,-5.5*scale),5200,440,2200,6600,16000,19500,23000,3000,2600) felder.append(Lessingstrasse) Schillerstrasse = Feld(27, (2*scale,0,-5.5*scale),5200,440,2200,6600,16000,19500,23000,3000,2600) felder.append(Schillerstrasse) Wasserwerk=Werk(28, (3*scale,0,-5.5*scale)) felder.append(Wasserwerk) Goethestrasse = Feld(29, (4*scale,0,-5.5*scale),5600,440,2400,7200,17000,20500,24000,3000,2800) felder.append(Goethestrasse) InsGefaengnis = insGef(30) felder.append(InsGefaengnis) Rathausplatz = Feld(31, (5.5*scale,0,-4*scale),6000,520,2600,7800,18000,22000,25500,4000,3000) felder.append(Rathausplatz) Hauptstrasse = Feld(32, (5.5*scale,0,-3*scale),6000,520,2600,7800,18000,22000,25500,4000,3000) felder.append(Hauptstrasse) Gemeinschaftsfeld3 = Gemeinschaftsfeld(33, (5.5*scale,0,-2*scale)) felder.append(Gemeinschaftsfeld3) Bahnhofstrasse = Feld(34, (5.5*scale,0,-1), 6400,560,3000,9000,20000,24000,28000,4000,3200) felder.append(Bahnhofstrasse) Hauptbahnhof=Bahnhof(35, (5.5*scale,0,0)) felder.append(Hauptbahnhof) Ereignisfeld3 = Ereignisfeld(36, (5.5*scale,0,1*scale)) felder.append(Ereignisfeld3) Parkstrasse = Feld(37, (5.5*scale,0,2*scale),7000,700,3500,10000,22000,26000,30000,4000,3500) felder.append(Parkstrasse) Zusatzsteuer = Steuerfeld(38,(5.5*scale,0, 3*scale), 2000) felder.append(Zusatzsteuer) Schlossallee = Feld(39, (5.5*scale,0,4*scale),8000,1000,4000,12000,28000,34000,40000,4000,4000) felder.append(Schlossallee) imGefaengnis = imGef(40) felder.append(imGefaengnis) class Wuerfel(): def __init__(self): pass def Wuerfeln(self): r1 = random.randrange(1, 7, 1) r2 = random.randrange(1, 7, 1) if r1 == r2: print("pasch") print(r1 + r2) return r1 + r2 else: print(r1 + r2) return r1 + r2 #Wuerfel wuerfel = Wuerfel() class Ereigniskarte(): def __init__(self, nummer, ereignis, kontoAenderung, positionsAenderung): self.nummer = nummer self.ereignis = ereignis self.kontoAenderung = kontoAenderung self.positionsAenderung = positionsAenderung def Aktion(self): if self.positionsAenderung != None: return self.positionsAenderung else: return self.kontoAenderung class Gemeinschaftskarte(): def __init__(self, nummer, ereignis, kontoAenderung, positionsAenderung, geburtstag): self.nummer = nummer self.ereignis = ereignis self.kontoAenderung = kontoAenderung self.positionsAenderung = positionsAenderung self.geburtstag = geburtstag def Aktion(self): if self.positionsAenderung != None: return self.positionsAenderung elif self.kontoAenderung != None: return self.kontoAenderung elif self.geburtstag == True: return True else: return "Ereignis" #Ereigniskarten ereigniskarten = [] ereigniskarte1 = Ereigniskarte(1, "Betrunken im Dienst.\n\nStrafe M 400,-.", kontoAenderung = -400, positionsAenderung = None) ereigniskarten.append(ereigniskarte1) ereigniskarte2 = Ereigniskarte(2, "Zahle Schuldgeld.\n\nM 3 000,-.", kontoAenderung = -3000, positionsAenderung = None) ereigniskarten.append(ereigniskarte2) ereigniskarte3 = Ereigniskarte(3, "Du hast in einem Kreuzwortraetsel-Wettbewerb gewonnen.\n\nZiehe M 2 000,- ein.", kontoAenderung = 2000, positionsAenderung = None) ereigniskarten.append(ereigniskarte3) ereigniskarte4 = Ereigniskarte(4, "Gehe 3 Felder zurueck.", kontoAenderung = None, positionsAenderung = -3) ereigniskarten.append(ereigniskarte4) ereigniskarte5 = Ereigniskarte(5, "Strafe fuer zu schnelles Fahren.\n\nM 300,-.", kontoAenderung = -300, positionsAenderung = None) ereigniskarten.append(ereigniskarte5) ereigniskarte6 = Ereigniskarte(6, "Miete und Anleihzinsen werden faellig.\n\nDie Bank zahlt Dir M 3 000,-.", kontoAenderung = 3000, positionsAenderung = None) ereigniskarten.append(ereigniskarte6) ereigniskarte7 = Ereigniskarte(7, "Mache einen Ausflug nach dem.\nWest-Bahnhof,\nund wenn Du ueber Los kommst, ziehe\nM 4 000,- ein.", kontoAenderung = None, positionsAenderung = (-5.5*scale, 0, 0)) ereigniskarten.append(ereigniskarte7) ereigniskarte8 = Ereigniskarte(8, "Ruecke bis auf Los vor.", kontoAenderung = None, positionsAenderung = (5.5*scale, 0, 5.5*scale)) ereigniskarten.append(ereigniskarte8) ereigniskarte9 = Ereigniskarte(9, "Die Bank zahlt Dir eine Dividende von\nM 1 000,-..", kontoAenderung = 1000, positionsAenderung = None) ereigniskarten.append(ereigniskarte9) ereigniskarte10 = Ereigniskarte(10, "Ruecke vor bis zur Seestrasse.\nWenn du ueber Los kommst, ziehe\nM 4 000,- ein.", kontoAenderung = None, positionsAenderung = (-5.5*scale, 0, 4*scale)) ereigniskarten.append(ereigniskarte10) ereigniskarte11 = Ereigniskarte(11, "Gehe in das Gefaengnis.\nBegebe Dich direkt dorthin.\n Gehe nicht ueber Los.\n\n Ziehe nicht M 4 000,- ein.", kontoAenderung = None, positionsAenderung = (-5.5*scale, 0, 5.5*scale)) ereigniskarten.append(ereigniskarte11) #ereigniskarte12 = Ereigniskarte(12, "Lasse alle deine Haeuser renovieren.\n\nZahle fuer jedes Haus M 500,-\nZahle fuer jedes Hotel M 2 000,-.", kontoAenderung = , positionsAenderung = None) #ereigniskarten.append(ereigniskarte12) #ereigniskarte13 = Ereigniskarte(13, "Du wirst zu Strassenausbesserungsarbeiten\nherangezogen.\nM 800,- je Haus\nM 2 300,- je Hotel.", kontoAenderung = , positionsAenderung = None) #ereigniskarten.append(ereigniskarte13) ereigniskarte14 = Ereigniskarte(14, "Ruecke vor bis zur\n\nSchlossallee.", kontoAenderung = None, positionsAenderung = (5.5*scale, 0, 4*scale)) ereigniskarten.append(ereigniskarte14) ereigniskarte15 = Ereigniskarte(15, "Ruecke vor bis zum Opernplatz.\nWenn Du ueber Los kommt, ziehe\nM 4 000,- ein.", kontoAenderung = None, positionsAenderung = (-1*scale, 0, -5.5*scale)) ereigniskarten.append(ereigniskarte15) #Gemeinschaftskarten gemeinschaftskarten = [] gemeinschaftskarte1 = Gemeinschaftskarte(1, "Es ist dein Geburtstag.\n\nZiehe von jedem Spieler M 200,- ein.", kontoAenderung = None, positionsAenderung = None, geburtstag = True) gemeinschaftskarten.append(gemeinschaftskarte1) gemeinschaftskarte2 = Gemeinschaftskarte(2, "Zahle eine Busse von\nM 200,-\noder nimm eine Ereigniskarte.", kontoAenderung = None, positionsAenderung = None, geburtstag = False) gemeinschaftskarten.append(gemeinschaftskarte2) gemeinschaftskarte3 = Gemeinschaftskarte(3, "Du hast den II. Preis in einer Schönheits-\nkonkurrenz gewonnen\n\nZiehe M 200,- ein.", kontoAenderung = 200, positionsAenderung = None, geburtstag = False) gemeinschaftskarten.append(gemeinschaftskarte3) gemeinschaftskarte4 = Gemeinschaftskarte(4, "Zahle an das Krankenhaus\n\nM 2 000,-.", kontoAenderung = -2000, positionsAenderung = None, geburtstag = False) gemeinschaftskarten.append(gemeinschaftskarte4) gemeinschaftskarte5 = Gemeinschaftskarte(5, "Du erbst\n\nM 2 000,-", kontoAenderung = 2000, positionsAenderung = None, geburtstag = False) gemeinschaftskarten.append(gemeinschaftskarte5) gemeinschaftskarte6 = Gemeinschaftskarte(6, "Ruecke vor bis auf\nL o s.", kontoAenderung = None, positionsAenderung = (5.5*scale, 0, 5.5*scale), geburtstag = False) gemeinschaftskarten.append(gemeinschaftskarte6) gemeinschaftskarte7 = Gemeinschaftskarte(7, "Die Jahresrente wird faellig.\n\n Ziehe M 2 000,- ein.", kontoAenderung = 2000, positionsAenderung = None, geburtstag = False) gemeinschaftskarten.append(gemeinschaftskarte7) gemeinschaftskarte8 = Gemeinschaftskarte(8, "Gehe in das Gefaengnis.\nBegebe Dich direkt dorthin.\n Gehe nicht ueber Los.\n\n Ziehe nicht M 4 000,- ein.", kontoAenderung = None, positionsAenderung = (-5.5*scale, 0, 5.5*scale), geburtstag = False) gemeinschaftskarten.append(gemeinschaftskarte8) gemeinschaftskarte9 = Gemeinschaftskarte(9, "Einkommensteuer-Rueckzahlung.\n\nZiehe M 400,- ein.", kontoAenderung = 400, positionsAenderung = None, geburtstag = False) gemeinschaftskarten.append(gemeinschaftskarte9) gemeinschaftskarte10 = Gemeinschaftskarte(10, "Bank-Irrtum zu Deinen Gunsten.\n\nZiehe M 4 000,- ein.", kontoAenderung = 4000, positionsAenderung = None, geburtstag = False) gemeinschaftskarten.append(gemeinschaftskarte10) gemeinschaftskarte11 = Gemeinschaftskarte(11, "Aus Lagerverkaeufen erhaeltst Du\n\nM 100,-.", kontoAenderung = 100, positionsAenderung = None, geburtstag = False) gemeinschaftskarten.append(gemeinschaftskarte11) gemeinschaftskarte12 = Gemeinschaftskarte(12, "Arzt-Kosten.\n\nZahle M 100,-.", kontoAenderung = -100, positionsAenderung = None, geburtstag = False) gemeinschaftskarten.append(gemeinschaftskarte12) gemeinschaftskarte13 = Gemeinschaftskarte(13, "Du erhaeltst auf Vorzugs-Aktien 7% Zinsen\n\nM 500,-.", kontoAenderung = 500, positionsAenderung = None, geburtstag = False) gemeinschaftskarten.append(gemeinschaftskarte13) gemeinschaftskarte14 = Gemeinschaftskarte(14, "Zahle Deine Versicherungssumme.\n\nM 1 000,-.", kontoAenderung = -1000, positionsAenderung = None, geburtstag = False) gemeinschaftskarten.append(gemeinschaftskarte14) gemeinschaftskarte15 = Gemeinschaftskarte(15, "Gehe zurück nach der\n\nBadstrasse.", kontoAenderung = None, positionsAenderung = (4*scale,0,5.5*scale), geburtstag = False) gemeinschaftskarten.append(gemeinschaftskarte15) class Figur1(frame): def __init__(self): frame.__init__(self) groesse = scale/10.0 self.positionId = 0 for i in felder: if i.get_Nummer() == self.positionId: self.position = i.position self.helix = helix(frame = self, pos = self.position,thickness=0.05*groesse, radius=2*groesse, axis=(0,3*groesse,0)) self.cone1 = cone(frame = self, pos = (self.position[0],self.position[1]-(0.1*groesse),self.position[2]), radius=2.2*groesse, axis=(0,1.6*groesse,0)) self.cone2 = cone(frame = self, pos = (self.position[0],self.position[1]+(3.1*groesse),self.position[2]), radius=2.2*groesse, axis=(0,-1.6*groesse,0)) def Bewegen(self, augenzahl): for i in felder: if i.nummer == self.positionId: zielfeld = self.positionId + augenzahl for j in felder: if j.nummer == zielfeld % 40: self.pos = (self.pos[0] + (j.position[0] - i.position[0]), self.pos[1] + (j.position[1] - i.position[1]), self.pos[2] + (j.position[2] - i.position[2])) return j self.positionId = (self.positionId + augenzahl)%40 def insGefaengnis(self): for i in felder: if i.nummer == 40: zielfeld = 40 for j in felder: if j.nummer == zielfeld: self.pos = (self.pos[0] - 10.75, self.pos[1] + 0, self.pos[2] + 10.75) class Figur2(frame): def __init__(self): frame.__init__(self) groesse = scale/5.0 position = (5.5*scale, 0, 5.5*scale) self.pyramide=pyramid(pos=position,size=(1*groesse,2*groesse,2*groesse),axis=(0,2*groesse,0)) self.sphere=sphere(pos=(position[0],position[1]+1.25*groesse,position[2]),radius=0.5*groesse) self.cone1=cone(pos=(position[0]+0.375*groesse,position[1]+1.25*groesse,position[2]),radius=0.2*groesse,axis=(0.5*groesse,0,0)) self.cone1=cone(pos=(position[0]-0.375*groesse,position[1]+1.25*groesse,position[2]),radius=0.2*groesse,axis=(-0.5*groesse,0,0)) self.cone1=cone(pos=(position[0],position[1]+1.25*groesse,position[2]+0.375*groesse),radius=0.2*groesse,axis=(0,0,0.5*groesse)) self.cone1=cone(pos=(position[0],position[1]+1.25*groesse,position[2]-0.375*groesse),radius=0.2*groesse,axis=(0,0,-0.5*groesse)) self.cone1=cone(pos=(position[0],position[1]+1.625*groesse,position[2]),radius=0.2*groesse,axis=(0,0.5*groesse,0)) class Figur3(frame): def __init__(self): frame.__init__(self) groesse = scale/5.0 position = (5.5*scale, 0, 5.5*scale) self.cylinder1=cylinder(pos=position,radius=1*groesse,axis=(0,0.3125*groesse,0)) self.cylinder2=cylinder(pos=(position[0],position[1]+0.3125*groesse,position[2]),radius=0.625*groesse,axis=(0,0.3125*groesse,0)) self.ring=ring(pos=(position[0],position[1]+1.1375*groesse,position[2]),radius=0.5*groesse,thickness=0.0125*groesse,axis=(13*groesse,0,8*groesse)) class Figur4(frame): def __init__(self): frame.__init__(self) groesse = scale/5.0 position = (5.5*scale, 0, 5.5*scale) self.box1=box(pos=(position[0],position[1]+0.1*groesse,position[2]),size=(1*groesse,0.05*groesse,1*groesse)) self.box2=box(pos=(position[0]+0.4*groesse,position[1]+0.85*groesse,position[2]),size=(0.05*groesse,1.4*groesse,0.05*groesse)) self.box3=box(pos=(position[0]-0.2*groesse,position[1]+1.55*groesse,position[2]),size=(0.125*groesse,0.125*groesse,0.125*groesse)) self.box4=box(pos=(position[0]+0.125*groesse,position[1]+1.55*groesse,position[2]),size=(0.6*groesse,0.05*groesse,0.05*groesse)) self.sphere=sphere(pos=(position[0]-0.2*groesse,position[1]+0.8*groesse,position[2]),radius=0.125*groesse) self.cylinder=cylinder(pos=(position[0]-0.2*groesse,position[1]+1.55*groesse,position[2]),radius=0.025*groesse) self.cylinder.axis=self.sphere.pos-self.cylinder.pos spielerFeld = [] class Spiel(): def __init__(self, anzahlSpieler): self.Spielbrett = Spielbrett(groesse = scale) for i in range(1, anzahlSpieler + 1): spielerFeld.append(Spieler(anzahlSpieler)) spielzug = Spielzug(1) class Spieler(): def __init__(self, nummer): self.nummer = nummer if nummer == 1: self.figur = Figur1() elif nummer == 2: self.figur = Figur2() elif nummer == 3: self.figur = Figur3() elif nummer == 4: self.figur = Figur4() else: print("Nur mit max. vier Spielern spielbar.") self.kontostand = 20000 def kontostandAendern(self, betrag): self.kontostand = self.kontostand + betrag def kontostandGeben(self): print(self.kontostand) class Spielzug(): def __init__(self, spielerNummer): self.spielerNummer = spielerNummer time.sleep(2) for i in spielerFeld: if i.nummer == self.spielerNummer: feld = i.figur.Bewegen(38) feld.Aktion(spielerNummer) for i in spielerFeld: if i.nummer == self.spielerNummer: i.kontostandGeben() a = Spiel(1)