LabLevel

class labpyproject.apps.labpyrinthe.bus.model.core_matrix.LabLevel[source]

Bases : object

Niveau multi-couches (matrices, couches animées) modélisant la carte d’une partie.

Constructeur

Methods Summary

clear([typecase, complete])

Efface une ou toutes les couches du niveau

delete_case(case)

Supprime une case

discard_cache(typecase[, full])

Appelée lorsqu’un changement de case (coords ou type) rend les applats obsolètes

evaluate_bot_attack_proba_for_robot(robot, bot)

Evalue pour les cases de robot.move_zone la probabilité d’attaque possible par bot.

get_animation_matrice()

Retourne la projection de la couche d’animation sous forme de matrice.

get_bot_attack_zone(robot[, nextgamble])

Retourne le set de coords de la sous matrice représentant les cases pouvant être impactées par le robot.

get_bot_move_zone(robot[, nextgamble])

Retourne le set de coords de la sous matrice de forme losange représentant le rayon de déplacement du robot.

get_case_sortie()

Retourne la case sortie

get_cases_adj_impacted_by_danger(casedanger)

Retourne le set des cases impactées par l’explosion d’un danger sans récursivité.

get_cases_reachable_by_grenade_in_dir(robot, …)

Retourne le set des cases atteignables par un jet de grenade dans la direction donnée.

get_cases_with_same_coords(target)

Retourne toutes les cases de même coords que target

get_caseset_for_coordset(coordset)

Retourne le set de cases associé au set de coordonnées

get_change_log()

Retourne les logs de modifications

get_dimensions()

Retourne w, h

get_dirs_for_vector(vect)

Retourne une liste de directions associées au vecteur

get_distance_between_cases(case1, case2)

Calcul la distance entre deux cases

get_flat_matrice([full, guidedicated])

Retourne la matrice représentant l’applat de couches

get_layer(typecase)

Retourne la matrice associée au type_case

get_minelist_arround_case(case)

Recherche les mines comprises dans la matrice 5*5 centrée sur case

get_path_length_between_cases(case1, case2)

Calcul la distance du chemin entre deux cases

get_sortie_coords()

Retourne les coordonnées de la sortie

get_step_change_log()

Retourne les logs de changement d’étape

get_sublevel(x, y, w, h)

Retourne le sous niveau d’origine x, y et de dims w, h

get_typecase_set(typecase)

Retourne le set de cases associées à typecase dans l’applat complet

get_vector_for_cases(case1, case2)

Retourne un tuple représentant le vecteur allant de c1 à c2

init_level_before_changes()

Initialise les logs fins avant des changements

init_level_before_step_change()

Initialise les logs de sous étape de transformation

mark_case_as_modified(case)

Ajoute la case à la liste « add » des changelogs d’étape

move_case(case, nextx, nexty)

Déplace une case aux coordonnées nextx, nexty

scalar_product(vect1, vect2)

Calcul le produit scalaire v1.v2

set_case(case)

Ajoute ou modifie une case

update_bot_action_zones(robot[, nextgamble])

Interface de mise à jour des zones de mouvements et d’attaque du robot.

update_cache()

Met à jour les applats

xlook_for_cases_impacted(casedanger[, …])

Identification récursive des cases impactées par l’activation d’un danger

Methods Documentation

clear(typecase=None, complete=False)[source]

Efface une ou toutes les couches du niveau

Paramètres
  • typecase – typage du LabHelper

  • complete – efface toutes les couches

delete_case(case)[source]

Supprime une case

discard_cache(typecase, full=False)[source]

Appelée lorsqu’un changement de case (coords ou type) rend les applats obsolètes

evaluate_bot_attack_proba_for_robot(robot, bot)[source]

Evalue pour les cases de robot.move_zone la probabilité d’attaque possible par bot. Rq : approximations rapides et sous évaluées. Méthode destinée à des situations désespérées.

get_animation_matrice()[source]

Retourne la projection de la couche d’animation sous forme de matrice. Usage : animation de type « face »

get_bot_attack_zone(robot, nextgamble=False)[source]

Retourne le set de coords de la sous matrice représentant les cases pouvant être impactées par le robot.

