Mods
This commit is contained in:
		@@ -167,20 +167,27 @@ class Ants:
 | 
				
			|||||||
        if changed:
 | 
					        if changed:
 | 
				
			||||||
            Ants.save()
 | 
					            Ants.save()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @staticmethod
 | 
					 | 
				
			||||||
    def most_hits() -> Ant | None:
 | 
					 | 
				
			||||||
        if not len(Ants.ants):
 | 
					 | 
				
			||||||
            return None
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return max(Ants.ants, key=lambda a: a.hits)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @staticmethod
 | 
					 | 
				
			||||||
    def most_triumph() -> Ant | None:
 | 
					 | 
				
			||||||
        if not len(Ants.ants):
 | 
					 | 
				
			||||||
            return None
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return max(Ants.ants, key=lambda a: a.triumph)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @staticmethod
 | 
					    @staticmethod
 | 
				
			||||||
    def random_name() -> str:
 | 
					    def random_name() -> str:
 | 
				
			||||||
        return Utils.random_name(Ants.get_names())
 | 
					        return Utils.random_name(Ants.get_names())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @staticmethod
 | 
				
			||||||
 | 
					    def get_top_ant() -> tuple[Ant, int] | None:
 | 
				
			||||||
 | 
					        if not len(Ants.ants):
 | 
				
			||||||
 | 
					            return None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        top = None
 | 
				
			||||||
 | 
					        top_score = 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # This could be a one-liner but I might expand the algorithm later
 | 
				
			||||||
 | 
					        for ant in Ants.ants:
 | 
				
			||||||
 | 
					            score = max(0, ant.triumph - ant.hits)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (not top) or (score > top_score):
 | 
				
			||||||
 | 
					                top = ant
 | 
				
			||||||
 | 
					                top_score = score
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if not top:
 | 
				
			||||||
 | 
					            return None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return top, top_score
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -172,7 +172,7 @@ class Game:
 | 
				
			|||||||
        elif num == 6:
 | 
					        elif num == 6:
 | 
				
			||||||
            status = s.bare_bone_with_adjective()
 | 
					            status = s.bare_bone_with_adjective()
 | 
				
			||||||
        elif num == 7:
 | 
					        elif num == 7:
 | 
				
			||||||
            status = Utils.get_random_emoji(3)
 | 
					            status = Utils.random_emoji(3)
 | 
				
			||||||
            method = "thinking"
 | 
					            method = "thinking"
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            status = s.sentence()
 | 
					            status = s.sentence()
 | 
				
			||||||
@@ -221,10 +221,12 @@ class Game:
 | 
				
			|||||||
            text.append("Hatch some ants")
 | 
					            text.append("Hatch some ants")
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            text.append(f"Ants:{nb}{len(Ants.ants)}")
 | 
					            text.append(f"Ants:{nb}{len(Ants.ants)}")
 | 
				
			||||||
            triumph = Ants.most_triumph()
 | 
					            top = Ants.get_top_ant()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if triumph:
 | 
					            if top:
 | 
				
			||||||
                text.append(f"Top:{nb}{triumph.name} ({triumph.triumph})")
 | 
					                ant = top[0]
 | 
				
			||||||
 | 
					                score = top[1]
 | 
				
			||||||
 | 
					                text.append(f"Top:{nb}{ant.name} ({score})")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Window.info.setText(Config.info_separator.join(text))
 | 
					        Window.info.setText(Config.info_separator.join(text))
 | 
				
			||||||
        Window.info.adjustSize()
 | 
					        Window.info.adjustSize()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -95,17 +95,23 @@ class Utils:
 | 
				
			|||||||
        return f"rgb{color}"
 | 
					        return f"rgb{color}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @staticmethod
 | 
					    @staticmethod
 | 
				
			||||||
    def get_random_character(font_path: str, num: int) -> str:
 | 
					    def random_character(font_path: str, num: int) -> str:
 | 
				
			||||||
        font = TTFont(font_path)
 | 
					        font = TTFont(font_path)
 | 
				
			||||||
        cmap = font["cmap"]
 | 
					        cmap = font["cmap"]
 | 
				
			||||||
        unicode_map = cmap.getBestCmap()
 | 
					        unicode_map = cmap.getBestCmap()
 | 
				
			||||||
        characters = [chr(code_point) for code_point in unicode_map]
 | 
					        characters = [chr(code_point) for code_point in unicode_map]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for _ in range(10):  # Try up to 10 times
 | 
				
			||||||
            selected = random.sample(characters, num)
 | 
					            selected = random.sample(characters, num)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if all((char.isprintable() and not char.isspace()) for char in selected):
 | 
				
			||||||
                return " ".join(selected)
 | 
					                return " ".join(selected)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @staticmethod
 | 
					    @staticmethod
 | 
				
			||||||
    def get_random_emoji(num: int) -> str:
 | 
					    def random_emoji(num: int) -> str:
 | 
				
			||||||
        return Utils.get_random_character(str(Config.emoji_font_path), num)
 | 
					        return Utils.random_character(str(Config.emoji_font_path), num)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @staticmethod
 | 
					    @staticmethod
 | 
				
			||||||
    def to_date(timestamp: float) -> str:
 | 
					    def to_date(timestamp: float) -> str:
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user