switching
This commit is contained in:
parent
89646260c0
commit
5eb52fd0cf
@ -5,6 +5,6 @@ c = Circle()
|
|||||||
|
|
||||||
g = Group().pos(400, 300)
|
g = Group().pos(400, 300)
|
||||||
for r in range(20, 50, 5):
|
for r in range(20, 50, 5):
|
||||||
Circle(g).radius(r).color(*Color.random()).z_index(-r)
|
Circle(g).radius(r).color(Color.random()).z_index(-r)
|
||||||
for r in range(60, 150, 10):
|
for r in range(60, 150, 10):
|
||||||
Circle(g).radius(r).color(*Color.random()).z_index(-r)
|
Circle(g).radius(r).color(Color.random()).z_index(-r)
|
||||||
|
@ -1,8 +1,5 @@
|
|||||||
import sys
|
import sys
|
||||||
import time
|
from pathlib import Path
|
||||||
import copy
|
|
||||||
import random
|
|
||||||
import math
|
|
||||||
import pygame
|
import pygame
|
||||||
import importlib
|
import importlib
|
||||||
import typer
|
import typer
|
||||||
@ -11,11 +8,17 @@ from .world import world
|
|||||||
FPS = 60
|
FPS = 60
|
||||||
MS_PER_FRAME = 1000 / 60
|
MS_PER_FRAME = 1000 / 60
|
||||||
|
|
||||||
def main(modname: str):
|
|
||||||
pygame.init()
|
|
||||||
world.init()
|
|
||||||
pygame.display.set_caption("Doodles")
|
|
||||||
|
|
||||||
|
def get_examples():
|
||||||
|
module_path = Path(__file__).parent / "examples"
|
||||||
|
submodules = [
|
||||||
|
file.stem for file in module_path.glob("*.py") if file.name != "__init__.py"
|
||||||
|
]
|
||||||
|
return submodules
|
||||||
|
|
||||||
|
def load_module(modname):
|
||||||
|
pygame.display.set_caption("doodles: " + modname)
|
||||||
|
world.clear()
|
||||||
try:
|
try:
|
||||||
# try fully-qualified first
|
# try fully-qualified first
|
||||||
mod = importlib.import_module(modname)
|
mod = importlib.import_module(modname)
|
||||||
@ -24,7 +27,22 @@ def main(modname: str):
|
|||||||
try:
|
try:
|
||||||
mod = importlib.import_module("doodles.examples." + modname)
|
mod = importlib.import_module("doodles.examples." + modname)
|
||||||
except ImportError:
|
except ImportError:
|
||||||
raise ImportError(f"Tried to import {modname} and doodles.examples.{modname}")
|
raise ImportError(
|
||||||
|
f"Tried to import {modname} and doodles.examples.{modname}"
|
||||||
|
)
|
||||||
|
return mod
|
||||||
|
|
||||||
|
|
||||||
|
def main(modname: str = None):
|
||||||
|
pygame.init()
|
||||||
|
world.init()
|
||||||
|
|
||||||
|
examples = get_examples()
|
||||||
|
ex_index = 0
|
||||||
|
if modname:
|
||||||
|
load_module(modname)
|
||||||
|
else:
|
||||||
|
load_module(examples[ex_index])
|
||||||
|
|
||||||
elapsed = last_update = 0
|
elapsed = last_update = 0
|
||||||
|
|
||||||
@ -33,6 +51,13 @@ def main(modname: str):
|
|||||||
if event.type == pygame.QUIT:
|
if event.type == pygame.QUIT:
|
||||||
pygame.quit()
|
pygame.quit()
|
||||||
sys.exit()
|
sys.exit()
|
||||||
|
elif event.type == pygame.KEYDOWN:
|
||||||
|
if event.key == pygame.K_RIGHT:
|
||||||
|
ex_index = (ex_index + 1) % len(examples)
|
||||||
|
load_module(examples[ex_index])
|
||||||
|
elif event.key == pygame.K_LEFT:
|
||||||
|
ex_index = (ex_index - 1) % len(examples)
|
||||||
|
load_module(examples[ex_index])
|
||||||
elapsed = pygame.time.get_ticks() - last_update
|
elapsed = pygame.time.get_ticks() - last_update
|
||||||
while elapsed > MS_PER_FRAME:
|
while elapsed > MS_PER_FRAME:
|
||||||
elapsed -= MS_PER_FRAME
|
elapsed -= MS_PER_FRAME
|
||||||
|
@ -54,6 +54,9 @@ class World:
|
|||||||
raise ValueError("Can't initialize world twice!")
|
raise ValueError("Can't initialize world twice!")
|
||||||
self.screen = pygame.display.set_mode((world.WIDTH, world.HEIGHT))
|
self.screen = pygame.display.set_mode((world.WIDTH, world.HEIGHT))
|
||||||
|
|
||||||
|
def clear(self):
|
||||||
|
self._drawables = []
|
||||||
|
|
||||||
def add(self, drawable):
|
def add(self, drawable):
|
||||||
self._drawables.append(drawable)
|
self._drawables.append(drawable)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user