Development #57

Merged
Spafi merged 66 commits from Development into main 2024-03-03 13:28:46 +01:00
4 changed files with 46 additions and 14 deletions
Showing only changes of commit f8e491f2a5 - Show all commits

Binary file not shown.

After

Width:  |  Height:  |  Size: 644 B

View file

@ -1,6 +1,7 @@
import pygame import pygame
font = pygame.font.SysFont('Arial', 40) pygame.font.init()
font = pygame.font.Font('fonts/medieval.ttf', 48)
class Button(): class Button():
def __init__(self, x, y, width, height, buttonText='Button', onclickFunction=None, onePress=False): def __init__(self, x, y, width, height, buttonText='Button', onclickFunction=None, onePress=False):
@ -12,14 +13,30 @@ class Button():
self.onePress = onePress self.onePress = onePress
self.alreadyPressed = False self.alreadyPressed = False
self.fillColors = { with open('art/textbox.png', 'r') as tb:
'normal': '#ffffff', self.box = pygame.image.load(tb)
'hover': '#666666', self.box = pygame.transform.scale(self.box, (width, height))
'pressed': '#333333',
}
self.buttonSurface = pygame.Surface((self.width, self.height))
self.buttonRect = pygame.Rect(self.x, self.y, self.width, self.height) self.buttonRect = pygame.Rect(self.x, self.y, self.width, self.height)
self.buttonSurf = font.render(buttonText, True, (20, 20, 20)) self.buttonSurf = font.render(buttonText, True, '#baab80')
return self
def process(self, screen):
mousePos = pygame.mouse.get_pos()
if self.buttonRect.collidepoint(mousePos):
#self.buttonSurface.fill(self.fillColors['hover'])
if pygame.mouse.get_pressed(num_buttons=3)[0]:
#self.buttonSurface.fill(self.fillColors['pressed'])
if self.onePress:
self.onclickFunction()
elif not self.alreadyPressed:
self.onclickFunction()
self.alreadyPressed = True
else:
self.alreadyPressed = False
self.box.blit(self.buttonSurf, [
self.buttonRect.width/2 - self.buttonSurf.get_rect().width/2,
self.buttonRect.height/2 - self.buttonSurf.get_rect().height/2
])
screen.blit(self.box, self.buttonRect)

BIN
fonts/medieval.ttf Normal file

Binary file not shown.

25
main.py
View file

@ -2,6 +2,7 @@ import pygame
import sys import sys
import json import json
import time import time
from classes import *
def setUp(config): def setUp(config):
pygame.init() pygame.init()
@ -10,18 +11,30 @@ def setUp(config):
else: else:
screen = pygame.display.set_mode(config["res"]) screen = pygame.display.set_mode(config["res"])
clock = pygame.time.Clock() clock = pygame.time.Clock()
with open('art/textbox.png', 'r') as tb:
box = pygame.image.load(tb) return screen, clock, True, True, "start.png", []
return screen, clock, True, True, "start.png", box
def readConfig(): def readConfig():
with open('config.json', 'r') as c: with open('config.json', 'r') as c:
json_data = c.read() json_data = c.read()
return json.loads(json_data) return json.loads(json_data)
def quitGame():
#save progress somehow, if needed
pygame.quit()
sys.exit()
def uwu():
print('uwu')
def main(): def main():
config = readConfig() config = readConfig()
screen, clock, running, background, isblack, box = setUp(config["screen"]) screen, clock, running, isblack, background, objects = setUp(config["screen"])
WIDTH, HEIGHT = screen.get_size()
objects.append(Button(WIDTH / 2 - 80, HEIGHT / 2 + 72, 160, 64, "Exit game", quitGame))
objects.append(Button(WIDTH / 2 - 80, HEIGHT / 2, 160, 64, "Options", uwu))
objects.append(Button(WIDTH / 2 - 80, HEIGHT / 2 - 72, 160, 64, "Play", uwu))
print(objects)
while running: while running:
for event in pygame.event.get(): for event in pygame.event.get():
@ -31,7 +44,7 @@ def main():
if not isblack: if not isblack:
with open(background, 'r') as i: with open(background, 'r') as i:
bg = pygame.image.load(i) bg = pygame.image.load(i)
bg = pygame.transform.scale(bg, screen.get_size()) bg = pygame.transform.scale(bg, (WIDTH, HEIGHT))
# fill the screen with a color to wipe away anything from last frame # fill the screen with a color to wipe away anything from last frame
screen.blit(bg, (0, 0)) screen.blit(bg, (0, 0))
@ -39,6 +52,8 @@ def main():
else: else:
screen.fill('#000000') screen.fill('#000000')
for obj in objects:
obj.process(screen)
# flip() the display to put your work on screen # flip() the display to put your work on screen
pygame.display.flip() pygame.display.flip()