def backupIntervalContent(): global blocks, ball, paddle_top, paddle_bottom, border_top, border_bottom, border_left, border_right global keyDowns, ballActive, blockHealth, blockHealthDownList # Paddle move on keys if not "Shift_L" in keyDowns: v = geo.Vector(0, 0) if "a" in keyDowns or "Left" in keyDowns: v -= geo.Vector(paddleSpeedOnKey, 0) if "d" in keyDowns or "Right" in keyDowns: v += geo.Vector(paddleSpeedOnKey, 0) paddle_top.setv(v) paddle_bottom.setv(v) paddle_top.move() paddle_bottom.move() if paddle_top.particle.pos.x < windowDm[0] / 2 - borderOffsetLeftRight: paddle_top.setp( geo.Point(windowDm[0] / 2 - borderOffsetLeftRight, paddle_top.particle.pos.y)) if paddle_top.particle.pos.x > windowDm[0] / 2 + borderOffsetLeftRight: paddle_top.setp( geo.Point(windowDm[0] / 2 + borderOffsetLeftRight, paddle_top.particle.pos.y)) if paddle_bottom.particle.pos.x < windowDm[ 0] / 2 - borderOffsetLeftRight: paddle_bottom.setp( geo.Point(windowDm[0] / 2 - borderOffsetLeftRight, paddle_bottom.particle.pos.y)) if paddle_bottom.particle.pos.x > windowDm[ 0] / 2 + borderOffsetLeftRight: paddle_bottom.setp( geo.Point(windowDm[0] / 2 + borderOffsetLeftRight, paddle_bottom.particle.pos.y)) else: paddle_top.stop() paddle_bottom.stop() # Ball collisions f_pt = paddle_top.helpColli(ball) f_pb = paddle_bottom.helpColli(ball) f_bt = border_top.helpColli(ball) f_bb = border_bottom.helpColli(ball) border_left.helpColli(ball) border_right.helpColli(ball) for i in range(len(blocks)): if blockHealth[i] == 0: continue f_tmp = blocks[i].helpColli(ball) if ballActive and f_tmp: blockHealth[i] -= 1 if not i in blockHealthDownList: blockHealthDownList.append(i) ball.resolveColli() ball.move() if f_bt or f_bb: ballActive = 2 if f_pt or f_pb: ballActive = 3 pass
def __init__(self, canv, centerX, centerY, width, height): self.rect = canv.create_rectangle(centerX - width / 2, centerY - height / 2, centerX + width / 2, centerY + height / 2, state = "hidden") self.cornerPoints = [\ geo.Point(centerX - width / 2, centerY - height / 2), \ geo.Point(centerX + width / 2, centerY - height / 2), \ geo.Point(centerX + width / 2, centerY + height / 2), \ geo.Point(centerX - width / 2, centerY + height / 2)\ ] self.sideSegments = [\ geo.LineSegment(self.cornerPoints[0], self.cornerPoints[1]), \ geo.LineSegment(self.cornerPoints[1], self.cornerPoints[2]), \ geo.LineSegment(self.cornerPoints[2], self.cornerPoints[3]), \ geo.LineSegment(self.cornerPoints[3], self.cornerPoints[0])\ ] self.canv = canv
def startGame(event): global interval, wnd, canv global ball ball.setv( (geo.Point(event.x, event.y) - ball.particle.pos).unit() * ballSpeed) # print(ball.particle.vel) interval.start() pass
def __init__(self, canv, centerX, centerY, radius): self.particle = phys.Particle(pos = geo.Point(centerX, centerY)) self.circle = canv.create_oval(centerX - radius, centerY - radius, centerX + radius, centerY + radius, state = "hidden") self.filledCircle = geo.FilledCircle(self.particle.pos.copy(), radius) self.canv = canv self.on = False self.colliPoints = [] self.touching = []
def movePaddlesToCursorX(x): global paddle_top, paddle_bottom, keyDowns if not "Shift_L" in keyDowns: return paddle_top.setp(geo.Point(x, paddle_top.particle.pos.y)) paddle_bottom.setp(geo.Point(x, paddle_bottom.particle.pos.y))
def __init__(self, pos=geo.Point(0, 0), vel=geo.Vector(0, 0)): self.pos = pos.copy() self.vel = vel.copy() self.playing = False
def setPos(self, pos=geo.Point(0, 0)): self.pos = pos.copy()