finished UI layout;
6
colors.py
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
BLACK = (0, 0, 0)
|
||||||
|
WHITE = (255, 255, 255)
|
||||||
|
ORANGE = (249, 141, 42)
|
||||||
|
RED = (255, 58, 58)
|
||||||
|
|
||||||
|
FONT_DARK = (37, 37, 37)
|
23
constants.py
@ -2,11 +2,12 @@ GAME_TITLE = 'WMICraft'
|
|||||||
WINDOW_HEIGHT = 800
|
WINDOW_HEIGHT = 800
|
||||||
WINDOW_WIDTH = 1360
|
WINDOW_WIDTH = 1360
|
||||||
GRID_CELL_PADDING = 5
|
GRID_CELL_PADDING = 5
|
||||||
GRID_CELL_WIDTH = 54
|
GRID_CELL_WIDTH = 36
|
||||||
GRID_CELL_HEIGHT = 54
|
GRID_CELL_HEIGHT = 36
|
||||||
ROWS = 13
|
ROWS = 19
|
||||||
COLUMNS = 16
|
COLUMNS = 24
|
||||||
BORDER_WIDTH = 15
|
BORDER_WIDTH = 10
|
||||||
|
BORDER_RADIUS = 5
|
||||||
FPS_COUNT = 60
|
FPS_COUNT = 60
|
||||||
TILES = [
|
TILES = [
|
||||||
'grass1.png',
|
'grass1.png',
|
||||||
@ -17,15 +18,5 @@ TILES = [
|
|||||||
# 'grass6.png',
|
# 'grass6.png',
|
||||||
'sand.png',
|
'sand.png',
|
||||||
'water.png',
|
'water.png',
|
||||||
# 'grass_with_tree.jpg',
|
'grass_with_tree.jpg',
|
||||||
]
|
|
||||||
OBJECTS = [
|
|
||||||
{
|
|
||||||
'name': 'tree',
|
|
||||||
'location': 'tree1.png'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'name': 'knight',
|
|
||||||
'location': 'knight.png'
|
|
||||||
}
|
|
||||||
]
|
]
|
30
game.py
@ -1,10 +1,12 @@
|
|||||||
import pygame, sys
|
import pygame
|
||||||
from glob import glob
|
import sys
|
||||||
|
|
||||||
from grid import Grid
|
from colors import FONT_DARK, WHITE
|
||||||
from constants import GAME_TITLE, WINDOW_WIDTH, WINDOW_HEIGHT, FPS_COUNT, TILES
|
from constants import GAME_TITLE, WINDOW_WIDTH, WINDOW_HEIGHT, FPS_COUNT, TILES
|
||||||
from stats import Stats
|
from grid import Grid
|
||||||
from helpers import draw_text
|
from helpers import draw_text
|
||||||
|
from logs import Logs
|
||||||
|
from stats import Stats
|
||||||
|
|
||||||
|
|
||||||
class Game:
|
class Game:
|
||||||
@ -14,7 +16,6 @@ class Game:
|
|||||||
pygame.display.set_icon(pygame.image.load('resources/icons/sword.png'))
|
pygame.display.set_icon(pygame.image.load('resources/icons/sword.png'))
|
||||||
|
|
||||||
self.screen = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))
|
self.screen = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))
|
||||||
self.font = pygame.font.SysFont(None, 30)
|
|
||||||
self.clock = pygame.time.Clock()
|
self.clock = pygame.time.Clock()
|
||||||
|
|
||||||
self.tiles = []
|
self.tiles = []
|
||||||
@ -22,7 +23,7 @@ class Game:
|
|||||||
converted_tile = pygame.image.load('resources/textures/' + tile_path).convert_alpha()
|
converted_tile = pygame.image.load('resources/textures/' + tile_path).convert_alpha()
|
||||||
self.tiles.append((tile_path, converted_tile))
|
self.tiles.append((tile_path, converted_tile))
|
||||||
|
|
||||||
self.bg = pygame.image.load("resources/textures/menu_bg2.jpg")
|
self.bg = pygame.image.load("resources/textures/bg.jpg")
|
||||||
|
|
||||||
click = False
|
click = False
|
||||||
|
|
||||||
@ -31,7 +32,7 @@ class Game:
|
|||||||
self.screen.blit(self.bg, (0, 0))
|
self.screen.blit(self.bg, (0, 0))
|
||||||
|
|
||||||
pygame.draw.rect(self.screen, (255, 255, 255), pygame.Rect(800, 100, 400, 500), 0, 5)
|
pygame.draw.rect(self.screen, (255, 255, 255), pygame.Rect(800, 100, 400, 500), 0, 5)
|
||||||
draw_text('MAIN MENU', self.font, (0, 0, 0), self.screen, 850, 150)
|
draw_text('MAIN MENU', FONT_DARK, self.screen, 850, 150, 30, True)
|
||||||
|
|
||||||
mx, my = pygame.mouse.get_pos()
|
mx, my = pygame.mouse.get_pos()
|
||||||
|
|
||||||
@ -48,13 +49,13 @@ class Game:
|
|||||||
if click:
|
if click:
|
||||||
self.credits()
|
self.credits()
|
||||||
pygame.draw.rect(self.screen, (0, 191, 255), button_1, 0, 4)
|
pygame.draw.rect(self.screen, (0, 191, 255), button_1, 0, 4)
|
||||||
draw_text('PLAY', self.font, (255, 255, 255), self.screen, 870, 265)
|
draw_text('PLAY', WHITE, self.screen, 870, 255)
|
||||||
|
|
||||||
pygame.draw.rect(self.screen, (0, 191, 255), button_2, 0, 4)
|
pygame.draw.rect(self.screen, (0, 191, 255), button_2, 0, 4)
|
||||||
draw_text('OPTIONS', self.font, (255, 255, 255), self.screen, 870, 365)
|
draw_text('OPTIONS', WHITE, self.screen, 870, 355)
|
||||||
|
|
||||||
pygame.draw.rect(self.screen, (0, 191, 255), button_3, 0, 4)
|
pygame.draw.rect(self.screen, (0, 191, 255), button_3, 0, 4)
|
||||||
draw_text('CREDITS', self.font, (255, 255, 255), self.screen, 870, 465)
|
draw_text('CREDITS', WHITE, self.screen, 870, 455)
|
||||||
|
|
||||||
click = False
|
click = False
|
||||||
for event in pygame.event.get():
|
for event in pygame.event.get():
|
||||||
@ -77,7 +78,7 @@ class Game:
|
|||||||
while running:
|
while running:
|
||||||
self.screen.fill((0, 0, 0))
|
self.screen.fill((0, 0, 0))
|
||||||
|
|
||||||
draw_text('options', self.font, (255, 255, 255), self.screen, 20, 20)
|
draw_text('options', WHITE, self.screen, 20, 20, 30)
|
||||||
for event in pygame.event.get():
|
for event in pygame.event.get():
|
||||||
if event.type == pygame.QUIT:
|
if event.type == pygame.QUIT:
|
||||||
running = False
|
running = False
|
||||||
@ -93,7 +94,7 @@ class Game:
|
|||||||
while running:
|
while running:
|
||||||
self.screen.fill((0, 0, 0))
|
self.screen.fill((0, 0, 0))
|
||||||
|
|
||||||
draw_text('credits', self.font, (255, 255, 255), self.screen, 20, 20)
|
draw_text('credits', WHITE, self.screen, 20, 20, 30)
|
||||||
for event in pygame.event.get():
|
for event in pygame.event.get():
|
||||||
if event.type == pygame.QUIT:
|
if event.type == pygame.QUIT:
|
||||||
running = False
|
running = False
|
||||||
@ -108,6 +109,7 @@ class Game:
|
|||||||
running = True
|
running = True
|
||||||
grid = Grid(self.tiles)
|
grid = Grid(self.tiles)
|
||||||
stats = Stats()
|
stats = Stats()
|
||||||
|
logs = Logs()
|
||||||
|
|
||||||
while running:
|
while running:
|
||||||
self.screen.blit(self.bg, (0, 0))
|
self.screen.blit(self.bg, (0, 0))
|
||||||
@ -121,6 +123,8 @@ class Game:
|
|||||||
running = False
|
running = False
|
||||||
|
|
||||||
grid.draw(self.screen)
|
grid.draw(self.screen)
|
||||||
stats.draw(self.screen, self.font)
|
stats.draw(self.screen)
|
||||||
|
logs.draw(self.screen)
|
||||||
|
|
||||||
pygame.display.update()
|
pygame.display.update()
|
||||||
self.clock.tick(FPS_COUNT)
|
self.clock.tick(FPS_COUNT)
|
||||||
|
8
grid.py
@ -2,7 +2,7 @@ import pygame
|
|||||||
import random
|
import random
|
||||||
from field import Field
|
from field import Field
|
||||||
|
|
||||||
from constants import ROWS, COLUMNS, GRID_CELL_PADDING, GRID_CELL_WIDTH, GRID_CELL_HEIGHT, BORDER_WIDTH
|
from constants import ROWS, COLUMNS, GRID_CELL_PADDING, GRID_CELL_WIDTH, GRID_CELL_HEIGHT, BORDER_WIDTH, BORDER_RADIUS
|
||||||
|
|
||||||
|
|
||||||
class Grid:
|
class Grid:
|
||||||
@ -23,12 +23,12 @@ class Grid:
|
|||||||
def draw(self, screen):
|
def draw(self, screen):
|
||||||
bg_width = (GRID_CELL_PADDING + GRID_CELL_WIDTH) * COLUMNS + BORDER_WIDTH
|
bg_width = (GRID_CELL_PADDING + GRID_CELL_WIDTH) * COLUMNS + BORDER_WIDTH
|
||||||
bg_height = (GRID_CELL_PADDING + GRID_CELL_HEIGHT) * ROWS + BORDER_WIDTH
|
bg_height = (GRID_CELL_PADDING + GRID_CELL_HEIGHT) * ROWS + BORDER_WIDTH
|
||||||
pygame.draw.rect(screen, (255, 255, 255), pygame.Rect(10, 8, bg_width, bg_height))
|
pygame.draw.rect(screen, (255, 255, 255), pygame.Rect(5, 5, bg_width, bg_height), 0, BORDER_RADIUS)
|
||||||
|
|
||||||
for row in range(ROWS):
|
for row in range(ROWS):
|
||||||
for column in range(COLUMNS):
|
for column in range(COLUMNS):
|
||||||
box_rect = [(GRID_CELL_PADDING + GRID_CELL_WIDTH) * column + GRID_CELL_PADDING + 15,
|
box_rect = [(GRID_CELL_PADDING + GRID_CELL_WIDTH) * column + GRID_CELL_PADDING + 7,
|
||||||
(GRID_CELL_PADDING + GRID_CELL_HEIGHT) * row + GRID_CELL_PADDING + 13,
|
(GRID_CELL_PADDING + GRID_CELL_HEIGHT) * row + GRID_CELL_PADDING + 7,
|
||||||
GRID_CELL_WIDTH,
|
GRID_CELL_WIDTH,
|
||||||
GRID_CELL_HEIGHT]
|
GRID_CELL_HEIGHT]
|
||||||
image = self.grid[row][column].converted_texture
|
image = self.grid[row][column].converted_texture
|
||||||
|
11
helpers.py
@ -1,5 +1,12 @@
|
|||||||
def draw_text(text, font, color, surface, x, y):
|
import pygame
|
||||||
|
|
||||||
|
|
||||||
|
def draw_text(text, color, surface, x, y, text_size=30, is_bold=False):
|
||||||
|
if is_bold:
|
||||||
|
font = pygame.font.Font('resources/fonts/Poppins-SemiBold.ttf', text_size)
|
||||||
|
else:
|
||||||
|
font = pygame.font.Font('resources/fonts/Poppins-Regular.ttf', text_size)
|
||||||
textobj = font.render(text, 1, color)
|
textobj = font.render(text, 1, color)
|
||||||
textrect = textobj.get_rect()
|
textrect = textobj.get_rect()
|
||||||
textrect.topleft = (x, y)
|
textrect.topleft = (x, y)
|
||||||
surface.blit(textobj, textrect)
|
surface.blit(textobj, textrect)
|
||||||
|
25
logs.py
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
import pygame
|
||||||
|
|
||||||
|
from colors import FONT_DARK, ORANGE, WHITE, RED
|
||||||
|
from constants import COLUMNS, GRID_CELL_PADDING, GRID_CELL_WIDTH, BORDER_WIDTH, BORDER_RADIUS
|
||||||
|
from helpers import draw_text
|
||||||
|
|
||||||
|
|
||||||
|
class Logs:
|
||||||
|
def __init__(self):
|
||||||
|
self.grid = []
|
||||||
|
|
||||||
|
def draw(self, screen):
|
||||||
|
x = (GRID_CELL_PADDING + GRID_CELL_WIDTH) * COLUMNS + BORDER_WIDTH + 15
|
||||||
|
y = 470
|
||||||
|
|
||||||
|
# background
|
||||||
|
pygame.draw.rect(screen, WHITE, pygame.Rect(x, y, 340, 323), 0, BORDER_RADIUS)
|
||||||
|
|
||||||
|
# title
|
||||||
|
draw_text('LOGS', FONT_DARK, screen, x + 120, y + 10, 36)
|
||||||
|
pygame.draw.rect(screen, ORANGE, pygame.Rect(x, y + 65, 340, 3))
|
||||||
|
|
||||||
|
# texts
|
||||||
|
draw_text('AI Blue: Zniszczyła fortecę (4, 8).', FONT_DARK, screen, x + 35, y + 90, 16)
|
||||||
|
draw_text('AI Red: Zniszczyła fortecę (12, 5).', FONT_DARK, screen, x + 35, y + 120, 16)
|
93
resources/fonts/OFL.txt
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
Copyright 2020 The Poppins Project Authors (https://github.com/itfoundry/Poppins)
|
||||||
|
|
||||||
|
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||||
|
This license is copied below, and is also available with a FAQ at:
|
||||||
|
http://scripts.sil.org/OFL
|
||||||
|
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
PREAMBLE
|
||||||
|
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||||
|
development of collaborative font projects, to support the font creation
|
||||||
|
efforts of academic and linguistic communities, and to provide a free and
|
||||||
|
open framework in which fonts may be shared and improved in partnership
|
||||||
|
with others.
|
||||||
|
|
||||||
|
The OFL allows the licensed fonts to be used, studied, modified and
|
||||||
|
redistributed freely as long as they are not sold by themselves. The
|
||||||
|
fonts, including any derivative works, can be bundled, embedded,
|
||||||
|
redistributed and/or sold with any software provided that any reserved
|
||||||
|
names are not used by derivative works. The fonts and derivatives,
|
||||||
|
however, cannot be released under any other type of license. The
|
||||||
|
requirement for fonts to remain under this license does not apply
|
||||||
|
to any document created using the fonts or their derivatives.
|
||||||
|
|
||||||
|
DEFINITIONS
|
||||||
|
"Font Software" refers to the set of files released by the Copyright
|
||||||
|
Holder(s) under this license and clearly marked as such. This may
|
||||||
|
include source files, build scripts and documentation.
|
||||||
|
|
||||||
|
"Reserved Font Name" refers to any names specified as such after the
|
||||||
|
copyright statement(s).
|
||||||
|
|
||||||
|
"Original Version" refers to the collection of Font Software components as
|
||||||
|
distributed by the Copyright Holder(s).
|
||||||
|
|
||||||
|
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||||
|
or substituting -- in part or in whole -- any of the components of the
|
||||||
|
Original Version, by changing formats or by porting the Font Software to a
|
||||||
|
new environment.
|
||||||
|
|
||||||
|
"Author" refers to any designer, engineer, programmer, technical
|
||||||
|
writer or other person who contributed to the Font Software.
|
||||||
|
|
||||||
|
PERMISSION & CONDITIONS
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||||
|
redistribute, and sell modified and unmodified copies of the Font
|
||||||
|
Software, subject to the following conditions:
|
||||||
|
|
||||||
|
1) Neither the Font Software nor any of its individual components,
|
||||||
|
in Original or Modified Versions, may be sold by itself.
|
||||||
|
|
||||||
|
2) Original or Modified Versions of the Font Software may be bundled,
|
||||||
|
redistributed and/or sold with any software, provided that each copy
|
||||||
|
contains the above copyright notice and this license. These can be
|
||||||
|
included either as stand-alone text files, human-readable headers or
|
||||||
|
in the appropriate machine-readable metadata fields within text or
|
||||||
|
binary files as long as those fields can be easily viewed by the user.
|
||||||
|
|
||||||
|
3) No Modified Version of the Font Software may use the Reserved Font
|
||||||
|
Name(s) unless explicit written permission is granted by the corresponding
|
||||||
|
Copyright Holder. This restriction only applies to the primary font name as
|
||||||
|
presented to the users.
|
||||||
|
|
||||||
|
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||||
|
Software shall not be used to promote, endorse or advertise any
|
||||||
|
Modified Version, except to acknowledge the contribution(s) of the
|
||||||
|
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||||
|
permission.
|
||||||
|
|
||||||
|
5) The Font Software, modified or unmodified, in part or in whole,
|
||||||
|
must be distributed entirely under this license, and must not be
|
||||||
|
distributed under any other license. The requirement for fonts to
|
||||||
|
remain under this license does not apply to any document created
|
||||||
|
using the Font Software.
|
||||||
|
|
||||||
|
TERMINATION
|
||||||
|
This license becomes null and void if any of the above conditions are
|
||||||
|
not met.
|
||||||
|
|
||||||
|
DISCLAIMER
|
||||||
|
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||||
|
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||||
|
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||||
|
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||||
|
OTHER DEALINGS IN THE FONT SOFTWARE.
|
BIN
resources/fonts/Poppins-Black.ttf
Normal file
BIN
resources/fonts/Poppins-BlackItalic.ttf
Normal file
BIN
resources/fonts/Poppins-Bold.ttf
Normal file
BIN
resources/fonts/Poppins-BoldItalic.ttf
Normal file
BIN
resources/fonts/Poppins-ExtraBold.ttf
Normal file
BIN
resources/fonts/Poppins-ExtraBoldItalic.ttf
Normal file
BIN
resources/fonts/Poppins-ExtraLight.ttf
Normal file
BIN
resources/fonts/Poppins-ExtraLightItalic.ttf
Normal file
BIN
resources/fonts/Poppins-Italic.ttf
Normal file
BIN
resources/fonts/Poppins-Light.ttf
Normal file
BIN
resources/fonts/Poppins-LightItalic.ttf
Normal file
BIN
resources/fonts/Poppins-Medium.ttf
Normal file
BIN
resources/fonts/Poppins-MediumItalic.ttf
Normal file
BIN
resources/fonts/Poppins-Regular.ttf
Normal file
BIN
resources/fonts/Poppins-SemiBold.ttf
Normal file
BIN
resources/fonts/Poppins-SemiBoldItalic.ttf
Normal file
BIN
resources/fonts/Poppins-Thin.ttf
Normal file
BIN
resources/fonts/Poppins-ThinItalic.ttf
Normal file
45
resources/textures/License free.txt
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
IMPORTANT NOTICE: This license only applies if you downloaded this content as
|
||||||
|
an unsubscribed user. If you are a premium user (ie, you pay a subscription)
|
||||||
|
you are bound to the license terms described in the accompanying file
|
||||||
|
"License premium.txt".
|
||||||
|
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
You must attribute the image to its author:
|
||||||
|
|
||||||
|
In order to use a content or a part of it, you must attribute it to vectorpocket / Freepik,
|
||||||
|
so we will be able to continue creating new graphic resources every day.
|
||||||
|
|
||||||
|
|
||||||
|
How to attribute it?
|
||||||
|
|
||||||
|
For websites:
|
||||||
|
|
||||||
|
Please, copy this code on your website to accredit the author:
|
||||||
|
<a href="http://www.freepik.com">Designed by vectorpocket / Freepik</a>
|
||||||
|
|
||||||
|
For printing:
|
||||||
|
|
||||||
|
Paste this text on the final work so the authorship is known.
|
||||||
|
- For example, in the acknowledgements chapter of a book:
|
||||||
|
"Designed by vectorpocket / Freepik"
|
||||||
|
|
||||||
|
|
||||||
|
You are free to use this image:
|
||||||
|
|
||||||
|
- For both personal and commercial projects and to modify it.
|
||||||
|
- In a website or presentation template or application or as part of your design.
|
||||||
|
|
||||||
|
You are not allowed to:
|
||||||
|
|
||||||
|
- Sub-license, resell or rent it.
|
||||||
|
- Include it in any online or offline archive or database.
|
||||||
|
|
||||||
|
The full terms of the license are described in section 7 of the Freepik
|
||||||
|
terms of use, available online in the following link:
|
||||||
|
|
||||||
|
http://www.freepik.com/terms_of_use
|
||||||
|
|
||||||
|
The terms described in the above link have precedence over the terms described
|
||||||
|
in the present document. In case of disagreement, the Freepik Terms of Use
|
||||||
|
will prevail.
|
30
resources/textures/License premium.txt
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
IMPORTANT NOTICE: This license only applies if you downloaded this content as
|
||||||
|
a subscribed (or "premium") user. If you are an unsubscribed user (or "free"
|
||||||
|
user) you are bound to the license terms described in the accompanying file
|
||||||
|
"License free.txt".
|
||||||
|
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
You can download from your profile in Freepik a personalized license stating
|
||||||
|
your right to use this content as a "premium" user:
|
||||||
|
|
||||||
|
https://profile.freepik.com/my_downloads
|
||||||
|
|
||||||
|
You are free to use this image:
|
||||||
|
|
||||||
|
- For both personal and commercial projects and to modify it.
|
||||||
|
- In a website or presentation template or application or as part of your design.
|
||||||
|
|
||||||
|
You are not allowed to:
|
||||||
|
|
||||||
|
- Sub-license, resell or rent it.
|
||||||
|
- Include it in any online or offline archive or database.
|
||||||
|
|
||||||
|
The full terms of the license are described in sections 7 and 8 of the Freepik
|
||||||
|
terms of use, available online in the following link:
|
||||||
|
|
||||||
|
http://www.freepik.com/terms_of_use
|
||||||
|
|
||||||
|
The terms described in the above link have precedence over the terms described
|
||||||
|
in the present document. In case of disagreement, the Freepik Terms of Use
|
||||||
|
will prevail.
|
Before Width: | Height: | Size: 256 KiB After Width: | Height: | Size: 256 KiB |
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 156 KiB |
BIN
resources/textures/shield_blue.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
resources/textures/shield_red.png
Normal file
After Width: | Height: | Size: 16 KiB |
41
stats.py
@ -1,6 +1,7 @@
|
|||||||
import pygame
|
import pygame
|
||||||
|
|
||||||
from constants import COLUMNS, GRID_CELL_PADDING, GRID_CELL_WIDTH, BORDER_WIDTH
|
from colors import FONT_DARK, ORANGE, WHITE, RED
|
||||||
|
from constants import COLUMNS, GRID_CELL_PADDING, GRID_CELL_WIDTH, BORDER_WIDTH, BORDER_RADIUS
|
||||||
from helpers import draw_text
|
from helpers import draw_text
|
||||||
|
|
||||||
|
|
||||||
@ -8,8 +9,36 @@ class Stats:
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.grid = []
|
self.grid = []
|
||||||
|
|
||||||
def draw(self, screen, font):
|
def draw(self, screen):
|
||||||
x = (GRID_CELL_PADDING + GRID_CELL_WIDTH) * COLUMNS + BORDER_WIDTH + 20
|
x = (GRID_CELL_PADDING + GRID_CELL_WIDTH) * COLUMNS + BORDER_WIDTH + 15
|
||||||
y = 8
|
y = 5
|
||||||
pygame.draw.rect(screen, (255, 255, 255), pygame.Rect(x, y, 370, 782))
|
|
||||||
draw_text('GAME STATS', font, (0, 0, 0), screen, x + 120, y + 30)
|
# background
|
||||||
|
pygame.draw.rect(screen, WHITE, pygame.Rect(x, y, 340, 450), 0, BORDER_RADIUS)
|
||||||
|
|
||||||
|
# title
|
||||||
|
draw_text('STATS', FONT_DARK, screen, x + 120, y + 10, 36)
|
||||||
|
pygame.draw.rect(screen, ORANGE, pygame.Rect(x, y + 65, 340, 3))
|
||||||
|
|
||||||
|
# shields
|
||||||
|
shield_blue = pygame.image.load('resources/textures/shield_blue.png')
|
||||||
|
shield_red = pygame.image.load('resources/textures/shield_red.png')
|
||||||
|
screen.blit(shield_blue, (x + 20, y + 80))
|
||||||
|
screen.blit(shield_red, (x + 200, y + 80))
|
||||||
|
draw_text('VS', FONT_DARK, screen, x + 150, y + 120, 36)
|
||||||
|
|
||||||
|
# HP bars
|
||||||
|
pygame.draw.rect(screen, RED, pygame.Rect(x + 30, y + 210, 100, 15), 0, 4)
|
||||||
|
pygame.draw.rect(screen, RED, pygame.Rect(x + 210, y + 210, 100, 15), 0, 4)
|
||||||
|
|
||||||
|
# texts
|
||||||
|
draw_text('Rycerze: 2', FONT_DARK, screen, x + 35, y + 240, 18)
|
||||||
|
draw_text('Fortece: 1', FONT_DARK, screen, x + 35, y + 270, 18)
|
||||||
|
|
||||||
|
draw_text('Rycerze: 4', FONT_DARK, screen, x + 215, y + 240, 18)
|
||||||
|
draw_text('Fortece: 0', FONT_DARK, screen, x + 215, y + 270, 18)
|
||||||
|
|
||||||
|
# points
|
||||||
|
pygame.draw.rect(screen, ORANGE, pygame.Rect(x, y + 390, 340, 3))
|
||||||
|
draw_text('PUNKTY: 10', FONT_DARK, screen, x + 35, y + 408, 18, True)
|
||||||
|
draw_text('PUNKTY: 10', FONT_DARK, screen, x + 215, y + 408, 18, True)
|