From 4fbd1c6663b4fdbc1e37857a1fd3ec9148b8b021 Mon Sep 17 00:00:00 2001 From: steev Date: Wed, 6 Dec 2023 12:21:51 +0100 Subject: [PATCH] added card types --- .vscode/launch.json | 16 ++++++++++++ Game Client/Classes/System/InputHandler.py | 23 ----------------- .../Classes/__pycache__/App.cpython-311.pyc | Bin 2179 -> 0 bytes .../__pycache__/Window.cpython-311.pyc | Bin 2017 -> 0 bytes .../.vscode/settings.json | 0 .../Classes/System/App.py | 13 +++++++--- Game_Client/Classes/System/InputHandler.py | 24 ++++++++++++++++++ .../Classes/System/Objects/Cards/Card.py | 22 ++++++++++++++++ .../System/Objects/Cards/MonsterCard.py | 14 ++++++++++ .../Classes/System/Objects/Cards/SpellCard.py | 17 +++++++++++++ .../Classes/System/Objects/Cards/TrapCard.py | 17 +++++++++++++ .../Classes/System/Window.py | 0 .../System/__pycache__/App.cpython-311.pyc | Bin .../System/__pycache__/App.cpython-312.pyc | Bin 0 -> 3122 bytes .../__pycache__/InputHandler.cpython-311.pyc | Bin .../__pycache__/InputHandler.cpython-312.pyc | Bin 0 -> 1683 bytes .../System/__pycache__/Window.cpython-311.pyc | Bin .../System/__pycache__/Window.cpython-312.pyc | Bin 0 -> 2176 bytes {Game Client => Game_Client}/main.py | 0 19 files changed, 120 insertions(+), 26 deletions(-) create mode 100644 .vscode/launch.json delete mode 100644 Game Client/Classes/System/InputHandler.py delete mode 100644 Game Client/Classes/__pycache__/App.cpython-311.pyc delete mode 100644 Game Client/Classes/__pycache__/Window.cpython-311.pyc rename {Game Client => Game_Client}/.vscode/settings.json (100%) rename {Game Client => Game_Client}/Classes/System/App.py (77%) create mode 100644 Game_Client/Classes/System/InputHandler.py create mode 100644 Game_Client/Classes/System/Objects/Cards/Card.py create mode 100644 Game_Client/Classes/System/Objects/Cards/MonsterCard.py create mode 100644 Game_Client/Classes/System/Objects/Cards/SpellCard.py create mode 100644 Game_Client/Classes/System/Objects/Cards/TrapCard.py rename {Game Client => Game_Client}/Classes/System/Window.py (100%) rename {Game Client => Game_Client}/Classes/System/__pycache__/App.cpython-311.pyc (100%) create mode 100644 Game_Client/Classes/System/__pycache__/App.cpython-312.pyc rename {Game Client => Game_Client}/Classes/System/__pycache__/InputHandler.cpython-311.pyc (100%) create mode 100644 Game_Client/Classes/System/__pycache__/InputHandler.cpython-312.pyc rename {Game Client => Game_Client}/Classes/System/__pycache__/Window.cpython-311.pyc (100%) create mode 100644 Game_Client/Classes/System/__pycache__/Window.cpython-312.pyc rename {Game Client => Game_Client}/main.py (100%) diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..a8b7a75 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,16 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Python:app", + "type": "python", + "request": "launch", + "program": "Game Client/main.py", + "console": "integratedTerminal", + "justMyCode": true + } + ] +} \ No newline at end of file diff --git a/Game Client/Classes/System/InputHandler.py b/Game Client/Classes/System/InputHandler.py deleted file mode 100644 index 61c51b8..0000000 --- a/Game Client/Classes/System/InputHandler.py +++ /dev/null @@ -1,23 +0,0 @@ -import pygame - -class InputHandler: - # returns pressed key - def getPressed(): - return pygame.key.get_pressed() - - def getInputAxis() -> tuple: - xvel:int = 0 - yvel:int = 0 - - # construct x and y velocity input axis - if InputHandler.getPressed()[pygame.K_a]: - xvel = -1 - if InputHandler.getPressed()[pygame.K_d]: - xvel = 1 - if InputHandler.getPressed()[pygame.K_w]: - yvel = -1 - if InputHandler.getPressed()[pygame.K_s]: - yvel = 1 - - return tuple((xvel, yvel)) - \ No newline at end of file diff --git a/Game Client/Classes/__pycache__/App.cpython-311.pyc b/Game Client/Classes/__pycache__/App.cpython-311.pyc deleted file mode 100644 index 90821aaa8ef2e0ae80db5b64cce35ef6d14c139c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2179 zcmZuy%}*Ow5Pxq!%mQ8$z@c^^#I#W1rbRvVKvAWZv?x+#)B=87IFPMvvcuWab-?(faan|(Vo zZ{F;$y52*8e*V^BAIOCKi9(B%CUZUm%pNg`NiCAaQL^YFjEP^hW zQdVUVkYpkCn_aBS)Zpo6+H%C~*;cdNX74u1_Lxz?UQ=h0Wyy?fE7_>o2O8bH2F?ul z^82NdA2k3CV?(&I=<9*V%eGy#SI$z9jI(fnYtg_pgR8UAh zL?UIj*IbP@pdy)9LH3m*?JGew}^nIHk1WD=xE^FTLTSeG2GeW_CKaC(f0gq$DXxV-Y%EY67Po>`6~b}x}Hk$0aRQA z*y_hU>L?FXyPE)2QjZPn+6|(1PyCg<_0!0UWcoOnK1$v`N#1S{S)UN_y;>hk{5bt& z=$GN+!8aR3>Yq4`Cm+9c6rVhaPuAj-^>|`0^F!t+K7JA(uf@mzZS<19!REqZ^-I9x z@b!)z$GnOij{t)mXn{PXnWq3EHW%lEs4(ykzhZ^5$F_8gEfkYrnZN~vALpaMr>WSHR(@XvReOH@9+!Ea25n?3Cej?rBWR1| z1HL3vQ2ntTxUR;HP6$Wt0kcQiTgcUlGo|(h;)V4}$QrI8=yLUmN|Q5KX;3WC@KWW{ zM`?u*gSCi`4*};Z56eZ5r+{rsHODAgNp2R~Ei`!@08Y84@2rPsxt<)wFi*AEZtr*c zuD&BK5ivHeZg_>`ABgt?q+{4cY$$WX@Ounn-7(7+@=?QhSk7C)jA(FvpJC)}+wt;V z(Xm~_2u_J|-*GHo#*-ks9_NF&G*&hrLl{Ru_c=N&ya>(&))z;>LUEq}RNJnX`e1dw zI{(dl{d%%`cgL(LNw|-cWJ8hEn^5}d&BqI3_$?To&kE@>Xb~08P6z{3)f*&)2vx`S zv>NP~9<+%m%PHh7*N-)u^i=T24gL)x*v?3iZnL{7LjFKuGHA?zHrWt*sEi#Vxc;?O55Ay45S4O4ZL zI;m(EDAp=UsJvsxTXIRq!uTg(P6;EX;t*542ky-jqfB$u+py!LOkGM;N}8Ew8Q9ZN zVsm>kZS(}XbgWxI8OL5WTIFs=+83NTMxA;1FR)BYce2NtX*k9)F>|=nQk~o}HS>4^ z_&o57@}%l40)NH10-v-L>i1pWX+OFs16ENfN+P8|O3D@J6FuOTc>GR#seQ>Ek-bC!KJnO6p8)?fk->lB70&%n zENjvc&{}nJrqn7Kjw(Kf1dAH#odd)#OgpaVc+G<_BUoTPY&(o&slx>n?Pe!%+kS*}o zLO}FVQDs~SxIoKt93884AMZv2)I@;+#|DrDs9v_0eT_V@S0;I2&0oo54#M7%*YR*M z1|rdv@Nk?-RI8rRGhQPT?14!pvhijS*~U9Rjfhl~!Hi3S*wiX1j`igkB>31>3fOl( zG^S;R^Aq>HF=ViI+lH*3@-MiGcGZa2lrT`@Ge( zSx5sH?w3}@=Z3$5K@k|fj^qZCw~(wM!Te-*aeO2sp}+`i)$Y`9SXl0E^{Rck40Ax2 zhf6EnJH2|JuD~47m0@8c+TZBYjRD;l8cQc%^yw6It z2$08hx%?O{&#F?IB}GLuMkFD+qLt7NmRSN@>yHI$*JsIpSS6k!JP-<~nFQ5{UaOmc zWz!Q8O0Ob!nYkU+?|r@rhInDc$3R9YMNx*t=*r)atoA2!L`w=}{!j83>R$ZIhRo}4 Da;~>| diff --git a/Game Client/.vscode/settings.json b/Game_Client/.vscode/settings.json similarity index 100% rename from Game Client/.vscode/settings.json rename to Game_Client/.vscode/settings.json diff --git a/Game Client/Classes/System/App.py b/Game_Client/Classes/System/App.py similarity index 77% rename from Game Client/Classes/System/App.py rename to Game_Client/Classes/System/App.py index a937ec8..ff6efe6 100644 --- a/Game Client/Classes/System/App.py +++ b/Game_Client/Classes/System/App.py @@ -31,16 +31,23 @@ class App: self.__player.move_ip((InputHandler.getInputAxis()[0]*self.__speed),(InputHandler.getInputAxis()[1]*self.__speed)) # event handler - for event in pygame.event.get(): - if event.type == pygame.QUIT: - self.onCleanup() + self.handleEvent(pygame.event.get()) + # emits update to the game pygame.display.update() + # handles incoming eventqueue + def handleEvent(self, events): + for event in events: + if event.type == pygame.QUIT: + self.onCleanup() + + # sets the running state for the gameloop def setRunning(self, running:bool): self.__running = running + # ensures the gameloop stops running and the pygame instance is stopped properly def onCleanup(self): self.__running = False pygame.quit() \ No newline at end of file diff --git a/Game_Client/Classes/System/InputHandler.py b/Game_Client/Classes/System/InputHandler.py new file mode 100644 index 0000000..addfcfa --- /dev/null +++ b/Game_Client/Classes/System/InputHandler.py @@ -0,0 +1,24 @@ +import pygame + +class InputHandler: + # returns pressed key + def getPressed(): + return pygame.key.get_pressed() + + # takes in movement inputs and maps them to x and y axis + def getInputAxis() -> tuple: + xvel:int = 0 + yvel:int = 0 + + # construct x and y velocity input axis + if InputHandler.getPressed()[pygame.K_a] or InputHandler.getPressed()[pygame.K_LEFT]: + xvel = -1 + if InputHandler.getPressed()[pygame.K_d] or InputHandler.getPressed()[pygame.K_RIGHT]: + xvel = 1 + if InputHandler.getPressed()[pygame.K_w] or InputHandler.getPressed()[pygame.K_UP]: + yvel = -1 + if InputHandler.getPressed()[pygame.K_s] or InputHandler.getPressed()[pygame.K_DOWN]: + yvel = 1 + + return tuple((xvel, yvel)) + \ No newline at end of file diff --git a/Game_Client/Classes/System/Objects/Cards/Card.py b/Game_Client/Classes/System/Objects/Cards/Card.py new file mode 100644 index 0000000..b25416e --- /dev/null +++ b/Game_Client/Classes/System/Objects/Cards/Card.py @@ -0,0 +1,22 @@ +import pygame + + +class Card: + __name:str + __artwork:pygame.image + + def __init__(self, name:str, imagePath:str): + + if name == "": + return ValueError.add_note("Card: name cannot be empty") + if imagePath == "": + return ValueError.add_note("Card: imagePath cannot be empty") + + self.__name = name + self.__image = pygame.image.load(imagePath) + + def getName(self) -> str: + return self.__name + + def getArtwork(self) -> pygame.image: + return self.__image \ No newline at end of file diff --git a/Game_Client/Classes/System/Objects/Cards/MonsterCard.py b/Game_Client/Classes/System/Objects/Cards/MonsterCard.py new file mode 100644 index 0000000..c0d98e1 --- /dev/null +++ b/Game_Client/Classes/System/Objects/Cards/MonsterCard.py @@ -0,0 +1,14 @@ +import json +from Game_Client.Classes.System.Objects.Cards.Card import Card + +class MonsterCard(Card): + __attacks:[] + + def __init__(self, asset:str): + data = json.load(open(asset)) + + for attack in range(data["attacks"]): + self.__attacks.add(attack) + + def attacks(self): + return self.__attacks \ No newline at end of file diff --git a/Game_Client/Classes/System/Objects/Cards/SpellCard.py b/Game_Client/Classes/System/Objects/Cards/SpellCard.py new file mode 100644 index 0000000..6f918e1 --- /dev/null +++ b/Game_Client/Classes/System/Objects/Cards/SpellCard.py @@ -0,0 +1,17 @@ + + +import json +from Game_Client.Classes.System.Objects.Cards.Card import Card + + +class SpellCard(Card): + __description:str + + def __init__(self, asset:str): + data = json.load(open(asset)) + + super.__init__(data["name"], data["image"]) + self.__description = data["description"] + + def getDescription(self): + return self.__description \ No newline at end of file diff --git a/Game_Client/Classes/System/Objects/Cards/TrapCard.py b/Game_Client/Classes/System/Objects/Cards/TrapCard.py new file mode 100644 index 0000000..9a30a36 --- /dev/null +++ b/Game_Client/Classes/System/Objects/Cards/TrapCard.py @@ -0,0 +1,17 @@ + + +from Game_Client.Classes.System.Objects.Cards.Card import Card +import json + +class SpellCard(Card): + __description:str + + def __init__(self, asset:str): + + data = json.load(open(asset)) + + super.__init__(data["name"], data["image"]) + self.__description = data["description"] + + def getDescription(self): + return self.__description \ No newline at end of file diff --git a/Game Client/Classes/System/Window.py b/Game_Client/Classes/System/Window.py similarity index 100% rename from Game Client/Classes/System/Window.py rename to Game_Client/Classes/System/Window.py diff --git a/Game Client/Classes/System/__pycache__/App.cpython-311.pyc b/Game_Client/Classes/System/__pycache__/App.cpython-311.pyc similarity index 100% rename from Game Client/Classes/System/__pycache__/App.cpython-311.pyc rename to Game_Client/Classes/System/__pycache__/App.cpython-311.pyc diff --git a/Game_Client/Classes/System/__pycache__/App.cpython-312.pyc b/Game_Client/Classes/System/__pycache__/App.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..351f2ddb33b4c3990370ee6299b2d1ee94969228 GIT binary patch literal 3122 zcmb6bTWlLu_Rh<3lJPjt(lj-7`QNGtVcIcLU`aZQBa z%0Bnpd(J&`?s?v?VzC|qTw1e0G9 zGJ=PTrnn?!B#!W8hG^1dqD5}PlqpYUNLu^ur`?#pWXqPNTj$cEJ`Or=JcN&JJO_aF zB8IoxkN~*SC0%pQyOHx$KX=}7B}aEmIv;omI0&){@ZT~3tP`hoWkOcC6@Eqd7k3k> zFjj~f(ujfQI!1714tR~g4Q)Ijy-3phY+7InP+1%S+CMEa)Qm*|xG~$wF=r;XL{H@N z1-CnIO`9}lEf>2l^fAL)##pjbT8l)rL24%-Mt08WPaOfu-LZtmk{OaXeVUp7$0-& zI8a)7&`#XR>c9zE*g1mG^?ZQ_?HC3IO2-KNW5hZLu++FvqJwVp#!hKt3z)& z|9ye{aBj10GTaR?BNbrb9O%EJfA)ub0cJcEVBs9d@U#lIw=u?l%w2iCNFZ+|%v%i2 z5Tu2T|39+fkv1^y(?hHqCb!owTk~dqe$f>j9bmV=_3EEa`3c{Bjyk928KsshF6gG| zMheAqkgBezvD_tBWOUvMs$s#*6)AJOmhu;=suvihl`De)uPYpRPq%|F+678AxA(l) zD2`r)oOdPaO#-mHU7BvAFgLPX&~gsF!7&Uf8+A{zVSsD^K&c<=z#|oD7qa~qz$$4f z0~PB7>pQuxa-w{qAt$PG;;MGtxMtMl^k#&_`YR{PCmV9ADyM4l6Ak%bRX+Ini*@<= z`|?2Lc=>ok-dmOTUOj#N?6tFv#AG!wSxdZdtNZrk-IwpYT$krivL|7zDv$khs*#$i zrlxAC!?!L}Q%7#^zdL?syqcP=&z)_|8Pz$XHfP>jvZ{0Wdj+RaSgFEqZlx~&)lhiNcMM-S1GFzT)$oQ4IoZ8$+;)50IBa2~9&9|2$Yzbb| zumFKF#=Sz$K1;}7_!WMqg63?WHLyx|j72D^Hg{zVQtwxr#+Bzp2*4ZMEOr2=SfDHk zl3a1_%(2r9iw*=PI?s)G4z?MVY8%yruHgF;L%$S9U$zBA8rhx(0G=EkeL(o`v9+Vk z_)w)(E`goix%N&iexTVmw61)jeBGD)Q33|fByLx$4L@QVysKv$3>>r#G)}<$Q6y{v zur%kTMVj{%X4tuHJlE3G?Xjuzrr+XAiWhp@>t~P`a|*N_Nv??>D!zN#yUexi+>kb=-b$f!K=}R%xa=S-Ak1Tk9RPu3Xkjnk2 zQt2)Cei-w#g&LwKK@a_HP_-1(=t6GUbduidB)tp!uLYT}s&0>}F6Fgl6LDEpFD&Ow zpW?j~+__+zzkhG^=~{ez^|hv~tR8JD@zt58GE`YCFE*5YRb^jI8C#wCQ52++tEV;zOrQJH zt?4aXJ?QC^_CI)1kj6G;P8$1kXp6wK73HN}zCNf$y34<8%rBS|aIc(cyTh%=&4mBB znegAvzTrkYXzj0QubO(-V@E)Gc<+bNDc>1~*-;>1#Mx-RO@ZUMZ%FJu8U2AA_?Arm OFLH?6^?(5I4*v`tn_;*B literal 0 HcmV?d00001 diff --git a/Game Client/Classes/System/__pycache__/InputHandler.cpython-311.pyc b/Game_Client/Classes/System/__pycache__/InputHandler.cpython-311.pyc similarity index 100% rename from Game Client/Classes/System/__pycache__/InputHandler.cpython-311.pyc rename to Game_Client/Classes/System/__pycache__/InputHandler.cpython-311.pyc diff --git a/Game_Client/Classes/System/__pycache__/InputHandler.cpython-312.pyc b/Game_Client/Classes/System/__pycache__/InputHandler.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a2216a94546fa46a611cfe7c839cd389dfaae58f GIT binary patch literal 1683 zcmbVMK}#D!6rS1Lq^XIf)QA;I39-TMrSyA4 zBw-avoQkVR;#H0aIZoxPg5PCQcBnCI^Oz1h*g5wLXDhJg zIp;K|o6Ywm5^+Z4skda!WDA7yd16uj3^A3GP7H&npHPEAPeDz-PN&D^B8wW7s}r-V7h8m3C9;L7f)G$5yv!baP9PS&FkCTA zx4>x5djSIO06a$Y%1plYOgg7>%jn8%_Tg-0>@crDD+}`&6XeBrkXKK8whr{V(VofH z>*{s9*`BR~yh81nY`w7A??#u<63%g(*zuvggpAI5^6)o|L$)jibau{kRsfxyGs>rw zEcK?8u_sTbn4{8bDdpK{a>VxDP$8vEPq2W&P>Jyu8R{|1C5?z26&4qWMgwd-=fL^kD>+#~OQ5m?{W@n-605*2Ptf2kg(5hgY6E6zf+Ve+t{E@odq=(=&)`P%1i{O}GnB~LwRN_&Ql0u9IT;M=VL-AoVX$+0 T#AA%VqwZfq2oD}3FgD#E8N53~ literal 0 HcmV?d00001 diff --git a/Game Client/Classes/System/__pycache__/Window.cpython-311.pyc b/Game_Client/Classes/System/__pycache__/Window.cpython-311.pyc similarity index 100% rename from Game Client/Classes/System/__pycache__/Window.cpython-311.pyc rename to Game_Client/Classes/System/__pycache__/Window.cpython-311.pyc diff --git a/Game_Client/Classes/System/__pycache__/Window.cpython-312.pyc b/Game_Client/Classes/System/__pycache__/Window.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f9aa200025cc1ee1b6242c85fe8ac1291d99e562 GIT binary patch literal 2176 zcmbVN&1)N15P!ScU9D`bsp}n-}seeE(F>bNg=1^!3_05e61)nF=2 z&CHvRr=K*fkHGixVv~NCAmn#sx}Ow*&NTo##3Gj95Cd1y5xy1$B9bX$CDw^0?TMkT zA+`ivK0;GB}}f>w{K`N>(5I`l&jrSm|}y&@6487#ZA|6|Ky= zWMokTa2D_Y*A%S*z!$6w5Yg4w?SpO(_Vca0J`^bTY}aZ$JSstkgNzw+ruope{Q09# zAay~uC!DAD+`NC1YqtFPhFhAeEz%No=WLh8PWra*(AXib&M0+b3U#MZe-OyrL!g8< z1DPMIcgu=FBZiw7tOzT_L^=OfMBqRkaS7m}G85t}UHO9AMW^dR|0(XG6|&HU zu@$5}o2TMgaWC=8FSKp@~Je(y;B-xkf@&06HCFr%j!HZV&e!3zdT zvxW5ul9uf?omwkUJ?fi_4U4ig?n}07`$0bn>$RqDH(Xr`B#%0?EQ3ZcVm1K8!`Mpj zos`QTRPTC}dDV(f>1WjssrSHdG^=;YQ>E$YkE&DH4`s)uu3s%XHP54<+46k4SPk3i zdK1DhP4sM<%h^cS6=2w&0c4G|-x}SJ9;MrbF<7*Sds!HJl6jmtEZo>H-1uhj`_XSl zpZPzo{;>M|o#}(Z3~IhmGuxTX%%M86ua5kz7JqwN|FZf;^^to9nvB!2jD5>l;LE0s9RzefdevY@apLz_sR3`;ki=e8B2E$2eOy5t^nP2u;@|Fw%$Afw9<_Li+?796ga%ar+;}M zx_(bGhRRV4Sg#}hqJV_WPo8anRsLpg06_H@_c&jt)XHFyl-WHJ0 zNjo>RHnmYckcQg%;k8>El>=$Gotp?{6KyTOeSh=*fi%)i=eBQe-abqh_tV7#sraX) z%J1%0jtMMZh0C*Y2f0_51X(*)1i83d=@3{DkMDYj$Ir`)yYD}ld_4IV>V=VFkdRw` zc`bbHuEU*cju*y%_D(12%`nfC>^(S$W%Y)D947=p_?2ic$jIN)Wuf?r0O1b)0TCs; Aod5s; literal 0 HcmV?d00001 diff --git a/Game Client/main.py b/Game_Client/main.py similarity index 100% rename from Game Client/main.py rename to Game_Client/main.py