Esempio n. 1
0
 def move_item(self, item, pos):
     '''
     This will change the current state of the selected item to the server.
     :param item:
     :param pos:
     :return:
     '''
     request = self.id+' move '+item+' '+pos
     print 'request sent: ' +request
     s.client(request)
Esempio n. 2
0
    def get_state(self):
        '''
        this will update the state with servers version of state.
        '''
        new_state = State()
        new_state.tape.set_man(s.client('(%s) get man' % self.id))
        new_state.tape.set_boat(s.client('(%s) get boat' % self.id))
        new_state.tape.set_chicken(s.client('(%s) get chicken' % self.id))
        new_state.tape.set_fox(s.client('(%s) get fox' % self.id))
        new_state.tape.set_corn(s.client('(%s) get corn' % self.id))

        #print 'server: ' + state.tape.chicken


        return new_state
Esempio n. 3
0
    def fox_inorout(self):
        if self.state.tape.chicken in 'boat' \
                or self.state.tape.corn in 'boat' \
                or self.state.tape.man in 'boat':               # if either chicken, corn or man is inside of the boat
            return None                                         # -> break the method by returning None.

        elif self.state.tape.fox in 'boat':
            self.state.tape.set_fox(self.state.tape.boat)       # update the tape

            # bring up the fox symbol
            if self.state.tape.boat in 'left':
                self.fox = self.items_b_canvas.create_rectangle(80,100,60,85, fill="blue")
            elif self.state.tape.boat in 'right':
                self.fox = self.items_b_canvas.create_rectangle(80,100,60,85, fill="blue")

        elif self.state.tape.fox in 'left' and self.state.tape.boat in 'left' \
                or self.state.tape.fox in 'right' and self.state.tape.boat in 'right':
            self.state.tape.set_fox('boat')


            # remove the symbol from either a or b(left or right)
            if self.state.tape.boat in 'left':
                self.items_a_canvas.delete(self.fox)
            elif self.state.tape.boat in 'right':
                self.items_b_canvas.delete(self.fox)

        if (self.state.tape.fox != s.client('(%s) get fox' % self.id)):
            self.move_item('fox', self.state.tape.fox)                # update the server with new information
        self.check_death()
Esempio n. 4
0
    def corn_inorout(self):
        if self.state.tape.chicken in 'boat' \
                or self.state.tape.fox in 'boat' \
                or self.state.tape.man in 'boat':           # if either chicken, fox or man is inside of the boat
            return None                                     # -> Break the method

        if self.state.tape.corn in 'boat':
            self.state.tape.set_corn(self.state.tape.boat)  # Update the tape.

            # bring up the corn symbol
            if self.state.tape.boat in 'left':
                self.corn = self.items_a_canvas.create_rectangle(5,100,20,85, fill="yellow")
            elif self.state.tape.boat in 'right':
                self.corn = self.items_b_canvas.create_rectangle(5,100,20,85, fill="yellow")

        elif self.state.tape.corn in 'left' and self.state.tape.boat in 'left' \
                or self.state.tape.corn in 'right' and self.state.tape.boat in 'right':
            self.state.tape.set_corn('boat')

            # remove the symbol from either a or b(left or right)
            if self.state.tape.boat in 'left':
                self.items_a_canvas.delete(self.corn)
            elif self.state.tape.boat in 'right':
                self.items_b_canvas.delete(self.corn)

        if (self.state.tape.corn != s.client('(%s) get corn' % self.id)):
            self.move_item('corn', self.state.tape.corn)                # update the server with new information
        self.check_death()
Esempio n. 5
0
    def chicken_inorout(self):
        if self.state.tape.corn in 'boat' \
                or self.state.tape.fox in 'boat' \
                or self.state.tape.man in 'boat':                   # if either corn, fox or man is inside the boat
            return None                                             # break the action by returning None

        if self.state.tape.chicken in 'boat':                       # if chicken is inside of the boat
            self.state.tape.set_chicken(self.state.tape.boat)       # update the tape as where the chicken is placed.

            # bring up the chicken symbol
            if self.state.tape.boat in 'left':
                self.chicken = self.items_a_canvas.create_rectangle(50,100,29,85, fill="green")
            elif self.state.tape.boat in 'right':
                self.chicken = self.items_b_canvas.create_rectangle(50,100,29,85, fill="green")

        elif self.state.tape.chicken in 'left' and self.state.tape.boat in 'left' \
                or self.state.tape.chicken in 'right' and self.state.tape.boat in 'right':

            self.state.tape.set_chicken('boat')             # set the tape chicken into the boat
            # remove the symbol from either a or b(left or right)
            if self.state.tape.boat in 'left':
                self.items_a_canvas.delete(self.chicken)    # remove the chicken from the left

            elif self.state.tape.boat in 'right':

                self.items_b_canvas.delete(self.chicken)    # remove the chicken from the right

        if (self.state.tape.chicken != s.client('(%s) get chicken' % self.id)):
            self.move_item('chicken', self.state.tape.chicken)
        self.check_death()
Esempio n. 6
0
    def man_go_inside_boat(self):

        # man is at either left or right
        if self.state.tape.man in 'left' or self.state.tape.man in 'right':

            # remove man from either left or right side
            if self.state.tape.man in 'left':                                   # if the man is at left
                self.items_a_canvas.delete(self.man)                            # -> Remove man from left

            elif self.state.tape.man in 'right':                                # if the man is right
                self.items_b_canvas.delete(self.man)                            # -> remove the man from right

            self.state.tape.set_man('boat')                                     # set the new pos to the man

        # man is at boat, and the boat is either left or right.
        elif self.state.tape.man in 'boat' and self.state.tape.boat in 'left':
            self.man = self.items_a_canvas.create_rectangle(100,100,85,50, fill="black")    # add man to the left side
            self.state.tape.set_man('left')                                                 # update the tape

        elif self.state.tape.man in 'boat' and self.state.tape.boat in 'right':
            self.man = self.items_b_canvas.create_rectangle(100,100,85,50, fill="black")    # add man to the right side
            self.state.tape.set_man('right')                                                # update the tape
        if (self.state.tape.man != s.client('(%s) get man' % self.id)):
            self.move_item('man', self.state.tape.man)                            # update the server with new information
        self.check_death()                                                      # Check death
Esempio n. 7
0
    def boat_move(self):
        if self.state.tape.man in 'boat':                           # if man is inside of the boat
            if self.state.tape.boat in 'left':                      # if boat is left
                self.state.tape.set_boat('right')                   # update the tape with the information
                if (self.state.tape.boat != s.client('(%s) get boat' % self.id)):
                    self.move_item('boat', 'right')        # update the server with new information
                # move the boat
                for x in range(0, 90):                              # move 90 times
                    self.boat_canvas.move(1, 5, 0)                  # move 1 px
                    self.boat_canvas.update()                       # update the canvas
                    time.sleep(0.02)                                # seep for 0.02 seconds

            elif self.state.tape.boat in 'right':                   # if the boat is right
                self.state.tape.set_boat('left')                    # update the tape
                if (self.state.tape.boat != s.client('(%s) get boat' % self.id)):
                    self.move_item('boat', 'left')                      # update the server with new information
                for x in range(0,90):                               # move 90 times
                    self.boat_canvas.move(1,-5,0)                   # move -1 px
                    self.boat_canvas.update()                       # update the canvas
                    time.sleep(0.02)                                # sleep for 0.02 seconds
        self.check_death()                                          # check death
Esempio n. 8
0
    def isAllowedToMove(self):
        request = '%s is allowed' % self.id
        isAllowed = s.client(request)
        #print isAllowed
        if isAllowed == 'True' : isAllowed = True
        elif isAllowed == 'False': isAllowed = False

        if (not isAllowed) :
            self.button1['state'] = 'disabled'
            self.button2['state'] = 'disabled'
            self.button3['state'] = 'disabled'
            self.button4['state'] = 'disabled'
            self.button5['state'] = 'disabled'
        else :
            self.button1['state'] = 'normal'
            self.button2['state'] = 'normal'
            self.button3['state'] = 'normal'
            self.button4['state'] = 'normal'
            self.button5['state'] = 'normal'