adds game
This commit is contained in:
parent
4496ba0811
commit
50e4712545
24 changed files with 528 additions and 0 deletions
49
level.py
Normal file
49
level.py
Normal file
|
@ -0,0 +1,49 @@
|
|||
from math import sqrt
|
||||
from typing import Union
|
||||
from enemy import *
|
||||
|
||||
class Level:
|
||||
def __init__(self, level_gen):
|
||||
self.level_gen = level_gen
|
||||
self.steps = 0
|
||||
self.length = 40
|
||||
|
||||
|
||||
def get_next_step(self) -> Union[Enemy, None]:
|
||||
self.steps += 1
|
||||
return self.level_gen(self.steps)
|
||||
|
||||
|
||||
class LevelLibrary:
|
||||
def __init__(self, levels):
|
||||
self.levels = levels
|
||||
self.current_level = 0
|
||||
|
||||
def __iter__(self):
|
||||
return self
|
||||
|
||||
def __next__(self):
|
||||
next_level = self.get_level(self.current_level)
|
||||
|
||||
if next_level is None:
|
||||
raise StopIteration
|
||||
|
||||
self.current_level += 1
|
||||
return next_level
|
||||
|
||||
def get_level(self, level_number: int) -> Union[Level, None]:
|
||||
if level_number >= len(self.levels):
|
||||
return None
|
||||
else:
|
||||
return Level(self.levels[level_number])
|
||||
|
||||
|
||||
level_lib = LevelLibrary(
|
||||
[
|
||||
lambda step : Goblin() if step%2==0 else Empty(),
|
||||
lambda step : Goblin() if step%3==0 else Empty(),
|
||||
lambda step : Goblin() if step%4==0 else KnifeRat() if step%2==0 else Empty(),
|
||||
lambda step : Slime() if sqrt((step * 8) + 1).is_integer() else Empty(),
|
||||
lambda step : KnifeRat() if step%3==0 and step%5==0 else Goblin() if step%3==0 else Slime() if step%5==0 else Empty(),
|
||||
]
|
||||
)
|
Loading…
Add table
Add a link
Reference in a new issue