-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgametest.py
171 lines (127 loc) · 5.33 KB
/
gametest.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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
import threading
from os import execl
from sys import executable
from gui_manager import *
from queue_manager import *
from tkinter import *
from tkinter import ttk
from turn_manager import *
from building_manager import *
from resource_manager import *
from robot_manager import *
from save_manager import *
from state_manager import *
# The initializing function. Also contains references to setters in a specific order so as to make the various classes aware of each other.
def main():
root = Tk()
gamelogic = GameLogic()
statemanager = StateManager()
queuemanager = QueueManager()
turnmanager = TurnManager()
buildingmanager = BuildingManager()
resourcemanager = ResourceManager()
# robotmanager = RobotManager()
savemanager = SaveManager()
saveandloadgui = SaveAndLoadGUI(root, savemanager)
gamelogic.set_turnmanager(turnmanager)
gamelogic.set_buildingmanager(buildingmanager)
gamelogic.set_resourcemanager(resourcemanager)
gamelogic.set_root(root)
gamelogic.set_savemanager(savemanager)
gamelogic.set_statemanager(statemanager)
gamelogic.set_queuemanager(queuemanager)
queuemanager.set_buildingmanager(buildingmanager)
queuemanager.set_resourcemanager(resourcemanager)
# queuemanager.set_robotmanager(robotmanager)
queuemanager.set_turnmanager(turnmanager)
turnmanager.set_buildingmanager(buildingmanager)
turnmanager.set_statemanager(statemanager)
turnmanager.set_queuemanager(queuemanager)
buildingmanager.set_gamelogic(gamelogic)
buildingmanager.set_resourcemanager(resourcemanager)
buildingmanager.set_statemanager(statemanager)
buildingmanager.set_turnmanager(turnmanager)
buildingmanager.set_queuemanager(queuemanager)
resourcemanager.set_statemanager(statemanager)
savemanager.set_gamelogic(gamelogic)
savemanager.set_buildingmanager(buildingmanager)
savemanager.set_resourcemanager(resourcemanager)
savemanager.set_root(root)
savemanager.set_saveandloadgui(saveandloadgui)
savemanager.set_statemanager(statemanager)
savemanager.set_turnmanager(turnmanager)
savemanager.set_queuemanager(queuemanager)
app = GUI(root, gamelogic, buildingmanager, queuemanager, turnmanager, resourcemanager, savemanager, statemanager, saveandloadgui)
buildingmanager.set_guimanager(app)
gamelogic.set_guimanager(app)
savemanager.set_guimanager(app)
saveandloadgui.set_guimanager(app)
turnmanager.set_guimanager(app)
queuemanager.set_guimanager(app)
root.mainloop()
# Object for creating threads. Not in use and may be deleted later.
class ThreadObject (threading.Thread):
def __init__(self, threadID, name, counter):
threading.Thread.__init__(self)
self.threadID = threadID
self.name = name
self.counter = counter
def run(self):
print("Starting ", self.name)
if __name__ == "__main__":
main()
# print("Exiting ", self.name)
# High level class getting the simulation started.
class GameLogic():
def __init__(self):
self.playernameStringVar = StringVar()
self.error_playernameStringVar = StringVar()
self.saved_playernameStringVar = StringVar()
def set_guimanager(self, guimanager):
self.guimanager = guimanager
def set_turnmanager(self, turnmanager):
self.turnmanager = turnmanager
def set_buildingmanager(self, buildingmanager):
self.buildingmanager = buildingmanager
def set_resourcemanager(self, resourcemanager):
self.resourcemanager = resourcemanager
def set_root(self, root):
self.root = root
def set_savemanager(self, savemanager):
self.savemanager = savemanager
def set_statemanager(self, statemanager):
self.statemanager = statemanager
def set_queuemanager(self, queuemanager):
self.queuemanager = queuemanager
def start_new_game(self):
# restart_thread = ThreadObject(1, "RestartThread", 1)
# restart_thread.start()
# self.root.destroy()
python = sys.executable
os.execl(python, python, *sys.argv)
# This defines what happens when clicking End turn_number.
def run_simulation(self):
if self.statemanager.turn_number < 100:
self.turnmanager.increase_game_turns()
self.resourcemanager.increase_energy_resource()
self.turnmanager.decrease_building_turns()
self.queuemanager.set_building_queue_names()
self.guimanager.building_queueListbox.see(len(self.queuemanager.building_queue) - 1)
self.buildingmanager.building_errorStringVar.set("")
else:
print("Turn number is 100, game over")
# Logic for saving playername to labels in GUI.
def save_playername(self, saved_nameLabel, error_playernameLabel):
self.saving_name = str(self.playernameStringVar.get())
if self.saving_name == "":
self.error_playernameStringVar.set("Enter a name!")
error_playernameLabel.grid()
elif len(self.saving_name) > 8:
self.error_playernameStringVar.set("Name can't be more\nthan 8 characters")
error_playernameLabel.grid()
else:
self.saved_playernameStringVar.set(self.saving_name)
saved_nameLabel.grid()
error_playernameLabel.grid_remove()
if __name__ == "__main__":
main()