commit e2890340d2a523a21f67c7fa6fa3ef7eee9e2026 Author: markojozsef Date: Wed Sep 9 12:53:15 2026 +0200 gamestatek diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8570be3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +src/__pycache__/* +src/gamestates/__pycache__/* \ No newline at end of file diff --git a/mkvenv.bat b/mkvenv.bat new file mode 100644 index 0000000..7f6ba40 --- /dev/null +++ b/mkvenv.bat @@ -0,0 +1,2 @@ +python -m venv venv +.\venv\Scripts\pip install pygame \ No newline at end of file diff --git a/res/sprite/louisb.png b/res/sprite/louisb.png new file mode 100644 index 0000000..e57654f Binary files /dev/null and b/res/sprite/louisb.png differ diff --git a/res/sprite/louisd.png b/res/sprite/louisd.png new file mode 100644 index 0000000..7e6251f Binary files /dev/null and b/res/sprite/louisd.png differ diff --git a/res/sprite/louisl.png b/res/sprite/louisl.png new file mode 100644 index 0000000..e520368 Binary files /dev/null and b/res/sprite/louisl.png differ diff --git a/res/sprite/louisu.png b/res/sprite/louisu.png new file mode 100644 index 0000000..8e0a13a Binary files /dev/null and b/res/sprite/louisu.png differ diff --git a/run.bat b/run.bat new file mode 100644 index 0000000..8fddffb --- /dev/null +++ b/run.bat @@ -0,0 +1 @@ +.\venv\Scripts\python.exe .\src\main.py \ No newline at end of file diff --git a/src/assets.py b/src/assets.py new file mode 100644 index 0000000..9dec923 --- /dev/null +++ b/src/assets.py @@ -0,0 +1,12 @@ +import pygame +sprites = { + "louisu": pygame.image.load("res/sprite/louisu.png"), + "louisd": pygame.image.load("res/sprite/louisd.png"), + "louisl": pygame.image.load("res/sprite/louisl.png"), + "louisb": pygame.image.load("res/sprite/louisb.png"), +} + + +def convert(): + for name, image in sprites.items(): + sprites[name] = image.convert_alpha() \ No newline at end of file diff --git a/src/gamestate.py b/src/gamestate.py new file mode 100644 index 0000000..20c7c8d --- /dev/null +++ b/src/gamestate.py @@ -0,0 +1,19 @@ +import gamestates.none +import gamestates.title + +gamestates = { + "none": gamestates.none, + "title": gamestates.title +} +gamestate = "none" + +def switch_gamestate(state): + global gamestate + gamestate = state + gamestates[gamestate].switch() + +def update(dt): + gamestates[gamestate].update(dt) + +def draw(screen): + gamestates[gamestate].draw(screen) \ No newline at end of file diff --git a/src/gamestates/none.py b/src/gamestates/none.py new file mode 100644 index 0000000..852864e --- /dev/null +++ b/src/gamestates/none.py @@ -0,0 +1,11 @@ +import gamestate + +def switch(): + pass + +def update(dt): + gamestate.switch_gamestate("title") + +def draw(screen): + pass + diff --git a/src/gamestates/title.py b/src/gamestates/title.py new file mode 100644 index 0000000..49e43e4 --- /dev/null +++ b/src/gamestates/title.py @@ -0,0 +1,12 @@ +import assets + +def switch(): + print("Hello I'm switched") + +def update(dt): + pass + +def draw(screen): + screen.fill("blue") + screen.blit(assets.sprites["louisu"], (0, 0)) + diff --git a/src/main.py b/src/main.py new file mode 100644 index 0000000..99bacce --- /dev/null +++ b/src/main.py @@ -0,0 +1,53 @@ +import pygame +import assets +import gamestate + +pygame.init() + +GAME_WIDTH = 256 +GAME_HEIGHT = 224 + +screen = pygame.display.set_mode((GAME_WIDTH, GAME_HEIGHT), pygame.RESIZABLE) +pygame.display.set_caption("Rick Roll To The Moon") +clock = pygame.time.Clock() +running = True +dt = 0 + +game_screen = pygame.Surface((GAME_WIDTH, GAME_HEIGHT)) + +assets.convert() + +while running: + for event in pygame.event.get(): + if event.type == pygame.QUIT: + running = False + + gamestate.update(dt) + gamestate.draw(game_screen) + + screen.fill((0, 0, 0)) + + scale = min( + screen.get_width() // GAME_WIDTH, + screen.get_height() // GAME_HEIGHT + ) + scale = max(1, scale) + + scaled_width = GAME_WIDTH * scale + scaled_height = GAME_HEIGHT * scale + + x = (screen.get_width() - scaled_width) // 2 + y = (screen.get_height() - scaled_height) // 2 + + scaled_surface = pygame.transform.scale( + game_screen, + (scaled_width, scaled_height) + ) + + screen.blit(scaled_surface, (x, y)) + + pygame.display.flip() + + dt = clock.tick(60) / 1000 + +pygame.quit() \ No newline at end of file