Files
zhichun-project/CTF/backend/lib/__pycache__/game_engine.cpython-312.pyc
T

59 lines
11 KiB
Plaintext
Raw Normal View History

Ë
‹ˆOiÉãóhddlZddlmZddlZddlZddlZddlZddlZddlm Z Gdde«Z
dZ y)éN)ÚABC)Ú clear_outputcófeZdZddZdZdZdZdZdZdZ ddZ
dd „Z dd Z d Z
ed
«Zy
)ÚGameMapcóºd|_d|_|jdz |_t«|_g|_g|_d|_d|_d|_ ||_
y)zL
@show_gap: how many milliseconds when show can be invoked
réççð¿ÚN) ÚwidthÚheightÚ middle_lineÚsetÚwallsÚplayersÚflagsÚ current_timeÚnext_show_timeÚ my_team_nameÚshow_gap_in_msec)Úselfrs ú?/Users/liuhaiyan/zhichun-project/CTF/backend/lib/game_engine.pyÚ__init__zGameMap.__init__ sYðˆŒ
؈Œ ØŸ:™:¨™>ˆÔÜ“UˆŒ
؈Œ ؈Œ
ØˆÔØÔØˆÔØ 0ˆÕócóÂ|d}d|_d|_|d|_|d|_|jdz |_|j dd«|_|j d g«|j d
g«zDchc] }|d |d fŒc}|_|j d
g«Dchc] }|d |d fŒc}|_|j dg«Dchc] }|d |d fŒc}|_ |j dg«Dchc] }|d |d fŒc}|_
|j dg«Dchc] }|d |d fŒc}|_ ycc}wcc}wcc}wcc}wcc}w)mapr r
r r
rÚ
myteamNamer rÚ obstaclesÚ myteamPrisonÚopponentPrisonÚ myteamTargetÚopponentTarget) rrr r
rÚgetrrÚmy_team_prisonÚopponent_team_prisonÚmy_team_targetÚopponent_team_target)rÚreqÚmap_dataÚws rÚinitz GameMap.initstØu:ˆØˆÔØÔؘ&ˆŒ
ؘxÑŒ ØŸ:™:¨™>ˆÔØŸG™G L°"Ó5ˆÔà19·±¸gÀrÓ1JÈXÏ\É\ÐZeÐgiÓMjÒ1jÓlÑ1j¨1q˜v˜q ™vÒ&Ð1jÑlˆŒ
Ø:=¿'¹'À.ÐRTÔ:UÓWÑ:U°A  ¨¨#©Ò/Ð:UÑÔØ@CÇÁÐHXÐZ\Ô@]Ó$_Ñ@]¸! ¡f¨a°©fÒ%5Ð@]Ñ$_ˆÔ!Ø:=¿'¹'À.ÐRTÔ:UÓWÑ:U°A  ¨¨#©Ò/Ð:UÑÔØ@CÇÁÐHXÐZ\Ô@]Ó$_Ñ@]¸! ¡f¨a°©fÒ%5Ð@]Ñ$_ˆÕ!ùò mùÚWùÚ$_ùÚWùÚ$_sÁ:EÂ'E
ÃEÄEÄ.Ecó|d|jkry|d|_g|_|jdg«D]"}d|d<|jj|«Œ$|jdg«D]"}d|d<|jj|«Œ$g|_|jdg«D]"}d|d<|jj|«Œ$|jdg«D]"}d|d<|jj|«Œ$y) NÚtimeFÚ myteamPlayerTÚmineÚopponentPlayerÚ
myteamFlagÚ opponentFlag)rrr%Úappendr)rr*Úfs rÚupdatezGameMap.update+Ø ˆv‰;˜× Ø ™KˆÔ؈Œ à˜¨Ö,ˆA؈Aˆf‰IØ L‰L× Ñ  Õ Ð)¨2Ö.ˆA؈Aˆf‰IØ L‰L× Ñ  Õ ˆŒ
ؘ rÖ*ˆA؈Aˆf‰IØ J‰J× Ñ ˜aÕ ð˜¨Ö,ˆA؈Aˆf‰IØ J‰J× Ñ ˜aÕ ðrcóŠ|jDcgc])}|d|k(sŒ |dk(s |d|k(sŒ|dk(s |d|k(sŒ(|Œ+c}Scc}w)a´
mine: True or False. If True, return players on my side, otherwise return opponent players;
inPrison: True or False or None. If True, return players that are in prison; if false, return players that can move around freely; if none, return all of them.
hasFlag: True or False or None. If True, return players that have flags; if false, return players that do not have flags; if none, return all of them.
r1inPrisonÚhasFlag)r)rr1r:r;r6s rÚ list_playerszGameMap.list_playersAsð  Ÿ<š<óc™<a¨1¨V©9¸Ó+<À(ÈdÒBRÐVWÐXbÑVcÐgoÓVoÐv}ðBFòwFðJKðLUñJVðZaóJa˜cð cùòcs
A
A«
A¹Acón|jDcgc]}|d|k(sŒ |dk(s |d|k(sŒ|Œc}Scc}w)aX
mine: True or False. If True, return flags on my side (i.e., flags I should protect), otherwise return opponent's flags (i.e., flags I should pick up);
canPickup: True or False or None. If True, return flags that can be picked up; if false, return flags that are already placed in my camp; if none, return all of them.
r1NÚ canPickup)r)rr1r>r7s rÚ
list_flagszGameMap.list_flagsIsAð  Ÿ:š:Ór™:¨6©°dÓ):À ÈTÒ@QÐUVÐWbÑUcÐgpÓUp˜rùÒrs
2
2«2có6|r |jS|jS©N)r(r)©rr1s rÚ list_targetszGameMap.list_targetsQóÙ Ø× × ,rcó6|r |jS|jSrA)r&r'rBs rÚ list_prisonszGameMap.list_prisonsWrDrcó:||f|jvry|s"||f|jvry||f|jvry|s"||f|jvry||f|jvry|j
D]}|d|k(sŒ |d|k(sŒ|ddzcS|j D]?}|d|k(sŒ |d|k(sŒ|dr
|j}n|jd k(rd
nd }|d cS|r"||f|jvry||f|jvry|r"||f|jvry||f|jvryy )
flags could overlap with targets, and players could overlap with prisons.
These are controlled by @flag_over_target and @player_over_prison.
u██ zPP zTT ÚposXÚposYÚnameÚ r1ÚRzF z . )rr&r'r(r)rrr)rrr Úflag_over_targetÚplayer_over_prisonr6r7Úteams rÚget_object_at_XYzGameMap.get_object_at_XY]sQð
ˆqˆ6T—Z‘ZÑ ¨ Ù1ˆv˜×,°UØ1ˆv˜×2¸5ÙØ1ˆv˜×,°UØ1ˆv˜×2¸5ðˆA؉y˜A‹~ ! F¡)¨q£.ؘy 3Òð
ˆA؉y˜A‹~ ! F¡)¨q£.ØV×,Dà"&×"3Ñ"3°sÒ":™3À˜˜r
ñ Ø1ˆv˜×,°UØ1ˆv˜×2¸5Ù Ø1ˆv˜×,°UØ1ˆv˜×2¸5àrc óÖ|j|jkr|sy|s
t«ddjt |j
«Dcgc]}|dŒc}«z}t
|«t |j«D]D}|dd}t |j
«D]}||j||||«z
}Œt
|«ŒF|j|jz|_ycc}w)
Prints the grid with L1, R2, LF, RF labels.
flags could overlap with targets, and players could overlap with prisons.
These are controlled by @flag_over_target and @player_over_prison.
Nz rKÚ2)