133 lines
4.8 KiB
Python
133 lines
4.8 KiB
Python
from cmath import sqrt
|
|
import pygame
|
|
from settings import screen_height, screen_width, SIZE, SPECIES, block_size, tile, road_coords, fields_amount, field_size, field_height, field_width, matrix_plants_type
|
|
from src.Plant import Plant
|
|
import random
|
|
from src.Field import Field
|
|
from src.Road import Road
|
|
import csv
|
|
|
|
|
|
def get_type_by_position(fields, x, y):
|
|
for field in fields:
|
|
if field.x == x and field.y == y:
|
|
return field.plant_type
|
|
return None
|
|
|
|
def get_cost_by_type(plant_type):
|
|
#plant_type == None, when field is empty.
|
|
if plant_type == None:
|
|
return 200
|
|
elif plant_type == 'carrot':
|
|
return 300
|
|
elif plant_type == 'potato':
|
|
return 500
|
|
elif plant_type == 'wheat':
|
|
return 1000
|
|
#else, means that field is type of road.
|
|
else:
|
|
return 100
|
|
|
|
fields = pygame.sprite.Group()
|
|
|
|
|
|
WORLD_MATRIX = [[0 for _ in range(fields_amount+1)] for _ in range(fields_amount+1)]
|
|
|
|
def drawRoads(screen):
|
|
#drawing roads:
|
|
road = pygame.image.load("assets/road.jpeg")
|
|
road = pygame.transform.scale(road, tile)
|
|
for x in road_coords:
|
|
for block in range(int(fields_amount)+1):
|
|
screen.blit(road, (x*block_size, block * 36))
|
|
new_road = Road(x,block)
|
|
tmp_field=Field('road', x*block_size, block * 36, None, get_cost_by_type('road'), None, None, None, None, 'road', None, None,contain=new_road)
|
|
fields.add(tmp_field)
|
|
WORLD_MATRIX[x][block]=tmp_field
|
|
for y in road_coords:
|
|
for block in range(int(fields_amount)+1):
|
|
screen.blit(road, (block * block_size, y*block_size))
|
|
new_road = Road(block,y)
|
|
tmp_field=Field('road', block * block_size, y*block_size, None, get_cost_by_type('road'), None, None, None, None, 'road', None, None,contain=new_road)
|
|
fields.add(tmp_field)
|
|
WORLD_MATRIX[block][y]=tmp_field
|
|
|
|
|
|
barn_img = pygame.image.load('assets/barn.png')
|
|
barn = pygame.transform.scale(barn_img, tile)
|
|
screen.blit(barn, (0, 900))
|
|
|
|
return screen
|
|
|
|
def seedForFirstTime():
|
|
plants_type = matrix_plants_type
|
|
|
|
plant_group = pygame.sprite.Group()
|
|
for field in range(fields_amount):
|
|
plant_name = matrix_plants_type[field]
|
|
blocks_seeded_in_field = 0
|
|
while (blocks_seeded_in_field < field_size):
|
|
|
|
x = (((field%5)*((block_size*(field_width+1)))) + ((blocks_seeded_in_field % field_width)*block_size) + ((3/2)*block_size))
|
|
y = ((int(field/5)*((block_size*(field_width+1)))) + ((int(blocks_seeded_in_field/field_height))*block_size) + ((3/2)*block_size))
|
|
# wzrost;wilgotnosc;dni_od_nawiezienia;aktualna_pogoda;czy_roslina_robaczywa;typ_rosliny;pojemnosc_ekwipunku;cena_sprzedarzy;czy_zebrac
|
|
|
|
# new_plant = Plant(
|
|
# wzrost=random.randint(0, 100),
|
|
# wilgotnosc=random.randint(0, 100),
|
|
# dni_od_nawiezienia=random.randint(0, 31),
|
|
# aktualna_pogoda=random.randint(1,4),
|
|
# czy_robaczywa=random.randint(0,1),
|
|
# cena_sprzedarzy=random.randint(1000, 2000),
|
|
# species=plant_name,
|
|
# pos_x=x,
|
|
# pos_y=y)
|
|
|
|
# BOOSTED PLANTS
|
|
new_plant = Plant(
|
|
wzrost=random.randint(90, 100),
|
|
wilgotnosc=random.randint(0, 50),
|
|
dni_od_nawiezienia=random.randint(15, 31),
|
|
aktualna_pogoda=random.randint(3,4),
|
|
czy_robaczywa=0,
|
|
cena_sprzedarzy=random.randint(1500, 2000),
|
|
species=plant_name,
|
|
pos_x=x,
|
|
pos_y=y)
|
|
blocks_seeded_in_field = blocks_seeded_in_field + 1
|
|
plant_group.add(new_plant)
|
|
tmp_field_plant = Field('field', x-18, y-18, None, get_cost_by_type(plant_name), None, None, None, None, plant_name, None, None, contain=new_plant)
|
|
fields.add(tmp_field_plant)
|
|
|
|
mx = int((x-18)/36)
|
|
my = int((y-18)/36)
|
|
WORLD_MATRIX[mx][my]=tmp_field_plant
|
|
|
|
#debug
|
|
# print(WORLD_MATRIX)
|
|
#end of debug
|
|
|
|
return plant_group
|
|
|
|
def put_to_matrix():
|
|
return 0
|
|
|
|
def return_fields_list():
|
|
return fields
|
|
|
|
|
|
# to-be-done with minecraft farmland graphic xD
|
|
# maybe this function should be in drawRoads (ofc with changed name), not separated
|
|
|
|
#def drawFields(background):
|
|
#field = pygame.image.load()
|
|
#field = pygame.transform.scale(field, tile)
|
|
#for x in range(25):
|
|
#if block not in road_coords_x:
|
|
#screen.blit(field, (x*block_size, block * 36))
|
|
#for y in range(25):
|
|
#if block not in road_coords_y:
|
|
#screen.blit(field, (block*36, y*block_size))
|
|
|
|
#return screen
|