First deadline

This commit is contained in:
Szymon Komosinski 2020-04-27 11:38:36 +02:00
commit 37d1265b98
58 changed files with 300 additions and 0 deletions

BIN
Font/lb1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/lb2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/lb3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/lb4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/lb5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/lb6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/lb7.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/lb8.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/lb9.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/lr1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/lr2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/lr3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/lr4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/lr5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/lr6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/lr7.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/lr8.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/lr9.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/rb0.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/rb1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/rb2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/rb3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/rb4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/rb5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/rb6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/rb7.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/rb8.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/rb9.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/rr0.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/rr1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/rr2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/rr3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/rr4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/rr5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/rr6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/rr7.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/rr8.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Font/rr9.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Icons/A_door.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Icons/A_icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Icons/A_key.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Icons/A_moves.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Icons/A_open_door.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Icons/A_time.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Icons/B_door.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Icons/B_icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Icons/B_key.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Icons/B_moves.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Icons/B_open_door.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Icons/B_time.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Icons/Empty.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Icons/Wall.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

63
config.py Normal file
View File

@ -0,0 +1,63 @@
import sys
import pygame as pg
# Display dimensions:
tile_size = 40
map_height = 18
map_width = 32
legend_height = 1
# Game display:
gameDisplay = pg.display.set_mode((tile_size * map_width, tile_size * (map_height + legend_height)))
display_width = map_width * tile_size
display_height = (map_height + legend_height) * tile_size
clock = pg.time.Clock()
# Accessible floors for both players:
ground = 0
red_key = 2
blue_key = 3
# Inaccessible floor for both players:
wall = 1
# Accessible floor for player #1:
red_open_door = 4
# Inaccessible floor for player #1:
red_closed_door = 6
# Accessible floors for player #2:
blue_open_door = 5
# Inaccessible floor for player #1:
blue_closed_door = 7
# Linking floors with matching textures:
textures = {
ground: pg.image.load('Icons/Empty.png'),
red_key: pg.image.load('Icons/A_key.png'),
blue_key: pg.image.load('Icons/B_key.png'),
red_open_door: pg.image.load('Icons/A_open_door.png'),
blue_open_door: pg.image.load('Icons/B_open_door.png'),
red_closed_door: pg.image.load('Icons/A_door.png'),
blue_closed_door: pg.image.load('Icons/B_door.png'),
wall: pg.image.load('Icons/Wall.png')
}
# Colors:
black = (0, 0, 0)
purple = (138, 43, 226)
white = (255, 255, 255)
def events():
# Letting the user quit
for event in pg.event.get():
if event.type == pg.QUIT:
pg.quit()
sys.exit()
if event.type == pg.KEYDOWN:
if event.key == pg.K_ESCAPE or pg.K_q:
pg.quit()
sys.exit()

19
gamemodes.py Normal file
View File

@ -0,0 +1,19 @@
from grid import *
from config import *
def singlePlayer():
global pause
gameExit = False
a = Grid()
a.generate_map()
while not gameExit:
for event in pg.event.get():
if event.type == pg.QUIT:
pg.quit()
quit()
a.display_map()
pg.display.update()
clock.tick(60)

42
grid.py Normal file
View File

@ -0,0 +1,42 @@
from config import *
from templates import *
class Grid:
def __init__(self):
# Creating a new drawing surface
self.floor = [[0 for x in range(map_width)] for y in range(map_height)]
self.surface = pg.display.set_mode((tile_size * map_width, tile_size * (map_height + legend_height)))
# Making a mouse cursor invisible
pg.mouse.set_visible(True)
# Elements of the legend bar beneath the map
self.time = 0
def generate_map(self):
# Generating an empty map and filling it with floors of a randomly chosen type
A = random_part()
for i in range(16):
for j in range(9):
self.floor[j][i] = A[j][i]
B = random_part()
for i in range(16, 32):
for j in range(9):
self.floor[j][i] = B[j][i - 16]
C = random_part()
for i in range(16):
for j in range(9, 18):
self.floor[j][i] = C[j - 9][i]
D = random_part()
for i in range(16, 32):
for j in range(9, 18):
self.floor[j][i] = D[j - 9][i - 16]
def display_map(self):
for x in range(map_width):
for y in range(map_height):
self.surface.blit(textures[self.floor[y][x]],
(x * tile_size, y * tile_size))

