Advertisement
rishabbansal21

Day-14

Jan 25th, 2021 (edited)
752
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 8.25 KB | None | 0 0
  1. #client.py
  2. import pygame
  3. from network import Network
  4.  
  5. width = 500
  6. height = 500
  7. win = pygame.display.set_mode((width,height))
  8. pygame.display.set_caption("CLIENTS")
  9.  
  10. clients_num = 0
  11.  
  12. class Player:
  13.     def __init__(self, x,y,width,height,color):
  14.         self.x = x
  15.         self.y = y
  16.         self.width = width
  17.         self.height = height
  18.         self.color = color
  19.         self.rect = (x,y,width,height)
  20.         self.vel = 5
  21.  
  22.     def draw(self, win):
  23.         pygame.draw.rect(win, self.color, self.rect)
  24.  
  25.     def move(self):
  26.         keys = pygame.key.get_pressed()
  27.         if keys[pygame.K_LEFT]: self.x -= self.vel
  28.         if keys[pygame.K_RIGHT]: self.x += self.vel
  29.         if keys[pygame.K_UP]: self.y -= self.vel
  30.         if keys[pygame.K_DOWN]: self.y += self.vel
  31.         self.update()
  32.  
  33.     def update(self):
  34.         self.rect = (self.x,self.y,self.width,self.height)
  35.  
  36. def read_pos(st):
  37.     st = st.split(",")
  38.     return( int(st[0]), int(st[1]) )
  39.  
  40. def make_pos(tp):
  41.     return str(tp[0]) + "," + str(tp[1])
  42.  
  43. def redrawWindow(win, player1, player2):
  44.     win.fill((255,255,255))
  45.     player1.draw(win)
  46.     player2.draw(win)
  47.     pygame.display.update()
  48.  
  49.  
  50. def main():
  51.     n = Network()
  52.     startpos = read_pos(n.getpos())
  53.  
  54.     run = True
  55.     p1 = Player(startpos[0],startpos[1],100,100,(0,250,0))
  56.     p2 = Player(0,0,100,100,(0,0,250))
  57.  
  58.     clock = pygame.time.Clock()
  59.     while run:
  60.         for event in pygame.event.get():
  61.             if event.type == pygame.QUIT:
  62.                 run = False
  63.                 pygame.quit()
  64.  
  65.         p2pos = read_pos(n.send(make_pos((p1.x, p1.y))))
  66.         p2.x = p2pos[0]
  67.         p2.y = p2pos[1]
  68.         p2.update()
  69.  
  70.         p1.move()
  71.         clock.tick(20)
  72.         redrawWindow(win, p1, p2)
  73.  
  74. main()
  75.  
  76.  
  77. ------------------------------------------------------------------------------------------
  78.  
  79.  
  80. #network.py
  81. import socket
  82.  
  83. class Network:
  84.     def __init__(self):
  85.         self.client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  86.         self.server = "192.168.1.4"
  87.         self.port = 5555
  88.         self.addr = (self.server, self.port)
  89.         self.pos = self.connect()
  90.  
  91.     def getpos(self):
  92.         return self.pos
  93.  
  94.     def connect(self):
  95.         try:
  96.             self.client.connect(self.addr)
  97.             return self.client.recv(2048).decode() #immediatly print the received text
  98.         except:
  99.             pass
  100.  
  101.     def send(self, data):
  102.         try:
  103.             self.client.send(str.encode(data))
  104.             return self.client.recv(2048).decode()
  105.         except socket.error as e:
  106.             print(e)
  107.  
  108.  
  109.  
  110.  
  111.  
  112. --------------------------------------------------------------------------------------
  113. #server.py
  114. import socket
  115. from _thread import *
  116.  
  117. server = "192.168.1.4"
  118. port = 5555
  119.  
  120. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)    #ipv4, #stream
  121.  
  122. try:
  123.     s.bind((server,port))
  124.  
  125. except socket.error as e:
  126.     print(str(e))
  127.  
  128. s.listen(2)  #number of clients
  129. print("WAITING FOR CONNECTION")
  130.  
  131. def read_pos(st):
  132.     st = st.split(",")
  133.     return( int(st[0]), int(st[1]) )
  134.  
  135. def make_pos(tp):
  136.     return str(tp[0]) + "," + str(tp[1])
  137.  
  138. pos = [(0,0), (100,100)]
  139.  
  140.  
  141. def threaded_client(conn, player):
  142.     conn.send(str.encode(make_pos(pos[player])))
  143.     reply = ""
  144.     while True:
  145.         try:
  146.             data = read_pos(conn.recv(2048).decode()) #amount of bits
  147.             pos[player] = data
  148.  
  149.             if not data:
  150.                 print("DISCONNECTED!")
  151.                 break
  152.            
  153.             else:
  154.                 if player == 1:
  155.                     reply = pos[0]
  156.                 else:
  157.                     reply = pos[1]
  158.                 #print("RECEIVED: " + str(data))
  159.                 #print("SENDING: " + str(reply))
  160.  
  161.             conn.sendall(str.encode(make_pos(reply)))
  162.  
  163.         except:
  164.             break
  165.     print("LOST CONNECTION")
  166.     conn.close()
  167.  
  168. currentplayer = 0
  169.  
  170. while True:
  171.     conn, addr = s.accept()   #obj, ip
  172.     print("Connected To: " + str(addr))
  173.  
  174.     start_new_thread(threaded_client, (conn,currentplayer))
  175.     currentplayer += 1
  176.  
  177.  
  178.  
  179. -------------------------------------------------------------------------------------------------
  180.  
  181.  
  182. import pygame, random
  183. pygame.init()
  184.  
  185. screen = pygame.display.set_mode((1000,400))
  186. pygame.display.set_caption("TYPING SPEED CALCULATOR")
  187. text_font = pygame.font.Font("freesansbold.ttf", 20)
  188. heading_font = pygame.font.Font("freesansbold.ttf", 40)
  189.  
  190. def start_game():
  191.     statements = [
  192.         "Please take your dog, Cali, out for a walk – he really needs some exercise!",
  193.         "What a beautiful day it is on the beach, here in beautiful and sunny Hawaii.",
  194.         "Rex Quinfrey, a renowned scientist, created plans for an invisibility machine.",
  195.         "Do you know why all those chemicals are so hazardous to the environment?",
  196.         "You never did tell me how many copper pennies where in that jar; how come?",
  197.         "Max Joykner sneakily drove his car around every corner looking for his dog.",
  198.         "The two boys collected twigs outside, for over an hour, in the freezing cold!",
  199.         "When do you think they will get back from their adventure in Cairo, Egypt?",
  200.         "Trixie and Veronica, our two cats, just love to play with their pink ball of yarn.",
  201.         "We climbed to the top of the mountain in just under two hours; isn’t that great?",
  202.     ]
  203.  
  204.     def result(inp, statement, time_taken):
  205.         c = 0
  206.         C = 0
  207.         inp_words = inp.split(" ")
  208.         statement_words = statement.split(" ")
  209.  
  210.         wpm = (len(inp_words)/time_taken) * 60
  211.  
  212.         for i in range(len(inp_words)):
  213.             for j in range(len(inp_words[i])):
  214.                 C += 1
  215.                 if inp_words[i][j] == statement_words[i][j]:
  216.                     c += 1
  217.         return((str(c/C*100)[:3]), str(wpm)[:3])
  218.  
  219.     statement = random.choice(statements)
  220.     inp = ''
  221.     enter = 0
  222.     start = 0
  223.  
  224.     MainGame = True
  225.     while MainGame:
  226.         screen.fill((0,0,0))
  227.  
  228.         pygame.draw.rect(screen, (255,255,0), pygame.Rect(50,100,900,40), 3)
  229.         sentence = text_font.render(statement, True, (255,255,255))
  230.         screen.blit(sentence, (60,110))
  231.  
  232.         pygame.draw.rect(screen, (0,255,0), pygame.Rect(50,200,900,40), 3)
  233.         if start == 0:
  234.             inp_sentence = text_font.render("(PRESS 1 TO START)", True, (128,128,128))
  235.         else:
  236.             inp_sentence = text_font.render(inp, True, (255,255,225))
  237.  
  238.         screen.blit(inp_sentence, (60,210))
  239.  
  240.         for event in pygame.event.get():
  241.             if event.type == pygame.QUIT:
  242.                 MainGame = False
  243.             if event.type == pygame.KEYDOWN:
  244.                 if event.key == pygame.K_1:
  245.                     start = 1
  246.                     start_time = pygame.time.get_ticks()
  247.                 elif event.key == pygame.K_RETURN:
  248.                     enter = 1
  249.                     end_time = pygame.time.get_ticks()
  250.                     accuracy, wpm = result(inp, statement, (end_time-start_time)/1000)
  251.                
  252.                 elif event.key == pygame.K_ESCAPE:
  253.                     Display_Page()
  254.  
  255.                 elif event.key == pygame.K_BACKSPACE:
  256.                     inp = inp[:-1]
  257.  
  258.                 else:
  259.                     inp += event.unicode
  260.  
  261.         if enter == 1:
  262.             Accuracy_msg = text_font.render("ACCURACY: " + accuracy + "%", True, (255,255,255))
  263.             screen.blit(Accuracy_msg, (400, 300))
  264.             WPM_msg = text_font.render("WPM: " + wpm, True, (255,255,255))
  265.             screen.blit(WPM_msg, (440,350))
  266.  
  267.         pygame.display.update()
  268.  
  269.  
  270.  
  271.  
  272. def Display_Page():
  273.     MainRun = True
  274.     while MainRun:
  275.         screen.fill((0,0,0))
  276.         Game_msg = heading_font.render("TYPING SPEED CALCULATOR", True, (255,255,0))
  277.         screen.blit(Game_msg, (240,100))
  278.  
  279.         Display_msg = text_font.render("PRESS SPACE TO START", True, (255,255,200))
  280.         screen.blit(Display_msg, (380,300))
  281.         for event in pygame.event.get():
  282.             if event.type == pygame.QUIT:
  283.                 MainRun = False
  284.  
  285.             if event.type == pygame.KEYDOWN:
  286.                 if event.key == pygame.K_SPACE:
  287.                     MainRun = False
  288.                     start_game()
  289.  
  290.         pygame.display.update()
  291.  
  292.  
  293. Display_Page()
  294.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement