From 55bcbafced601367cbd3f5de96afeb6aad6b5e53 Mon Sep 17 00:00:00 2001 From: kathrynoh23 <126970932+kathrynoh23@users.noreply.github.com> Date: Thu, 1 Aug 2024 20:00:12 -0400 Subject: [PATCH] Kathryn Odell-Hamilton 8.1.2024 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Creating the Retro Game was a challenge at the beginning, but what helped was to create the Initial Plan of the game name, game description, core mechanics, and challenges. Dr. Proctor helped me with many of the issues to resolve. I was quite happy and empowered that I was able to write and resolve some code issues on my own. Several times I used Microsoft Copilot AI which helped me 1 issue, but final issues didn't work even while I was specific with the questions. Overall, I'm happy with the results of creating a Retro Game, but I would like to resolve Issues #2 and #3. August 1 Final Challenges 1. ISSUE: Scrolling Text Wanted to have “scrolling text,” but I don’t think it can be accomplished within the basic Retro Game I created. RESOLVED: I increased the game board to fit the “Treasures,” treasure longest line, "You discovered Imperial Faberge Eggs!". Within game.py, I moved all the “lines” and “end caps” by 4 increments to center the game with equal spacing on left and right sides. 2. ISSUE: Final Score to state players playing level. I wanted the final score to read the players level after the last “treasure” was acquired and named. To incorporate into the code, “0-30 Beginner, 30-50 Novice, 60 Expert.” NOT RESOLVED: within treasure.py At final score, adding, 0-30 Beginner, 30-50 Novice, 60 Expert? I tried with some code from Copilot A, but it overwrote the score title over the Treasure discovered. And once the player scored 60 points, in the message state at the top read “final_score_message_set: True.” Not what I wanted to appear and I didn’t know how to resolve the code to work. The code follows: DIDN'T WORK: Tried in game. py state = {'score':0, 'lives':3, 'final_score_message_set': False} game = Game(agents, state, board_size, color="white") game.play() DIDN'T WORK: Tried in Treasure.py if not game.state.get('final_score_message_set', False): final_score = game.state["score"] if final_score <= 30: game.state['message'] = "Beginner Treasure Hunter!" elif 30 < final_score <= 50: game.state['message'] = "Novice Treasure Hunter!" elif final_score >= 60: game.state['message'] = "You Win Expert Treasure Hunter!" game.end() # Set the flag to indicate the final score message has been set game.state['final_score_message_set'] = True 3. ISSUE: Automatically reset and move the “Treasures” and “Traps” to a new position on the game board when the player plays the game for a second and additional times. I wanted to make the game interesting and not predictable. NOT RESOLVED: I don't know how to code this to make it work. --- .DS_Store | Bin 0 -> 6148 bytes 1_Retro_Python_Game_LostWorldTreasures.docx | Bin 0 -> 19471 bytes ..._Retro_Python_Game_LostWorldTreasures.docx | Bin 0 -> 19358 bytes __pycache__/endcap.cpython-311.pyc | Bin 0 -> 1069 bytes __pycache__/player.cpython-311.pyc | Bin 0 -> 3612 bytes __pycache__/trap.cpython-311.pyc | Bin 0 -> 1762 bytes __pycache__/treasure.cpython-311.pyc | Bin 0 -> 2159 bytes __pycache__/wall.cpython-311.pyc | Bin 0 -> 1066 bytes __pycache__/wall_vert.cpython-311.pyc | Bin 0 -> 1104 bytes endcap.py | 16 + game.py | 131 ++++ game_original_layout.py | 131 ++++ player.py | 81 +++ poetry.lock | 618 ++++++++++++++++++ pyproject.toml | 1 + trap.py | 38 ++ treasure.py | 40 ++ wall.py | 17 + wall_vert.py | 18 + 19 files changed, 1091 insertions(+) create mode 100644 .DS_Store create mode 100644 1_Retro_Python_Game_LostWorldTreasures.docx create mode 100644 1_Retro_Python_Game_LostWorldTreasures/Backup of 1_Retro_Python_Game_LostWorldTreasures.docx create mode 100644 __pycache__/endcap.cpython-311.pyc create mode 100644 __pycache__/player.cpython-311.pyc create mode 100644 __pycache__/trap.cpython-311.pyc create mode 100644 __pycache__/treasure.cpython-311.pyc create mode 100644 __pycache__/wall.cpython-311.pyc create mode 100644 __pycache__/wall_vert.cpython-311.pyc create mode 100644 endcap.py create mode 100644 game.py create mode 100644 game_original_layout.py create mode 100644 player.py create mode 100644 poetry.lock create mode 100644 trap.py create mode 100644 treasure.py create mode 100644 wall.py create mode 100644 wall_vert.py diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..38734ca2de71d90578b12a191d5ff30a57f26d5c GIT binary patch literal 6148 zcmeHKJ8Hu~5S@u#2;8`IxmU;y7U7)02atb(6aoc8igc=cE+5TrJ{W}TCXgn)ftj~E znx|!7q0xwlw%_Mhk+q04a6`FRn43K}pV>=h6bQ#VPI7>M$h&m2>c}_IdtuEgkdX>d0V;4;z`hR!Zden?K>u_g_y_=8 zBJGB?&l13531Cee1CfDgP=P_!95FQL$d|0EiDO{UMRWMjJXv!>Q9m8;FJ3NM0~x6R z6__fpi0#_?{~P?t{68geM+KA!1r*gxx&q`b_#;GW1zQV hY^)t`yeR65t?|4jj)6``-swR8445u7D)83|+yF)|6_)@2 literal 0 HcmV?d00001 diff --git a/1_Retro_Python_Game_LostWorldTreasures.docx b/1_Retro_Python_Game_LostWorldTreasures.docx new file mode 100644 index 0000000000000000000000000000000000000000..beb61397761815b997df1296b769312922a9b890 GIT binary patch literal 19471 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 literal 0 HcmV?d00001 diff --git a/1_Retro_Python_Game_LostWorldTreasures/Backup of 1_Retro_Python_Game_LostWorldTreasures.docx b/1_Retro_Python_Game_LostWorldTreasures/Backup of 1_Retro_Python_Game_LostWorldTreasures.docx new file mode 100644 index 0000000000000000000000000000000000000000..cfe2f5c154e09bf17eec680b9a8bf1bdadfdf78a GIT binary patch literal 19358 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 literal 0 HcmV?d00001 diff --git a/__pycache__/trap.cpython-311.pyc b/__pycache__/trap.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..be68ce55aad9bd8a4ab832ba0d17a356b38d2dae GIT binary patch literal 1762 zcmZt`U2EG`^y<@!Et3x?ak8*jSy8Q*==AB zk%`KTfy%7GlsSVf^9ENIOwr)?&@sp#lM@um2}9UJWyuf$4;TrsE5-Z@*6N$!ANuo` zFc$9Gn!diG6TSxm5QIP52Xu%kXqO9^AHauQepm3Bo*F^{dkoy;{!R(~cx_koFWCzC zK-_@?fw20T?rtLBj(Txjm?XN1t5zA*d_Ulp(IaN5z{LXAoQjFb9kHm@>!xEsP@Hai zvFKu}VmYx`HLXh32XV!8d@p9UVrDyLjjfpXA$CuKv&uQVnlFCqnb<3?Ykn1PJH?Xe zt^01hSku-mr=s4s{Hm(EhFPrL*KZUz9n1f)SjX;~srzb0tC>Y&a<0COhrsI207>o~ z*%E>ERsc27^WjV=MuTGy_>c*2JR8Zj#GkJJe7%F%0fnOQ^JkfCYq<5zuj5C{AF>;QCbx zIN7Rui{Zq#A5`F1M-LmB$0R+ zh*(lp3-Y6?J87DR9y>@>rvNojG@*oiGaZe+1xqr@PQxOH@Zb@UU+F?(n@03E5D*c& z25T1#W{cfoCwnYR%ube^)>$$i0ejSswXZ_<(d&I>Kwn>EB0y{X&b@LQ-?e)A{!4cY z>-09P7~-2w9bK+c-<_*-%D}&1nSO=D5>4+5Vlz%-(@4x)@7zu0 zE7$WCziKM;(1tV0*S5B;d{)scXRaW`g6C_#8OzwLx%W(!PC_i`uI*xKC+5iDa2WCi zb5w`3CXRX1&>l%bzow&b#I_9ZgHA$Mac7d&_e~@{{whbiwgh% literal 0 HcmV?d00001 diff --git a/__pycache__/treasure.cpython-311.pyc b/__pycache__/treasure.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d6a6d0636284b52faabe93b8dd474d33933a9c53 GIT binary patch literal 2159 zcmc&#-D}%c6u*)zS#cEd)znS1#7^tMoG$gcJ(P{IhmdSpx@NF+jCmVEm2Pb%w&Y#O zYZ4UjLl|l?G=s6^F@upUq<@TE0uzEl*q{V@KT?nG{vJc<7b-*qGNYq34BLoD?;-(LAd+X$mPXP`W9aCyPt^D#rni&!#Zn`jU02XqCaeB2N>QC>DA;5|m1aT%ibgz{~I zHK$5&RRGtYzx6}$PD#^OZtGNzNQ4QMk9=U;sDL&EkNXTxvk}`6T`qD%$m91wI_PL- z(dSbel6xwa7xScbSm24>_uYtl!ftfGlYrDS-W`)e^(&sRg!Z|`tPqMsvkI8d9YRT~ zRIp`aF zx1za4vS#IGv9sdZm0Vd{F|C4n&vc8bZW}mPzNcTyRV~wfBUd5zGS*$Spp|hh3VXG( zMg}1A`e2mitC5Koi1Q(^8hSc7>`Oua$o-hl`PZHdC3mE+r@xtQA-*TWm_PF*ncC%c zXTFnue5hP*uot5EeMb-#=~10gf##Lr_Zm#Lk;i#R zrFupl4^js)PXMWdgMpS1k-!ZyEmv&EbWPg|MMt*@4&!C)IFQq9EQ~q0beEh1M>0a$ zd0-Ab0Zl0xgh?o?stK7=)lv}^T zgZEG#+aXPPvMn{`F|ht5k3N=1cQQ>mbttDAawuXByC7tJ`7SQ6k23wsJp##40;BCybV9O2ulbpXa?ppS|01E zPwZ;?W7A5{tyVB`(-BbV`Ksk&GMN?0OLWCJWfRfbP=Jm`QXqDrPcDJxU%;j@oEotI z4D6t{zy8)%;jnjN_tN9uOrtjwWaj+Y`oh*)Q<)5ufrs-C=I<}m7ku`#M5Me7POLf> zvkBS*EU05u4HK$bwvB3u&J|VtqNWpI~65_FkY2*XDx$;oAIDaiGOZ;`tT=_FO>H z;O3`o#eg8DTBySkF%cSahbeI}*+OSo`xNvuUCeUrgS<-5NP8DM+za_e``&MpY0%L& iBE(cRM0Hip%io@E=skEw40(rREFuyZ8CN;6Yosu!wCe* zB1*vuh1OkHl~R9?m07GGnrmM`F3M@rAz>R z2_q4utDNUh*#!ya!G;Fd5q6;n zH8~=$uy{?WsUbF$NF*Jgb#&>OgV(ofngkIBY&Od4;b6;#(QPU*2gJb)LLFMyb4_I{)5OKH=vmD7h%^spV;H>GFv`ANb%ow%7;mel z+l};CC6k#}NEufx-}M>Z#|#2<*`@rN<)T`qVad1I5R$SnghPl6#5ZH2!x+SMgQp1f z%hehfsXxJy)gQL{hwG0|)q%F8siSQ`IFmseY`p9^28epI4OgL4N0eC1lTN8|QBU+2 mm%m8g@3i%R<SK&CO*aqsVZB>9?5_5;e%m6hBF0`OB9 zktnB1H-$62KllJ;{P8Ekjy1B8OO`X!jNxO`wn^CS)a(WMxyzDyE!` zQPouHu!HeEaUzs#pBbw|Hg2lO*vAvkb=%h7Qs$Rsj2~^i=gNv*rVk8ZMxvr3?Cu6a z6Y@}%1M(6ps4CT%k6lF)NIPilop~1E)l60O&v6Ax5DV0GJdpcmZ?!LwTTxdLVYmi; zf3p(Uyb;LDuuGQGGLJFc$x|kBa8)mrsAHz%TsCZvt1h$hmc!KowekfY!+GlX9w+ZO zsc^}x@WfiwzZXY>)Tx|2$vpEY^D?WtUtkp{vp~I7-z{Z|`l{vRwKdBxXohRjOmWSa z&y*d@znLj9_cb+qEw2}8=8Si)RN-+kVB2!&`pDV5=OUlT>pexN!H?n5hT0w+|EM%b zWBzbtVq5(@yEWSZDRDi7#=XPIsn&c;|90(5t~IkiId?EQ*Ld6>82PlgvACVyADBKE znEoE#$kRx6kr#~fQx$snF2_)5LO=r0#HLV8SOzBEcAD^b$@MJXa-Foq6_46EHjV*L zoKL0LFfKf= 60 or game_state['lives'] <= 0: + return True # Return True to indicate the game should end + + # Reset player character and color if no collision + self.character = "⍾" + self.color = "red" + + return False # Return False to continue the game + + """When player hits a Treasure, character changes to ‘▓’ and color changes to yellow. + When player hits a Trap, character changes to ‘▓’ and color changes to red. + If there's no collision, the player character and color are reset to the default values""" \ No newline at end of file diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 0000000..089a4fc --- /dev/null +++ b/poetry.lock @@ -0,0 +1,618 @@ +# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand. + +[[package]] +name = "alabaster" +version = "0.7.16" +description = "A light, configurable Sphinx theme" +optional = false +python-versions = ">=3.9" +files = [ + {file = "alabaster-0.7.16-py3-none-any.whl", hash = "sha256:b46733c07dce03ae4e150330b975c75737fa60f0a7c591b6c8bf4928a28e2c92"}, + {file = "alabaster-0.7.16.tar.gz", hash = "sha256:75a8b99c28a5dad50dd7f8ccdd447a121ddb3892da9e53d1ca5cca3106d58d65"}, +] + +[[package]] +name = "ansicon" +version = "1.89.0" +description = "Python wrapper for loading Jason Hood's ANSICON" +optional = false +python-versions = "*" +files = [ + {file = "ansicon-1.89.0-py2.py3-none-any.whl", hash = "sha256:f1def52d17f65c2c9682cf8370c03f541f410c1752d6a14029f97318e4b9dfec"}, + {file = "ansicon-1.89.0.tar.gz", hash = "sha256:e4d039def5768a47e4afec8e89e83ec3ae5a26bf00ad851f914d1240b444d2b1"}, +] + +[[package]] +name = "babel" +version = "2.15.0" +description = "Internationalization utilities" +optional = false +python-versions = ">=3.8" +files = [ + {file = "Babel-2.15.0-py3-none-any.whl", hash = "sha256:08706bdad8d0a3413266ab61bd6c34d0c28d6e1e7badf40a2cebe67644e2e1fb"}, + {file = "babel-2.15.0.tar.gz", hash = "sha256:8daf0e265d05768bc6c7a314cf1321e9a123afc328cc635c18622a2f30a04413"}, +] + +[package.extras] +dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] + +[[package]] +name = "beautifulsoup4" +version = "4.12.3" +description = "Screen-scraping library" +optional = false +python-versions = ">=3.6.0" +files = [ + {file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"}, + {file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"}, +] + +[package.dependencies] +soupsieve = ">1.2" + +[package.extras] +cchardet = ["cchardet"] +chardet = ["chardet"] +charset-normalizer = ["charset-normalizer"] +html5lib = ["html5lib"] +lxml = ["lxml"] + +[[package]] +name = "blessed" +version = "1.20.0" +description = "Easy, practical library for making terminal apps, by providing an elegant, well-documented interface to Colors, Keyboard input, and screen Positioning capabilities." +optional = false +python-versions = ">=2.7" +files = [ + {file = "blessed-1.20.0-py2.py3-none-any.whl", hash = "sha256:0c542922586a265e699188e52d5f5ac5ec0dd517e5a1041d90d2bbf23f906058"}, + {file = "blessed-1.20.0.tar.gz", hash = "sha256:2cdd67f8746e048f00df47a2880f4d6acbcdb399031b604e34ba8f71d5787680"}, +] + +[package.dependencies] +jinxed = {version = ">=1.1.0", markers = "platform_system == \"Windows\""} +six = ">=1.9.0" +wcwidth = ">=0.1.4" + +[[package]] +name = "certifi" +version = "2024.7.4" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.6" +files = [ + {file = "certifi-2024.7.4-py3-none-any.whl", hash = "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90"}, + {file = "certifi-2024.7.4.tar.gz", hash = "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b"}, +] + +[[package]] +name = "charset-normalizer" +version = "3.3.2" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, + {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, +] + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "docutils" +version = "0.21.2" +description = "Docutils -- Python Documentation Utilities" +optional = false +python-versions = ">=3.9" +files = [ + {file = "docutils-0.21.2-py3-none-any.whl", hash = "sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2"}, + {file = "docutils-0.21.2.tar.gz", hash = "sha256:3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f"}, +] + +[[package]] +name = "furo" +version = "2023.9.10" +description = "A clean customisable Sphinx documentation theme." +optional = false +python-versions = ">=3.8" +files = [ + {file = "furo-2023.9.10-py3-none-any.whl", hash = "sha256:513092538537dc5c596691da06e3c370714ec99bc438680edc1debffb73e5bfc"}, + {file = "furo-2023.9.10.tar.gz", hash = "sha256:5707530a476d2a63b8cad83b4f961f3739a69f4b058bcf38a03a39fa537195b2"}, +] + +[package.dependencies] +beautifulsoup4 = "*" +pygments = ">=2.7" +sphinx = ">=6.0,<8.0" +sphinx-basic-ng = "*" + +[[package]] +name = "idna" +version = "3.7" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.5" +files = [ + {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, + {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, +] + +[[package]] +name = "imagesize" +version = "1.4.1" +description = "Getting image size from png/jpeg/jpeg2000/gif file" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b"}, + {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, +] + +[[package]] +name = "jinja2" +version = "3.1.4" +description = "A very fast and expressive template engine." +optional = false +python-versions = ">=3.7" +files = [ + {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, + {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, +] + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + +[[package]] +name = "jinxed" +version = "1.3.0" +description = "Jinxed Terminal Library" +optional = false +python-versions = "*" +files = [ + {file = "jinxed-1.3.0-py2.py3-none-any.whl", hash = "sha256:b993189f39dc2d7504d802152671535b06d380b26d78070559551cbf92df4fc5"}, + {file = "jinxed-1.3.0.tar.gz", hash = "sha256:1593124b18a41b7a3da3b078471442e51dbad3d77b4d4f2b0c26ab6f7d660dbf"}, +] + +[package.dependencies] +ansicon = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "markupsafe" +version = "2.1.5" +description = "Safely add untrusted strings to HTML/XML markup." +optional = false +python-versions = ">=3.7" +files = [ + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, + {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, +] + +[[package]] +name = "packaging" +version = "24.1" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, + {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, +] + +[[package]] +name = "pygments" +version = "2.18.0" +description = "Pygments is a syntax highlighting package written in Python." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, + {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, +] + +[package.extras] +windows-terminal = ["colorama (>=0.4.6)"] + +[[package]] +name = "requests" +version = "2.32.3" +description = "Python HTTP for Humans." +optional = false +python-versions = ">=3.8" +files = [ + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, +] + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<3" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "retro-games" +version = "0.1.3" +description = "A simple framework for Terminal-based games" +optional = false +python-versions = ">=3.10,<4.0" +files = [ + {file = "retro_games-0.1.3-py3-none-any.whl", hash = "sha256:7567c3a65cf5deb855bded8db810a66902b9706349dde415b6254de087a6d8f9"}, + {file = "retro_games-0.1.3.tar.gz", hash = "sha256:a95fbeacdf903761b4c70522dd25f858d9802dcd701e900b95b7535f0014f266"}, +] + +[package.dependencies] +blessed = ">=1.20.0,<2.0.0" +furo = ">=2023.5.20,<2024.0.0" +sphinx = ">=7.0.1,<8.0.0" + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] + +[[package]] +name = "snowballstemmer" +version = "2.2.0" +description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." +optional = false +python-versions = "*" +files = [ + {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, + {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, +] + +[[package]] +name = "soupsieve" +version = "2.5" +description = "A modern CSS selector implementation for Beautiful Soup." +optional = false +python-versions = ">=3.8" +files = [ + {file = "soupsieve-2.5-py3-none-any.whl", hash = "sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7"}, + {file = "soupsieve-2.5.tar.gz", hash = "sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690"}, +] + +[[package]] +name = "sphinx" +version = "7.4.7" +description = "Python documentation generator" +optional = false +python-versions = ">=3.9" +files = [ + {file = "sphinx-7.4.7-py3-none-any.whl", hash = "sha256:c2419e2135d11f1951cd994d6eb18a1835bd8fdd8429f9ca375dc1f3281bd239"}, + {file = "sphinx-7.4.7.tar.gz", hash = "sha256:242f92a7ea7e6c5b406fdc2615413890ba9f699114a9c09192d7dfead2ee9cfe"}, +] + +[package.dependencies] +alabaster = ">=0.7.14,<0.8.0" +babel = ">=2.13" +colorama = {version = ">=0.4.6", markers = "sys_platform == \"win32\""} +docutils = ">=0.20,<0.22" +imagesize = ">=1.3" +Jinja2 = ">=3.1" +packaging = ">=23.0" +Pygments = ">=2.17" +requests = ">=2.30.0" +snowballstemmer = ">=2.2" +sphinxcontrib-applehelp = "*" +sphinxcontrib-devhelp = "*" +sphinxcontrib-htmlhelp = ">=2.0.0" +sphinxcontrib-jsmath = "*" +sphinxcontrib-qthelp = "*" +sphinxcontrib-serializinghtml = ">=1.1.9" + +[package.extras] +docs = ["sphinxcontrib-websupport"] +lint = ["flake8 (>=6.0)", "importlib-metadata (>=6.0)", "mypy (==1.10.1)", "pytest (>=6.0)", "ruff (==0.5.2)", "sphinx-lint (>=0.9)", "tomli (>=2)", "types-docutils (==0.21.0.20240711)", "types-requests (>=2.30.0)"] +test = ["cython (>=3.0)", "defusedxml (>=0.7.1)", "pytest (>=8.0)", "setuptools (>=70.0)", "typing_extensions (>=4.9)"] + +[[package]] +name = "sphinx-basic-ng" +version = "1.0.0b2" +description = "A modern skeleton for Sphinx themes." +optional = false +python-versions = ">=3.7" +files = [ + {file = "sphinx_basic_ng-1.0.0b2-py3-none-any.whl", hash = "sha256:eb09aedbabfb650607e9b4b68c9d240b90b1e1be221d6ad71d61c52e29f7932b"}, + {file = "sphinx_basic_ng-1.0.0b2.tar.gz", hash = "sha256:9ec55a47c90c8c002b5960c57492ec3021f5193cb26cebc2dc4ea226848651c9"}, +] + +[package.dependencies] +sphinx = ">=4.0" + +[package.extras] +docs = ["furo", "ipython", "myst-parser", "sphinx-copybutton", "sphinx-inline-tabs"] + +[[package]] +name = "sphinxcontrib-applehelp" +version = "2.0.0" +description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" +optional = false +python-versions = ">=3.9" +files = [ + {file = "sphinxcontrib_applehelp-2.0.0-py3-none-any.whl", hash = "sha256:4cd3f0ec4ac5dd9c17ec65e9ab272c9b867ea77425228e68ecf08d6b28ddbdb5"}, + {file = "sphinxcontrib_applehelp-2.0.0.tar.gz", hash = "sha256:2f29ef331735ce958efa4734873f084941970894c6090408b079c61b2e1c06d1"}, +] + +[package.extras] +lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] +standalone = ["Sphinx (>=5)"] +test = ["pytest"] + +[[package]] +name = "sphinxcontrib-devhelp" +version = "2.0.0" +description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp documents" +optional = false +python-versions = ">=3.9" +files = [ + {file = "sphinxcontrib_devhelp-2.0.0-py3-none-any.whl", hash = "sha256:aefb8b83854e4b0998877524d1029fd3e6879210422ee3780459e28a1f03a8a2"}, + {file = "sphinxcontrib_devhelp-2.0.0.tar.gz", hash = "sha256:411f5d96d445d1d73bb5d52133377b4248ec79db5c793ce7dbe59e074b4dd1ad"}, +] + +[package.extras] +lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] +standalone = ["Sphinx (>=5)"] +test = ["pytest"] + +[[package]] +name = "sphinxcontrib-htmlhelp" +version = "2.1.0" +description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" +optional = false +python-versions = ">=3.9" +files = [ + {file = "sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl", hash = "sha256:166759820b47002d22914d64a075ce08f4c46818e17cfc9470a9786b759b19f8"}, + {file = "sphinxcontrib_htmlhelp-2.1.0.tar.gz", hash = "sha256:c9e2916ace8aad64cc13a0d233ee22317f2b9025b9cf3295249fa985cc7082e9"}, +] + +[package.extras] +lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] +standalone = ["Sphinx (>=5)"] +test = ["html5lib", "pytest"] + +[[package]] +name = "sphinxcontrib-jsmath" +version = "1.0.1" +description = "A sphinx extension which renders display math in HTML via JavaScript" +optional = false +python-versions = ">=3.5" +files = [ + {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, + {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"}, +] + +[package.extras] +test = ["flake8", "mypy", "pytest"] + +[[package]] +name = "sphinxcontrib-qthelp" +version = "2.0.0" +description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp documents" +optional = false +python-versions = ">=3.9" +files = [ + {file = "sphinxcontrib_qthelp-2.0.0-py3-none-any.whl", hash = "sha256:b18a828cdba941ccd6ee8445dbe72ffa3ef8cbe7505d8cd1fa0d42d3f2d5f3eb"}, + {file = "sphinxcontrib_qthelp-2.0.0.tar.gz", hash = "sha256:4fe7d0ac8fc171045be623aba3e2a8f613f8682731f9153bb2e40ece16b9bbab"}, +] + +[package.extras] +lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] +standalone = ["Sphinx (>=5)"] +test = ["defusedxml (>=0.7.1)", "pytest"] + +[[package]] +name = "sphinxcontrib-serializinghtml" +version = "2.0.0" +description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)" +optional = false +python-versions = ">=3.9" +files = [ + {file = "sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl", hash = "sha256:6e2cb0eef194e10c27ec0023bfeb25badbbb5868244cf5bc5bdc04e4464bf331"}, + {file = "sphinxcontrib_serializinghtml-2.0.0.tar.gz", hash = "sha256:e9d912827f872c029017a53f0ef2180b327c3f7fd23c87229f7a8e8b70031d4d"}, +] + +[package.extras] +lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] +standalone = ["Sphinx (>=5)"] +test = ["pytest"] + +[[package]] +name = "urllib3" +version = "2.2.2" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.8" +files = [ + {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, + {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "wcwidth" +version = "0.2.13" +description = "Measures the displayed width of unicode strings in a terminal" +optional = false +python-versions = "*" +files = [ + {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, + {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, +] + +[metadata] +lock-version = "2.0" +python-versions = "^3.11" +content-hash = "d0b9435efe1fbfc823c1dafc2d109507cbe43a9fe2851bf17c0ab10abb9176b5" diff --git a/pyproject.toml b/pyproject.toml index 1e94b25..9a153ff 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,6 +8,7 @@ packages = [{include = "project_game"}] [tool.poetry.dependencies] python = "^3.11" +retro-games = "^0.1.3" [build-system] diff --git a/trap.py b/trap.py new file mode 100644 index 0000000..46ec06e --- /dev/null +++ b/trap.py @@ -0,0 +1,38 @@ +class Trap: + character = '█' + color = 'black' + passable = True + + @classmethod + def trap(cls, origin, height): + agents = [] + x, y = origin + for dx in range(height): + trap = Trap((x + dx, y)) + agents.append(trap) + return agents + + def __init__(self, position, lives, message): + self.position = position + self.lives = lives + self.message = message + + def collided_with_player(self, player, game): + game.state["lives"] -= 1 + game.remove_agent(self) + player.color = "red_on_salmon" + game.state['message'] = self.message + if game.state["lives"] <= 0: + game.state['message'] = "You Lost the Game! Play Again." + game.end() + + + """Want to use + character = '▓' + color = 'red' + when Player hits""" + +"""Code if the Player hits the Trap, + the 1 Die is added to the current total Dies""" + +"""Game ends if the Player Scores 60 points or 3 deaths""" diff --git a/treasure.py b/treasure.py new file mode 100644 index 0000000..f68e4e5 --- /dev/null +++ b/treasure.py @@ -0,0 +1,40 @@ +#This is the Treasure class where the Player gets 10 points for each treasure found. +# The game ends once the player has found all the treasures scoring 60 points before losing 3 lives. + + +class Treasure: + character = '█' + color = 'black' + passable = True + + @classmethod + def treasure(cls, origin, height): + agents = [] + x, y = origin + for dx in range(height): + treasure = Treasure(x + dx, y) + agents.append(treasure) + return agents + + def __init__(self, position, score, message): + self.position = position + self.score = score + self.message = message + + def collided_with_player(self, player, game): + game.state["score"] += 10 + game.remove_agent(self) + player.color = "red_on_chartreuse2" + game.state['message'] = self.message + + def collided_with_player(self, player, game): + game.state["score"] += 10 + game.remove_agent(self) + player.color = "red_on_chartreuse2" + game.state['message'] = self.message + if game.state["score"] >= 60: + game.state['message'] = "You Win Expert Treasure Hunter!" + game.end() + + +"""At final score, how do I add, 0-30 Beginner, 30-50 Novice, 60 Expert?""" diff --git a/wall.py b/wall.py new file mode 100644 index 0000000..02a3e68 --- /dev/null +++ b/wall.py @@ -0,0 +1,17 @@ + +class Wall: + character = '─' + color = 'blue' + passable = False + + @classmethod + def horzline(cls, origin, length): + agents = [] + x, y = origin + for dx in range(length): + wall = cls((x + dx, y)) + agents.append(wall) + return agents + + def __init__(self, position): + self.position = position diff --git a/wall_vert.py b/wall_vert.py new file mode 100644 index 0000000..dfbde09 --- /dev/null +++ b/wall_vert.py @@ -0,0 +1,18 @@ + +class Wall_vert: + character = '│' + color = 'blue' + passable = False + + + @classmethod + def vertline(cls, origin, height): + agents = [] + x, y = origin + for dy in range(height): + wall_vert = Wall_vert((x, y + dy)) + agents.append(wall_vert) + return agents + + def __init__(self, position): + self.position = position