From 668eb5be9a640f74db1ff76fb6d646628f4d4b3a Mon Sep 17 00:00:00 2001 From: Marcin Kostrzewski Date: Mon, 21 Jan 2019 20:37:58 +0100 Subject: [PATCH] Initial Commit --- __pycache__/colours.cpython-37.pyc | Bin 0 -> 247 bytes __pycache__/config.cpython-37.pyc | Bin 0 -> 524 bytes __pycache__/events.cpython-37.pyc | Bin 0 -> 1673 bytes __pycache__/mygame.cpython-37.pyc | Bin 0 -> 762 bytes __pycache__/sprites.cpython-37.pyc | Bin 0 -> 3068 bytes colours.py | 6 ++ config.py | 26 ++++++++ data/graphics/a.txt | 0 data/graphics/asd.png | Bin 0 -> 761 bytes data/graphics/qwe.png | Bin 0 -> 1271 bytes events.py | 69 +++++++++++++++++++++ maps.py | 0 mygame.py | 41 +++++++++++++ sprites.py | 93 +++++++++++++++++++++++++++++ test.py | 4 ++ 15 files changed, 239 insertions(+) create mode 100644 __pycache__/colours.cpython-37.pyc create mode 100644 __pycache__/config.cpython-37.pyc create mode 100644 __pycache__/events.cpython-37.pyc create mode 100644 __pycache__/mygame.cpython-37.pyc create mode 100644 __pycache__/sprites.cpython-37.pyc create mode 100644 colours.py create mode 100644 config.py create mode 100644 data/graphics/a.txt create mode 100644 data/graphics/asd.png create mode 100644 data/graphics/qwe.png create mode 100644 events.py create mode 100644 maps.py create mode 100644 mygame.py create mode 100644 sprites.py create mode 100644 test.py diff --git a/__pycache__/colours.cpython-37.pyc b/__pycache__/colours.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ce10baa33a3e185db6bf69d831d67c45008964c2 GIT binary patch literal 247 zcmZ?b<>g`k0;?S7m}DUR7{q}AMj*ohh>JylL<&O`LkeRQV+vCgQwnnwa|%l^gC?sc z^UJS5$s&+aFaZ<*8Cb*wBQ%-8;xB=Gh9YJl0TcjH5CWvnPm?8zHQd89#Pt@dlaHgb zcNBAwt4kD%lTWDYN`@jTZlX-=vg$i`weAi=^2f&eOHF#Z4l literal 0 HcmV?d00001 diff --git a/__pycache__/config.cpython-37.pyc b/__pycache__/config.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..936abe0da2e02cd0dbeb259cd25eaa395f7ad8f4 GIT binary patch literal 524 zcmXw$$xg#C5QgohSy;lp9}qWG4vpZ95K9BCQrf5usx(3hRUEpI)TmBD=^Jt7NjT@q ziC5snI4!pF&HUq;KT&*bnu`QiRIndEDIwod{I3Egm-vV$1S5<_1Y|5k)FVuR0xN>T zR46hH)Q}7{(2)i#AQxc?xeO+91y+%3u#Vh-P2?7ABX?jIxd;1nZafvP3vr0nL0 zb^A6~)BLbqZ8kk9I&xlh&t%Y?nSqWncha4?hk=!u8}{TrvS*fH&yClrqv@HSn|_e7 zyqz4smeuERXvN)eFc?`C9!%nJlnBdBlRh6Exnn*IgTxB>=y}j9zowaS9&Rw5rWNtO5)wy_yGQ<#ubk#DaDlJfolJ-XcieJSxyn_p`nv3oJDn!OnE!J3Q7>Zb4_Z7M z0>Vd_<`IZwlBaA~aX#d3ErtSIq~3t^BK5(&aWG-SQ2H|Xi47we$_PA`v21`hWK*`l zo3brC;4R6|Sog*TC$N()xBT`XA(;lp^e{icH1C7_@J`9*{7PK2BlgYi1zWSZ2aSI& zbX)Rq@Ll^M@<2Rsa@-AVSga=Fg|dNqqO#I@6IEKjTouatUp}}$u#sM7*({rMx%LtL zccvR)fA)IQe4%=au})@L?8hOO+5V}{=PD_CE~q&uRyM3e0@8#aOziMB z*DXj1)j)%=q(fXSzddh2@29$QjvZdFIfq2tj3UIu8TOD4D9{dD#G^=sJf0M*o8`VAs)5_t;*mw%sRy816PXANGz0`CyU{{rtl*b_`Q{?U{lKvl9! zG)2kh;>x>b7mQlvl0y@$nd4!_>$chah0%@N`=LGfTMxh2w(xw73ayM$vZ{uDnWm%v ztp@ilji%#Frb^$zM&llP9^z_I1L)i2+_oY&)-&iJcUq@>*#+65!$mB7?u$5#cjHdn`5R=FT&4g3 literal 0 HcmV?d00001 diff --git a/__pycache__/mygame.cpython-37.pyc b/__pycache__/mygame.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1e3c2e7ed3d40e58c10d307fb24bdd9c2ebe0212 GIT binary patch literal 762 zcmX|9OK;Oa5cb<4F9Hpe@@jcXK`25TQH5xmLL#6JT3`u=!!qYn8tLj4K7e$ zqp?O)p~0<@MR5kVN47#|uIB>MH75 zaeb+cHlSJDfSb%@7Lk2!Deq=+3z|}5&S-1ig{|}#Y!tWQj`H3;mvuIad#YZ&xDVUw zS36KwlC1P#-Oa<|k(AE94`q*!mDMhuNMy#b)^b-gz1GrEe|ChXFWBlO=_{Mqp!F1; zAdV*C6kU;|VFm)-Am(wN3UuHrM43P%7HEnE8Ir}+p8?h`u+8JZ=K`%T3Ny54;T%$Q zStt_jFR&ya8_!|}SRM9`I-iE)VXrgjVr{K;4}0&r19U`?0z_Dm;enrIVH{zJV#Y^% z9}m&WLMmtzp#sNL9C=J cG8z)il3vyudQ~qQO}dupknWJDtf)@XKjMJiuK)l5 literal 0 HcmV?d00001 diff --git a/__pycache__/sprites.cpython-37.pyc b/__pycache__/sprites.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..435c9dc4ce7b05200ab34fd177699cf5d7da7296 GIT binary patch literal 3068 zcmbVOS&!645bpLho@)=ZfrMNea+)N&K$Jr$f(-YS0B|?Usv^&X0yidoqzZGy@M)a ze^F!pSzz{1@?Sv&6Fgx*Qf(yM=ejn0L)WHn>e})x)I6~<&J@;T<~za`4(dv5_1wei zl=(Gq^7o@VNCf$6P!CSi|W+iY(o9DDQnX< zW^3FOVG-_jWH{LGM!9E5+D#L$u8b^K)*vkQmDS6-sd5IRPS}r?-R*~+SXoIH3RQ`+ z^dOdnayoGlgoSG4sG}^&c`tfc*lu z$sN)r;(#c--+d5EW#6Geo+;PR>DTlWeN5lhygpn>HfUN+E3HK*(9UTs28E&W7PyF- z^UnaYhmzj}i5VdisN})`>dYAmtr-gK5^+GKMwwp`bM>Z({58>nky6GuFu zoLfmaie*FxqL1o@iT2ST6ZMQk6M*BK71o3ceu_Qf_lyY(Y!nCZGTUhNoS;&;)Otj+ zYT*h)7@DuG@O6Q;f`*_mO<{qq2?ky4*4Ww^q#X^!4(Y!qEY(&Ngxqdl+O zAn2yuA_%mLHJFq|NK;M(z`!NuK^!S_06g3IAdZDH!zfa2TXv(On*rJF5D@FADj=A2 z1z68kRvss9Ww$j}D|vwF!2^HBjO5!;>WC}l>*(7?$;pun(A&~}BwsrC$LpnucjgK& z;7Hewe5>Jj8Vp_Q0MQ4wA54?%}q9!zp8#@;s4N&RMScxqhFQwm)*{O@#PT(H&)E22fV6=bl2t@K6%lCFVj$4 zFp1m6#Ul!?T9D+=>9@Gx6p9MKPH=rq5m%Ph!>oDpWpQ?Qg|7+=L?}Nk zZ;*V0niM2TujoKTmtVdMa*Tg0!tWKxbBYWM!KlVhtdufGHn?k?M7})D$MqFhKj$;@ ztoB(0%!D1XDdTu30WG|R&3Djyj1JClfFv5<#fUjR=CP-gwD9OaFsFbU1gaJU{Y(rK z;u}Hm^Ds!BP=67A##?;XGA_HLK?_jBFp%vIfA%+4TS8JQ_JOU-L+@G>27Ih z1i|8?)9#_+8Uy~^~9NSXO4FOzh$d@SxHSrjIDsXWXAaVs^;HMTDP E3+)D62LJ#7 literal 0 HcmV?d00001 diff --git a/colours.py b/colours.py new file mode 100644 index 0000000..8e5694c --- /dev/null +++ b/colours.py @@ -0,0 +1,6 @@ +# colours variables + +WHITE=(245, 245, 245) +BLACK=(10, 10, 10) +RED=(245, 0, 0) +BLUE=(0, 0, 245) \ No newline at end of file diff --git a/config.py b/config.py new file mode 100644 index 0000000..8725d97 --- /dev/null +++ b/config.py @@ -0,0 +1,26 @@ +# Config variables +import pygame +from pygame.locals import * + +# Runtime settings +WINDOW_WIDTH = 1280 +WINDOW_HEIGHT = 720 +FPS = 30 +WIN_NAME = "Kostschevsky's shooter" + +# Controls + +# player 1 +P1_UP=pygame.K_w +P1_DOWN=pygame.K_s +P1_RIGHT=pygame.K_d +P1_LEFT=pygame.K_a +P1_SHOOT=pygame.K_z + +# player 2 +P2_UP=pygame.K_UP +P2_DOWN=pygame.K_DOWN +P2_RIGHT=pygame.K_RIGHT +P2_LEFT=pygame.K_LEFT +P2_SHOOT=pygame.K_RCTRL + diff --git a/data/graphics/a.txt b/data/graphics/a.txt new file mode 100644 index 0000000..e69de29 diff --git a/data/graphics/asd.png b/data/graphics/asd.png new file mode 100644 index 0000000000000000000000000000000000000000..f3cb7d11b131368c637fbd2c837c52899b40b9c5 GIT binary patch literal 761 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGmbN~PnbOGLGA9w%&0**;UK~!i%?UPY% z#4rd%dyszi{x|Cxwn*be6dM9I&L&cx(8_@U(6jkvpA4MH3D}{aLd0TbNF%yWVFH*d(B#0j&YvampCJnC0yMselw3k z#tF!FaA~u+9f#hF{!?XYxq(@*pdV!oABs!ZXjc3&$V^9@@*gX|!Wm}qt5U(eI4ERZ z>Lpfwn!RSJb=B&_mpFPr$!xxzmf2-izq*%i4Z$X>JL83#sI9U__@=iU`Ing#GVY;j7!Dft{uo}<{TVTqE6 z_Wfp<1WqZ!V!K7!EPn~7+LtWx`a9Pr49S`0FLAgc38ZGIKOEwND;9@XoN5-qkFlcZ z^2qj;ISvW44j&U-vHVH>VpWqBIkVbnL~1{XOP(|wQZl*cGiDK_Uwo1^VR5X($IK#D zUgh*&-K^>T<{CfZ6j5N-%6`1nlVc)VVJc1pbZm@)$=00000NkvXXu0mjfatmAo literal 0 HcmV?d00001 diff --git a/data/graphics/qwe.png b/data/graphics/qwe.png new file mode 100644 index 0000000000000000000000000000000000000000..31c606d6a70a301bffee49b2cddf0abe906bef14 GIT binary patch literal 1271 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGmbN~PnbOGLGA9w%&1dK^UK~!i%?U}!8 z6+sZk{aftp?Ck99QfVOwf?yG=G-4qL7N$y-Ml1xeNu@<35X2u~1c`*8C@MiBA`u}9 zK~W(J5lF>-L8SNAI6KcxR%)=y2)9)u&%xhHLuQFv6O9zv#F$+mXAc2SaTbVI6yT&fzFx zcp?rP?vbQngoT^fNy6^g)*9zue|>lF)AH=v+~msiovaq}HM8Hmr@GnSkVC)zRScGOD2(Z8m@I9s#t{c5 z7)ggVib0FvcLPiIWnei{E};-#wiP3SoYS=wyxdS21W9nAN1rMH%aXDVrP9{?mpBHm z3rPyP(5W}&!m=;Dm86h%2*-Ki7InovepmSbrIZUxLrh4y93LC4Om*hXO%fI^mKKaI z>TQL=^DKN^3jIne7nVLHq`H1uQH#^|z8DM1lCu)vuH2oA!QywE$p3e9tC$6g3P=ay zP=C9`!Pc%#QZZmeBJtSMr>mYU3zlx=WDO2=P-(StpQt)jSnf4b$`10Kp21iH4IIk) z$_gXj(qZ9N>ZMZV=%CWU$-TIc8bU+8m^R&PEC5~HR_SXiNx;4;0kp2jNVarX`ncj& zNC%a}SWL$5`VG7UlZDG~-RA5%aZ+<7PUkX!_#itEqw#*u-J3USG5WByH`eDTSEl6| zxCQe~gk?8At)BIa99D|S*aeSy#h5Tsn=LY!ww#xB0*A7z{K8R6iLi7rnRz&6V6id{ z^>iJtN=&lI(gA_YezDMX!VB~y9eR4ZPK2dTW|z?>7cBM~mE%P|W^-)DgxqH`yG}^m z4P&T2-WGFVh2veZ$LV>o_Pngcm=Hs02ar|nr?wB)aQ8Hoge7tmD!-o)Cb&{u#6ls) zge-;TFBar4J8W5A8=Mj8>(zxbq*zFrzcqqN7Gg}TBX|Wxn0!@EM%*8_A)XE zi79p^&fsFylXiM_)`pa*jdv%gFIdP`?U~j;N1R$nskkfO1KCW~wACG7%|* zr<6yx;j=Gh|FtaQT)D7>h}-px7$dXg*>6=jR>Zk-VKo~miD1Ot!evP!-|dMEvQw)w z_E3MTh2b)k2+P%ODI&C`YGh%#x>PJPjgBlV6!Xd~AVwJ$ig|^GB#k&M h5U literal 0 HcmV?d00001 diff --git a/events.py b/events.py new file mode 100644 index 0000000..c5bb83d --- /dev/null +++ b/events.py @@ -0,0 +1,69 @@ +import os, sys +import pygame +from pygame.locals import * + +from sprites import * + +running=True +players=[] + +def events(): + global running + for event in pygame.event.get(): + if event.type == pygame.QUIT: + running=False + +def collision_check(p): + # collision between players + if players[0].rect.colliderect(players[1].rect): + if p==1: + players[0].colliding=True + direction=players[1].facing + players[0].facing=(direction+2)%4 + return True + elif p==0: + players[1].colliding=True + direction=players[0].facing + players[1].facing=(direction+2)%4 + return True + else: + players[0].colliding=True + players[1].colliding=True + + else: + return False + +def player1_input(keys): + if not (keys[P1_UP] or keys[P1_DOWN] or keys[P1_RIGHT] or keys[P1_LEFT]): + players[0].stopmoving() + elif not collision_check(0): + if keys[P1_RIGHT]: + players[0].moveright() + if keys[P1_LEFT]: + players[0].moveleft() + if keys[P1_UP]: + players[0].moveup() + if keys[P1_DOWN]: + players[0].movedown() + +def player2_input(keys): + if not (keys[P2_UP] or keys[P2_DOWN] or keys[P2_RIGHT] or keys[P2_LEFT]): + players[1].stopmoving() + elif not collision_check(1): + if keys[P2_RIGHT]: + players[1].moveright() + if keys[P2_LEFT]: + players[1].moveleft() + if keys[P2_UP]: + players[1].moveup() + if keys[P2_DOWN]: + players[1].movedown() + +def event_handler(): + events() + keys=pygame.key.get_pressed() + collision_check(-1) + player1_input(keys) + player2_input(keys) + + \ No newline at end of file diff --git a/maps.py b/maps.py new file mode 100644 index 0000000..e69de29 diff --git a/mygame.py b/mygame.py new file mode 100644 index 0000000..d67f581 --- /dev/null +++ b/mygame.py @@ -0,0 +1,41 @@ +# import all files +from config import * +from sprites import * +from colours import * +import events +# import modules +import os, sys +import pygame +from pygame.locals import * + +# initialization + +pygame.init() +pygame.mixer.init() +screen=pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT)) +pygame.display.set_caption(WIN_NAME) +clock=pygame.time.Clock() + +# initialize two players + +events.players.append(Player('asd', 50, 50, 5)) +events.players.append(Player('qwe', 100, 100, 5)) +all_sprites.add(events.players) + +events.running=True + +# game loop + +while events.running: + clock.tick(FPS) + # events + pygame.event.pump() + events.event_handler() + # update + all_sprites.update() + screen.fill(BLACK) + # draw + all_sprites.draw(screen) + pygame.display.flip() +pygame.quit() +sys.exit() \ No newline at end of file diff --git a/sprites.py b/sprites.py new file mode 100644 index 0000000..cdf30a0 --- /dev/null +++ b/sprites.py @@ -0,0 +1,93 @@ +# import all files +from config import * +import events +# import modules +import os, sys +import pygame +from pygame.locals import * + +# resource handler + +def load_img(name): + img_path=os.path.join('data/graphics', name) + image=pygame.image.load(img_path).convert() + colorkey=image.get_at((0,0)) + image.set_colorkey(colorkey, RLEACCEL) + return image, image.get_rect() + +def load_sound(name): + sound_path=os.path.join('data\\sounds') + sound=pygame.mixer.Sound(sound_path) + return sound + +# sprite groups + +all_sprites=pygame.sprite.Group() + +# sprites classes + +vec=pygame.math.Vector2 + +class Player(pygame.sprite.Sprite): + def __init__(self, fname, s_pos_x, s_pos_y, speed): + pygame.sprite.Sprite.__init__(self) + self.image, self.rect=load_img(fname +'.png') + self.rect.center=(s_pos_x, s_pos_y) + self.pos=vec(s_pos_x, s_pos_y) + self.speed=vec(0, 0) + self.acc=vec(0, 0) + self.friction=-0.25 + self.facing=0 # where the player is looking (0-north, 1-east, 2-south, 3-west) + self.colliding=False + + def moveup(self): + self.facing=0 + self.acc.y=-1.5 + self.acc.x=0 + + def movedown(self): + self.facing=2 + self.acc.y=1.5 + self.acc.x=0 + + def moveright(self): + self.facing=1 + self.acc.x=1.5 + self.acc.y=0 + + def moveleft(self): + self.facing=3 + self.acc.x=-1.5 + self.acc.y=0 + + def stopmoving(self): + self.acc=vec(0, 0) + + def move(self): + if self.colliding: + if self.facing==0: + self.pos.y+=1 + elif self.facing==1: + self.pos.x-=1 + elif self.facing==2: + self.pos.y-=1 + elif self.facing==3: + self.pos.x+=1 + self.rect.center=self.pos + self.speed=vec(0, 0) + self.acc=vec(0, 0) + self.colliding=False + else: + self.acc+=self.speed*self.friction + self.speed+=self.acc + self.pos+=self.speed+0.5*self.acc + self.rect.center=self.pos + + def update(self): + self.move() + +class Bullet(pygame.sprite.Sprite): + def __init__(self, fname): + pygame.sprite.Sprite.__init__(self) + self.image, self.rect=load_img(fname + '.png') + diff --git a/test.py b/test.py new file mode 100644 index 0000000..1fd3e41 --- /dev/null +++ b/test.py @@ -0,0 +1,4 @@ +import os, sys +name='a' +img_path=os.path.join('data\\graphics', name+'.txt') +print(img_path) \ No newline at end of file