Как добавить систему рекордов в мою игру про черепах? - PullRequest
0 голосов
/ 10 июня 2018

Я все еще довольно новичок в Python, но я работаю над игрой с использованием черепахи, где вам нужно щелкнуть несколько кругов в течение определенного периода времени, чтобы набрать очки.Я хочу создать систему рекордов, в которой люди также могут определять свои имена пользователей, но везде, где я работаю с Google, это слишком сложно для меня, поэтому я понятия не имею, как внедрить это в свой код.

import turtle
from random import random, randint
import time

CURSOR_SIZE = 20
score=0

while True:
    diffSetting=int(input("Set the difficulty(1-5,1 being easiest and 5 being hardest): "))
    if diffSetting == 1:
        difficulty = 5
        break
    elif diffSetting == 2:
        difficulty = 8
        break
    elif diffSetting == 3:
        difficulty = 12
        break
    elif diffSetting == 4:
        difficulty = 16
        break
    elif diffSetting == 5:
        difficulty = 20
        break
    else:
        print("Please choose a difficulty setting between 1 to 5.")


def addscore():
    global score
    score += 1

def my_circle(color):

    if diffSetting==1:
        radius = (50)
    elif diffSetting==2:
        radius = (40)
    elif diffSetting==3:
        radius = (30)
    elif diffSetting==4:
        radius = (20)
    elif diffSetting==5:
        radius = (10)


    circle = turtle.Turtle('circle', visible=False)
    circle.shapesize(radius / CURSOR_SIZE)
    circle.color(color)
    circle.penup()

    while True:
        nx = randint(2 * radius - width // 2, width // 2 - radius * 2)
        ny = randint(2 * radius - height // 2, height // 2 - radius * 2)

        circle.goto(nx, ny)

        for other_radius, other_circle in circles:
            if circle.distance(other_circle) < 2 * max(radius, other_radius):
                break
        else:
            break

    circle.showturtle()
    circle.onclick(lambda x,y,t=circle: (circle.hideturtle(), addscore()))


    return radius, circle



screen = turtle.Screen()
screen.bgcolor("lightgreen")
screen.title("Speed Clicker")

width, height = screen.window_width(), screen.window_height()

circles = []

gameLength = 30

startTime = time.time()
while True:
    time.sleep(1/difficulty)

    rgb = (random(), random(), random())

    timeTaken = time.time() - startTime

    circles.append(my_circle(rgb))
    screen.title('SCORE: {}, TIME LEFT: {}'.format(score,int(round(gameLength - timeTaken,0))))

    if time.time() - startTime > gameLength:
        for turtle in screen.turtles():
            turtle.reset()
        break


screen.title('GG! FINAL SCORE: {}'.format(score))

screen.mainloop()

Я пытался сохранить счет в текстовом файле, но как мне сохранить имена пользователей?

Ответы [ 3 ]

0 голосов
/ 10 июня 2018
  1. Создайте файл в той же папке, что и эта игра.
  2. Откройте файл и сохраните рекорд в качестве переменной в вашей программе на Python.(0, если файл пуст)
  3. Каждый раз, когда текущая оценка превышает максимальную оценку, обновите файл.
0 голосов
/ 10 июня 2018

Я напишу небольшой фрагмент, дополню его по вашему желанию.

Сначала создайте файл с именем 'Scoreboard.txt' в той же папке, что и ваша игра.Чтобы получить подробности перед началом игры, выполните следующие действия.

f = open('scoreboard.txt', 'r')
name = f.readline()
high_score = int(f.readline())
f.close()

Проверьте, получили ли они рекорд, и получите имя пользователя (new_name):

if current_score > high_score:
    f = open('scoreboard.txt', 'w')
    f.write(new_name + '\n' + str(current_score))
    f.close()

ПРИМЕЧАНИЕ.в первый раз заполните файл случайными данными, такими как «BOB» (нажмите клавишу ввода), «24».

Надеюсь, это поможет!Прокомментируйте, если есть какие-либо сомнения!

0 голосов
/ 10 июня 2018
  1. Вы должны сохранить счет в базе данных или файле, который предпочитаете.
  2. После завершения игры вы должны проверить текущий счет с сохраненным счетом
  3. Есливаш текущий результат меньше, чем ваш сохраненный счет, ничего не делать или перезапустить игруДанные
...