22
main.py Normal file
View File

@ -0,0 +1,22 @@
from config import *
from grid import Grid
from templates import *
from menu import *
# initializing PyGame module
pg.init()
pg.display.set_caption('Key Star AI Race')
pause = False
def main():
game_intro()
singlePlayer()
pg.quit()
quit()
if __name__ == "__main__":
main()

82
menu.py Normal file
View File

@ -0,0 +1,82 @@
import pygame as pg
from config import *
from gamemodes import *
def text_objects(text, font):
textSurface = font.render(text, True, purple)
return textSurface, textSurface.get_rect()
def button(msg, x, y, w, h, action=None):
mouse = pg.mouse.get_pos()
click = pg.mouse.get_pressed()
font = pg.font.SysFont("ubuntumono", 80)
if x+w > mouse[0] > x and y+h > mouse[1] > y:
textSurface = font.render(msg, True, purple)
if click[0] == 1 and action != None:
action()
else:
textSurface = font.render(msg, True, black)
textRectangle = textSurface.get_rect()
textRectangle.center = ((x + (w / 2)), (y + (h / 2)))
gameDisplay.blit(textSurface, textRectangle)
def quitgame():
pg.quit()
quit()
def unpause():
global pause
pause = False
def paused():
largeText = pg.font.SysFont("ubuntumono", 160)
TextSurf, TextRect = text_objects("Paused", largeText)
TextRect.center = ((display_width / 2), (display_height / 2))
gameDisplay.blit(TextSurf, TextRect)
while pause:
for event in pg.event.get():
# print(event)
if event.type == pg.QUIT:
pg.quit()
quit()
# gameDisplay.fill(white)
button("Continue", 150, 450, 100, 50, unpause)
button("Quit", 550, 450, 100, 50, quitgame)
pg.display.update()
def game_intro():
intro = True
while intro:
for event in pg.event.get():
if event.type == pg.QUIT:
pg.quit()
quit()
gameDisplay.fill(white)
largeText = pg.font.SysFont("ubuntumono", 160)
TextSurf, TextRect = text_objects("Key *Star Race", largeText)
TextRect.center = ((display_width / 2), (display_height / 4))
gameDisplay.blit(TextSurf, TextRect)
button("Singleplayer", 720, 360, 450, 100, singlePlayer)
button("Multiplayer", 738, 480, 450, 100)
button("Quit", 874, 600, 450, 100, quitgame)
pg.display.update()
clock.tick(15)

72
templates.py Normal file
View File

@ -0,0 +1,72 @@
from numpy import array, flipud, fliplr
from random import randint
A = [[0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0],
[0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1],
[0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1],
[1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0],
[1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0],
[0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0],
[0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0],
[1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1],
[0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0]]
B = [[0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0],
[0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0],
[0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0],
[1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0],
[0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0],
[0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1],
[1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0],
[0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0],
[0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0]]
C = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0],
[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1],
[0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
[0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1],
[0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0],
[0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0]]
D = [[0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0],
[0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0],
[0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0],
[0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1],
[0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1],
[0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0],
[0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
def create_n_fill_matrix(x, y):
A = [[0 for i in range(x)] for j in range(y)]
for i in range(x):
for j in range(y):
print("x: {}, y: {}\n".format(i, j))
a = input("value: ")
A[j][i] = a
return A
def random_part():
n = randint(1, 4)
if n == 1:
X = A
if n == 2:
X = B
if n == 3:
X = C
if n == 4:
X = D
X = array(X)
m = randint(0, 1)
if m == 1:
X = flipud(X)
o = randint(0, 1)
if o == 1:
X = fliplr(X)
return X