import math import random import time class Kart: def __init__(self, name, color, acceleration, vMax, handling): self.vMax = vMax self.name = name self.color = color self.speed = 0 self.rotation = 0 self.handling = handling self.position = [0, 0] self.acceleration = acceleration self.lastRam = 0 self.knockback = [0, 0] def acc(self, brk): #brk is true or false if brk == False: if self.speed < self.vMax: self.speed += self.acceleration elif brk: if self.speed > -(self.vMax / 2): self.speed -= self.acceleration * 0.5 else: if self.speed != 0: self.speed -= self.speed / 50 def turn(self, dir): #dir = 1 or -1 self.rotation += dir * self.handling def pos(self): # normale Eigenbewegung self.position[0] += math.cos(math.radians(self.rotation)) * self.speed self.position[1] += math.sin(math.radians(self.rotation)) * self.speed # Bewegung durch Rammen self.position[0] += self.knockback[0] self.position[1] += self.knockback[1] # Knockback langsam abbauen self.knockback[0] *= 0.90 self.knockback[1] *= 0.90 if self.speed > 5: self.speed *= 0.98 def ram(self, other): current = time.time() if current - self.lastRam < 1: return dx = other.position[0] - self.position[0] dy = other.position[1] - self.position[1] distance = math.sqrt(dx**2 + dy**2) if distance > 200 or distance == 0: return self.lastRam = current # Richtung VOM eigenen Kart ZUM Gegner direction_x = dx / distance direction_y = dy / distance # Das eigene Kart macht einen schnellen Satz zum Gegner self.speed = 10 # Gegner fliegt in Bewegungsrichtung des Angreifers weg knockbackSpeed = 18 other.knockback[0] = direction_x * knockbackSpeed other.knockback[1] = direction_y * knockbackSpeed class Item: def __init__(self, type): self.type = type self.color = (255, 255, 255) def typ(self): if self.type == "pool": self.color = (0, 0, 200)