From 8489b7ba148d85ef6373b4acc21956bfe1b683c3 Mon Sep 17 00:00:00 2001 From: poorneshwar9441 <79003983+poorneshwar9441@users.noreply.github.com> Date: Sun, 21 Mar 2021 22:36:54 +0530 Subject: [PATCH 1/8] serveruploaded --- game_server.py | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 game_server.py diff --git a/game_server.py b/game_server.py new file mode 100644 index 0000000..f87d950 --- /dev/null +++ b/game_server.py @@ -0,0 +1,86 @@ +import socket +import threading +import pickle +import time + +class Server: + def __init__(self): + self.soc = socket.socket() + self.ip = "127.0.0.1" + self.soc.bind((self.ip,9845)) + self.players_list = [] + self.can_start = False + self.count = 0 + + + def send_joined(self,conn,ide,room): + conn.send(pickle.dumps("1")) + + + def send_id(self,conn,ide,room): + conn.send(pickle.dumps(ide)) + + + + def send_start_co_ordinates(self,conn,ide,room): + lst = [[350,600],[350,100],[100,350],[600,350]] + conn.send(pickle.dumps(lst)) + print("all_sent") + + + + def process_player(self,conn,ide,room): + local_count = 0 + while True: + if((self.can_start) and (local_count == 0)): + self.send_joined(conn,ide,room) + time.sleep(0.1) + self.send_id(conn,ide,room) + time.sleep(0.1) + self.send_start_co_ordinates(conn,ide,room) + local_count += 1 + self.count = self.count+1 + + + if(self.count == 4*room): + self.can_start = False + break + + while True: + try: + cor = conn.recv(1024) + print("recved sucess") + #k = pickle.loads(cor) + for i in self.players_list: + if((i[2] == room) and i[1] != ide): + i[0].send(cor) + + except Exception as e: + print(e) + + + def main_server_loop(self): + ide = 1 + room = 1 + self.soc.listen() + while True: + conn,addr = self.soc.accept() + self.players_list.append([conn,ide,room]) + + t = threading.Thread(target = self.process_player,args = (conn,ide,room)) + t.start() + + if(ide<4): + ide = ide+1 + + else: + ide = 1 + self.can_start = True + room = room+1 + + + + + +s = Server() +s.main_server_loop() \ No newline at end of file From 56bd81f42e2e01a7b12700110048820c218edca2 Mon Sep 17 00:00:00 2001 From: poorneshwar9441 <79003983+poorneshwar9441@users.noreply.github.com> Date: Sun, 21 Mar 2021 22:37:09 +0530 Subject: [PATCH 2/8] game --- game.py | 251 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 251 insertions(+) create mode 100644 game.py diff --git a/game.py b/game.py new file mode 100644 index 0000000..bd583c1 --- /dev/null +++ b/game.py @@ -0,0 +1,251 @@ +import pygame +import sys +import client +import time + + +def load_imgs(): + img = pygame.image.load("space.jpg") + #player_img = pygame.image.load("space_ship.jpeg") + + return [img] + + +class Screen: + def __init__(self): + self.screen = pygame.display.set_mode((700,700)) + self.screen.fill((255,255,255)) + + + + +class Bullet: + def __init__(self,x,y): + self.x = x + self.y = y + + + def move_b(self): + self.y = self.y-15 + + + def draw_bullet(self,screen): + bullet = pygame.image.load("bullet.png") + screen.blit(bullet,(self.x,self.y)) + + + + +class Player: + def __init__(self,x,y,ide): + self.x = x + self.y = y + self.ide = ide + self.health = 100 + self.is_shooting = 0 + + + def draw_player(self,screen): + screen.blit(pygame.image.load("space_ship.png"),(self.x,self.y)) + + + def update_health(self): + self.health = self.health-3 + + + def shoot(self): + self.is_shooting = 1 + + + + def move_up(self): + self.y = self.y-15 + + def move_down(self): + self.y = self.y+15 + + def move_right(self): + self.x = self.x+15 + + def move_left(self): + self.x = self.x-15 + + + +class Main: + def __init__(self): + self.s = Screen() + self.s.screen.fill((0,0,0)) + self.background1 = load_imgs()[0] + self.bullets_list = [] + pygame.font.init() + self.welcome_text = pygame.font.Font('freesansbold.ttf',50) + self.welcome_blit = self.welcome_text.render("press any key to start",True,"red") + + self.wait = pygame.font.Font('freesansbold.ttf',30) + self.wait_font = self.wait.render("waiting for other players to join",True,"green") + + self.health_font = pygame.font.Font('freesansbold.ttf',30) + + + + def welcome_screen(self): + code = 0 + while True: + for e in pygame.event.get(): + if e.type == pygame.QUIT: + pygame.quit() + sys.exit() + + if e.type == pygame.KEYDOWN: + code = 1 + + if(code == 1): + break + + self.s.screen.blit(self.background1,(0,0)) + self.s.screen.blit(self.welcome_blit,(20,300)) + + pygame.display.update() + + self.wait_screen() + + + def wait_screen(self): + value = 0 + self.client = client.Client() + self.client.make_threads() + self.s.screen.fill((255,255,255)) + while True: + for e in pygame.event.get(): + if e.type == pygame.QUIT: + pygame.quit() + sys.exit() + + + if(self.client.can_start == True): + print("entered") + break + + self.s.screen.blit(self.wait_font,(20,300)) + + pygame.display.update() + + self.main_screen() + + + def main_screen(self): + self.client.recv_id() + self.client.recv_start_coordinates() + self.client.poss_ids.remove(self.client.ide) + bullet_code = 0 + + + count = 1 + for i in self.client.start_cordinates: + if count == self.client.ide: + self.player1 = Player(i[0],i[1],count) + + elif count == self.client.poss_ids[0]: + self.player2 = Player(i[0],i[1],count) + + elif count == self.client.poss_ids[1]: + self.player3 = Player(i[0],i[1],count) + + elif count == self.client.poss_ids[2]: + self.player4 = Player(i[0],i[1],count) + + count = count+1 + + self.client.make_thread2() + + while True: + for e in pygame.event.get(): + if e.type == pygame.QUIT: + pygame.quit() + sys.exit() + + if e.type == pygame.KEYDOWN: + if e.key == pygame.K_UP: + self.player1.move_up() + + elif e.key == pygame.K_DOWN: + self.player1.move_down() + + + elif e.key == pygame.K_RIGHT: + self.player1.move_right() + + + elif e.key == pygame.K_LEFT: + self.player1.move_left() + + + if(e.key == pygame.K_SPACE): + self.player1.shoot() + + self.health_display = self.health_font.render(f'health:{self.player1.health}',True,"red") + + + + self.client.send_cor([self.client.ide,self.player1.x,self.player1.y,self.player1.is_shooting]) + + if(self.player1.is_shooting == 1): + b1 = Bullet(self.player1.x,self.player1.y) + self.bullets_list.append(b1) + self.player1.is_shooting = 0 + + + + l = [self.client.one,self.client.two,self.client.three] + for i in l: + if i[0] == self.client.poss_ids[0]: + self.player2.x = i[1] + self.player2.y = i[2] + if(i[3] == 1): + b = Bullet(self.player2.x,self.player2.y) + self.bullets_list.append(b) + + + elif i[0] == self.client.poss_ids[1]: + self.player3.x = i[1] + self.player3.y = i[2] + if(i[3] == 1): + b = Bullet(self.player3.x,self.player3.y) + self.bullets_list.append(b) + + elif i[0] == self.client.poss_ids[2]: + self.player4.x = i[1] + self.player4.y = i[2] + if(i[3] == 1): + b = Bullet(self.player4.x,self.player4.y) + self.bullets_list.append(b) + + + + self.s.screen.blit(self.background1,(0,0)) + self.player4.draw_player(self.s.screen) + self.player1.draw_player(self.s.screen) + self.player2.draw_player(self.s.screen) + self.player3.draw_player(self.s.screen) + self.s.screen.blit(self.health_display,(540,20)) + + + for i in self.bullets_list: + i.draw_bullet(self.s.screen) + print("drawing png") + i.move_b() + if((abs(i.x -self.player1.x) == 5) and (abs(i.y - self.player1.y)) == 5): + self.player1.update_health() + + + if(self.player1.health == 0): + print("you lost man") + + print(self.player1.health) + + + pygame.display.update() + +m = Main() +m.welcome_screen() \ No newline at end of file From aa673a7866cb0689cad4ccc8d5b4b3d7021cf54f Mon Sep 17 00:00:00 2001 From: poorneshwar9441 <79003983+poorneshwar9441@users.noreply.github.com> Date: Sun, 21 Mar 2021 22:37:27 +0530 Subject: [PATCH 3/8] client --- client.py | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 client.py diff --git a/client.py b/client.py new file mode 100644 index 0000000..c6e8d67 --- /dev/null +++ b/client.py @@ -0,0 +1,78 @@ +import socket +import pickle +import threading +import sys +import time + + +class Client: + def __init__(self): + self.soc = socket.socket() + self.can_start = False + self.poss_ids = [1,2,3,4] + self.one = [0,0,0] + self.two = [0,0,0] + self.three = [0,0,0] + try: + self.soc.connect(("127.0.0.1",9845)) + + + print("port lstest") + except Exception as e: + print("server unavailable") + + + def recv_id(self): + try: + self.ide = pickle.loads(self.soc.recv(1024)) + print("id",self.ide) + except Exception as e: + print(e) + + def send_cor(self,co_ordinates): + self.soc.send(pickle.dumps(co_ordinates)) + + + + def recv_is_alljoined(self): + joined = 0 + try: + joined = pickle.loads(self.soc.recv(1024)) + print(joined) + if(joined == "1"): + self.can_start = True + except Exception as e: + joined = 0 + + + def recv_start_coordinates(self): + try: + self.start_cordinates = pickle.loads(self.soc.recv(1024)) + print("coordinates recved") + print(self.start_cordinates) + except Exception as e: + print(e) + + + def recv_coorinates(self): + while True: + try: + self.one = pickle.loads(self.soc.recv(1024)) + self.two = pickle.loads(self.soc.recv(1024)) + self.three = pickle.loads(self.soc.recv(1024)) + + except Exception as e: + print(e) + + #print("recved_cor",self.one,self.two,self.three) + + + + + def make_threads(self): + Thread = threading.Thread(target = self.recv_is_alljoined) + Thread.start() + + def make_thread2(self): + t = threading.Thread(target = self.recv_coorinates) + t.start() \ No newline at end of file From 13dc25dd97feb36af6c35ab663e43117733ff256 Mon Sep 17 00:00:00 2001 From: poorneshwar9441 <79003983+poorneshwar9441@users.noreply.github.com> Date: Sun, 21 Mar 2021 22:37:42 +0530 Subject: [PATCH 4/8] pic --- bullet.png | Bin 0 -> 230 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 bullet.png diff --git a/bullet.png b/bullet.png new file mode 100644 index 0000000000000000000000000000000000000000..ef13049a2eebb95b71f3bb905a1b3af7818e49a7 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^DL@>>!3HG#CVlP%Qfx`y?k)`fL2$v|<&%LToCO|{ z#S9GG!XV7ZFl&wkP>{XE)7O>#5hFXl2y?f{flol8Vow*xkcwMxFC7$Q5a3}rcww5H z$zr~e{U?oCU^0u%Qrp1&Ag-sYpUXO@geCxy96qlA literal 0 HcmV?d00001 From 6a764cd5ea38c4873fac81721d38648acbabac66 Mon Sep 17 00:00:00 2001 From: poorneshwar9441 <79003983+poorneshwar9441@users.noreply.github.com> Date: Sun, 21 Mar 2021 22:37:57 +0530 Subject: [PATCH 5/8] pic --- space_ship.png | Bin 0 -> 1171 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 space_ship.png diff --git a/space_ship.png b/space_ship.png new file mode 100644 index 0000000000000000000000000000000000000000..4bc2288d200b5286cae1ca6e4a514702a89cfb7a GIT binary patch literal 1171 zcmeAS@N?(olHy`uVBq!ia0vp^DL@>>!3HG#CVlP%QjEnx?oJHr&dIz4a#~U&JkxxA z8MJ_G4hB|6AqHlU5+Gz?lwx27vl$q?7^UItAVv+S8YTvY_DlvAsG2As4FVoO4Ac#! znHMl3OkBVOSDmte8O{dlJTzhJQlKu*0*}aI1_o|n5N2eUHAezyT4ZKOL`j6Nk5zJh zu3lnFep0GlMQ#C5H3Nf9g%yyQn_7~nP?4LHS8P>bs{~eI1!RMS^_3LBN=mYAl_Got z6rA&mQWZ?~O!N$t?6?#Z6l{u8(yW49+@RWlJX@uVl9B=|ef{$Ca=mh6z5JqdeM3u2 zOML?)eIp}XpbFjM%Dj@q3f;V7Wr!g#b6ir3lZ!G7N;32F6hP)CCgqow*eWT3EP?}w zJ4-Ut5H{r%L%jv`pgu@O-%!s$A8s~Ks|`rh%D*Tx6=*Zad^) z1Mw+X6zEkuE*pJ#u-S3>98!;DU|@3gba4!+V0=4AF^D-(goRnO@j1iAoz5~G=Ng|` zWSnbca1LyBaeL0-5oBR;Al}gQ=$ZJ76YW3WdsB8@%PhyNMuCBm!-0WGpn-t}#*E-^ z?EV^a>eE!4{rmsv)jytlPc|>C_WbmFxrS4f8YYND7VA6t6s$CCS#n}lwO~?{cdw#~ z>$N-G0>Uv_Jc^o|p2fAyco3A#;W^RtyV4Ps=~B)fU2ArVE2{0dBH&-e0r*Nu`sD?Op+=sx?d1T0CY{ zDYkrx@b=}HXz$gmh%U;Q;D6}k&L(%qHkg$`A50Zfk*G83A-Sqx{^KHprm9;kY^OxRPbK&;$_LBX( z*H^z3D&Ow@@-OQ=0nT&+=1}A?k6+gL?~9J9ef|FC@sm#{*W914AAh#ul(3P}%&Mjd zD}Nj>YU%M=Hcuf%>)%EhMdisW)j4K%)$6#QIFa&-(`nfw`O|_RrJvaQ;$&{jOTM`Y PlrueD{an^LB{Ts5PNavx literal 0 HcmV?d00001 From 456eca565e42d1e6a99b816e7567a9a45eaff256 Mon Sep 17 00:00:00 2001 From: poorneshwar9441 <79003983+poorneshwar9441@users.noreply.github.com> Date: Sun, 21 Mar 2021 22:38:21 +0530 Subject: [PATCH 6/8] pic From 17a890c91d6182e97697bab703d8b8d3a51928b5 Mon Sep 17 00:00:00 2001 From: poorneshwar9441 <79003983+poorneshwar9441@users.noreply.github.com> Date: Sun, 21 Mar 2021 22:39:17 +0530 Subject: [PATCH 7/8] readme --- readme.txt | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 readme.txt diff --git a/readme.txt b/readme.txt new file mode 100644 index 0000000..80a617b --- /dev/null +++ b/readme.txt @@ -0,0 +1,47 @@ +idea of project: + + we tried to implement online space_invader game using pygame and sockets + + each game has four players firing bullets against each other + + the one with non_zero health at last will win the game + + + + How you tried to implement it: + + we wrote a server.py file which collects receives co_ordinates of each of 4_players + + and sends them to other three players and the game.py script updates the co_ordinates + + of each player in the game according to the values received by server + + + the server.py file that we wrote can actually handle multiple games(4 members in each game) + + we achived this using threading + + + + Problems that we faced: + + we faced slightly laging issues while port_forwarding(using ngrok server) + + + if we run these scripts on local_network there is no langing + + + What you learnt from the project: + + 1)handling_time + + + + Members of the project + + Team name = codingnoobs + + IMT2020545-PoorneshwarChaganti + IMT2020555-Ayyappa koppauravuri + + From eebeb917a6645647c19fe7f494148f5ee74f26be Mon Sep 17 00:00:00 2001 From: poorneshwar9441 <79003983+poorneshwar9441@users.noreply.github.com> Date: Sun, 21 Mar 2021 22:39:55 +0530 Subject: [PATCH 8/8] pic --- space.jpg | Bin 0 -> 44246 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 space.jpg diff --git a/space.jpg b/space.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d02cbde73e9c0a07f2ec48ea6d26f247ea1ef093 GIT binary patch literal 44246 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 literal 0 HcmV?d00001