Paramètres

nextgamble – si True limite la recherche aux coups à venir (considère la vitesse courante au lieu de la vitesse « absolue »)

get_bot_move_zone(robot, nextgamble=False)[source]

Retourne le set de coords de la sous matrice de forme losange représentant le rayon de déplacement du robot.

Paramètres

nextgamble – si True limite la recherche aux coups à venir (considère la vitesse courante au lieu de la vitesse « absolue »)

get_case_sortie()[source]

Retourne la case sortie

get_cases_adj_impacted_by_danger(casedanger)[source]

Retourne le set des cases impactées par l’explosion d’un danger sans récursivité. La case du danger n’est pas comptée.

get_cases_reachable_by_grenade_in_dir(robot, direct)[source]

Retourne le set des cases atteignables par un jet de grenade dans la direction donnée.

get_cases_with_same_coords(target)[source]

Retourne toutes les cases de même coords que target

get_caseset_for_coordset(coordset)[source]

Retourne le set de cases associé au set de coordonnées

get_change_log()[source]

Retourne les logs de modifications

get_dimensions()[source]

Retourne w, h

get_dirs_for_vector(vect)[source]

Retourne une liste de directions associées au vecteur

get_distance_between_cases(case1, case2)[source]

Calcul la distance entre deux cases

get_flat_matrice(full=True, guidedicated=False)[source]

Retourne la matrice représentant l’applat de couches

  • si full = True : toutes les couches sont publiées

  • si full = False : seules les couches nécessaires au parsing le sont

  • si guidedicated = True : matrice dédiée aux GUIs graphiques, en pratique la même matrice que celle dédiée au parsing

get_layer(typecase)[source]

Retourne la matrice associée au type_case

get_minelist_arround_case(case)[source]

Recherche les mines comprises dans la matrice 5*5 centrée sur case

get_path_length_between_cases(case1, case2)[source]

Calcul la distance du chemin entre deux cases

get_sortie_coords()[source]

Retourne les coordonnées de la sortie

get_step_change_log()[source]

Retourne les logs de changement d’étape

get_sublevel(x, y, w, h)[source]

Retourne le sous niveau d’origine x, y et de dims w, h

get_typecase_set(typecase)[source]

Retourne le set de cases associées à typecase dans l’applat complet

Paramètres

typecase – famille courante (voir _build_fullflat_typecase_cache) ou type_case unitaire (dans LabHelper.FULL_CASETYPES)

get_vector_for_cases(case1, case2)[source]

Retourne un tuple représentant le vecteur allant de c1 à c2

init_level_before_changes()[source]

Initialise les logs fins avant des changements

init_level_before_step_change()[source]

Initialise les logs de sous étape de transformation

mark_case_as_modified(case)[source]

Ajoute la case à la liste « add » des changelogs d’étape

move_case(case, nextx, nexty)[source]

Déplace une case aux coordonnées nextx, nexty

scalar_product(vect1, vect2)[source]

Calcul le produit scalaire v1.v2

set_case(case)[source]

Ajoute ou modifie une case

update_bot_action_zones(robot, nextgamble=False)[source]

Interface de mise à jour des zones de mouvements et d’attaque du robot.

Paramètres

nextgamble – si True limite la recherche aux coups à venir (considère la vitesse courante au lieu de la vitesse « absolue »)

update_cache()[source]

Met à jour les applats

xlook_for_cases_impacted(casedanger, count=0, dictimpact=None)[source]

Identification récursive des cases impactées par l’activation d’un danger

Retourne un dictionnaire :

  • dictimpact[« danger_done »] : usage interne

  • dictimp[« flat_list »] : liste (set) complète des cases impactées

  • dictimpact[0] : liste (set) de tupples (case, impact) des cases touchées au pas 0

  • dictimpact[n] : liste (set) de tupples (case, impact) des cases touchées au pas n

avec n : nombre de pas d’animation.

Rq importante : les données mises en cache ne comprennent pas le danger initial. En effet lors des calculs de commandes automatiques, on simule des explosions avec des grenades virtuelles. On n’inclue le danger réel qu’au dernier moment.