added button opening view; customizable map size

This commit is contained in:
Emil Gutkiewicz 2022-03-11 03:34:20 +01:00
parent 87be19409d
commit f4f3f802a9
13 changed files with 49 additions and 69 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -8,7 +8,7 @@ class Instance:
self.rect = pygame.Rect(0, 0, size(), size())
self.action = ''
def current_field_pos(self):
def coordinates(self):
return {
'x': self.x(),
'y': self.y()
@ -28,16 +28,12 @@ class Instance:
if key_pressed[pygame.K_LEFT] and self.rect.x > 0:
self.rect.x -= tile_size
return False
elif key_pressed[pygame.K_RIGHT] and self.rect.x < width - tile_size:
self.rect.x += tile_size
return False
elif key_pressed[pygame.K_UP] and self.rect.y > 0:
self.rect.y -= tile_size
return False
elif key_pressed[pygame.K_DOWN] and self.rect.y < height - tile_size:
self.rect.y += tile_size
return False
elif key_pressed[pygame.K_SPACE]:
return False
return True
return 'open_window'
return 'none'

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 9.8 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

@ -1,7 +1,5 @@
from enum import Enum
import pygame
import settings
@ -27,9 +25,7 @@ class Object:
def create(self):
field_string = Type.get_string(self.type)
print("assets/fields/" + field_string + "/" + self.name + ".jpg")
img = pygame.image.load("./assets/fields/" + field_string + "/" + self.name + ".jpg")
print(img)
return pygame.transform.scale(img, (self.width, self.height))
@ -67,24 +63,25 @@ class Dirt(Field):
super(Dirt, self).__init__()
class Cobble:
class Cobble(Field):
type = Type.SPECIAL
name = 'cobble'
def __init__(self):
self.tile = Tile(self.name, self.type)
self.block = Block(self.name + "_block", self.type)
super(Cobble, self).__init__()
class Grass:
class Grass(Field):
type = Type.DEFAULT
name = 'grass'
def __init__(self):
self.tile = Tile(self.name, self.type)
self.block = Block(self.name + "_block", self.type)
super(Grass, self).__init__()
# DIRT_IMG = pygame.image.load("assets/fields/plant/dirt.jpg")
# DIRT = pygame.transform.scale(DIRT_IMG, (50, 50))
# DIRT_BLOCK_IMG = pygame.image.load("assets/fields/plant/dirt_block.jpg")
# DIRT_BLOCK = pygame.transform.scale(DIRT_BLOCK_IMG, (800, 800))
class Sand(Field):
type = Type.DEFAULT
name = 'sand'
def __init__(self):
super(Sand, self).__init__()

81
main.py
View File

@ -7,44 +7,26 @@ import common
import agent
AGENT_IMG = pygame.image.load("dot-22-433567.png")
AGENT = pygame.transform.scale(AGENT_IMG, (50, 50))
AGENT = pygame.transform.scale(AGENT_IMG, (settings.Field.size(), settings.Field.size()))
DIRT_IMG = pygame.image.load("assets/fields/plant/dirt.jpg")
# DIRT = pygame.transform.scale(DIRT_IMG, (50, 50))
# DIRT_BLOCK_IMG = pygame.image.load("assets/fields/plant/dirt_block.jpg")
# DIRT_BLOCK = pygame.transform.scale(DIRT_BLOCK_IMG, (800, 800))
DIRT = field.Dirt().tile.object
DIRT_BLOCK = field.Dirt().block.object
GRASS_IMG = pygame.image.load("assets/fields/default/grass.png")
GRASS = pygame.transform.scale(GRASS_IMG, (50, 50))
GRASS_BLOCK_IMG = pygame.image.load("assets/fields/default/grass_block.jpeg")
GRASS_BLOCK = pygame.transform.scale(GRASS_BLOCK_IMG, (800, 800))
SAND_IMG = pygame.image.load("sand.jpeg")
SAND = pygame.transform.scale(SAND_IMG, (50, 50))
SAND_BLOCK_IMG = pygame.image.load("sand_block.jpg")
SAND_BLOCK = pygame.transform.scale(SAND_BLOCK_IMG, (800, 800))
COBBLE_IMG = pygame.image.load("assets/fields/special/cobble.jpg")
COBBLE = pygame.transform.scale(COBBLE_IMG, (50, 50))
COBBLE_BLOCK_IMG = pygame.image.load("assets/fields/special/cobble_block.jpg")
COBBLE_BLOCK = pygame.transform.scale(COBBLE_BLOCK_IMG, (800, 800))
possibleFields = {
'dirt': field.Dirt(),
'grass': field.Grass(),
'cobble': field.Cobble(),
'sand': field.Sand(),
}
def randomize_map():
possible_fields = [
field.Dirt().tile.object,
GRASS,
SAND,
COBBLE
]
fields_array = []
for i in possibleFields:
fields_array.append(possibleFields[i].tile.object)
field_array_big = []
field_array_small = []
for i in range(16):
for j in range(16):
field_array_small.append(random.choice(possible_fields))
for i in range(settings.Field.horizontal_count()):
for j in range(settings.Field.vertical_count()):
field_array_small.append(random.choice(fields_array))
field_array_big.append(field_array_small)
field_array_small = []
return field_array_big
@ -52,26 +34,31 @@ def randomize_map():
def read_img(agent, fields):
window = common.get('window')
coords = agent.current_field_pos()
current_field = fields[coords['x']][coords['y']]
current_field = fields[agent.x()][agent.y()]
if current_field == GRASS:
window.blit(GRASS_BLOCK, (0, 0))
elif current_field == field.Dirt().tile.object:
window.blit(DIRT_BLOCK, (0, 0))
elif current_field == SAND:
window.blit(SAND_BLOCK, (0, 0))
elif current_field == COBBLE:
window.blit(COBBLE_BLOCK, (0, 0))
if current_field == possibleFields['grass'].tile.object:
window.blit(possibleFields['grass'].block.object, (0, 0))
elif current_field == possibleFields['dirt'].tile.object:
window.blit(possibleFields['dirt'].block.object, (0, 0))
elif current_field == possibleFields['sand'].tile.object:
window.blit(possibleFields['sand'].block.object, (0, 0))
elif current_field == possibleFields['cobble'].tile.object:
window.blit(possibleFields['cobble'].block.object, (0, 0))
pygame.display.update()
pygame.time.delay(2000)
common.set('state_imgShown', False)
def agent_action(action: str):
if action == 'open_window':
common.set('state_imgShown', True)
def draw_window(agent, fields):
window = common.get('window')
rect = agent.rect
for i in range(16):
for j in range(16):
for i in range(settings.Field.horizontal_count()):
for j in range(settings.Field.vertical_count()):
window.blit(fields[i][j], (i * settings.Field.size(), j * settings.Field.size()))
window.blit(AGENT, (rect.x, rect.y))
pygame.display.update()
@ -83,7 +70,7 @@ agent = agent.Instance()
def main():
common.set('game_running', True)
common.set('state_imgShown', True)
common.set('state_imgShown', False)
common.set(
'window',
pygame.display.set_mode((
@ -100,12 +87,12 @@ def main():
if event.type == pygame.QUIT:
common.set('game_running', False)
if not common.get('state_imgShown'):
if common.get('state_imgShown'):
read_img(agent, fields)
else:
draw_window(agent, fields)
agent.move()
agent_action(agent.move())
pygame.quit()

View File

@ -5,7 +5,7 @@ class Field:
@staticmethod
def horizontal_count():
return 16
return 24
@staticmethod
def vertical_count():