diff --git a/common.py b/common.py index a157bb16032c186afd2b22da370002a40fbb9255..8260a12fd4211d8217e133a739d3906c1e77ed56 100644 --- a/common.py +++ b/common.py @@ -84,6 +84,16 @@ class Score: def get(self): return self.points +class Background: + def update(self, tick): + pass + + def draw(self): + pass + + def typed(self, key): + pass + def explode(x, y, color, count, size): for i in range(0, count): a = 6.282 * random() diff --git a/enemies.py b/enemies.py index fea3cdb529c4b7443f4ba94f705955d6a47579ee..6a81001a387988b64044f528af5b11ff06666c6f 100644 --- a/enemies.py +++ b/enemies.py @@ -21,7 +21,7 @@ class Enemy: self.y += 1 / len(self.text) else: self.y += 1 - + if self.y > height: objects.remove(self) @@ -77,13 +77,58 @@ class BigFighter(Enemy): score.inc(3) super().hit() +class WordFighter(Enemy): + img = pygame.transform.smoothscale(pygame.image.load("fighter2.png"), (30, 30)) + + def __init__(self, text, x, y): + super().__init__(text, x, y) + + def draw(self): + if self.y < 0: + return + + super().draw() + screen.blit(self.img, (self.x - self.img.get_width() / 2, self.y - self.img.get_height())) + + def hit(self): + score.inc(1) + super().hit() + +class CrossFighter(Enemy): + img = pygame.transform.rotate(pygame.transform.smoothscale(pygame.image.load("fighter2.png"), (30, 30)), -90) + + def __init__(self, text, x, y): + super().__init__(text, x, y) + + def update(self, tick): + self.x -= 1 + + if self.x < 0: + objects.remove(self) + + if random() < 0.2: + objects.append(Spark(self.x + 15, self.y - 23, random(), -0.5 + random(), (255, 255, 255 * random()), 1)) + if random() < 0.2: + objects.append(Spark(self.x + 15, self.y - 10, random(), -0.5 + random(), (255, 255, 255 * random()), 1)) + + def draw(self): + if self.x < 0: + return + + super().draw() + screen.blit(self.img, (self.x - self.img.get_width() / 2, self.y - self.img.get_height())) + + def hit(self): + score.inc(2) + super().hit() + class Shot(Enemy): def __init__(self, text, x, y, dx, dy): super().__init__(text, x, y) self.dx = dx self.dy = dy self.v = sqrt(self.dx * self.dx + self.dy * self.dy) - + def update(self, tick): self.x += self.dx self.y += self.dy @@ -98,7 +143,7 @@ class Shot(Enemy): self.dx = 0.95 * self.dx + 0.05 * px / pv * self.v self.dy = 0.95 * self.dy + 0.05 * py / pv * self.v - + if self.y > height: objects.remove(self) diff --git a/fighter2.png b/fighter2.png new file mode 100644 index 0000000000000000000000000000000000000000..ef408cb215aa3e481925a753c0947450027d4a05 Binary files /dev/null and b/fighter2.png differ diff --git a/level1.py b/level1.py index ec15984b3a152e1c8ce16ab0e529b8f376b96eac..0d7e9df6b0b8f2d0e281cfdaa52aebbff8977f99 100644 --- a/level1.py +++ b/level1.py @@ -1,8 +1,10 @@ +from common import Background from enemies import Fighter, Boss from objects import Text def level1(objects, tick): if tick == 1: + objects.append(Background()) objects.append(Text("Level 1", 50)) objects.append(Text("Zeigefinger auf f und j", 100)) elif tick < 2000: diff --git a/level11.py b/level11.py new file mode 100644 index 0000000000000000000000000000000000000000..0b0f0b14dfd5c991813531b09acfd9a7424d2ffa --- /dev/null +++ b/level11.py @@ -0,0 +1,64 @@ +from enemies import Fighter, WordFighter, Shooter, Boss +from objects import Text +from random import random, choice + +# Needs 20 +words = [ + "wo", + "wer", + "was", + "wieso", + "wert", + "wort", + "wasser", + "ort", + "rot", + "tor", + "rotor", + "foto", + "hort", + "wohl", + "hol", + "löwe", + "weder", + "los", + "wie", + "weil", + "sowohl", + "doof", + "sofort", + "warte", +] + +def word(): + result = choice(words) + words.remove(result) + return result + +def level11(objects, tick): + if tick == 1: + objects.append(Text("Level 11", 50)) + objects.append(Text("Ringfinger auch für w und o", 100)) + elif tick < 2000: + if tick % 400 == 0: + objects.append(Fighter("w", 100, 0)) + objects.append(Fighter("w", 150, 0)) + objects.append(Fighter("o", 650, 0)) + objects.append(Fighter("o", 700, 0)) + elif tick < 4000: + if tick % 400 == 0: + objects.append(Shooter(word(), 200, 0, "asdfjklö")) + objects.append(Shooter(word(), 600, 0, "asdfjklö")) + if tick % 400 == 200: + objects.append(WordFighter(word(), 250, 0)) + objects.append(WordFighter(word(), 550, 0)) + elif tick == 4000: + if tick % 400 == 0: + objects.append(WordFighter("was", 200, 0)) + objects.append(WordFighter("ist", 250, 0)) + objects.append(WordFighter("hier", 550, 0)) + objects.append(WordFighter("los", 600, 0)) + elif tick == 5200: + objects.append(Boss("wieso das alles", 400, 0)) + elif tick == 6000: + return True diff --git a/level12.py b/level12.py new file mode 100644 index 0000000000000000000000000000000000000000..a0b07732a0b915f69305f886ebc2c7b6007db2d8 --- /dev/null +++ b/level12.py @@ -0,0 +1,66 @@ +from enemies import Fighter, WordFighter, CrossFighter, Shooter, Boss +from objects import Text +from random import random, choice + +# Needs 20 +words = [ + "quer", + "qualle", + "quo", + "qi", + "quant", + "po", + "papa", + "person", + "stop", + "pi", + "popel", + "top", + "pott", + "pass", + "pelle", + "puh", + "pille", + "app", + "depp", + "klippe", + "kopf", + "kuppel", + "loipe", + "quest", +] + +def word(): + result = choice(words) + words.remove(result) + return result + +def level12(objects, tick): + if tick == 1: + objects.append(Text("Level 12", 50)) + objects.append(Text("Kleine Finger auch für q und p", 100)) + elif tick < 2000: + if tick % 400 == 0: + objects.append(Fighter("q", 100, 0)) + objects.append(Fighter("q", 150, 0)) + objects.append(Fighter("p", 650, 0)) + objects.append(Fighter("p", 700, 0)) + elif tick < 4000: + if tick % 400 == 0: + objects.append(Shooter(word(), 200, 0, "asdfjklö")) + objects.append(Shooter(word(), 600, 0, "asdfjklö")) + if tick % 400 == 200: + objects.append(WordFighter(word(), 250, 0)) + objects.append(WordFighter(word(), 550, 0)) + elif tick == 4000: + objects.append(CrossFighter("quer", 800, 150)) + elif tick == 4200: + objects.append(CrossFighter("fliegt", 800, 150)) + elif tick == 4400: + objects.append(CrossFighter("wer", 800, 150)) + elif tick == 4600: + objects.append(CrossFighter("siegt", 800, 150)) + elif tick == 5200: + objects.append(Boss("papperlapapp", 400, 0)) + elif tick == 6000: + return True diff --git a/typespace.py b/typespace.py index d721ccafc0a09ef9b9bd184c7f009f30c8cc3ef6..3534b0ed76d88c8f629917bc2519a33edac75f5d 100755 --- a/typespace.py +++ b/typespace.py @@ -36,10 +36,12 @@ from level7 import level7 from level8 import level8 from level9 import level9 from level10 import level10 +from level11 import level11 +from level12 import level12 from won import won -levels = [level1, level2, level3, level4, level5, level6, level7, level8, level9, level10, won] -# levels = [level10, won] +levels = [level1, level2, level3, level4, level5, level6, level7, level8, level9, level10, level11, level12, won] +# levels = [level12, won] level = levels.pop(0) clock = pygame.time.Clock() completed = False