Ejemplo n.º 1
0
 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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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 "שלח בזיזה"