def __init__(self): self.health = playerhealth self.money = 0 self.gems = 0 self.upgPathSelectLvl = 5 self.abilities = list() self.wavenum = 0 self.gameover = False self.towerSelected = None self.tbbox = None self.layout = None self.wavestart = 999 self.next_wave = False self.pausetime = 0 self.state = "Start" self.restart = False self.score = 0 self.newMoveList = False self.wavetime = None self.wavetimeInt = None self.myDispatcher = EventDispatcher.EventDisp() self.analytics = Analytics.Analytics() self.store = DictStore('settings.txt') if self.store.exists('audio'): self.soundOn = self.store.get('audio')['soundOn'] self.musicOn = self.store.get('audio')['musicOn'] else: self.soundOn = True self.musicOn = True
def resetGame(): '''Resets game variables so player can restart the game quickly.''' Player.player.state = 'Restart' stopAllAnimation() Player.player.gameover = False Map.mapvar.getStartPoints() Map.mapvar.flylistgenerated = False Map.mapvar.flymovelists = [] Map.mapvar.pointmovelists = [] Localdefs.towerGroupDict = {'Life': [], 'Fire': [], 'Ice': [], 'Gravity': [], 'Wind': []} AllLists = [Localdefs.towerlist, Localdefs.bulletlist, Localdefs.menulist, Localdefs.explosions, Localdefs.senderlist, Localdefs.timerlist, Localdefs.shotlist, Localdefs.alertQueue] i = 0 for list in AllLists: while i < len(list): list.pop() for tower in Map.mapvar.towercontainer.children: if tower.type != 'Base': tower.remove() Map.mapvar.baseimg = None Map.mapvar.towercontainer.clear_widgets() Map.mapvar.enemycontainer.clear_widgets() for road in Map.mapvar.roadcontainer.children: road.iceNeighbor = False Map.mapvar.roadcontainer.clear_widgets() Map.mapvar.shotcontainer.clear_widgets() Map.mapvar.wallcontainer.clear_widgets() Map.mapvar.towerdragimagecontainer.clear_widgets() Player.player.wavenum = 0 Player.player.wavetime = int(Map.mapvar.waveseconds) Player.player.myDispatcher.Timer = str(Player.player.wavetime) Player.player.health = Player.playerhealth Player.player.myDispatcher.Health = str(Player.player.health) Player.player.score = 0 Player.player.myDispatcher.Score = str(Player.player.score) Player.player.analytics = Analytics.Analytics() __main__.ids.wavestreamer.removeWaveStreamer() __main__.ids.wavescroller.scroll_x = 0 __main__.ids.play.text = 'Start' if Messenger.messenger.bgrect: Map.mapvar.background.canvas.after.remove(Messenger.messenger.bgrect) Messenger.messenger.bgrect = None
class GameBot: browser = None executable_path = "source/webdriver/chromedriver" logger = Logger.Logger("Logger") raid_analytics = Analytics.Analytics() def __init__(self, url, username, password, lang="en"): self.url = url self.username = username self.password = password self.raid_text = self.get_raid_text(lang) def start(self): self.browser = webdriver.Chrome(executable_path=self.executable_path) self.browser.get(self.url) sleep(1) def login(self): self.random_sleep(0, 300) self.browser.find_element_by_name("name").send_keys(self.username) self.browser.find_element_by_name("password").send_keys(self.password) self.browser.find_element_by_name("s1").click() # Submit form self.logger.add_line("Logging into: " + self.username) sleep(1) def enter_top_players(self): self.browser.get(self.url + "statistiken.php?id=0&idSub=3") self.logger.add_line("entering top players") sleep(1) def grab_raider_table(self): # raiders table table = self.browser.find_element_by_id("top10_raiders") # take all table contents rows = table.find_elements_by_tag_name("tr") # get the last col (where is the current user's info col = rows[-1].find_elements_by_tag_name("td") # submit it in database self.raid_analytics.add_info(col) ''' for row in rows: col = row.find_elements_by_tag_name("td") self.raid_analytics.add_info(col) ''' def record_raider_rank(self): self.enter_top_players() self.grab_raider_table() def enter_village(self): self.browser.get(self.url + "dorf2.php") self.logger.add_line("entering village") # do something sleep(1) def enter_rally_point(self): self.browser.find_element_by_class_name("g16").click() self.logger.add_line("entering rally point") # do something sleep(1) def enter_farm_list(self): self.browser.find_element_by_class_name("favorKey99").click() self.logger.add_line("entering farm list") sleep(1) def send_farm_list(self, index): self.random_sleep(1, 60) checkboxes = self.browser.find_elements_by_xpath("//input[contains(@class, 'markAll') " "and contains(@class, 'check')]") if len(checkboxes) <= index: self.logger.add_line("Index is out of checkboxes bounds: " + str(len(checkboxes))) return checkboxes[index].send_keys(Keys.SPACE) buttons = self.browser.find_elements_by_xpath("//button[contains(text(),'" + self.raid_text + "')]") if len(buttons) <= index: self.logger.add_line("Index is out of button bounds: " + str(len(buttons))) return buttons[index].click() self.logger.add_line("Sent attack on index: " + str(index)) sleep(2) def send_attacks(self, array): self.enter_village() self.random_sleep(0, 600) self.enter_rally_point() self.enter_farm_list() for i in array: self.send_farm_list(int(i)) def submit(self): self.logger.submit() def submit_error(self): self.logger.add_line("There was an exception during runtime") self.logger.submit() def random_sleep(self, min_num, max_num): if not release: return sleep_time = random.randint(min_num, max_num) self.logger.add_line("sleeping for extra " + str(sleep_time) + " seconds") sleep(sleep_time) @staticmethod def get_raid_text(lang): if lang == 'en': return "Start raid" elif lang == "he": return "שלח בזיזה"