From fad14b6c8d125735a118e41e213e20c33ca2726f Mon Sep 17 00:00:00 2001 From: Daniil Date: Wed, 8 May 2019 00:04:16 +0500 Subject: [PATCH] release v1.0 --- README.md | 10 ++++++++-- typetrainer/multiplayer_menu.py | 4 +++- typetrainer/settings.ini | 2 +- typetrainer/socket_client.py | 30 ++++++++++++++---------------- 4 files changed, 26 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index bd84006..e1897ee 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # Typing Trainer Game -Версия: 0.99.9 бета +Версия: 1.0 Автор: Даниил JazzMutant Толстоухов (d-a-ny4@ya.ru) ## Описание @@ -28,4 +28,10 @@ Для игры по сети необходимо создать комнату с необходимыми настройками, дождаться подключения других игроков и запустить игру. После завершения раунда всем игрокам приходит таблица результатов. ## Подробности реализации -Ахаххаха, я только пьяному смогу объяснить как это работает, ибо пока писал, я совершенствовался и понимал, что предыдущий код -- полная лажа. Тестов нет, но будут (я постараюсь). Да и надо бы прибраться в коде, хоть немного +Все модули игры находятся в папке `typetrainer`. Модуль `game` отвечает за проведение раунда, то есть взаимодействия с пользователем. Модули `*_menu` реализуют визуализацию и интерфейс. `socket_client` содержит в себе инструментарий для сетевой игры. +Класс `Game` формирует статистику или же количество очков, в зависимости от режима игры. +Тексты формируются классом `TextGenerator` + +Тесты пожно найти в папке `tests` +`typetrainer\game.py 95 18 81%` +`typetrainer\texts_generator.py 34 6 82%` diff --git a/typetrainer/multiplayer_menu.py b/typetrainer/multiplayer_menu.py index c7eced1..4af9ce6 100644 --- a/typetrainer/multiplayer_menu.py +++ b/typetrainer/multiplayer_menu.py @@ -56,7 +56,8 @@ def create_room(): socket_client.room_create(room_name, password, menu.get_user_name(False), int(max_players), game_type, text_number) - time.sleep(0.5) + while socket_client.current_room_TOKEN == '': + time.sleep(0.5) lobby(True) @@ -145,5 +146,6 @@ def browse_rooms(): time.sleep(1) while WAITING_FOR_RESPONSE: time.sleep(0.2) + print('hui') if CONNECTION: lobby(False) diff --git a/typetrainer/settings.ini b/typetrainer/settings.ini index e32ef7a..57f07d7 100644 --- a/typetrainer/settings.ini +++ b/typetrainer/settings.ini @@ -1,5 +1,5 @@ [GENERAL] -VERSION = 0.99.9 beta +VERSION = 1.0 INPUT_ENCODING = cp866 FILE_ENCODING = utf-8 diff --git a/typetrainer/socket_client.py b/typetrainer/socket_client.py index 4d52698..9d34592 100644 --- a/typetrainer/socket_client.py +++ b/typetrainer/socket_client.py @@ -14,8 +14,7 @@ CURRENT_ROOM_NAME = '' CURRENT_GAME_TYPE = '' CURRENT_TEXT_NUMBER = 1 - - +ROOMS_SHOWED = False LOADED = False @@ -90,24 +89,25 @@ def get_rooms(data): counter = 1 for room in Rooms: print('%s. %-10s %-8s' % (counter, room['name'], room['players'])) - # TODO check counter += 1 if counter > 1: room_number = input('Choose a room to connect: ') try: int(room_number) except ValueError: + multiplayer_menu.WAITING_FOR_RESPONSE = False return if int(room_number) >= counter: print('Incorrect room') time.sleep(0.5) multiplayer_menu.WAITING_FOR_RESPONSE = False - # TODO Check multiplayer return password = input('Password: ') room_join(int(room_number) - 1, password, menu.get_user_name(False)) - time.sleep(0.8) + time.sleep(0.8) multiplayer_menu.WAITING_FOR_RESPONSE = False + global ROOMS_SHOWED + ROOMS_SHOWED = True @sio.on("joined") @@ -159,7 +159,6 @@ def started(data): """ if not data['err']: if data['room'] == current_room_TOKEN: - # print("Start") multiplayer_menu.GAME_START = True elif data['err'] == 406: print("Room already started") @@ -208,8 +207,9 @@ def end_game(data): player['username'], player['score'])) else: - print(f'{counter}. {player["username"]} {player["score"]}') - # TODO Check and remove f-strings + print('%s. %-16s %-8s' % (counter, + player['username'], + player['score'])) counter += 1 elif data['err'] == 401: print("You need to join") @@ -230,17 +230,13 @@ def get_players(data): counter = 0 for player in data['players']: if counter == 0: - # print('%s. %-16s L' % (counter, player)) - print(str(counter) + '. ' + player + ' L') + print(str(counter) + '. ' + player + ' L') else: - # print('%s. %-16s' % player) - print(str(counter) + '. ' + player) - # TODO Check + print(str(counter) + '. ' + player) counter += 1 elif data['err'] == 401: print("You need to join") print('Press any key to return') - # TODO formatted output def room_create(room_name: str, password: str, user_name: str, @@ -267,9 +263,11 @@ def room_list(): :return: Ответ приходит в get_rooms() """ + global ROOMS_SHOWED + ROOMS_SHOWED = False sio.emit("rooms") - # time.sleep(1) - # multiplayer_menu.WAITING_FOR_RESPONSE = False + while not ROOMS_SHOWED: + time.sleep(0.3) def room_join(index: int, password: str, username: str):