From 1f8798b98cd690285e99d3b211f2805b0d431453 Mon Sep 17 00:00:00 2001 From: Jager72 <49473040+Jager72@users.noreply.github.com> Date: Thu, 14 Mar 2024 14:22:16 +0100 Subject: [PATCH] feat: Added Coffe machine which increases multiplier for gained score --- app.py | 2 ++ classes/agent.py | 23 ++++++++++++++++++++--- classes/coffeMachine.py | 19 +++++++++++++++++++ sprites/CoffeeVendingMachine2.png | Bin 0 -> 532 bytes 4 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 classes/coffeMachine.py create mode 100644 sprites/CoffeeVendingMachine2.png diff --git a/app.py b/app.py index bc55650..2a83940 100644 --- a/app.py +++ b/app.py @@ -1,6 +1,7 @@ import pygame import prefs from classes.beerKeg import BeerKeg +from classes.coffeMachine import CoffeMachine from pygame.locals import K_w, K_s, K_a, K_d from classes.cell import Cell from classes.agent import Agent @@ -28,6 +29,7 @@ def initBoard(): cells[i][j].blocking_movement = True cells[6][6].interactableItem = BeerKeg(cells[6][6], "Beer Keg") + cells[10][10].interactableItem = CoffeMachine(cells[10][10], "Coffe Machine") def draw_grid(window, cells): for i in range(prefs.GRID_SIZE): diff --git a/classes/agent.py b/classes/agent.py index f039e93..c34428b 100644 --- a/classes/agent.py +++ b/classes/agent.py @@ -6,10 +6,12 @@ class Agent: self.sprite = pygame.transform.scale(self.sprite, (prefs.CELL_SIZE, prefs.CELL_SIZE)) self.current_cell = cells[x][y] self.moved=False - self.last_move_time=pygame.time.get_ticks() + self.last_move_time = pygame.time.get_ticks() self.last_interact_time = pygame.time.get_ticks() + self.last_draw_time = pygame.time.get_ticks() self.cells = cells self.score = baseScore + self.multiplier = 1 def move_up(self): if pygame.time.get_ticks()-self.last_move_time > 125 and self.current_cell.Y > 0 and not self.cells[self.current_cell.X][self.current_cell.Y-1].blocking_movement: @@ -38,8 +40,23 @@ class Agent: def draw(self, surface): surface.blit(self.sprite, (self.current_cell.X * prefs.CELL_SIZE, self.current_cell.Y * prefs.CELL_SIZE)) + # TO nie powinno być tu ale trudno + current_draw_time = pygame.time.get_ticks() + # różnca czasu między wyoływaniami, używa do uniezależnienia od ilości wywołań funkcji + delta_time = ((current_draw_time - self.last_draw_time)/1000) + if self.multiplier > 1: + self.multiplier = self.multiplier - (1 / 16) * delta_time + if self.multiplier < 1: + self.multiplier = 1 + + + self.last_draw_time = current_draw_time def increase_score(self, amount): - self.score += amount - print("Agent score changed from {} to {}".format(self.score - amount, self.score)) + self.score += amount * round(self.multiplier,2) + print("Agent score changed from {} to {} (multiplied by {}!)".format(self.score - amount, self.score, round(self.multiplier,2))) + def increase_multiplier(self, amount): + self.multiplier += amount + if self.multiplier > 0 : self.multiplier = 2 + print("Agent score changed from {} to {}".format(self.multiplier - amount, self.multiplier)) diff --git a/classes/coffeMachine.py b/classes/coffeMachine.py new file mode 100644 index 0000000..b116fb7 --- /dev/null +++ b/classes/coffeMachine.py @@ -0,0 +1,19 @@ +from classes.interactable import Interactable +import pygame +import prefs +from classes.agent import Agent +class CoffeMachine(Interactable): + + def __init__(self, cell, name, sprite="sprites/CoffeeVendingMachine2.png"): + super().__init__(cell, sprite) + self.sprite = pygame.image.load(sprite).convert_alpha() + self.sprite = pygame.transform.scale(self.sprite, (prefs.CELL_SIZE, prefs.CELL_SIZE)) + self.name = name + + def interact(self,agent): + if not isinstance(agent, Agent): + print("Agent must be of type Agent") + return + + agent.increase_multiplier(1) + print("Agent interacted with {}".format(self.name)) diff --git a/sprites/CoffeeVendingMachine2.png b/sprites/CoffeeVendingMachine2.png new file mode 100644 index 0000000000000000000000000000000000000000..27f9764e0f03d06ce6e4445ce866e6be46bb6f3a GIT binary patch literal 532 zcmV+v0_**WP)!UP$3jpkGPrZ;&+F@dp?Wqn-yvS-`}gl{6AT%ULp#JoilDYN zXPzN*QCur6B?)18>x*r@_zF$u(`U~G1qI)~e-9VI5>;4rLcs3x9!ux*#76$bVlxEH z;0mwxzf}7|mz$IQ+PpR=C3d)!tKp9K@4vi%&up83P4iQmg7`C;j~E#IzWiliV2ILU zHtD_2z`)Rz9RRWU=KjsgSH5|G)#izj4h)gkkwqZd%BF6}4>U)!8QsqirO2Rc>V~qZ z8{jtM^z#dcVg?3=qSc4{LTw=;9-f}^5k(9P4Enkr4A17{^RvW(-hKCeGB7ZB%!7&u zi-gX@;L^v3p!jc9~o6%Aa8hHQyy`Z2VgdrdxfW^-Y z3=AqND!Q7Q+&nyAzkFd}V1O_#U%!6m4m9y2Co(LF67#^JfC3AEr|nC@cU6UNi4!5;VaSLj&y2r9Y4`APKNAFfhEn{+Cp35C8z) Wh`-kk;NYtO0000