Bricks
bricks.py
—
Python Source,
6 KB (6321 bytes)
Dateiinhalt
from visual import *
defaultheight = 1
defaultlength = 0.85
win = materials.texture(data=materials.loadTGA("win"),mapping = "sign")
##--Brick--##
class Brick(frame):
def __init__(self, color_, posN = (0, 0, 0)):
frame.__init__(self)
self.brick = box(frame = self, pos = posN, height = defaultheight, length = defaultlength, width = 0.15, color = color_)
self.c = color_
self.p = posN
def getGraphics(self, posN = (0, 0, 0)):
return self.brick
def move(self, vs):
self.pos += vs
def hit(self):
if not(hasattr(brickLight, 'brick')):
self.brick = box(frame = self, pos = self.p, height = defaultheight, length = defaultlength, width = 0.15, color = self.c)
self.brick.visible = False
del self.brick
def destroy(self):
self.brick.visible = False
del self.brick
##--Brick--#
##--object1--##
class brickLight(Brick):
def __init__(self, posN = (0,0,0)):
Brick.__init__(self, color.yellow, posN)
##--object1--##
##--object2--##
class brickMedium(Brick):
def __init__(self, posN = (0,0,0)):
Brick.__init__(self, color.orange, posN)
def hit(self):
if not(hasattr(brickLight, 'brick')):
self.brick = box(frame = self, pos = self.p, height = defaultheight, length = defaultlength, width = 0.15, color = self.c)
self.brick.visible = False
del self.brick
self.brick = brickLight()
##--object2--##
##--object3--##
class brickHeavy(Brick):
def __init__(self, posN = (0,0,0)):
Brick.__init__(self, color.red, posN)
def hit(self):
if not(hasattr(brickLight, 'brick')):
self.brick = box(frame = self, pos = self.p, height = defaultheight, length = defaultlength, width = 0.15, color = self.c)
self.brick.visible = False
del self.brick
self.brick = brickMedium()
##--object3--##
##--object4 (GOAL)--##
class brickWin(Brick):
def __init__(self, posN = (0,0,0)):
frame.__init__(self)
self.brick = box (frame = self, pos = posN, height = defaultheight, length = defaultlength, width = 0.15, color = color.green)
self.hit_ = 4
def hit(self):
self.hit_ -= 1
print(str(self.hit_))
if self.hit_ == 3:
self.brick.color = color.blue
elif self.hit_ == 2:
self.brick.color = color.magenta
elif self.hit_ == 1:
self.brick.color = color.white
elif self.hit_ == 0:
print("you won")
self.winbox = box(frame = self, pos = (-5, -5, 1), height = 20, length = 20, width = 20, color = color.green)
print(str(self.winbox.pos.x))
#self.brick.visible = False
#del self.brick
##--object4--##
class brickNew(frame):
def __init__(self, posN, color, win_, hits_, world):
frame.__init__(self)
self.brick = box (frame = self, pos = posN, height = defaultheight, length = defaultlength, width = 0.15, color = color)
self.win = win_
self.hits = hits_
self.x_ = posN[0]
self.y_ = posN[1]
self.w = world
def hit(self):
if(self.hits > 0):
self.hits -= 1
if(self.win):
if self.hits == 3:
self.brick.color = color.blue
elif self.hits == 2:
self.brick.color = color.magenta
elif self.hits == 1:
self.brick.color = color.white
elif self.hits == 0:
self.winbox = box(frame = self, axis = (0, 0, 1), pos = (0, 0, 1), height = 10, length = 10, width = 10, material=win)
self.winbox.rotate(angle = pi, axis = (0, 0, 1), origin = self.winbox.pos)
self.w.bricklist.remove(self)
self.brick.visible = False
del self.brick
else:
if self.hits == 2:
self.brick.color = color.orange
elif self.hits == 1:
self.brick.color = color.yellow
elif self.hits == 0:
self.w.bricklist.remove(self)
self.brick.visible = False
del self.brick
##--world--##
class world():
def __init__(self):
self.height = 7.15 # 7.65
self.width = 12 # 14.125
# self.distance = 0.0833333333333333333334
self.d = 0.5
self.d2 = 2.25
self.bricklist = []
self.count = 0
def worldgen(self):
for y in range(14):
brickw =(defaultlength + self.d)
for x in range(2):
#self.bricklist.append(brickLight((x * brickw - self.d2 - (6 * brickw), y * (0.6 + self.d) - self.height, 0)))
self.bricklist.append(brickNew((x * brickw * 0.8 - self.d2 - (4 * brickw * 0.8), y * (0.6 + self.d) - self.height, 0), color.yellow, False, 1, self))
self.count += 1
for x in range(2):
#self.bricklist.append(brickMedium((x * brickw - self.d2 - (3 * brickw), y * (0.6 + self.d) - self.height, 0)))
self.bricklist.append(brickNew((x * brickw * 0.8 - self.d2 - (2 * brickw * 0.8), y * (0.6 + self.d) - self.height, 0), color.orange, False, 2, self))
self.count += 1
for x in range(2):
#self.bricklist.append(brickHeavy((x * brickw - self.d2, y * (0.6 + self.d) - self.height, 0)))
self.bricklist.append(brickNew((x * brickw * 0.8 - self.d2, y * (0.6 + self.d) - self.height, 0), color.red, False, 3, self))
self.count += 1
for y in range(6):
self.bricklist.append(brickNew((brickw * 0.8 - self.d2 + (brickw * 0.8), y * (0.6 + self.d) - self.height, 0), color.red, False, 3, self))#mitte oben
self.bricklist.append(brickNew((brickw * 0.8 - self.d2 + (brickw * 0.8), y * (0.6 + self.d) + 1.65, 0), color.red, False, 3, self))#mitte unten
for y in range (14):
for x in range (2):
self.bricklist.append(brickNew((x * brickw * 0.8 - self.d2 + (3 * brickw * 0.8), y * (0.6 + self.d) - self.height, 0), color.red, False, 3, self))
#self.bricklist.append(brickWin())
self.bricklist.append(brickNew((-0.1, 0, 0), color.green, True, 4, self))
self.count += 1
##--world--##