Welcome!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!

Урок по созданию игры "Кликер"

Авг
142
186
Пользователь
Всем привет, сегодня мы с вами сделаем простенькую игру "Кликер", думаю для начинающий будет неплохим уроком.

1. Переменные
В самом начале мы создаем переменные которые будут хранить текущие показатели игры:

Переменные:
coin = 0
reward = 0
upgrader = 10
Coin = 0 - количество монет у игрока (начинаем с нуля).
reward = 1 - награда за один клик
upgrader = 10 — стоимость покупки улучшения.


2. Отображение данных и меню
Теперь нам нужно сделать список и также вывести данные игрока (сколько монет, сколько получит монет за клик). Что бы программа не вылетала после каждого ввода, добавим циал while True: (ВАЖНО: С ЦИКЛОМ while True:, НУЖНО ДЕЛАТЬ ПРОМЕЖУТКИ (Tab), ИНАЧЕ РАБОТАТЬ НЕ БУДЕТ.)

dannie:
while True:
    print(f"Ваши монеты: {int(coin)}")
    print(f"Награда за клик: {int(reward)}")
    
    list = input("\n1. Купить улучшение.\n"
    "2. Выход\n"
    "Выбор: ")
Конструкция f"..." (f-строки) позволяет удобно вставлять значения переменных прямо в текст.

Функция int(...) превращает число в целое.

Функция input(...) выводит меню и ждет, пока пользователь введет какой-то текст и нажмет Enter. Введенный текст сохраняется в переменную list.


3. Логика нажатия Enter (Клик)
click:
if list == "":
        coin += reward
        input(f"Вы получили +{reward} монет.")
Если пользователь ничего не ввел (просто нажал Enter), то list будет пустой строкой ("").

В этом случае к количеству монет (coin) прибавляется текущая награда (reward).


4. Покупка улучшения
upgrade:
if list == "1":
        if coin >= upgrader:
            input(f"Вы успешно купили улучшение за {upgrader} монет.")
            reward += 1
            upgrader *= 1.5
        else:
            input(f"Улучшение стоит {upgrader} монет, копите.")

Если пользователь ввел 1, проверяется условие: if coin >= upgrader (хватает ли монет на покупку?).

Если монет достаточно:
Награда за клик увеличивается на единицу (reward += 1).

Стоимость следующего улучшения увеличивается в 1.5 раза (upgrader *= 1.5), чтобы игра со временем становилась сложнее.


Если монет не хватает: программа сообщает об этом и просит покопить еще.

7. Выход из игры

Выход:
if list == "2":
        exit()
Если пользователь ввел 2, срабатывает функция exit(), которая полностью закрывает программу.

Надеюсь вам было понятно, если вдруг есть вопросы, пишите в эту тему, я отвечу на них. Спасибо за внимание.

Вот целый код игры:
clicker:
coin = 0
reward = 1
upgrader = 10

while True:
    print(f"Ваши монеты: {int(coin)}")
    print(f"Награда за клик: {int(reward)}")
    
    list = input("\n1. Купить улучшение.\n"
    "2. Выход\n"
    "Выбор: ")
    
    if list == "":
        coin += reward
        input(f"Вы получили +{reward} монет.")
        
    if list == "1":
        if coin >= upgrader:
            input(f"Вы успешно купили улучшение за {upgrader} монет.")
            reward += 1
            upgrader *= 1.5
        else:
            input(f"Улучшение стоит {upgrader} монет, копите.")   
            
    if list == "2":
        exit()
 
𝚖𝚘𝚛𝚜 𝚌𝚎𝚛𝚝𝚊, 𝚑𝚘𝚛𝚊 𝚒𝚗𝚌𝚎𝚛𝚝𝚊.
Янв
1,773
4,147
Команда форума
Администратор
в целом, для начинающих неплохой урок, но есть парочка вопросов к реализации

во-первых, а почему у нас улучшения бесплатные?
ты проверяешь наличие монет через if coin >= upgrader, увеличиваешь награду и стоимость следующего улучшения, но сами монеты при покупке никуда не списываются. Про coin -= upgrader забыли?

во вторых, зачем использовать list в качестве названия переменной? это ж встроенный тип python. Можно было спокойно назвать choice, например

в третьих, upgrader *=1.5 превращает стоимость улучшения в дробное число. Не критично, конечно, но для кликера с целочисленной валютой выглядит странновато.

ну и отдельно повеселило, что для одного клика нужно два раза нажимать enter, поскольку после начисления монет вызывается еще один input(). Кстати, в начале урока reward = 0, а в итоговом коде уже reward = 1.

Учитывая, что урок ориентирован на новичков, я бы все таки рекомендовал внимательнее проверять код перед публикацией. Все таки люди будут не просто читать материал, но и пытаться разобраться в том, как он работает. А так, за инициативу спасибо !
 
Авг
142
186
Пользователь
в целом, для начинающих неплохой урок, но есть парочка вопросов к реализации

во-первых, а почему у нас улучшения бесплатные?
ты проверяешь наличие монет через if coin >= upgrader, увеличиваешь награду и стоимость следующего улучшения, но сами монеты при покупке никуда не списываются. Про coin -= upgrader забыли?

во вторых, зачем использовать list в качестве названия переменной? это ж встроенный тип python. Можно было спокойно назвать choice, например

в третьих, upgrader *=1.5 превращает стоимость улучшения в дробное число. Не критично, конечно, но для кликера с целочисленной валютой выглядит странновато.

ну и отдельно повеселило, что для одного клика нужно два раза нажимать enter, поскольку после начисления монет вызывается еще один input(). Кстати, в начале урока reward = 0, а в итоговом коде уже reward = 1.

Учитывая, что урок ориентирован на новичков, я бы все таки рекомендовал внимательнее проверять код перед публикацией. Все таки люди будут не просто читать материал, но и пытаться разобраться в том, как он работает. А так, за инициативу спасибо !
судя по всему когда я копировал код, я каким-то чудом изменил число в переменной, спасибо за поправки, странно что я кликеры часто делаю, без ошибок, но в этом уроке все через жопу пошло
 
Сверху