-
Notifications
You must be signed in to change notification settings - Fork 0
/
gulags.py
118 lines (93 loc) · 4.08 KB
/
gulags.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
import pygame
from pygame.locals import *
from general_functions import *
from structures import *
import glob
import time
#Classe básica para um campo
class Campo():
#Valores do campo
def __init__(self,nome,nome_r,r_detec,recursos,extracao,r_nevasca,clima,minipos,mini="gulag3.png",foto="arnold.png"):
#Infor básica - imutável
self.nome = nome
self.nome_r = nome_r
self.r_detec = r_detec
self.recursos = recursos
self.extracao = extracao
self.r_nevasca = r_nevasca
self.clima = clima
#Valores a serem alterados com upgrades
self.aquecedor = 0
self.seguranca = 3
self.medica = 1
self.lazer = 0
#Status do campo
self.felicidade = 50
self.prod_mensal = 0
self.medo = 0 #Alterado por eventos especiais
self.populacao = 0
self.machucados = 0
self.dinheiro = 420.69
#Nome da foto do camp na tela de seleção
self.foto = foto
#Miniaturas na tela de seleção
self.mini = mini
self.minipos = minipos
#Velocidade para a animação das representações visuais
self.pause = False
#Criação das estruturas do campo
if self.extracao == "Madeira":
rec = "madeira"
else:
rec = "mineracao"
#Estruturas do campo em si
#Estruturas são meramente as representações visuais das partes do campo
self.Est_Recur = Est_Recur(("recursos/"+rec))
self.Est_Aloj = Est_Aloj("alojamento")
self.Est_Medic = Est_Medic("medico")
self.Est_Segur = Est_Segur("seguranca")
#Print dos dados de cada campo
def __repr__(self):
return f"""\nNome: '{self.nome}', R. deteção: '{self.r_detec}', Recursos: '{self.recursos}'
Extração: '{self.extracao}', R. Nevasca: '{self.r_nevasca}', Clima: '{self.clima}'
Aquecedor: '{self.aquecedor}', Segurança: '{self.seguranca}', Medica: '{self.medica}', Lazer: '{self.lazer}'
Felicidade: '{self.felicidade}', Prod_Mensal: '{self.prod_mensal}', Medo: '{self.medo}'\n"""
#Define a velocidad de atualização:
def set_vel(self,vel):
if vel > 0:
self.pause = False
new_vel = 10/vel
self.Est_Recur.current_ani.set_vel(new_vel)
self.Est_Aloj.current_ani.set_vel(new_vel)
self.Est_Medic.current_ani.set_vel(new_vel)
self.Est_Segur.current_ani.set_vel(new_vel)
else:
self.pause = True
self.Est_Recur.current_ani.set_vel(0)
self.Est_Aloj.current_ani.set_vel(0)
self.Est_Medic.current_ani.set_vel(0)
self.Est_Segur.current_ani.set_vel(0)
#Redefine as imagens que serão utilizadas para a representação
#(Apenas chamada quando o campo for inicializado como jogavel)
def load_imgs(self):
#Imgs gerais para display de info
self.img_pop = pygame.image.load("imgs/pop1.png")
self.img_hurt = pygame.image.load("imgs/hurt1.png")
self.img_mon = pygame.image.load("imgs/mon1.png")
#Texturas das estruturas
self.Est_Recur.load_textures()
self.Est_Aloj.load_textures()
self.Est_Medic.load_textures()
self.Est_Segur.load_textures()
#Mostra a representação visual animada do campo na tela de gameplay
def demo_visual(self,screen,sw,sh,pos):
escala_geral = (swi(sw,.75),shi(sh,.68))
if self.pause == False:
self.Est_Aloj.update_frame()
self.Est_Recur.update_frame()
self.Est_Medic.update_frame()
self.Est_Segur.update_frame()
self.Est_Aloj.rep_visual(screen,escala_geral,pos)
self.Est_Recur.rep_visual(screen,escala_geral,pos)
self.Est_Medic.rep_visual(screen,escala_geral,pos)
self.Est_Segur.rep_visual(screen,escala_geral,pos)