2019-03-19 10:08:38 +01:00
|
|
|
from pygame import *
|
2019-03-21 01:25:19 +01:00
|
|
|
import sys
|
|
|
|
import random
|
2019-03-25 16:10:51 +01:00
|
|
|
from config import PLAY_WIDTH, PLAY_HEIGHT, HUD_HEIGHT, home_amount
|
2019-03-19 11:47:23 +01:00
|
|
|
from sprites.house import House
|
2019-03-25 16:10:51 +01:00
|
|
|
from sprites.hud import Hud
|
2019-03-19 11:47:23 +01:00
|
|
|
from pygame.locals import *
|
2019-03-19 18:04:43 +01:00
|
|
|
import utils
|
2019-03-27 08:37:51 +01:00
|
|
|
import csv
|
|
|
|
import datetime
|
2019-03-19 18:04:43 +01:00
|
|
|
|
2019-03-20 22:36:40 +01:00
|
|
|
##INITIALIZE STATIC VARIABLES#########
|
2019-03-25 16:03:25 +01:00
|
|
|
FPS = 20
|
2019-03-19 11:47:23 +01:00
|
|
|
|
|
|
|
all_sprites = sprite.Group()
|
|
|
|
fps_clock = time.Clock()
|
2019-03-25 14:11:25 +01:00
|
|
|
|
2019-03-20 22:36:40 +01:00
|
|
|
######################################
|
2019-03-19 11:47:23 +01:00
|
|
|
|
2019-03-25 16:00:01 +01:00
|
|
|
interactables = {
|
|
|
|
"homes": [],
|
|
|
|
"landfills": []
|
|
|
|
}
|
|
|
|
|
2019-03-20 22:36:40 +01:00
|
|
|
|
|
|
|
##GAMEWINDOW##########################
|
2019-03-20 23:33:22 +01:00
|
|
|
WINDOW_WIDTH = PLAY_WIDTH
|
2019-03-25 16:10:51 +01:00
|
|
|
WINDOW_HEIGHT = PLAY_HEIGHT + HUD_HEIGHT
|
2019-03-19 11:47:23 +01:00
|
|
|
GAMEWINDOW = display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT), 0, 32)
|
2019-03-25 16:10:51 +01:00
|
|
|
hud = Hud(home_amount,WINDOW_WIDTH, WINDOW_HEIGHT,GAMEWINDOW)
|
2019-03-20 23:33:22 +01:00
|
|
|
display.set_caption('Smieciarz WMI')
|
2019-03-25 14:45:47 +01:00
|
|
|
icon = image.load('images/icon.png')
|
|
|
|
display.set_icon(icon)
|
2019-03-20 22:36:40 +01:00
|
|
|
######################################
|
2019-03-19 10:08:38 +01:00
|
|
|
|
2019-03-20 23:33:22 +01:00
|
|
|
##
|
2019-03-21 01:25:19 +01:00
|
|
|
# Generate level
|
|
|
|
utils.generate_grass(all_sprites)
|
2019-03-25 16:00:01 +01:00
|
|
|
utils.generate_landfills(all_sprites, interactables)
|
|
|
|
utils.generate_houses(all_sprites, interactables)
|
|
|
|
gc = utils.generate_garbage_collector(all_sprites, interactables)
|
2019-03-20 23:33:22 +01:00
|
|
|
##
|
2019-03-19 11:47:23 +01:00
|
|
|
|
2019-03-27 08:37:51 +01:00
|
|
|
##COUNTER FOR HUB BRAKE IN CONSOLE#####
|
2019-03-26 23:13:34 +01:00
|
|
|
hud_break = 0
|
2019-03-27 08:37:51 +01:00
|
|
|
#######################################
|
|
|
|
|
|
|
|
##INIT CSV FILE########################
|
|
|
|
currentDT = datetime.datetime.now()
|
|
|
|
csv_name = "logs/stats_" + currentDT.strftime("%Y%m%d%H%M%S") + ".csv"
|
|
|
|
|
|
|
|
with open(csv_name, 'w', newline='') as csvfile:
|
|
|
|
filewriter = csv.writer(csvfile, delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL)
|
|
|
|
row = ['Plastic left', "Glass left", "Metal left", "GC plastic", "GC glass", "GC metal", "Total collected"]
|
|
|
|
filewriter.writerow(row)
|
|
|
|
csvfile.close()
|
|
|
|
#######################################
|
2019-03-26 23:13:34 +01:00
|
|
|
|
2019-03-20 22:36:40 +01:00
|
|
|
##GAME LOOP#######################################################################
|
2019-03-19 11:47:23 +01:00
|
|
|
while(1):
|
2019-03-21 01:25:19 +01:00
|
|
|
for e in event.get():
|
|
|
|
if e.type == QUIT:
|
|
|
|
quit()
|
|
|
|
sys.exit()
|
|
|
|
if e.type == KEYUP:
|
|
|
|
if e.key == K_UP:
|
2019-03-25 16:00:01 +01:00
|
|
|
gc.move('up', interactables["homes"] + interactables["landfills"])
|
2019-03-21 01:25:19 +01:00
|
|
|
if e.key == K_DOWN:
|
2019-03-25 16:00:01 +01:00
|
|
|
gc.move('down', interactables["homes"] + interactables["landfills"])
|
2019-03-21 01:25:19 +01:00
|
|
|
if e.key == K_RIGHT:
|
2019-03-25 16:00:01 +01:00
|
|
|
gc.move('right', interactables["homes"] + interactables["landfills"])
|
2019-03-21 01:25:19 +01:00
|
|
|
if e.key == K_LEFT:
|
2019-03-25 16:00:01 +01:00
|
|
|
gc.move('left', interactables["homes"] + interactables["landfills"])
|
2019-03-26 23:13:34 +01:00
|
|
|
if e.key == K_SPACE:
|
|
|
|
gc.select_object(all_sprites)
|
2019-03-21 01:25:19 +01:00
|
|
|
|
|
|
|
all_sprites.update()
|
|
|
|
all_sprites.draw(GAMEWINDOW)
|
|
|
|
|
|
|
|
for item in all_sprites:
|
|
|
|
if(type(item) == House):
|
|
|
|
item.generate_rubbish()
|
|
|
|
|
2019-03-27 08:37:51 +01:00
|
|
|
##LIMIT LOGS TO 1 LOG EVERY 2s#####
|
2019-03-26 23:13:34 +01:00
|
|
|
hud_break = (hud_break + 1) % (FPS*2)
|
|
|
|
|
|
|
|
if(hud_break == 0):
|
2019-03-27 08:37:51 +01:00
|
|
|
###################################
|
|
|
|
hud.get_statistics(all_sprites, csv_name)
|
2019-03-21 01:25:19 +01:00
|
|
|
display.flip()
|
2019-03-25 17:41:24 +01:00
|
|
|
fps_clock.tick(FPS)
|
2019-03-21 01:13:36 +01:00
|
|
|
##################################################################################
|