From 936e0d7f4df5bbe5408ae2e5c3c1ec04867e8bfa Mon Sep 17 00:00:00 2001 From: Weranda Date: Fri, 16 Jun 2023 12:46:47 +0200 Subject: [PATCH] =?UTF-8?q?u=C5=BCycie=20drzewa=20decyzyjnego=20w=20kodzie?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __pycache__/agent.cpython-310.pyc | Bin 5561 -> 5565 bytes __pycache__/astar.cpython-310.pyc | Bin 1993 -> 1981 bytes __pycache__/drzewo_decyzyjne.cpython-310.pyc | Bin 0 -> 3581 bytes __pycache__/mobs.cpython-310.pyc | Bin 2163 -> 2210 bytes __pycache__/nn.cpython-310.pyc | Bin 2637 -> 2640 bytes agent.py | 2 +- astar.py | 2 +- drzewo_decyzyjne/data => data | 2 +- drzewo_decyzyjne.py | 150 ++++++++++++++++++ drzewo_decyzyjne/drzewo_decyzyjne.py | 148 ----------------- main.py | 110 ++++++++----- mobs.py | 8 +- .../wyglad_drzewa => wyglad_drzewa | 0 13 files changed, 226 insertions(+), 196 deletions(-) create mode 100644 __pycache__/drzewo_decyzyjne.cpython-310.pyc rename drzewo_decyzyjne/data => data (99%) create mode 100644 drzewo_decyzyjne.py delete mode 100644 drzewo_decyzyjne/drzewo_decyzyjne.py rename drzewo_decyzyjne/wyglad_drzewa => wyglad_drzewa (100%) diff --git a/__pycache__/agent.cpython-310.pyc b/__pycache__/agent.cpython-310.pyc index 93ab86d7a717e34cc1d8104802812552f196b8da..0ace537880ee41aa5b6d058789a5ca16b62a4127 100644 GIT binary patch delta 1177 zcmZvb%TE(g6vi3aPIvIg)cP&Edsk$H0a(9Oel@+yTC8i zJ9poxSI4>z{EiBXH)L$fGP6c{)v`0|jtr(&WKd`Tu7d}NyFI~g{YUV80yqY=11EtF z;5<+kQtYgGrGziybWA{tP{{pW+kOXGcwm#v0;34tUcx~zm7brSo>}DnRC?(K{oN`x z!4Jd9{wQ(k?*|36*gxI5 zpBfW=-KcUF!1O{%)3Ug)U~HATa+uBxPw{cLBhs%7xYr|zNZIuwcG!I$`PzvLyQM2p z^$q);xY!EEW%p6j;goj7XbWaXb4CEqrfn*4BP@RD~$k$I!i0=UXI24 Yu(Mpv*oBD|jap;s(r)R7rQ5t+Z8(`2 zFC5KyFwu+0UNqQ~2M@-J2QOYH-aK*jFL1uIwKUZ|eDY@Iy*KZD-|XkfPm`LXX^}4R zWnS$UCl9p!fRb&z3A|Uva$$o!t7H^BJ;;NuX_qK0{HPxo5U6)iid90(N{k(ZeyjdI ztE)FIjkf%b3ya4Jj%`~-Grwg!g&kK0(+OlyXd14m7G_wg=X)xN^$>6pI1LN~XMjbZ zEu=9KeyeB~uzOKJk5iQWI5s?hEId>ttKv}~PM4Sx8SE&I;y6J&vLd}(R>Xrl=APSr z2^`YwcI4&VD9l~~uDK$)XEwW&>hPYD?bJ+i=^Wg~1)3>y(X!>adH=XG^L!%{O(@SG z;Z;%)iHgt(Y+Obw00zK&NvN3j?{*0a69nf$+bnrBh&2-N5Lw%0PqxJao>Qd+j*ytE zTaM>ByL!OaUn&(WCq#jrm1P<~d%tv#x70mUMf_opfS&xPI`*|MGc|@=rT}y=l(cM{ z2P$T*S(WPqAtqmdja@w^Ugct9dN4;T5z$lvR+Sn|;Ftt%@x=_~@9 zGb#!@7qOq(tCm}}jlK3B#StyA4~dOyF_`CpB_IvV0~ufr$O1WF7FYm|^pe<TP~? Y@bW;I^}{ z5v&A%fQ5g+#@c`3#7r@7=FQ{r=5zEh%CGa>k<|0#vHX3_Uo@|VcfGZ^B(Gb$Orc9g za-pJPs>mB8C0Fb%63}uWouiUnbj`i!Gw8^t$`5>o3_MrOf#@6z7%C=SL7k8=E65@r z(%Hm2P)+p^uH=FW5>$erHsj-S3}N94np3k7I|H{*J@=1Y0M`XrBc$D}58Tb2Q6Ktt p3VpZT=Hbg6g>}1|ew&-7x@yDBKDZtET=NEN6@Kg+Z-%FI?+?j1Mc@Dc delta 250 zcmXAkKT88a5XEOUvwPX~mVix&AXq52TBH$61EN?2TkS+m0{*#N`L;4(`uzg8y^UZc zSXo(H`UUh`xTn*+;rAHky|>;+&)<6QD9_h?dGY=1pM=-qt8A~<1|9H&V!EOrbcWV>h^`XA2CO37o ZW*A3iQSRhw!W-;ZIDVQJ-i*s)_zPw&KhFRF diff --git a/__pycache__/drzewo_decyzyjne.cpython-310.pyc b/__pycache__/drzewo_decyzyjne.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..00522da546239e4b160bc236545103c2837ca3f4 GIT binary patch literal 3581 zcma)9TW{mW6()xlQIsruZO6OrHhXD$Q-CajB<&VOng;D6o4mM1yhRH_Ey3l?I+SEm z9#X4_7!?5=pfBx9e}VP5|DeBxuYJl}pYzgwXGl4=tOTXOnW5&)%$f6@@0{aoYs)wA z{Pn%R^Mgaf_&0rAeJp%@h&TTM8g6iNYy_t6SztXiIOEor2Di>xU~}`>=-XdG&Nzyx zz4|bGe26!HhDPW;0>(|wzBB@hTiix(bBDX=9p2&|dY8AkkG{n_yo=uBTfB$9&A0gu zdY|9oyXZT74=3+e_A@C&Y~z5{)5gHX`&+#Er)ZQp#2pTe1+-l_%6ek_`SpdXO#HD! zL%AcgjYLbelzrFe7=?Mk>haRtHx{09l=s+JIA?9;92>9LkuzQ z`^DpTem3}BDxS#Xr5OBvI-VrOATOpoi3Z1?ymca@!BZK%b^OVI%Tmm;kc)U;&WEXZ zG?`b2*>gHMyrG%!$izJ~zG<5tJ23B<7_ssmf%52EmtBL4T+zX+;ra^(8{m55+u#DA zo@#M(WXYe_a4p)Z-N4u01f3-3mgFyeUy}aSo(5_b$s)_+B#cG;*<6xVvV$hLX>~0T zcq^;REs`ZG$ZcA1XCk8+&n6kqo&%)3fISJoxrU`~Zb7ixZVc3HBwoXh`97MJHOZ!) zxnueaHr>B!)76rgEVp_{k4wjw_)tv2?JtZa99OZSsY&2+wrD8_BzOSZv06rXL;|v1 zBjqat1ZXQu*-LBDQND8T8jCJ$+*O@@15{|8Z9~SwdM%?`cMK5Hs)=#3(y4D(?leu# zrb3dclCCFr(e$@!>vz(qoJEb*iMm%ze;X@D(HJyZL#GS5U?)jmWb!nMht2Y8s}XB< z+asy_H%N1Rui*9y$F)O(hZ}IbzIGkZ?=^r01h@iKvuApE zcUgJ=Dz+O|Un2||sfAY)<~JA+VJ;BMmS!E{xBSTGV@F^87f;`+T5&d>o~C(aa|9oG2mANi8Y;PlP7}q54Z-cx=<{%c;?=!0 z8a|ICFB36bnWLD`(i*ZTaAH=RRl! z!YKZjTV1Bzct1L!N~*QH~=WDT8jq$c-`a)`>`koDM^T&wB5V z3Cag(b^zZFcw-|b9yF0r0}2+gFFaNrXjpG-5K~NCJrp@8>TB}+3j<}baUcZu4zxI4zJ1QIi`}Q@&kT=OCYAfJjq}iV2LHvI0t9{^rLdKE z;Vg}F6E1QWd$!>YK4$>@k2uLvkWy{!Djl5fDi1Ew(Hc3XarOa6l%;nSY2|%fqTi~c z>+2ZHH_(8+NnD^JL7^cZ(ht3rU23cLyLI?=M;S7Hilhaymx8AWN|8DhZj8zD`*Z}= zg~4_j<%O64-)0X7Ad7L(I*G;teAj-k79!=3v67O!E-ibAe)~Ea`ev7+A&}kI8E=<} z`X76%+`EQpt$R!QWSi4(gCH&nSlQ|U+9`4mOchQ!fz5^z& zDNcce$`I{|A7M~H^};-7IXvdrC|F@B^BjK*onzrUHoO4dd1$;eQXpX3P&kSL9X{2`90>{NUXw*dWR)h57a37-!8P95MitnFsSFp`wC zG_}`mDz%+4d0G2)fm)ZaWMxm^_Hyr-L2mWXeJ}4!rxgH)n@C(t!^1f4f%{Tjf!oua z;OB7Ws6eWSMo9H2DA+QZEByiepQ5jc{ZVWD4~;ooQ~&?~ literal 0 HcmV?d00001 diff --git a/__pycache__/mobs.cpython-310.pyc b/__pycache__/mobs.cpython-310.pyc index 8c4d7751aaa5c48cda26c7db4120af69af6cce74..5a482b4ca3e4ba26f7f3067f04835c74e0df522d 100644 GIT binary patch delta 655 zcma)4%SyvQ6wS*?tOl*NDr!+FK2k+g5M5NEh)Pi-w7RehL+nFCYXY}*p$Pf`Ze)Hy z-1Qp-_x^!op&d)dkKUALi zqsThcOTij02wB0<_>-7ZeYs|rjTj%7KI1;KA%9YYy5cL&6U`LddnV2HoA_4N;vZ44pTnKn04=3eH&+Rbe7Ff*o6Kh|%W<8WWtlM3S{Zl*;X zEYi9;om#cez;m}LR~&{=&V{n6{miaurFS-=5z%KqyMKqJ`o^#Z?hcRO#Vqf+j|!$jHFx EH}6t}KmY&$ delta 556 zcmZ1^_*sBApO=@50SFFE?M&gB$a{nF-o$73SQ&yDG}$MgXN+Rfl$mV6^i_H#%Pp4T z)SR>;ZlKyC5fC8?BvvvMsZaJ`cH|NQa@c|Rv)bgz%<4>BjFa~<+lqoji_}pGjmZKm zNg!KpaI@Di#7n1u?BbXl!|JM_DFZQ{2dLu~Z)RRvVqQs6Wqf{7c5x9OP;Bx+R-4I8 zY{D|qAR}dfL==ywpPQp!NKjPEJ%?Ko2DefP7RP!kULaB49&?EY%&^JASOZy zm<3j+50p>@N$PTZlX-=vgBTz*#C{=JUa4?E6 JiO5RG0RVt1Y}5b% diff --git a/__pycache__/nn.cpython-310.pyc b/__pycache__/nn.cpython-310.pyc index 80269561121a4ce78b7ed4cba235397ba6e41b1a..33f3bcc57bb102972e1c107d9b22869d4a7cb336 100644 GIT binary patch delta 62 zcmX>razTVQpO=@50SNZ#^`w+;!09q$= 3: - self.obstacles[self.najlepszaGeneracja[3][0]][self.najlepszaGeneracja[3][1]] = False - self.move_agent(self.astar.a_star(goal)) - + while True: #do poprawienia poprawne rozpoznawanie + print("goal: ",goal) + if prediction == "SAURON": + if self.agent.level < self.sauron.level: + lvl = 'nie' + else: + lvl = 'tak' + przyklad = {'zdrowie_bohatera': '100', + 'moc_bohatera': 'tak', + 'moc_moba': 'tak', + 'lvl_wiekszy_bohater': lvl, + 'mob_jest_strzelcem': self.sauron.archer, + 'zdrowie_moba': '50', + 'artefakt': self.agent.artifact} + decision = self.tree.tree(przyklad) + print(decision) + if decision == "walcz": + self.obstacles[self.najlepszaGeneracja[3][0]][self.najlepszaGeneracja[3][1]] = False + self.move_agent(self.astar.a_star(goal)) + else: + x = self.archer_ork.x + y = self.archer_ork.y + goal = x//TILE_SIZE,y//TILE_SIZE + mob_image = self.archer_ork.image_path + prediction = self.prediction_road(x,y,mob_image) + prediction = "ORK_ARCHER" + elif prediction == "ORK_INFANTRY": - self.obstacles[self.najlepszaGeneracja[2][0]][self.najlepszaGeneracja[2][1]] = False - self.move_agent(self.astar.a_star(goal)) + if self.agent.level < self.infantry_ork.level: + lvl = 'nie' + else: + lvl = 'tak' + przyklad = {'zdrowie_bohatera': '100', + 'moc_bohatera': 'tak', + 'moc_moba': 'tak', + 'lvl_wiekszy_bohater': lvl, + 'mob_jest_strzelcem': self.infantry_ork.archer, + 'zdrowie_moba': '50', + 'artefakt': self.agent.artifact} + decision = self.tree.tree(przyklad) + print(decision) + if decision == "walcz": + self.obstacles[self.najlepszaGeneracja[2][0]][self.najlepszaGeneracja[2][1]] = False + self.move_agent(self.astar.a_star(goal)) if self.agent.current_health < self.agent.max_health: goal = (self.flower.x//TILE_SIZE, self.flower.y//TILE_SIZE) self.move_agent(self.astar.a_star(goal)) @@ -352,8 +358,24 @@ class Game: prediction = self.prediction_road(x,y,mob_image) prediction = "SAURON" elif prediction == "ORK_ARCHER": - self.obstacles[self.najlepszaGeneracja[1][0]][self.najlepszaGeneracja[1][1]] = False - self.move_agent(self.astar.a_star(goal)) + if self.agent.level < self.archer_ork.level: + lvl = 'nie' + else: + lvl = 'tak' + przyklad = {'zdrowie_bohatera': '100', + 'moc_bohatera': 'tak', + 'moc_moba': 'tak', + 'lvl_wiekszy_bohater': lvl, + 'mob_jest_strzelcem': self.archer_ork.archer, + 'zdrowie_moba': '50', + 'artefakt': self.agent.artifact} + decision = self.tree.tree(przyklad) + print(decision) + if decision == "walcz": + self.obstacles[self.najlepszaGeneracja[1][0]][self.najlepszaGeneracja[1][1]] = False + + self.move_agent(self.astar.a_star(goal)) + if self.agent.current_health < self.agent.max_health: goal = (self.flower.x//TILE_SIZE, self.flower.y//TILE_SIZE) self.move_agent(self.astar.a_star(goal)) @@ -387,7 +409,7 @@ class Game: print("PATH:::::",path) for cell_to_move in path: x, y = self.bfs.get_coordinates(cell_to_move) - print("Ruch do kratki : ", cell_to_move, " z x: ", x, ", y: ", y, ", agent.x: ", self.agent.rect.x, ", agent.y: ", self.agent.rect.y) + #print("Ruch do kratki : ", cell_to_move, " z x: ", x, ", y: ", y, ", agent.x: ", self.agent.rect.x, ", agent.y: ", self.agent.rect.y) if(self.bfs.get_cell_number(self.agent.rect.x,self.agent.rect.y)!=cell_to_move): if x > self.agent.rect.x: self.agent.direction = 0 @@ -414,7 +436,7 @@ class Game: self.update() self.map() - print("Polozenie agenta: agent.x: ", self.agent.rect.x, ", agent.y: ", self.agent.rect.y) + #print("Polozenie agenta: agent.x: ", self.agent.rect.x, ", agent.y: ", self.agent.rect.y) self.clock.tick(2) def map(self): # tworzenie mapy diff --git a/mobs.py b/mobs.py index d9b6def..8e3e361 100644 --- a/mobs.py +++ b/mobs.py @@ -29,6 +29,8 @@ class Archer_ork(pygame.sprite.Sprite): self.level = 1 self.damage = 50*self.level self.health = 50 + + self.archer = 'tak' class Infantry_ork(pygame.sprite.Sprite): @@ -59,6 +61,8 @@ class Infantry_ork(pygame.sprite.Sprite): self.damage = 50*self.level self.health = 100 + self.archer = 'nie' + class Sauron(pygame.sprite.Sprite): @@ -87,4 +91,6 @@ class Sauron(pygame.sprite.Sprite): self.level = 3 self.damage = 50*self.level - self.health = 150 \ No newline at end of file + self.health = 150 + + self.archer = 'nie' \ No newline at end of file diff --git a/drzewo_decyzyjne/wyglad_drzewa b/wyglad_drzewa similarity index 100% rename from drzewo_decyzyjne/wyglad_drzewa rename to wyglad_drzewa