Example #1
0
def move_player(Field, Player, key):
    (PlayerX, PlayerY) = Player.Position
    if key == pygame.K_UP:
        NewX = PlayerX
        NewY = PlayerY - 1
        NewDir = "Up"
    else:
        if key == pygame.K_DOWN:
            NewX = PlayerX
            NewY = PlayerY + 1
            NewDir = "Down"
        else:
            if key == pygame.K_LEFT:
                NewX = PlayerX - 1
                NewY = PlayerY
                NewDir = "Left"
            else:
                if key == pygame.K_RIGHT:
                    NewX = PlayerX + 1
                    NewY = PlayerY
                    NewDir = "Right"
                else:
                    NewX = PlayerX
                    NewY = PlayerY
                    NewDir = Player.Direction
    if NewY < 0 or NewY >= len(Field[0]) or NewX < 0 or NewX >= len(Field):
        #OOB
        pass
    else:
        if Field[NewX][NewY][0].clas == "Ground":
            # Target tile contains ground
            if (not Field[NewX][NewY][0].passable):
                #Non-passable terrain
                pass
            else:
                if Field[NewX][NewY][1]:
                    Object = Field[NewX][NewY][1]
                    if Object[0] == "Portal":
                        (Field,
                         Player) = Map.set_player(Field, Player, Object[1],
                                                  Object[2], Object[3])
                else:
                    LastTile = Player.Last_Tile
                    Player.Position = (NewX, NewY)
                    Player.direction = NewDir
                    Field[PlayerX][PlayerY] = LastTile
                    (Field, Player) = Map.set_player(Field, Player,
                                                     Player.Current_Map, NewX,
                                                     NewY)

        else:
            if Field[NewX][NewY][0].clas == "Monster":
                OldTile = Field[NewX][NewY][1].OldTile
                BattleScreen = Battle.create_battle_screen(
                    Player, [Field[NewX][NewY]], Map.Block_Size,
                    Map.FieldSizeX, Map.FieldSizeY)
                Battle.Start_battle(BattleScreen, Player,
                                    [Field[NewX][NewY][1]])
                Field[NewX][NewY] = OldTile
                (Field, Player) = move_player(Field, Player, key)
    return (Field, Player)