From e2890340d2a523a21f67c7fa6fa3ef7eee9e2026 Mon Sep 17 00:00:00 2001 From: markojozsef Date: Wed, 9 Sep 2026 12:53:15 +0200 Subject: [PATCH] gamestatek --- .gitignore | 2 ++ mkvenv.bat | 2 ++ res/sprite/louisb.png | Bin 0 -> 244 bytes res/sprite/louisd.png | Bin 0 -> 260 bytes res/sprite/louisl.png | Bin 0 -> 240 bytes res/sprite/louisu.png | Bin 0 -> 267 bytes run.bat | 1 + src/assets.py | 12 +++++++++ src/gamestate.py | 19 ++++++++++++++ src/gamestates/none.py | 11 +++++++++ src/gamestates/title.py | 12 +++++++++ src/main.py | 53 ++++++++++++++++++++++++++++++++++++++++ 12 files changed, 112 insertions(+) create mode 100644 .gitignore create mode 100644 mkvenv.bat create mode 100644 res/sprite/louisb.png create mode 100644 res/sprite/louisd.png create mode 100644 res/sprite/louisl.png create mode 100644 res/sprite/louisu.png create mode 100644 run.bat create mode 100644 src/assets.py create mode 100644 src/gamestate.py create mode 100644 src/gamestates/none.py create mode 100644 src/gamestates/title.py create mode 100644 src/main.py 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 0000000000000000000000000000000000000000..e57654fe5b4167cff6e4adfc7f7eafac5bb692e9 GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRm!3HEhFR0}KQjEnx?oNz1PwLbIIV|apzK#qG z8~eHcB(ehe3dtTpz6=aiY77hwEes65fI|H(?D8gCb5n0T@pr;JNj1^1m%YcIHC7!;n?5{XEx#T1cuAKV-C}iR3 z;uvCaIypgtbuokW5B{Sfk_Q~tDEhcaxou($`N(vW?XUV#Q=cteZi^1LO!PR~Gi6tT d2u~IRgXLS^-}4d|xB|^!@O1TaS?83{1OO_^M2Y|a literal 0 HcmV?d00001 diff --git a/res/sprite/louisd.png b/res/sprite/louisd.png new file mode 100644 index 0000000000000000000000000000000000000000..7e6251f8ed0deda64ead02dfce8147625d3acccb GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRm!3HEhFR0}KQjEnx?oNz1PwLbIIV|apzK#qG z8~eHcB(ehe3dtTpz6=aiY77hwEes65fI|H(?D8gCb5n0T@pr;JNj1^1m%YcIHC7!;n?5{XExnw!M8{cyW3VC?C zIEGl9PEL?`^T1w_)o02rgRBE97@4yU)UVpv5b*4$zX$IwZi&v5jUl`)PH~DaRAclM tZfX0d?CP2*!Yr}!Wz+vDY#M&d3=;+Tq=nnU!hmKnc)I$ztaD0e0szK`NdEu; literal 0 HcmV?d00001 diff --git a/res/sprite/louisl.png b/res/sprite/louisl.png new file mode 100644 index 0000000000000000000000000000000000000000..e52036809d808c9c545767e704082328b01e6059 GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRm!3HEhFR0}KQjEnx?oNz1PwLbIIV|apzK#qG z8~eHcB(ehe3dtTpz6=aiY77hwEes65fI|H(?D8gCb5n0T@pr;JNj1^1m%YcIHC7!;n?5{XExn#}Ef)2j{3YmDi zIEGl9PEL?uZI=EcFL3t1=2f41b>m4H49a$m|8Iy)cy#GMv(R^+Ed?j*vm}kU+JFvc Y+`;$b&duL@f%+LdUHx3vIVCg!05jD@J^%m! literal 0 HcmV?d00001 diff --git a/res/sprite/louisu.png b/res/sprite/louisu.png new file mode 100644 index 0000000000000000000000000000000000000000..8e0a13a54ff02f4c59d3e75498bf90575735c755 GIT binary patch literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRm!3HEhFR0}KQjEnx?oNz1PwLbIIV|apzK#qG z8~eHcB(ehe3dtTpz6=aiY77hwEes65fI|H(?D8gCb5n0T@pr;JNj1^1m%YcIHC7!;n?5{XExtNWf)>&u)h5S8T z978NlCnrd-_OLwpKY4+e^W*xW*st@2^#3k5;rTaN!i`6Vh3B7t9z)QZt^bcm9q?#U z>~U7t{J-4bC;uc7FZ;7TTQ<$iV4jhYYJHJ`!9-X1|C!IuD}Y8bc)I$ztaD0e0stum BPgwu} literal 0 HcmV?d00001 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