added a medieval like font
added the textbox for the buttons (not just any blank color) added function for exiting the game
This commit is contained in:
parent
51a287ba66
commit
f8e491f2a5
4 changed files with 46 additions and 14 deletions
BIN
art/textbox.png
BIN
art/textbox.png
Binary file not shown.
|
Before Width: | Height: | Size: 607 B After Width: | Height: | Size: 644 B |
35
classes.py
35
classes.py
|
|
@ -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
BIN
fonts/medieval.ttf
Normal file
Binary file not shown.
25
main.py
25
main.py
|
|
@ -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()
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue