У меня возникли проблемы с работой над игровым проектом, когда вы пытаетесь создать приглашение пользователя при запуске новой игры и создании нового пользователя, если введенное имя пользователя еще не было exit, иначе добавьте статистику, если имя пользователя уже существует. Те статистики, которые выигрывают, проигрывают, рисуют, которые добавляются к статистике пользователей.Создание статистики пользователя и добавления
Таким образом, я мог только подумать о двух вариантах: сначала создайте словарь с именем пользователя в качестве ключа и вложенным списком для своих значений статусов, или иначе создайте класс с функцией имени пользователя и функциями для каждый список, такой как список побед, список потерь и т. д.
Любая помощь или идеи были бы высоко оценены!
28 января Edit:
По желанию для кода, я выложу сегменты, что у меня есть и то, что я ищу, чтобы достичь ...
Часть 1 - Имя пользователя Создание:
while True:
playerinput = input("Please type a number correlating with your menu choice, or 4 to return to main menu: ")
if playerinput == "1":
game_range = range(1, 10)
play_the_game(playerinput, game_range)
elif playerinput == "2":
game_range = range(1, 26)
play_the_game(playerinput, game_range)
elif playerinput == "3":
game_range = range(1, 28)
play_the_game(playerinput, game_range)
elif playerinput == "4":
exec(open("menuitems.py").read(), globals())
else:
print("Unknown input: ", playerinput, ", please try again")
На этом этапе запуска новой игры (я оставил элементы меню, чтобы сократить размер кода здесь), выбрав параметр меню, я хочу, чтобы он попросил пользователя ввести имя пользователя в этот момент, и либо создайте нового пользователя, если он еще не существует, либо добавьте его к st ATS.
Часть 2 - Статистика по пользователям (это большая часть кода):
def play_the_game(playerinput, game_range):
while True:
board = [" "] * (max(game_range) + 1)
plays = []
player_icon, computer_icon = player_choice()
turn = who_goes_first()
print(turn + " will get the first turn of the game")
game_in_play = True
while game_in_play:
if turn == "player":
print_the_board(board, playerinput)
print("""
Computer: Choose your move carefully, human
""")
print("Enter your move between ", min(game_range), "-", max(game_range), ", ", min(game_range),
" for top left, ", max(game_range), " for bottom right")
player_move = input("Enter your move: ")
if player_move == "e":
break
if player_move == "u":
if len(plays) == 0:
print("No more moves left to undo - you cheated your way back to the beginning!")
continue
print("I shouldn't be letting you do this - it really feels like cheating...")
player_move = plays.pop()
board[player_move] = " "
player_move = plays.pop()
board[player_move] = " "
continue
if not player_move.isdigit():
AI_insults()
continue
if int(player_move) not in game_range or not free_space_on_board(board, int(player_move)):
AI_insults()
continue
make_a_move(board, player_icon, int(player_move))
plays.append(int(player_move))
if win_condition(board, player_icon, playerinput):
print_the_board(board, playerinput)
print("Congrats! You beat that pesky computer!")
game_in_play = False
else:
if draw_condition(board, game_range):
print_the_board(board, playerinput)
print("It's a draw!")
break
else:
turn = "Computer"
else:
move = computer_move(board, computer_icon, playerinput, game_range)
plays.append(move)
make_a_move(board, computer_icon, move)
if win_condition(board, computer_icon, playerinput):
print_the_board(board, playerinput)
AI_endgame_brag()
game_in_play = False
else:
if draw_condition(board, game_range):
print_the_board(board, playerinput)
print("It's a draw!")
break
else:
turn = "player"
if not end_game():
break
Я оставил целую много функций, используемых в этом коде, чтобы снова попытаться держать этот маленький, но то, что я хочу выполнить так, чтобы «win_condition» для игрока выполнялся, затем он добавляет +1 к статистике выигрышей пользователей, если «draw_condition», затем +1, чтобы нарисовать статистику, и если компьютер победит, то +1 к убытку ,
У меня есть другой раздел кода меню, в котором игрок может выбрать статистику пользователей, где я хочу напечатать имя пользователя, их выигрыши, потери и розыгрыши.
До сих пор я думаю, словарь будет лучшим вариантом с, если это имя пользователя существует в словаре - использовать этот ключ и добавить его значений, иначе создать новый ключ и т.д ...
Пожалуйста, покажите нам свой код, что вы пробовали, какие входные данные, какие выходы, какие ожидаемые выходы. –