projects
/
super-star-trek.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Time to make curses work.
[super-star-trek.git]
/
src
/
sst.py
diff --git
a/src/sst.py
b/src/sst.py
index 60284f050717a67e9c9332c1482950f3064dbc5d..3c1050275e4bbb85444bf6c5f515a760fc77d193 100644
(file)
--- a/
src/sst.py
+++ b/
src/sst.py
@@
-755,10
+755,7
@@
def movebaddy(enemy):
else:
motion = game.skill
# calculate preferred number of steps
else:
motion = game.skill
# calculate preferred number of steps
- if motion < 0:
- nsteps = -motion
- else:
- nsteps = motion
+ nsteps = abs(int(motion))
if motion > 0 and nsteps > mdist:
nsteps = mdist; # don't overshoot
if nsteps > QUADSIZE:
if motion > 0 and nsteps > mdist:
nsteps = mdist; # don't overshoot
if nsteps > QUADSIZE:
@@
-773,16
+770,7
@@
def movebaddy(enemy):
m.i = 0
if 2.0 * abs(m.j) < abs(game.sector.i-enemy.kloc.i):
m.j = 0
m.i = 0
if 2.0 * abs(m.j) < abs(game.sector.i-enemy.kloc.i):
m.j = 0
- if m.i != 0:
- if m.i*motion < 0:
- m.i = -1
- else:
- m.i = 1
- if m.j != 0:
- if m.j*motion < 0:
- m.j = -1
- else:
- m.j = 1
+ m = (motion * m).sgn()
next = enemy.kloc
# main move loop
for ll in range(nsteps):
next = enemy.kloc
# main move loop
for ll in range(nsteps):
@@
-1285,6
+1273,10
@@
def collision(rammed, enemy):
def torpedo(origin, course, dispersion, number, nburst):
"Let a photon torpedo fly"
def torpedo(origin, course, dispersion, number, nburst):
"Let a photon torpedo fly"
+ if not damaged(DSRSENS) or game.condition=="docked":
+ setwnd(srscan_window)
+ else:
+ setwnd(message_window)
shoved = False
ac = course + 0.25*dispersion
angle = (15.0-ac)*0.5235988
shoved = False
ac = course + 0.25*dispersion
angle = (15.0-ac)*0.5235988
@@
-1292,17
+1284,12
@@
def torpedo(origin, course, dispersion, number, nburst):
delta = coord(-math.sin(angle), math.cos(angle))
bigger = max(abs(delta.i), abs(delta.j))
delta /= bigger
delta = coord(-math.sin(angle), math.cos(angle))
bigger = max(abs(delta.i), abs(delta.j))
delta /= bigger
- x = origin.i; y = origin.j
w = coord(0, 0); jw = coord(0, 0)
w = coord(0, 0); jw = coord(0, 0)
- if not damaged(DSRSENS) or game.condition=="docked":
- setwnd(srscan_window)
- else:
- setwnd(message_window)
+ ungridded = copy.copy(origin)
# Loop to move a single torpedo
# Loop to move a single torpedo
- for step in range(1, 15+1):
- x += delta.i
- y += delta.j
- w = coord(x, y).snaptogrid()
+ for step in range(1, QUADSIZE*2):
+ ungridded += delta
+ w = ungridded.snaptogrid()
if not VALID_SECTOR(w.i, w.j):
break
iquad=game.quad[w.i][w.j]
if not VALID_SECTOR(w.i, w.j):
break
iquad=game.quad[w.i][w.j]
@@
-1586,7
+1573,7
@@
def attack(torps_ok):
hit = enemy.kpower*math.pow(dustfac,enemy.kavgd)
enemy.kpower *= 0.75
else: # Enemy uses photon torpedo
hit = enemy.kpower*math.pow(dustfac,enemy.kavgd)
enemy.kpower *= 0.75
else: # Enemy uses photon torpedo
- #
course2 = (enemy.kloc-game.sector).bearing()
+ #
We should be able to make the bearing() method work here
course = 1.90985*math.atan2(game.sector.j-enemy.kloc.j, enemy.kloc.i-game.sector.i)
hit = 0
proutn(_("***TORPEDO INCOMING"))
course = 1.90985*math.atan2(game.sector.j-enemy.kloc.j, enemy.kloc.i-game.sector.i)
hit = 0
proutn(_("***TORPEDO INCOMING"))
@@
-1785,19
+1772,19
@@
def photon():
if i==1 and key == "IHEOL":
# direct all torpedoes at one target
while i < n:
if i==1 and key == "IHEOL":
# direct all torpedoes at one target
while i < n:
- target.append(target
s
[0])
+ target.append(target[0])
course.append(course[0])
i += 1
break
course.append(course[0])
i += 1
break
- scanner.push(
key
)
+ scanner.push(
scanner.token
)
target.append(scanner.getcoord())
if target[-1] == None:
return
target.append(scanner.getcoord())
if target[-1] == None:
return
- course.append(targetcheck(target[1]))
- if course[
i
] == None:
+ course.append(targetcheck(target[
-
1]))
+ if course[
-1
] == None:
return
scanner.chew()
return
scanner.chew()
- if
i
== 0:
+ if
len(target)
== 0:
# prompt for each one
for i in range(n):
proutn(_("Target sector for torpedo number %d- ") % (i+1))
# prompt for each one
for i in range(n):
proutn(_("Target sector for torpedo number %d- ") % (i+1))
@@
-4090,7
+4077,7
@@
def warp(timewarp):
return
# Make sure enough time is left for the trip
return
# Make sure enough time is left for the trip
- game.optime = 10.0*game.dist/game.w
facsq
+ game.optime = 10.0*game.dist/game.w
arpfac**2
if game.optime >= 0.8*game.state.remtime:
skip(1)
prout(_("First Officer Spock- \"Captain, I compute that such"))
if game.optime >= 0.8*game.state.remtime:
skip(1)
prout(_("First Officer Spock- \"Captain, I compute that such"))
@@
-4150,7
+4137,7
@@
def warp(timewarp):
game.energy -= game.dist*game.warpfac*game.warpfac*game.warpfac*(game.shldup+1)
if game.energy <= 0:
finish(FNRG)
game.energy -= game.dist*game.warpfac*game.warpfac*game.warpfac*(game.shldup+1)
if game.energy <= 0:
finish(FNRG)
- game.optime = 10.0*game.dist/game.w
facsq
+ game.optime = 10.0*game.dist/game.w
arpfac**2
if twarp:
timwrp()
if blooey:
if twarp:
timwrp()
if blooey:
@@
-4189,7
+4176,6
@@
def setwarp():
return
oldfac = game.warpfac
game.warpfac = scanner.real
return
oldfac = game.warpfac
game.warpfac = scanner.real
- game.wfacsq=game.warpfac*game.warpfac
if game.warpfac <= oldfac or game.warpfac <= 6.0:
prout(_("Helmsman Sulu- \"Warp factor %d, Captain.\"") %
int(game.warpfac))
if game.warpfac <= oldfac or game.warpfac <= 6.0:
prout(_("Helmsman Sulu- \"Warp factor %d, Captain.\"") %
int(game.warpfac))
@@
-4257,14
+4243,13
@@
def atover(igrab):
finish(FSNOVAED)
return
game.warpfac = randreal(6.0, 8.0)
finish(FSNOVAED)
return
game.warpfac = randreal(6.0, 8.0)
- game.wfacsq = game.warpfac * game.warpfac
prout(_("Warp factor set to %d") % int(game.warpfac))
power = 0.75*game.energy
game.dist = power/(game.warpfac*game.warpfac*game.warpfac*(game.shldup+1))
distreq = randreal(math.sqrt(2))
if distreq < game.dist:
game.dist = distreq
prout(_("Warp factor set to %d") % int(game.warpfac))
power = 0.75*game.energy
game.dist = power/(game.warpfac*game.warpfac*game.warpfac*(game.shldup+1))
distreq = randreal(math.sqrt(2))
if distreq < game.dist:
game.dist = distreq
- game.optime = 10.0*game.dist/game.w
facsq
+ game.optime = 10.0*game.dist/game.w
arpfac**2
game.direc = randreal(12) # How dumb!
game.justin = False
game.inorbit = False
game.direc = randreal(12) # How dumb!
game.justin = False
game.inorbit = False
@@
-4601,7
+4586,6
@@
def abandon():
game.lsupres=game.inlsr=3.0
game.shldup=False
game.warpfac=5.0
game.lsupres=game.inlsr=3.0
game.shldup=False
game.warpfac=5.0
- game.wfacsq=25.0
return
# Code from planets.c begins here.
return
# Code from planets.c begins here.
@@
-5616,13
+5600,11
@@
def setup():
if choose():
return # frozen game
# Prepare the Enterprise
if choose():
return # frozen game
# Prepare the Enterprise
- game.alldone = game.gamewon = False
+ game.alldone = game.gamewon =
game.shldchg = game.shldup =
False
game.ship = IHE
game.state.crew = FULLCREW
game.energy = game.inenrg = 5000.0
game.shield = game.inshld = 2500.0
game.ship = IHE
game.state.crew = FULLCREW
game.energy = game.inenrg = 5000.0
game.shield = game.inshld = 2500.0
- game.shldchg = False
- game.shldup = False
game.inlsr = 4.0
game.lsupres = 4.0
game.quadrant = randplace(GALSIZE)
game.inlsr = 4.0
game.lsupres = 4.0
game.quadrant = randplace(GALSIZE)
@@
-5630,7
+5612,6
@@
def setup():
game.torps = game.intorps = 10
game.nprobes = randrange(2, 5)
game.warpfac = 5.0
game.torps = game.intorps = 10
game.nprobes = randrange(2, 5)
game.warpfac = 5.0
- game.wfacsq = game.warpfac * game.warpfac
for i in range(NDEVICES):
game.damage[i] = 0.0
# Set up assorted game parameters
for i in range(NDEVICES):
game.damage[i] = 0.0
# Set up assorted game parameters
@@
-6401,8
+6382,6
@@
class sstscanner:
clrscr()
if line == '':
return None
clrscr()
if line == '':
return None
- # Skip leading white space
- line = line.lstrip()
if not line:
continue
else:
if not line:
continue
else:
@@
-6423,8
+6402,10
@@
class sstscanner:
self.type = "IHALPHA"
self.real = None
return "IHALPHA"
self.type = "IHALPHA"
self.real = None
return "IHALPHA"
- def
push
(self, tok):
+ def
append
(self, tok):
self.inqueue.append(tok)
self.inqueue.append(tok)
+ def push(self, tok):
+ self.inqueue.insert(0, tok)
def waiting(self):
return self.inqueue
def chew(self):
def waiting(self):
return self.inqueue
def chew(self):
@@
-6571,11
+6552,10
@@
if __name__ == '__main__':
game = gamestate()
idebug = 0
game.options = OPTION_ALL &~ (OPTION_IOMODES | OPTION_PLAIN | OPTION_ALMY)
game = gamestate()
idebug = 0
game.options = OPTION_ALL &~ (OPTION_IOMODES | OPTION_PLAIN | OPTION_ALMY)
- # Disable curses mode until the game logic is working.
- # if os.getenv("TERM"):
- # game.options |= OPTION_CURSES | OPTION_SHOWME
- # else:
- game.options |= OPTION_TTY
+ if os.getenv("TERM"):
+ game.options |= OPTION_CURSES
+ else:
+ game.options |= OPTION_TTY
seed = int(time.time())
(options, arguments) = getopt.getopt(sys.argv[1:], "r:s:tx")
for (switch, val) in options:
seed = int(time.time())
(options, arguments) = getopt.getopt(sys.argv[1:], "r:s:tx")
for (switch, val) in options:
@@
-6617,7
+6597,7
@@
if __name__ == '__main__':
logfp.write("# options %s\n" % " ".join(arguments))
random.seed(seed)
scanner = sstscanner()
logfp.write("# options %s\n" % " ".join(arguments))
random.seed(seed)
scanner = sstscanner()
- map(scanner.
push
, arguments)
+ map(scanner.
append
, arguments)
try:
iostart()
while True: # Play a game
try:
iostart()
while True: # Play a game
@@
-6648,5
+6628,5
@@
if __name__ == '__main__':
ioend()
raise SystemExit, 0
except KeyboardInterrupt:
ioend()
raise SystemExit, 0
except KeyboardInterrupt:
- print""
+ print
""
pass
pass