コード例 #1
0
    def start_game(self, game_name="dots", nplayer=2, nrow=None, ncol=None):
        """ Start producing game resultStep
        :game_name: game name default: dots
        :nplayer: Number of players default: 2
        :nrow: number of rows REQUIRED 
        :ncol: number of columns REQUIRED 
        """
        if game_name is not None:
            self.game_name = game_name
        self.nplayer = nplayer
        self.game_results = nplayer * [0]
        if nrow is not None:
            self.nrow = nrow
        if ncol is not None:
            self.ncol = ncol
        self.game_no += 1
        self.move_no = 0  # Track number of moves
        self.moves = []  # Collect move tuples (player, row, col)
        self.time_beg = datetime.now()

        self.game_ts = SlTrace.getTs(dp=4)
        if self.ngame == 0:
            SlTrace.lg(r"""Game file version("%s")""" % self.version_str)
            print(r"""version("%s")""" % self.version_str, file=self.fout)
            print(r'''history(r"""%s""")''' % self.history, file=self.fout)
            print(r'''pgm_info(r"""%s""")''' % self.pgm_info, file=self.fout)
コード例 #2
0
    def open_output(self, file_name=None):
        """ Open games file output
        :file_name:  output file name, base name if not absolute
        """
        if file_name is None:
            file_name = self.file_prefix
            if not file_name.endswith("_"):
                file_name += "_"
            file_name += SlTrace.getTs()
        if not re.match(file_name, r"^.*\.[^.]+$"):
            file_name += "." + self.file_ext
        if not os.path.isabs(file_name):
            file_name = os.path.abspath(os.path.join(self.file_dir, file_name))
        self.file_path = file_name
        path = Path(file_name)
        if path.is_file():
            raise SelectError("gamesfile: %s already exists" % (file_name))

        try:
            self.fout = open(self.file_path, "w")
        except Exception as ex:
            SlTrace.lg("open_output(%s) failed: %s" %
                       (self.file_path, str(ex)))
            raise SelectError("No games files")
        print("# %s" % self.file_path, file=self.fout)
        d2 = datetime.now().strftime("%B %d, %Y %H:%M")
        print("# On: %s\n" % d2, file=self.fout)
        print("# pgm_info = {}".format(self.pgm_info), file=self.fout)
        print("", file=self.fout)
コード例 #3
0
 def save_file(self, file_name):
     out_file = file_name
     if file_name is None:
         out_file = "new_gpx_" + SlTrace.getTs()
     if not os.path.isabs(out_file):
         out_file = os.path.basename(out_file)
         out_file = os.path.join("..", "new_data", out_file)
     pm = re.match(r'^.*\.[^.]+$', out_file)
     if pm is None:
         out_file += ".gpx"
     out_file = os.path.abspath(out_file)
     SlTrace.lg(f"Output file: {out_file}")
     gpx_attr = {'version'               : "1.1",
                 'creator'               : "GDAL 3.0.4",
                 'xmlns:xsi'             : "http://www.w3.org/2001/XMLSchema-instance",
                 'xmlns:ogr'             : "http://osgeo.org/gdal",
                  'xmlns'                : "http://www.topografix.com/GPX/1/1",
                  'xsi:schemaLocation'   : "http://www.topografix.com/GPX/1/1",
                  }
     gpx_top = Element('gpx', gpx_attr)
     generated_on = str(datetime.datetime.now())
     comment = Comment(f"Created {generated_on} via surveyor.py by crs")
     gpx_top.append(comment)
     comment = Comment(f"Source code: GitHub raysmith619/PlantInvasion")
     gpx_top.append(comment)
     n_seg = 0
     n_pt = 0
     for track_segment in self.get_segments():
         trk = SubElement(gpx_top, 'trk')
         ###gpx_top.append(trk)
         trkseg = SubElement(trk, 'trkseg')      # We only have one trkseg per trk
         ###trk.append(trkseg)
         n_seg += 1
         for seg_point in track_segment.get_points():
             trkpt = SubElement(trkseg, 'trkpt',
                                {'lat' : str(seg_point.lat),
                                'lon' : str(seg_point.long),
                                })
             ###trkseg.append(trkpt)
             n_pt += 1
     SlTrace.lg(f"GPX File: {n_seg} segments {n_pt} points")
     pretty_str = prettify(gpx_top)
     
     if SlTrace.trace("gpx_output"):
         SlTrace.lg(pretty_str)
     if SlTrace.trace("gpx_rough_outupt"):
         rough_string = ElementTree.tostring(gpx_top, 'utf-8')
         SlTrace.lg(f"rough_string:{rough_string}")
     try:
         fout = open(out_file, "w")
         fout.write(pretty_str)
         fout.close()
     except IOError as e:
         err_msg = f"Error {repr(e)} in creating GPXFile {out_file}"
         SlTrace.lg(err_msg)
         SlTrace.report(err_msg)