projects
/
super-star-trek.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add another regression test.
[super-star-trek.git]
/
sst.py
diff --git
a/sst.py
b/sst.py
index 1fdcbd6564e479d55f648f4c76558fba5851b28a..33249cfc555a39a19ea01ac08813f980ae7a3468 100755
(executable)
--- a/
sst.py
+++ b/
sst.py
@@
-1,4
+1,4
@@
-#!/usr/bin/env python
2
+#!/usr/bin/env python
"""
sst.py -- Super Star Trek 2K
"""
sst.py -- Super Star Trek 2K
@@
-12,6
+12,8
@@
See the doc/HACKING file in the distribution for designers notes and advice
on how to modify (and how not to modify!) this code.
"""
from __future__ import print_function, division
on how to modify (and how not to modify!) this code.
"""
from __future__ import print_function, division
+# Runs under Python 2 an Python 3. Preserve this property!
+# SPDX-License-Identifier: BSD-2-clause
import os, sys, math, curses, time, pickle, copy, gettext, getpass
import getopt, socket, locale
import os, sys, math, curses, time, pickle, copy, gettext, getpass
import getopt, socket, locale
@@
-29,7
+31,7
@@
try:
except NameError:
my_input = input
except NameError:
my_input = input
-version = "2.
4
"
+version = "2.
5
"
docpath = (".", "doc/", "/usr/share/doc/sst/")
docpath = (".", "doc/", "/usr/share/doc/sst/")
@@
-176,7
+178,7
@@
class Coord:
s = Coord()
if self.i == 0:
s.i = 0
s = Coord()
if self.i == 0:
s.i = 0
- elif s.i < 0:
+ elif s
elf
.i < 0:
s.i = -1
else:
s.i = 1
s.i = -1
else:
s.i = 1
@@
-801,7
+803,7
@@
def movescom(iq, avoid):
if communicating():
announce()
prout(_("Lt. Uhura- \"Captain, Starfleet Intelligence reports"))
if communicating():
announce()
prout(_("Lt. Uhura- \"Captain, Starfleet Intelligence reports"))
- prout
n
(_(" a planet in Quadrant %s has been destroyed") % game.state.kscmdr)
+ prout(_(" a planet in Quadrant %s has been destroyed") % game.state.kscmdr)
prout(_(" by the Super-commander.\""))
break
return True # looks good!
prout(_(" by the Super-commander.\""))
break
return True # looks good!
@@
-834,7
+836,7
@@
def supercommander():
sc = game.state.kscmdr
for (i, base) in enumerate(game.state.baseq):
basetbl.append((i, (base - sc).distance()))
sc = game.state.kscmdr
for (i, base) in enumerate(game.state.baseq):
basetbl.append((i, (base - sc).distance()))
- if
game.state.baseq
> 1:
+ if
len(game.state.baseq)
> 1:
basetbl.sort(key=lambda x: x[1])
# look for nearest base without a commander, no Enterprise, and
# without too many Klingons, and not already under attack.
basetbl.sort(key=lambda x: x[1])
# look for nearest base without a commander, no Enterprise, and
# without too many Klingons, and not already under attack.
@@
-907,7
+909,7
@@
def supercommander():
prout(_("Lt. Uhura- \"Captain, the starbase in Quadrant %s") \
% game.state.kscmdr)
prout(_(" reports that it is under attack from the Klingon Super-commander."))
prout(_("Lt. Uhura- \"Captain, the starbase in Quadrant %s") \
% game.state.kscmdr)
prout(_(" reports that it is under attack from the Klingon Super-commander."))
- prout
n
(_(" It can survive until stardate %d.\"") \
+ prout(_(" It can survive until stardate %d.\"") \
% int(scheduled(FSCDBAS)))
if not game.resting:
return
% int(scheduled(FSCDBAS)))
if not game.resting:
return
@@
-925,7
+927,7
@@
def supercommander():
return
announce()
prout(_("Lt. Uhura- \"Captain, Starfleet Intelligence reports"))
return
announce()
prout(_("Lt. Uhura- \"Captain, Starfleet Intelligence reports"))
- prout
n(_(" the Super-commander is in Quadrant %s,
") % game.state.kscmdr)
+ prout
(_(" the Super-commander is in Quadrant %s.
") % game.state.kscmdr)
return
def movetholian():
return
def movetholian():
@@
-1737,7
+1739,11
@@
def torps():
proutn(_("Number of torpedoes to fire- "))
continue # Go back around to get a number
else: # key == "IHREAL"
proutn(_("Number of torpedoes to fire- "))
continue # Go back around to get a number
else: # key == "IHREAL"
- n = scanner.int()
+ try:
+ n = scanner.int()
+ except TypeError:
+ huh()
+ return
if n <= 0: # abort command
scanner.chew()
return
if n <= 0: # abort command
scanner.chew()
return
@@
-2082,7
+2088,6
@@
def phasers():
scanner.chew()
key = "IHEOL"
hits[k] = 0 # prevent overflow -- thanks to Alexei Voitenko
scanner.chew()
key = "IHEOL"
hits[k] = 0 # prevent overflow -- thanks to Alexei Voitenko
- k += 1
continue
if key == "IHEOL":
scanner.chew()
continue
if key == "IHEOL":
scanner.chew()
@@
-2112,7
+2117,7
@@
def phasers():
# abort out
scanner.chew()
return
# abort out
scanner.chew()
return
- hits
[k] = scanner.real
+ hits
.append(scanner.real)
rpow += scanner.real
# If total requested is too much, inform and start over
if rpow > avail:
rpow += scanner.real
# If total requested is too much, inform and start over
if rpow > avail:
@@
-2120,7
+2125,6
@@
def phasers():
scanner.chew()
return
key = scanner.nexttok() # scan for next value
scanner.chew()
return
key = scanner.nexttok() # scan for next value
- k += 1
if rpow == 0.0:
# zero energy -- abort
scanner.chew()
if rpow == 0.0:
# zero energy -- abort
scanner.chew()
@@
-3876,7
+3880,7
@@
def imove(icourse=None, noattack=False):
newquadrant(noattack)
break
elif check_collision(w):
newquadrant(noattack)
break
elif check_collision(w):
- pr
int("Collision detected"
)
+ pr
out(_("Collision detected")
)
break
else:
game.sector = w
break
else:
game.sector = w
@@
-6050,6
+6054,7
@@
def newqad():
game.iplnet = None
game.neutz = game.inorbit = game.landed = False
game.ientesc = game.iseenit = game.isviolreported = False
game.iplnet = None
game.neutz = game.inorbit = game.landed = False
game.ientesc = game.iseenit = game.isviolreported = False
+ game.tholian = None
# Create a blank quadrant
game.quad = fill2d(QUADSIZE, lambda i, j: '.')
if game.iscate:
# Create a blank quadrant
game.quad = fill2d(QUADSIZE, lambda i, j: '.')
if game.iscate: