Create server, and remove backup feature

DONE TODO01
DONE TODO02
This commit is contained in:
Fred Z 2018-03-06 23:10:37 +01:00
parent f903089686
commit 315e7f9537
3 changed files with 94 additions and 12 deletions

View File

@ -8,11 +8,6 @@ Ce fichier fait partie du projet `roboc`
"""
# CONFIGURATION
# fichier de sauvegarde
BACKUP_FILE = '.backup'
# Commandes de refus/acceptation
MSG_NO_YES = ['non', 'oui']
# Commandes
# Le code utilise l'index des listes `COMMANDS` & `COMMANDS_LABEL`
# pour faire le lien entre les 2.
@ -21,7 +16,7 @@ MSG_NO_YES = ['non', 'oui']
# leur correspondant dans la condition de traitement du mouvement.
COMMANDS = ['Q', 'H']
# Libelle des commandes d'interuption, conserver l'ordre
COMMANDS_LABEL = ['Sauvegarder & quitter', 'Aide']
COMMANDS_LABEL = ['Quitter', 'Aide']
# Commandes clavier de deplacement
DIRECTIONS = ['N', 'S', 'E', 'O']
# Étiquette des commandes clavier des de deplacements pour l'affichage
@ -63,20 +58,17 @@ ERR_UNKNOW = ERR_ + "personne n'est censé arriver ici…"
MIN_MAP_SIDE = 3
MSG_DISCLAMER = "Bienvenue dans Roboc."
MSG_AVAIBLE_BACKUP = "Sauvegarde dispo, voulez-vous la charger? ({}/{}) "
MSG_AVAIBLE_MAP = "Cartes disponible: "
MSG_BACKUP_DONE = "La partie a été sauvegardée."
MSG_BACKUP_GAME = "Partie sauvegardé chargée"
MSG_CHOOSE_MAP = "Choississez un numéro de carte: "
MSG_CHOOSE_MOVE = "Votre deplacement ({}:{}): "
MSG_START_GAME = "Votre partie commence"
MSG_END_GAME = "Fin du jeu."
MSG_QUIT_GAME = "Vous quittez la partie"
# Recapitulatif des commandes
MSG_HELP = "Voici les commandes disponibles:\n"
MSG_SELECTED_MAP = "Vous avez fait le choix #{}, la carte «{}»."
MAPS_NAME_LIST = list() # liste des maps proposees a l'utilisateur
USER_SELECT_BACKUP = str() # choix utilisateur: la sauvegarde
# FONCTIONS

90
roboc/robocserver.py Normal file
View File

@ -0,0 +1,90 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Author: freezed <freezed@users.noreply.github.com> 2018-02-06
Version: 0.2
Licence: `GNU GPL v3` GNU GPL v3: http://www.gnu.org/licenses/
roboc
=====
A multiplayer maze game over network
This is the server script, see readme.md for more details
"""
import os
from configuration import choose_maps_menu, cls, COMMANDS, \
COMMANDS_LABEL, DIRECTIONS, DIRECTIONS_LABEL, get_msg_list, \
MAP_DIRECTORY, MAP_EXTENTION, MAPS_NAME_LIST, MOVE_STATUS, \
MOVE_STATUS_MSG, MSG_CHOOSE_MOVE, MSG_DISCLAMER, MSG_END_GAME, \
MSG_HELP, MSG_QUIT_GAME
# DEBUT DU JEU
# Recuperation de la liste des cartes
try:
MAPS_AVAIBLE = os.listdir(MAP_DIRECTORY)
except FileNotFoundError as except_detail:
print("FileNotFoundError: «{}»".format(except_detail))
else:
for map_file in MAPS_AVAIBLE:
filename_len = len(map_file) - len(MAP_EXTENTION)
# garde les fichiers avec la bonne extention
if map_file[filename_len:] == MAP_EXTENTION:
MAPS_NAME_LIST.append(map_file[: filename_len])
# Affichage du debut de partie
cls() # vide l'ecran de la console
print(MSG_DISCLAMER)
CURRENT_MAP = choose_maps_menu()
# DEBUT DE BOUCLE DE TOUR DE JEU
# Affichage de la carte tant que status == True
while CURRENT_MAP.status:
# Affiche la carte et le message
CURRENT_MAP.map_print()
print(CURRENT_MAP.status_message)
# Demande a l'utilisateur son choix du deplacement
user_move = input(MSG_CHOOSE_MOVE.format(
COMMANDS[1], COMMANDS_LABEL[1])
).upper()
cls() # vide l'ecran de la console
# Traitement de la commande utilisateur
if user_move == COMMANDS[0]: # quitter
CURRENT_MAP.status = False
CURRENT_MAP.status_message = MSG_QUIT_GAME
elif user_move == COMMANDS[1]: # Affiche l'aide
CURRENT_MAP.status_message = MSG_HELP
# liste les directions
CURRENT_MAP.status_message += get_msg_list(
DIRECTIONS, DIRECTIONS_LABEL
)
# liste les commandes
CURRENT_MAP.status_message += get_msg_list(COMMANDS, COMMANDS_LABEL)
else: # Traitement du deplacement
status = CURRENT_MAP.move_to(user_move)
message = MOVE_STATUS_MSG[MOVE_STATUS[status]].format(user_move)
CURRENT_MAP.status_message = message
# La sortie est atteinte, fin de la boucle
if MOVE_STATUS[status] == 'exit':
CURRENT_MAP.status = False
# fin de la boucle de tour
if CURRENT_MAP.status is False:
print(CURRENT_MAP.status_message)
# Fin de partie
print(MSG_END_GAME)
CURRENT_MAP.map_print()

View File

@ -2,8 +2,8 @@
## Roadmap to v0.2 [exercice 4](https://openclassrooms.com/courses/apprenez-a-programmer-en-python/exercises/181)
- [] remove the backup feature TODO01
- [] conversion to client/server mode: server creation TODO02
- [x] ~~remove the backup feature TODO01~~
- [x] ~~conversion to client/server mode: server creation TODO02~~
- [] conversion to client/server mode: client creation TODO03
- [] multiplayer turn-by-turn TODO04
- [] each player has a differant robot TODO05