diff --git a/client/__pycache__/client.cpython-37.pyc b/client/__pycache__/client.cpython-37.pyc new file mode 100644 index 0000000..2d71ec5 Binary files /dev/null and b/client/__pycache__/client.cpython-37.pyc differ diff --git a/client/apple-sprite.png b/client/apple-sprite.png new file mode 100644 index 0000000..5d19922 Binary files /dev/null and b/client/apple-sprite.png differ diff --git a/client/c.py b/client/c.py new file mode 100644 index 0000000..7b7a3d6 --- /dev/null +++ b/client/c.py @@ -0,0 +1,108 @@ +# -*- coding: utf-8 -*- +import socket, json, time +import pygame + +# ---------- SOCKETS ---------- + +RESP_BUFFER_LENGTH = 1024 +ip_adress="192.168.1.14" +port=8090 + +LARGEUR_BLOCK = 10 +NB_BLOCKS = 30 +LARGEUR_ECRAN = LARGEUR_BLOCK * NB_BLOCKS + +def connect(): + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + s.connect((ip_adress,port)) + return s + +def sendData(data): + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + s.connect((ip_adress,port)) + s.sendall(data.encode('utf-8')) + s.send('#EOF\n'.encode('utf-8')) + received = s.recv(RESP_BUFFER_LENGTH) + s.close() + return received + +def newGame(): + received = sendData('{"type": "new-game"}') + return json.loads(received) + +def update(gameId = 1, direction = None): + data = { + "type" : "update", + "game-id": gameId, + "direction": direction + } + received = sendData(json.dumps(data)) + return json.loads(received) + +# ---------- END SOCKETS ---------- + +LARGEUR_BLOCK = 20 +NB_BLOCKS = 30 +LARGEUR_ECRAN = LARGEUR_BLOCK * NB_BLOCKS + +pygame.init() +ecran = pygame.display.set_mode((LARGEUR_ECRAN,LARGEUR_ECRAN)) + +snakeSprite = pygame.image.load("snake-sprite.png").convert_alpha() +snakeSprite = pygame.transform.scale(snakeSprite, (LARGEUR_BLOCK, LARGEUR_BLOCK)) + +appleSprite = pygame.image.load("apple-sprite.png").convert_alpha() +appleSprite = pygame.transform.scale(appleSprite, (LARGEUR_BLOCK, LARGEUR_BLOCK)) + +def afficher(ecran, snakeCoords, fruitsCoords): + snake = [] + for coords in snakeCoords: + if coords not in snake: + snake.append(coords) + + pygame.draw.rect(ecran, (255,255,255), (0,0,LARGEUR_ECRAN,LARGEUR_ECRAN)) + for coords in fruitsCoords: + ecran.blit(appleSprite, (coords[0] * LARGEUR_BLOCK, coords[1] * LARGEUR_BLOCK)) + + for coords in snake: + ecran.blit(snakeSprite, (coords[0] * LARGEUR_BLOCK, coords[1] * LARGEUR_BLOCK)) + +def handleControls(event, gameId): + if event.key == pygame.K_LEFT: + return update(gameId, 'left') + elif event.key == pygame.K_RIGHT: + return update(gameId, 'right') + elif event.key == pygame.K_UP: + return update(gameId, 'down') + elif event.key == pygame.K_DOWN: + return update(gameId, 'up') + else: + return None + +def main(): + gameInit = newGame() + gameId = gameInit['ID'] + up = gameInit + + continuer = True + + while continuer: + afficher(ecran, up['SNAKE'], up['FOOD']) + for event in pygame.event.get(): + if event.type == pygame.QUIT: + continuer = False + elif event.type == pygame.KEYDOWN: + updateTmp = handleControls(event, gameId) + print(updateTmp) + if updateTmp != None and 'TYPE' in updateTmp: + if updateTmp['TYPE'] != 'error': + up = updateTmp + time.sleep(0.2) + up = update(gameId) + pygame.display.flip() + + pygame.quit() + + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/client/client.py b/client/client.py index 814dac5..67cece7 100644 --- a/client/client.py +++ b/client/client.py @@ -10,7 +10,7 @@ LARGEUR_BLOCK = 10 NB_BLOCKS = 30 LARGEUR_ECRAN = LARGEUR_BLOCK * NB_BLOCKS -def connect(ip_adress, port): +def connect(): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((ip_adress,port)) return s @@ -37,6 +37,7 @@ def update(gameId = 1, direction = None): received = sendData(json.dumps(data)) return json.loads(received) +""" def draw(up): snake = [] for coords in up['SNAKE']: @@ -52,41 +53,13 @@ def draw(up): else: s = s + ' ' - -import pygame - -pygame.init() -screen = pygame.display.set_mode((400, 300)) -done = False - def main(): #s = connect('192.168.1.14', 8090) gameInit = newGame() up = update(gameInit['ID']) - """ while True: direction = raw_input() up = update(gameInit['ID'], direction) - draw(up)""" - - continuer = True - pygame.init() - ecran = pygame.display.set_mode((LARGEUR_ECRAN,LARGEUR_ECRAN)) - - - while continuer: - snakeSprite = pygame.image.load("snake-sprite.png") - snakeSprite = snakeSprite.convert_alpha() - pygame.draw.rect(ecran, (0,0,90), (0,0,LARGEUR_ECRAN,LARGEUR_ECRAN)) - ecran.blit(snakeSprite, (-50,0)) - for event in pygame.event.get(): - if event.type == pygame.KEYDOWN: - continuer = False - pygame.display.flip() - - pygame.quit() - - -if __name__ == '__main__': - main() \ No newline at end of file + draw(up) +"""