X-Git-Url: https://jxself.org/git/?p=super-star-trek.git;a=blobdiff_plain;f=src%2Fsst.py;h=68d87a1840e8ee8c296647550d68af202f7cba60;hp=3c1050275e4bbb85444bf6c5f515a760fc77d193;hb=11ee6e5e6b8a75bcfe2c2fdda71e2ac23072beb5;hpb=79954e3b773fc8c34d62bc48e1bfdd3bf55d054e diff --git a/src/sst.py b/src/sst.py index 3c10502..68d87a1 100644 --- a/src/sst.py +++ b/src/sst.py @@ -256,7 +256,7 @@ class coord: return math.sqrt((self.i - other.i)**2 + (self.j - other.j)**2) def bearing(self, other=None): if not other: other = coord(0, 0) - return 1.90985*math.atan2(self.i-other.i, self.j-other.j) + return 1.90985*math.atan2(self.j-other.j, self.i-other.i) def sgn(self): s = coord() if self.i == 0: @@ -1057,11 +1057,11 @@ def movetholian(): for i in range(QUADSIZE): if game.quad[0][i]!=IHWEB and game.quad[0][i]!=IHT: return - if game.quad[QUADSIZE][i]!=IHWEB and game.quad[QUADSIZE][i]!=IHT: + if game.quad[QUADSIZE-1][i]!=IHWEB and game.quad[QUADSIZE-1][i]!=IHT: return if game.quad[i][0]!=IHWEB and game.quad[i][0]!=IHT: return - if game.quad[i][QUADSIZE]!=IHWEB and game.quad[i][QUADSIZE]!=IHT: + if game.quad[i][QUADSIZE-1]!=IHWEB and game.quad[i][QUADSIZE-1]!=IHT: return # All plugged up -- Tholian splits game.quad[game.tholian.kloc.i][game.tholian.kloc.j]=IHWEB @@ -1330,7 +1330,7 @@ def torpedo(origin, course, dispersion, number, nburst): shoved = True elif iquad in (IHC, IHS, IHR, IHK): # Hit a regular enemy # find the enemy - if withprob(0.05): + if iquad in (IHC, IHS) and withprob(0.05): prout(crmena(True, iquad, "sector", w) + _(" uses anti-photon device;")) prout(_(" torpedo neutralized.")) return None @@ -1725,7 +1725,7 @@ def targetcheck(w): prout(_(" the Captain's psychological profile.\"")) scanner.chew() return None - return 1.90985932*math.atan2(delta.j, delta.i) + return delta.bearing() def photon(): "Launch photon torpedo." @@ -3323,27 +3323,8 @@ message_window = None prompt_window = None curwnd = None -def outro(): - "Wrap up, either normally or due to signal" - if game.options & OPTION_CURSES: - #clear() - #curs_set(1) - #refresh() - #resetterm() - #echo() - curses.endwin() - sys.stdout.write('\n') - if logfp: - logfp.close() - def iostart(): global stdscr, rows - #setlocale(LC_ALL, "") - #bindtextdomain(PACKAGE, LOCALEDIR) - #textdomain(PACKAGE) - if atexit.register(outro): - sys.stderr.write("Unable to register outro(), exiting...\n") - raise SysExit,1 if not (game.options & OPTION_CURSES): ln_env = os.getenv("LINES") if ln_env: @@ -3353,19 +3334,8 @@ def iostart(): else: stdscr = curses.initscr() stdscr.keypad(True) - #saveterm() curses.nonl() curses.cbreak() - curses.start_color() - curses.init_pair(curses.COLOR_BLACK, curses.COLOR_BLACK, curses.COLOR_BLACK) - curses.init_pair(curses.COLOR_GREEN, curses.COLOR_GREEN, curses.COLOR_BLACK) - curses.init_pair(curses.COLOR_RED, curses.COLOR_RED, curses.COLOR_BLACK) - curses.init_pair(curses.COLOR_CYAN, curses.COLOR_CYAN, curses.COLOR_BLACK) - curses.init_pair(curses.COLOR_WHITE, curses.COLOR_WHITE, curses.COLOR_BLACK) - curses.init_pair(curses.COLOR_MAGENTA, curses.COLOR_MAGENTA, curses.COLOR_BLACK) - curses.init_pair(curses.COLOR_BLUE, curses.COLOR_BLUE, curses.COLOR_BLACK) - curses.init_pair(curses.COLOR_YELLOW, curses.COLOR_YELLOW, curses.COLOR_BLACK) - #noecho() global fullscreen_window, srscan_window, report_window, status_window global lrscan_window, message_window, prompt_window (rows, columns) = stdscr.getmaxyx() @@ -3378,20 +3348,18 @@ def iostart(): prompt_window = curses.newwin(1, 0, rows-2, 0) message_window.scrollok(True) setwnd(fullscreen_window) - textcolor(DEFAULT) - -def textcolor(color): - "Set text foreground color. Presently a stub." - pass # FIXME def ioend(): "Wrap up I/O. Presently a stub." - pass + stdscr.keypad(False) + curses.echo() + curses.nocbreak() + curses.endwin() def waitfor(): "Wait for user action -- OK to do nothing if on a TTY" if game.options & OPTION_CURSES: - stsdcr.getch() + stdscr.getch() def announce(): skip(1) @@ -3432,7 +3400,10 @@ def skip(i): pause_game() clrscr() else: - proutn("\n") + try: + curwnd.move(y+1, 0) + except curses.error: + pass else: global linecount linecount += 1 @@ -3461,7 +3432,7 @@ def prouts(line): time.sleep(0.03) proutn(c) if game.options & OPTION_CURSES: - wrefresh(curwnd) + curwnd.refresh() else: sys.stdout.flush() if not replayfp or replayfp.closed: @@ -3955,8 +3926,8 @@ def getcourse(isprobe, akey): prout(_("Ensign Chekov- \"Course laid in, Captain.\"")) # the actual deltas get computed here delta = coord() - delta.i = dquad.j-game.quadrant.j + 0.1*(dsect.j-game.sector.j) - delta.j = game.quadrant.i-dquad.i + 0.1*(game.sector.i-dsect.i) + delta.j = dquad.j-game.quadrant.j + 0.1*(dsect.j-game.sector.j) + delta.i = game.quadrant.i-dquad.i + 0.1*(game.sector.i-dsect.i) else: # manual while key == "IHEOL": proutn(_("X and Y displacements- ")) @@ -4452,13 +4423,13 @@ def mayday(): elif m == 3: proutn(_("3rd")) proutn(_(" attempt to re-materialize ") + crmshp()) game.quad[ix][iy]=(IHMATER0,IHMATER1,IHMATER2)[m-1] - textcolor("red") + #textcolor("red") warble() if randreal() > probf: break prout(_("fails.")) curses.delay_output(500) - textcolor(None) + #textcolor(None) if m > 3: game.quad[ix][iy]=IHQUEST game.alive = False @@ -4467,9 +4438,9 @@ def mayday(): finish(FMATERIALIZE) return game.quad[ix][iy]=game.ship - textcolor("green") + #textcolor("green") prout(_("succeeds.")) - textcolor(None) + #textcolor(None) dock(False) skip(1) prout(_("Lt. Uhura- \"Captain, we made it!\"")) @@ -5237,15 +5208,15 @@ def sectscan(goodScan, i, j): "Light up an individual dot in a sector." if goodScan or (abs(i-game.sector.i)<= 1 and abs(j-game.sector.j) <= 1): if (game.quad[i][j]==IHMATER0) or (game.quad[i][j]==IHMATER1) or (game.quad[i][j]==IHMATER2) or (game.quad[i][j]==IHE) or (game.quad[i][j]==IHF): - if game.condition == "red": textcolor("red") - elif game.condition == "green": textcolor("green") - elif game.condition == "yellow": textcolor("yellow") - elif game.condition == "docked": textcolor("cyan") - elif game.condition == "dead": textcolor("brown") + #if game.condition == "red": textcolor("red") + #elif game.condition == "green": textcolor("green") + #elif game.condition == "yellow": textcolor("yellow") + #elif game.condition == "docked": textcolor("cyan") + #elif game.condition == "dead": textcolor("brown") if game.quad[i][j] != game.ship: highvideo() proutn("%c " % game.quad[i][j]) - textcolor(None) + #textcolor(None) else: proutn("- ") @@ -5343,7 +5314,7 @@ def srscan(): for j in range(QUADSIZE): sectscan(goodScan, i, j) skip(1) - + def eta(): "Use computer to get estimated time of arrival for a warp jump." w1 = coord(); w2 = coord() @@ -6093,12 +6064,14 @@ commands = { def listCommands(): "Generate a list of legal commands." - proutn(_("LEGAL COMMANDS ARE:")) - for (k, key) in enumerate(commands): + prout(_("LEGAL COMMANDS ARE:")) + emitted = 0 + for key in commands: if not commands[key] or (commands[key] & game.options): - if k % 5 == 0: + proutn("%-12s " % key) + emitted += 1 + if emitted % 5 == 4: skip(1) - proutn("%-12s " % key) skip(1) def helpme(): @@ -6628,5 +6601,7 @@ if __name__ == '__main__': ioend() raise SystemExit, 0 except KeyboardInterrupt: + if logfp: + logfp.close() print "" pass