@@ -15,213 +15,3 @@ def __init__(self):
15
15
def get_glyph (self ):
16
16
pass
17
17
18
- class ShipStarbase (AbsShip ):
19
-
20
- def __init__ (self ):
21
- super ().__init__ ()
22
-
23
- def get_glyph (self ):
24
- return Glyphs .STARBASE
25
-
26
- @staticmethod
27
- def dock_enterprise (ship ):
28
- ship .energy = 3000
29
- ship .photon_torpedoes = 10
30
- ship .navigation_damage = 0
31
- ship .short_range_scan_damage = 0
32
- ship .long_range_scan_damage = 0
33
- ship .shield_control_damage = 0
34
- ship .computer_damage = 0
35
- ship .photon_damage = 0
36
- ship .phaser_damage = 0
37
- ship .shield_level = 0
38
- ship .docked = True
39
-
40
- @staticmethod
41
- def launch_enterprise (ship ):
42
- ship .docked = False
43
-
44
-
45
- class ShipEnterprise (AbsShip ):
46
-
47
- def __init__ (self ):
48
- super ().__init__ ()
49
- self .energy = 0
50
- self .docked = False
51
- self .condition = "GREEN"
52
- self .navigation_damage = 0
53
- self .short_range_scan_damage = 0
54
- self .long_range_scan_damage = 0
55
- self .shield_control_damage = 0
56
- self .computer_damage = 0
57
- self .photon_damage = 0
58
- self .phaser_damage = 0
59
- self .photon_torpedoes = 0
60
- ShipStarbase .dock_enterprise (self )
61
- ShipStarbase .launch_enterprise (self )
62
-
63
- def get_glyph (self ):
64
- return Glyphs .ENTERPRISE
65
-
66
- def damage (self , game , item ):
67
- '''
68
- Damage the Enterprise.
69
- '''
70
- if game .is_testing :
71
- return
72
- if random .randint (0 , 6 ) > 0 :
73
- return
74
- damage = 1 + random .randint (0 , 4 )
75
- if item < 0 :
76
- item = random .randint (0 , 6 )
77
- if item == 0 :
78
- self .navigation_damage = damage
79
- game .display (Quips .jibe_damage ('Warp Engines' ))
80
- elif item == 1 :
81
- self .short_range_scan_damage = damage
82
- game .display (Quips .jibe_damage ('Short Range Scanners' ))
83
- elif item == 2 :
84
- self .long_range_scan_damage = damage
85
- game .display (Quips .jibe_damage ('Long Range Scanners' ))
86
- elif item == 3 :
87
- self .shield_control_damage = damage
88
- game .display (Quips .jibe_damage ('Shield Controls' ))
89
- elif item == 4 :
90
- self .computer_damage = damage
91
- game .display (Quips .jibe_damage ('Main Computer' ))
92
- elif item == 5 :
93
- self .photon_damage = damage
94
- game .display (Quips .jibe_damage ('Photon Torpedo Controls' ))
95
- elif item == 6 :
96
- self .phaser_damage = damage
97
- game .display (Quips .jibe_damage ('Phasers' ))
98
- game .display ()
99
-
100
- def repair (self , game ):
101
- '''
102
- Repair damage to the Enterprise.
103
- '''
104
- if self .navigation_damage > 0 :
105
- self .navigation_damage -= 1
106
- if self .navigation_damage == 0 :
107
- game .display ("Warp engines have been repaired." )
108
- game .display ()
109
- return True
110
- if self .short_range_scan_damage > 0 :
111
- self .short_range_scan_damage -= 1
112
- if self .short_range_scan_damage == 0 :
113
- game .display ("Short range scanner has been repaired." )
114
- self .display ()
115
- return True
116
- if self .long_range_scan_damage > 0 :
117
- self .long_range_scan_damage -= 1
118
- if self .long_range_scan_damage == 0 :
119
- game .display ("Long range scanner has been repaired." )
120
- game .display ()
121
- return True
122
- if self .shield_control_damage > 0 :
123
- self .shield_control_damage -= 1
124
- if self .shield_control_damage == 0 :
125
- game .display ("Shield controls have been repaired." )
126
- game .display ()
127
- return True
128
- if self .computer_damage > 0 :
129
- self .computer_damage -= 1
130
- if self .computer_damage == 0 :
131
- game .display ("The main computer has been repaired." )
132
- game .display ()
133
- return True
134
- if self .photon_damage > 0 :
135
- self .photon_damage -= 1
136
- if self .photon_damage == 0 :
137
- game .display ("Photon torpedo controls have been repaired." )
138
- game .display ()
139
- return True
140
- if self .phaser_damage > 0 :
141
- self .phaser_damage -= 1
142
- if self .phaser_damage == 0 :
143
- game .display ("Phasers have been repaired." )
144
- game .display ()
145
- return True
146
- return False
147
-
148
- def short_range_scan (self , game ):
149
- if self .short_range_scan_damage > 0 :
150
- game .display (Quips .jibe_damage ('Short Ranged Scanners' ))
151
- game .display ()
152
- else :
153
- quad = game .game_map .quad ()
154
- Quadrant .display_area (game , quad )
155
- game .display ()
156
-
157
- def long_range_scan (self , game ):
158
- if self .long_range_scan_damage > 0 :
159
- game .display (Quips .jibe_damage ('Long Ranged Scanners' ))
160
- game .display ()
161
- return
162
- sb = ""
163
- pw_sector = game .game_map .sector
164
- if pw_sector < 5 :
165
- pw_sector = 6
166
- elif pw_sector > 59 :
167
- pw_sector = 59
168
- dots = None
169
- for peek in range (pw_sector - 5 , pw_sector + 6 ):
170
- quad = game .game_map .scan_quad (peek )
171
- lines = \
172
- (f"| Sector: { quad .number :>02} " ,
173
- f"Enemies: { quad .klingons :>02} " ,
174
- f"Bases: { quad .starbases :>02} " ,
175
- f"Stars: { quad .stars :>03} |" )
176
- str_ = ' | ' .join (lines )
177
- dots = '-' * len (str_ ) + "\n "
178
- sb += dots
179
- sb += str_
180
- game .display (sb )
181
- sb = ""
182
- game .display (dots )
183
- game .display ()
184
-
185
-
186
- class ShipKlingon (AbsShip ):
187
-
188
- def __init__ (self ):
189
- super ().__init__ ()
190
- self .xpos = 0
191
- self .ypos = 0
192
- self .shield_level = 0
193
-
194
- def get_glyph (self ):
195
- return Glyphs .KLINGON
196
-
197
- def from_map (self , xpos , ypos ):
198
- self .xpos = xpos
199
- self .ypos = ypos
200
- self .shield_level = 300 + random .randint (0 , 199 )
201
-
202
- @staticmethod
203
- def attack (game ):
204
- from Calculators import Calc
205
- kships = game .game_map .get_area_klingons ()
206
- if len (kships ) > 0 :
207
- for ship in kships :
208
- if game .enterprise .docked :
209
- game .display ("Enterprise hit by ship at sector [{0},{1}]. No damage due to starbase shields." .format (
210
- ship .xpos + 1 , ship .ypos + 1
211
- ))
212
- else :
213
- dist = Calc .distance (
214
- game .game_map .xpos , game .game_map .ypos , ship .xpos , ship .ypos )
215
- delivered_energy = 300 * \
216
- random .uniform (0.0 , 1.0 ) * (1.0 - dist / 11.3 )
217
- game .enterprise .shield_level -= int (delivered_energy )
218
- if game .enterprise .shield_level < 0 :
219
- game .enterprise .shield_level = 0
220
- game .destroyed = True
221
- game .display ("Enterprise hit by ship at sector [{0},{1}]. Shields dropped to {2}." .format (
222
- ship .xpos + 1 , ship .ypos + 1 , game .enterprise .shield_level
223
- ))
224
- if game .enterprise .shield_level == 0 :
225
- return True
226
- return True
227
- return False
0 commit comments