Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pygame
- from pygame.locals import *
- import sys
- import socket
- import threading
- import textwrap
- class Entity(pygame.sprite.Sprite):
- def __init__(self):
- pygame.sprite.Sprite.__init__(self)
- class UI_Element(Entity):
- def __init__(self, pos_x, pos_y, width, height, color):
- super(UI_Element, self).__init__()
- self.pos_x = pos_x
- self.pos_y = pos_y
- self.height = height
- self.width = width
- self.color = color
- self.image = pygame.Surface([self.width, self.height])
- self.image.fill((color))
- self.rect = self.image.get_rect(bottomleft = ((self.pos_x, self.pos_y)))
- ui_elements.add(self)
- class UI_Picture(Entity):
- def __init__(self, pos_x, pos_y, image):
- super(UI_Picture, self).__init__()
- self.pos_x = pos_x
- self.pos_y = pos_y
- self.image = pygame.image.load(image)
- self.image.set_colorkey((255, 255, 255), RLEACCEL)
- self.rect = self.image.get_rect(bottomleft = ((self.pos_x, self.pos_y)))
- ui_pictures.add(self)
- class UI_Text(Entity):
- def __init__(self, pos_x, pos_y, text, fontcolor, is_chat):
- super(UI_Text, self).__init__()
- self.is_chat = is_chat
- self.text = text
- self.fontcolor = fontcolor
- self.pos_x = pos_x
- self.pos_y = pos_y
- self.font = pygame.font.Font('courier.ttf', 16)
- self.image = self.font.render(self.text, True, fontcolor)
- self.rect = self.image.get_rect(bottomleft = ((self.pos_x, self.pos_y)))
- if self.is_chat:
- chat.add(self)
- else:
- ui_text.add(self)
- def update(self, newtext, max_x):
- self.max_x = max_x
- self.image = self.font.render(newtext, True, self.fontcolor)
- self.rect = self.image.get_rect(bottomleft = ((self.pos_x, self.pos_y)))
- if self.rect.bottomright[0] > self.max_x:
- self.rect.x -= (self.rect.bottomright[0] - self.max_x)
- class Client():
- sock = None
- def __init__(self):
- self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
- # self.sock.connect(("192.168.0.7", 1234))
- threading.Thread(target = self.recvData).start()
- def sendData(self, data):
- self.sock.sendto(data.encode(), ("174.100.18.82", 1234))
- def recvData(self):
- print("recvData")
- while True:
- try:
- data = self.sock.recv(5000)
- if data:
- data = data.decode()
- print(data)
- makeChat(data)
- except:
- pass
- def makeChat(data):
- for x in chat:
- x.kill()
- print("here!!!")
- all_chat = textwrap.wrap(data, 20)
- # while len(all_chat) > 25:
- # all_chat.pop(0)
- y = 450
- for line in all_chat:
- UI_Text(0, y, line, (255, 255, 255), True)
- y += 18
- # Initialize PyGame
- pygame.init()
- # Create the client
- client = Client()
- # Screen Settings
- screen_x = 1440
- screen_y = 900
- screen = (screen_x, screen_y)
- screen = pygame.display.set_mode(screen)
- # Title
- pygame.display.set_caption("Test")
- # Groups
- ui_elements = pygame.sprite.Group()
- ui_text = pygame.sprite.Group()
- ui_pictures = pygame.sprite.Group()
- chat = pygame.sprite.Group()
- # UI Initialization (pos_x, pos_y, width, height, (co, lo, r))
- # THIS CAN BE CLEANED UP
- chatboxlower = UI_Element(0, screen_y + 00, 250, 18, (66, 66, 66))
- chatboxupper = UI_Element(0, screen_y - 18, 250, 450, (117, 117, 117))
- loginimage = UI_Picture((screen_x / 2 - 125), (screen_y / 2 + 125), 'LoginBox.png')
- messagetext = UI_Text(0, screen_y, "", (255, 255, 255), False)
- logintext = UI_Text(645, 444, "", (0, 0, 0), False)
- passwordtext = UI_Text(645, 492, "", (0, 0, 0), False)
- message = ""
- # Clock
- clock = pygame.time.Clock()
- # Misc.
- username_entered = False
- password_entered = False
- logged_in = False
- username = ""
- password = ""
- # Let's GO!
- running = True
- while running:
- dt = clock.tick(60)
- screen.fill(Color(0, 0, 0))
- # print(pygame.mouse.get_pos())
- events = pygame.event.get()
- keys = pygame.key.get_pressed()
- for event in events:
- if event.type == pygame.QUIT or keys[K_ESCAPE]:
- running = False
- elif keys[K_BACKSPACE]:
- message = message[:-1]
- elif keys[K_RETURN] and len(message) > 0:
- print(message)
- if logged_in:
- print("sent this to the server")
- client.sendData(username + message)
- message = ""
- elif username_entered:
- print("Password Entered")
- print("Login Attempted")
- password_entered = True
- logged_in = True
- loginimage.kill()
- logintext.kill()
- passwordtext.kill()
- password = message
- message = ""
- else:
- print("Username Entered")
- username_entered = True
- username = message + ": "
- print(username + "test message")
- message = ""
- elif event.type == KEYDOWN:
- message += str(event.unicode)
- if logged_in:
- # print("Logged in")
- if len(message) > 100:
- message = message[:-1]
- messagetext.update(message, 250)
- elif username_entered:
- # print("Username Entered, now for password")
- if len(message) > 15:
- message = message[:-1]
- passwordtext.update(message, 2500)
- else:
- # print("Waiting on Username")
- if len(message) > 15:
- message = message[:-1]
- logintext.update(message, 2500)
- for entity in ui_elements:
- screen.blit(entity.image, entity.rect)
- for entity in ui_pictures:
- screen.blit(entity.image, entity.rect)
- for entity in ui_text:
- screen.blit(entity.image, entity.rect)
- for entity in chat:
- screen.blit(entity.image, entity.rect)
- pygame.display.flip()
- pygame.quit()
- sys.exit()
Add Comment
Please, Sign In to add comment