コード例 #1
0
 def fsm_setup(self):
     self.fsm = FSM('INIT', [])
     self.fsm.set_default_transition(lgFSM.Error, 'INIT')
     self.fsm.add_transition_any('INIT', None, 'INIT')
     self.fsm.add_transition('RW', 'INIT', lgFSM.Root)
     self.fsm.add_transition('Xp', 'INIT', lgFSM.Period)
     self.fsm.add_transition('Wd', 'INIT', lgFSM.Declarative, 'DECL')
     self.fsm.add_transition('Wd', 'DECL', lgFSM.Declarative, 'DECL')
     self.fsm.add_transition('Ss', 'DECL', lgFSM.Subject, 'INIT')
     self.fsm.add_transition('AF', 'DECL', lgFSM.Object, 'INIT')
コード例 #2
0
ファイル: grammar_fsm.py プロジェクト: himanshuraiml/nlp
    def __init__(self, initial_state, memory=[]):
        # Map (input_symbol, current_state) --> (action, next_state).
        self.state_transitions = {}
        # Map (current_state) --> (action, next_state).

        self.input_symbol = None
        self.initial_state = initial_state
        self.current_state = self.initial_state
        self.next_state = None
        self.action = None
        self.memory = memory
        
        self.registers = {}
        self.register_history = []
        self.L_registers = {}
        self.R_registers = {}
        
        self.fsm = FSM('INIT')
        self.fsm.add_transition('front_left',  'INIT', None, 'FRONT_L')
        self.fsm.add_transition('front_right', 'INIT', None, 'FRONT_R')
コード例 #3
0
ファイル: graphics2.py プロジェクト: josej30/aigames
def PaintWorld():

    global players, limits, obs, enemies, time2, time1, time, debug, ts, enemy_bullets, player_bullets

    try:

        # Keys Pressed and saved in buffer
        keyOperations()

        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
        glLoadIdentity()
        glLoadIdentity()

        glTranslatef(0.0, -20.0, -140.0)

        #######################
        # Draw the Objects

        drawLife(players[0], enemies)

        # Plane
        drawPlane()

        # Limits of the world
        drawLimits(limits)

        # Obstacles
        drawObstacle(obstacle1)
        drawObstacle(obstacle2)
        drawObstacle(obstacle3)

        # Draw Food
        drawFood(food)

        # Player
        for player in players:
            if player.life == 0:
                print ""
                print "    GAME OVER...    "
                print ""
                print "    Thanks for playing Battle Cubes :D   "
                print ""
                sys.exit(0)
            drawAgent(player)

        #Agent's Bullets
        for bullet in player_bullets:
            drawBullet(bullet, 1)

#Agent' Bullets
        for bullet in enemy_bullets:
            drawBullet(bullet, 2)

        # Enemies
        for enemy in enemies:
            enemy_bullets = enemy_bullets + enemy.bullets
            enemy.bullets = []
            if enemy.life <= 0:
                enemies.remove(enemy)
                characters.remove(enemy)
                break
            drawEnemy(enemy)

        drawNavMesh(ts)

        #######################

        #############
        # Behaviour #
        #############

        fsm = FSM()
        steerings = [
            SteeringOutput(),
            SteeringOutput(),
            SteeringOutput(),
            SteeringOutput()
        ]

        # Iterating through all the enemies
        for i in range(0, len(enemies)):
            enemy = enemies[i]
            if enemy.life > 0:
                # Updating the state on the FSM
                enemy.state = fsm.update(enemy, characters, food)
                # Retrieving the new steering
                steerings[i] = getSteering(characters, player, enemy, obs, ts,
                                           food)

        physics = check_physics(characters, obs, obstacle_ob)

        # Get end just before calculating new positions,
        # velocities and accelerations
        time2 = datetime.now()

        time = ((time2 - time1).microseconds) / 1000000.0

        # Updating player stats
        updatePlayer(player, time, obstacle_ob)

        #Updating agent's bullets from agent
        for b in player_bullets:
            if b.position[1] < 0:
                player_bullets.remove(b)
            else:
                #print b.velocity
                steering = SteeringOutput()
                # Acceleration in y-axes (gravity)
                b.update(steering, time)

                #Check bullet position
                check_shot(b, enemies)
                for ob in obstacle_ob:
                    if inside_ob(b, ob):

                        player_bullets.remove(b)
                        break
                #for wall in obs:
                #	agent_wall(agent,wall)

                #print "posicion " + str(b.position)

                #Updating enemy's bullets
        for b in enemy_bullets:
            if b.position[1] < 0:
                enemy_bullets.remove(b)
            else:
                #print b.velocity
                steering = SteeringOutput()
                # Acceleration in y-axes (gravity)
                b.update(steering, time)

                #Check bullet position
                check_shot(b, [player])
                for ob in obstacle_ob:
                    if inside_ob(b, ob):

                        enemy_bullets.remove(b)
                        break

        #print player.velocity

        # Updating enemies stats
        for i in range(0, len(enemies)):
            if enemies[i].life > 0:
                enemies[i].update(steerings[i], time, obstacle_ob, "auto")

        for col in physics:
            col[0].update(col[1], time, obstacle_ob, "auto")

        # Get initial time just after calculating everything
        time1 = datetime.now()

        ####################
        # End of Behaviour #
        ####################

        glutSwapBuffers()

    except Exception, e:
        traceback.print_exc()
        sys.exit(-1)