projects
/
super-star-trek.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
ff4bd91
)
Simplify tac movement, handle more torpedo input cases correctly.
author
Eric S. Raymond
<esr@thyrsus.com>
Tue, 10 Oct 2006 06:21:55 +0000
(06:21 +0000)
committer
Eric S. Raymond
<esr@thyrsus.com>
Tue, 10 Oct 2006 06:21:55 +0000
(06:21 +0000)
src/sst.py
patch
|
blob
|
history
diff --git
a/src/sst.py
b/src/sst.py
index 1346b45466d3e9e1c4e84c47e5925133ffe6c633..de271754c729573b501a1c12e0dd875ad8fb88c2 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]
@@
-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))
@@
-6395,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:
@@
-6417,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):
@@
-6611,7
+6598,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
@@
-6642,5
+6629,5
@@
if __name__ == '__main__':
ioend()
raise SystemExit, 0
except KeyboardInterrupt:
ioend()
raise SystemExit, 0
except KeyboardInterrupt:
- print""
+ print
""
pass
pass