ar
Feedback
Python / Pygame

Python / Pygame

الذهاب إلى القناة على Telegram

>>> Инфо: ОБЩИЙ БОТ: @RockyGidraBOT ToS бота: @RockyToSbot Второй канал: @StudioRocky Инфо про меня: @LeafRocky Арты с Рокки: @RockyArtsLEAF Цитаты по RainWorld: @RalnW0rld _______ >>> Вп и Вз: Вп 50+ До завтра Вз 0+ _______ >>> Ваш Рокки: @Rocky_Leaf

إظهار المزيد
14
المشتركون
لا توجد بيانات24 ساعات
-2017 أيام
-21430 أيام
أرشيف المشاركات
🔠🔠🔠🔠 🎁Сегодня я выпущу два своих ролевых нейробота! Соник и Муфаса! С ними можно общаться и создавать свои истории!🎁 🐾
+1
🔠🔠🔠🔠 🎁Сегодня я выпущу два своих ролевых нейробота! Соник и Муфаса! С ними можно общаться и создавать свои истории!🎁 🐾Соник: @SonicPyhtonPygame_bot 🩶🩶🩶 🐾Муфаса: @MufasaPythonPygame_bot 😎 Теперь они будут работать 🤍🤍🤍🤍🤍
🦔Галерея ботов🦊

🤍🤍🤍🤍🤍🤍 🔠🔠🔠🔠🔠🔠🔠🔠 🔠🔠🔠🔠 ➿Чтобы работали все игры на Pygame - там должен быть основный цикл while. Кстати, я изменила пост, который выше, там прям все переменные. В общем, сразу после переменных, в этом цикле мы отображаем яблоко и змейку, а также окошко с счетом очков➿
while True:
    clock.tick(fps)  # Задаем задержку для fps
    sc.blit(img, (0, 0))
    #Отображаем змейку и яблоко
    [(pygame.draw.rect(sc, pygame.Color('green'), (i, j, SIZE - 2, SIZE - 2))) for i, j in snake] #Отображаем голову и цвет змейки
    pygame.draw.rect(sc, pygame.Color('red'), (*apple, SIZE, SIZE)) #Отображаем цвет яблока и само яблоко

    #Отображение окна с счетом очков
    render_score = font_score.render(f'SCORE: {score}', 1, pygame.Color('orange')) #Задаем цвет окошка с очками
    sc.blit(render_score, (5, 5)) #Отображаем
🖤🖤🖤🖤🖤🖤🖤🖤 #Python #Pygame #ЗмейкаОсновнойЦикл@PythonPygame 🤩🤩🤩🤩🤩

🤍🤍🤍🤍🤍🤍 🌟Начинаем делать игру змейку! Правда, я передумала, и теперь будем делать змейку не на Pyxel, а на Pygame, простите) Не бойтесь, там тоже прикольная змейка получится))) Начнем с добавления переменных🌟
import pygame
from random import randrange #Импортируем рандом, для хаотичного появления яблока

RES = 800
SIZE = 50

x, y = randrange(0, RES, SIZE), randrange(0, RES, SIZE) #Настраиваем рандомное появление змейки
apple = randrange(0, RES, SIZE), randrange(0, RES, SIZE) #Настраиваем рандомное появление яблока
dirs = {'W': True, 'S': True, 'A': True,'D': True} #Переменная, чтобы нельзя было змейке проходить через себя
length = 1 #Длина змейки изначально
snake = [(x, y)]
dx, dy = 0, 0 #Настраиваем направление движения
score = 0 #Начальный отсчет очков
fps = 5 #Отвечает за скорость змейки

pygame.init()
sc = pygame.display.set_mode([RES, RES])
pygame.display.set_caption("Snake")
icon = pygame.image.load('hawkfrost.png')

clock = pygame.time.Clock()  # инициализировать часы перед основным циклом
font_score = pygame.font.SysFont('Arial', 26, bold=True) #Настраиваем окошко для счета очков
font_end = pygame.font.SysFont('Arial', 66, bold=True) #Настраиваем текст Game Over для проигрыша
img = pygame.image.load('green_snake.jpg').convert()
img = pygame.transform.scale(img, (800, 800))
🤍🤍🤍🤍🤍🤍🤍🤍 #Python #Pygame #ЗмейкаПодготовка@PythonPygame 🤩🤩🤩🤩🤩

🤩🤩🤩🤩🤩🤩 🫨Сегодня мы рассмотрим вот такую странную ошибку: TypeError: descriptor 'tick' for 'pygame.time.Clock' objects doesn't apply to a 'int' object. Она есть не у всех, но у меня возникла, поэтому мы ее разберем. Пример кода, который у вас может быть:
import pygame
from pygame.locals import QUIT

pygame.init()
DISPLAYSURF = pygame.display.set_mode((400, 300))
pygame.display.set_caption('Warrior Pre-1.0')
pos = 0
while True:
    DISPLAYSURF.fill("red")
    #pygame.draw.rect(rect())
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
    pygame.display.update()
    pygame.time.Clock.tick(40) #Здесь может быть ошибка
🦊Почему так? Метод tick() предназначен для работы с объектами класса pygame.time.Clock и не может быть вызван на объекте типа int. 🔥Решение: Одно из решений, это вызывать метод tick() на этом экземпляре. Например:
clock = pygame.time.Clock()  # инициализировать часы перед основным циклом  
while True:  
    clock.tick(40)
🦋 Важно! Просто скопируйте этот код и вставьте его вместо тех же трех строчек. Не пытайтесь переписывать его, потому что у вас может не решиться ошибка🤩 ❤️❤️❤️❤️❤️❤️❤️❤️ #Python #Pygame #ОшибкаЧасовFps@PythonPygame 🤩🤩🤩🤩🤩

🔠🔠🔠🔠🔠 🔠🔠🔠🔠🔠🔠🔠🔠🔠🔠 🔠🔠🔠🔠🔠🔠🔠🔠 🪼Легкая тропа по добавлению всяких штук приходит к концу. Потом будет совсем все непонятно, но я буду стараться вам объяснять. Кстати, я решила, что на Pyxel я сделаю игру змейку. А еще скоро я сделаю AI-персонажей для ТГ-ботов. Мне надо решить проблему с хостингами и всё будет готово) Ладно, так, добавляем картинку. Для этого нам понадобится pyxel.image. В нем мы указываем X, Y и путь к файлу💎
import pyxel

class App:
    def __init__(self):
        pyxel.init(160, 120, title='Test')
        pyxel.image(0).load(0,0, "hawkfrost.png") #Добавляем картинку
        pyxel.run(self.update, self.draw)

    def update(self):
        if pyxel.btnp(pyxel.KEY_Q):
            pyxel.quit()

    def draw(self):
        pyxel.cls(0)
        pyxel.text(55, 41, "Test", pyxel.frame_count % 16)
        pyxel.blt(61, 66, 0, 0, 0,38, 16)

App()
💗💗💗💗💗💗💗💗 #Python #Pyxel #КартинкиPyxel@PythonPygame 🤩🤩🤩🤩🤩

🔠🔠🔠🔠🔠 🌺🌺🌺🌺🌺🌺🌺🌺 🌺🌺🌺🌺 🌺Продолжаем идти по простому. Название окна (title) надо писать, когда мы инициализируем pyxel. В нем мы пишем сразу размеры и название нашего окна🌺
 import pyxel

class App:
    def __init__(self):
        pyxel.init(160, 120, title='Test') #Вот здесь добавляем параметр. Он не обязателен
        pyxel.run(self.update, self.draw)

    def update(self):
        if pyxel.btnp(pyxel.KEY_Q):
            pyxel.quit()

    def draw(self):
        pyxel.cls(0)
        pyxel.text(55, 41, "Test", pyxel.frame_count % 16)
        pyxel.blt(61, 66, 0, 0, 0,38, 16)

App()
💜💜💜💜💜💜💜💜 #Python #Pyxel #НазваниеОкна@PythonPygame 🤩🤩🤩🤩🤩

🔠🔠🔠🔠🔠 🔠🔠🔠🔠🔠🔠🔠🔠🔠🔠 🔠🔠🔠🔠🔠🔠 🍵Чтобы добавить текст, можно использовать pyxel.text. В нем должны быть обязательные четыре аргумента: x, y, 'Сам текст', col. Col - расшифровывается как Color (цвет)🍵
import pyxel

class App:
    def __init__(self):
        pyxel.init(160, 120)
        pyxel.run(self.update, self.draw)

    def update(self):
        if pyxel.btnp(pyxel.KEY_Q):
            pyxel.quit()

    def draw(self):
        pyxel.cls(0)
        pyxel.text(55, 41, "Test", pyxel.frame_count % 16) #Добавляем текст. Первый параметр это X, а второй Y.  Дальше пишите, какой у вас текст, и в последнем параметре вы можете поставить на сколько часто будет меняться цвет текста. Чем меньше -  тем быстрее.
        pyxel.blt(61, 66, 0, 0, 0,38, 16)

App()
💦💦💦💦💦💦💦💦 #Python #Pyxel #ТекстPyxel@PythonPygame 🤩🤩🤩🤩🤩

https://t.me/StudioRocky 🖱 😀Это мой второй канал, но уже по творчеству. Кому не сложно, подпишитесь, пожалуйста?) Я там перевожу комиксы про Соника😎

🔠🔠🔠🔠🔠 🌟Для создания игр в стиле ретро, я нашла такую библиотеку: Pyxel. Чтобы её использовать, надо забить в терминал pip install pyxel. Я просто хочу попробовать эту библиотеку, чтобы сделать маленькую игрушку по типу "змейки", а заодно делюсь с вами кодом) Чуть ниже я покажу как сделать окно🌟
import pyxel #Импортируем Pyxel

#Создаем класс, который будет всё запускать
class App:
    def __init__(self):
        pyxel.init(160, 120)
        pyxel.run(self.update, self.draw) #Говорим, что должен обрабатывать pyxel.run

    def update(self): #Делаем обработку закрытия окна
        if pyxel.btnp(pyxel.KEY_Q):
            pyxel.quit()

    def draw(self): #В будущем сюда можно будет загрузить картинку
        pyxel.cls(0)
        pyxel.blt(61, 66, 0, 0, 0,38, 16)

App() #Запускаем класс App
🌿🌿🌿💚🌿🌿💚🌿 #Python #Pyxel #СозданиеОкна@PythonPygame 🤩🤩🤩🤩🤩

🔠🔠🔠🔠🔠🔠 🤩Делаешь бота на Python через библиотеку telebot(pyTelegramBotAPI) и используешь хостинг PythonAnyWhere? При об
🔠🔠🔠🔠🔠🔠 🤩Делаешь бота на Python через библиотеку telebot(pyTelegramBotAPI) и используешь хостинг PythonAnyWhere? При обычной загрузки кода в консоль Dash через время может возникнуть ошибка ProxyError: HTTPSConnectionPool(host='api.telegram.org', port=443): Max retries exceeded with url:/bot (сама ошибка на фото). Как это исправить?🤩 🍃1 шаг В файле вашего кода (в файлах PythonAnyWhere) перед строчкой bot.polling(none_stop=True) добавить параметр timeout в метод infinity_polling. Это поможет избежать зависания при проблемах с сетью:
import telebot

bot = telebot.TeleBot('ВАШ ТОКЕН ВАШЕГО БОТА')

@bot.message_handler(commands=['start'])
def maineng(message):
    bot.send_message(message.chat.id, 'Привет')

bot.infinity_polling(timeout=10) #Здесь добавляем строчку
bot.polling(none_stop=True)
🍃2 шаг Следом можно обновить библиотеку pyTelegramBotAPI командой pip install --upgrade pyTelegramBotAPI в консоли Dash.
11:30 ~/bot $ pip install --upgrade pyTelegramBotAPI
🍃Почему так? Это может быть из-за отправления слишком большого количества запросов за короткий период времени. В таком случае можно попробовать использовать функцию infinity_polling() для получения новых данных с серверов Telegram вместо polling(). Но сначала проверьте, правильно ли написан токен вашего бота и есть ли интернет. 🤩🤩🤩🤩🤩🤩 #Python #BotTelegram #ProxyОшибка@PythonPygame 🤩🤩🤩🤩🤩

💚💚💚💚💚 💚💚💚💚 💚💚 💚💚💚💚💚💚💚 💚💚💚💚💚 🪷Чтобы тг-бот отвечал на ваше слово (это может понадобится, когда бот требует для выполнения какого-то задания правильное написание слова), надо воспользоваться @bot.message_handler, но внутри скобок ничего писать не надо💚
import telebot

bot = telebot.TeleBot('ВАШ ТОКЕН ВАШЕГО БОТА')

@bot.message_handler()
def hello(message):
    if message.text.lower() == 'привет': #Регистр не важен. Единственное, здесь нужно написать только одно слово. Если будет предложение, то Python не обработает его.
        bot.send_message(message.chat.id, 'Приветик!') #Что выдаcт бот на ваше 'привет'

bot.polling(none_stop=True)
🤩🤩🤩🤩🤩🤩🤩 #Python #BotTelegram #ОбработкаСлова@PythonPygame 🤩🤩🤩🤩🤩

🔠🔠🔠🔠🔠🔠 🔠🔠🔠🔠🔠🔠 ❤️Если есть Соник, значит будет и Эггман. Пока есть время создам еще одного бота. Он тоже работает
🔠🔠🔠🔠🔠🔠 🔠🔠🔠🔠🔠🔠 ❤️Если есть Соник, значит будет и Эггман. Пока есть время создам еще одного бота. Он тоже работает только до 21.06.2025. Поэтому успейте поролить)❤️ 🐾Эггман: @EggmanPythonPygame_bot СРОК КОНЧИЛСЯ ➖➖➖➖➖➖➖➖➖ ➖🐾@PythonPygame ➖➖➖➖➖➖➖➖➖

2️⃣ 🖋🖋🖋🖋🖋❇️🖋 🖋🖋🟠🖋🖋🖋🖋❗️ ❕Спешу вас обрадовать, у нас появились два ролевых тг-бота! Первый - Сараби из мультфильм
+1
2️⃣ 🖋🖋🖋🖋🖋❇️🖋 🖋🖋🟠🖋🖋🖋🖋❗️ ❕Спешу вас обрадовать, у нас появились два ролевых тг-бота! Первый - Сараби из мультфильма "Король Лев", а второй бот - Соник✨ ✈️Боты: 🐾Соник: @SonicPyhtonPygame_bot 🐾Сараби: @LightBreezepelt_bot ❗️ВНИМАНИЕ❗️ ⚡️Боты работают до 21.06.2025⚡️ СРОК КОНЧИЛСЯ 🤩🤩🤩🤩🤩🤩 ➖➖➖➖➖➖➖➖➖ ➖✈️@PythonPygame ➖➖➖➖➖➖➖➖➖

🔠🔠🔠🔠🔠🔠 🔠Чуть-чуть об ошибках. Она не такая важная или сложная, но просто приведу пример ошибки, если делать кнопки в тг-боте: Bad Request: can't parse inline keyboard button: Text buttons are unallowed in the inline keyboard . Эта ошибка значит, что вы пытаетесь сделать кнопки в тг-боте без второго параметра🔠 🔠Сама ошибка в этом коде (Внимание, это отрывок кода!)
#До этого кода были еще строки!!!

def start_markup():
    markup = types.ReplyKeyboardMarkup(row_width=2, resize_keyboard=True)
    btn1 = types.InlineKeyboardButton('Текст') #Python выдаст ошибку
    markup.add(btn1)
    return markup
🔠Правильный вариант:
#До этого кода были еще строки!!!

def start_markup():
    markup = types.ReplyKeyboardMarkup(row_width=2, resize_keyboard=True)
    btn1 = types.InlineKeyboardButton('Текст', callback_data='yes') #Теперь все обработается корректно
    markup.add(btn1)
    return markup
🔠Почему так? Ответ: callback_data нужна для передачи дополнительной информации между ботом и пользователем, поэтому ее необходимо добавлять во 2-ой параметр кнопки. 🤩🤩🤩🤩🤩🤩🤩 #Python #BotTelegram #CallbackData@PythonPygame 🤩🤩🤩🤩🤩

⚪️⚪️⚫️⚪️ ⚪️⚫️⚪️⚫️⚪️⚪️ ⚫️ ⚪️⚪️⚫️⚪️⚪️⚪️⚪️ ✨Сразу после обычных кнопок давайте сделаем меню кнопок. Меню кнопок - это когда под самим сообщением ничего нет, а появляется свое меню. Оно, как мне кажется, более удобное. В коде надо просто поменять types.InlineKeyboardMarkup на ReplyKeyboardMarkup(row_width=2, resize_keyboard=True)
import telebot
from telebot import types

bot = telebot.TeleBot('ВАШ ТОКЕН ВАШЕГО БОТА')

@bot.message_handler(commands=['start'])
def maineng(message):
    bot.send_message(message.chat.id, 'Привет', reply_markup=start_markup())
def start_markup():
    markup = types.ReplyKeyboardMarkup(row_width=2, resize_keyboard=True) #И здесь меняем параметр
    btn1 = types.InlineKeyboardButton('Словарь', callback_data='0')
    btn2 = types.InlineKeyboardButton("Легкий уровень", callback_data='0')
    btn3 = types.InlineKeyboardButton('Сложный уровень', callback_data='0')
    markup.add(btn1, btn2, btn3)
    return markup

bot.polling(none_stop=True)
🤩🤩🤩🤩🤩🤩🤩 #Python #BotTelegram #МенюКнопок@PythonPygame 🤩🤩🤩🤩🤩

🤎🤎🤎 🤎🤎🤎🤎🤎🤎🤎 🤎🤎🤎🤎🤎🤎 🤎🤎🤎🤎🤎🤎🤎🤎 📌Вновь возьмем библиотеку telebot для тг-бота. Чтобы сделать кнопки, мы должны добавить клавиатуру в наш код. Текст кнопок вы можете менять. В следующем коде мы рассмотрим, как сделать кнопки с коротким текстом сразу под сообщением📌
import telebot
from telebot import types #Импортируем клавиатуру т. е. types

bot = telebot.TeleBot('ВАШ ТОКЕН ВАШЕГО БОТА')

@bot.message_handler(commands=['start'])
def maineng(message):
    bot.send_message(message.chat.id, 'Привет', reply_markup=start_markup()) #Добавляем третий параметр клавиатуры

#Создаем клавиатуру
def start_markup():
    markup = types.InlineKeyboardMarkup() #Создаем переменную markup
    btn1 = types.InlineKeyboardButton('Клик 1', callback_data='yes1') #Создаем кнопки
    btn2 = types.InlineKeyboardButton("Клик 2", callback_data='yes2')
    btn3 = types.InlineKeyboardButton('Клик 3', callback_data='yes3')
    markup.add(btn1, btn2, btn3) #Отображаем кнопки под сообщением
    return markup #Обновляем markup

bot.polling(none_stop=True) #Запускаем бота
🤩🤩🤩🤩🤩🤩🤩 #Python #BotTelegram #КнопкиБота@PythonPygame 🤩🤩🤩🤩🤩

🔠🔠➖🔠🔠🔠 🔠🔠🔠🔠🔠 🔠🔠🔠🔠🔠🔠🔠 🔠В прошлый раз мы связывали тг-бот с кодом Python через библиотеку telebot. Сейчас мы рассмотрим, как это сделать через библиотеку aiogram. Сначала вбиваем в терминал pip install aiogram. Потом пишем код для бота и обработку для команды /start🔠
import aiogram #Импортируем aiogram
import logging
import asyncio
from aiogram import Bot
from aiogram import Dispatcher
from aiogram import types

Bot_token = 'ВАШ ТОКЕН ВАШЕГО БОТА' #Загружаете ваш токен вашего бота
bot = Bot(token=Bot_token)
dp = Dispatcher() #Создаем переменную Dispatcher

#Обрабатываем команду /start
@dp.message()
async def echo_message(message: types.Message):
    await message.answer(text=message.text) #Пишем await  в начале, потому что это асинхронный def echo_message

#Запускаем бота
async def main():
    logging.basicConfig(level=logging.INFO)
    await dp.start_polling(bot)

#Обрабатываем def main()
if __name__ == '__main__':
    asyncio.run(main())
🤩🤩🤩🤩🤩🤩🤩 #Pyhton #BotTelegram #AiogramStart@PythonPygame 🤩🤩🤩🤩🤩

🔠🔠🔠🔠🔠🔠🔠🔠🔠🔠🔠🔠🔠 🔠🔠🔠🔠🔠 🔠🔠 🔠🔠🔠🔠🔠🔠 🐦Как и обещала, но долго говорить не буду: как сделать класс кнопки - сюда, а как сделать полноэкранный режим через клавишу - сюда. Просто совмещаем эти два кода😉
import pygame
from pygame import FULLSCREEN #Импоритруем FULLSCREEN
from Button import Button #Импортируем класс кнопки

pygame.init()

window = pygame.display.set_mode((WIDTH, HEIGHT))
WIDTH, HEIGHT = 800, 600
screen = pygame.Surface((WIDTH, HEIGHT))
pygame.display.set_caption("Test")
icon = pygame.image.load('icon.png')
pygame.display.set_icon(icon)
bg = pygame.image.load('bg.jpg')

def main():
    fullbutton = Button(35, 250, 210, 74, '', 'button.png', 'hover_button.png') #Создаем кнопку

    start = True
    while start:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                start = False
                pygame.quit()

            elif event.type == pygame.USEREVENT and event.button == fullbutton:
                window = pygame.display.set_mode((800, 600), FULLSCREEN) #Ставим функцию Fullscreen кнопке

            for btn in [fullbutton]:
                btn.handle_event(event) #Обрабатываем event кнопки

        fullbutton.check_hover(pygame.mouse.get_pos()) #Проверяем на нажатие мышки на кнопку
        fullbutton.draw(screen) #Отображаем кнопку
        window.blit(screen, (0, 0))
        screen.blit(bg, (0, 0))

        pygame.display.flip()

pygame.quit()
🤩🤩🤩🤩🤩🤩🤩🤩 #Python #Pygame #FullscreenКнопка@PythonPygame 🤩🤩🤩🤩🤩

🔠🔠🔠🔠🔠🔠 🔠Пока я делала видео, у меня возник вопрос: почему мне Python постоянно выкидывает такую ошибку: ModuleNotFoundError: No module named 'moviepy.editor' ? Но есть решение этой проблемы: понизить версию moviepy до 1.0.3🔠 1. Удаляем текущую версию moviepy. Сначала вам нужно удалить существующую версию moviepy, чтобы избежать конфликтов: pip uninstall moviepy 2. Устанавливаем версию 1.0.3 библиотеки moviepy. После удаления текущей версии вы можете установить версию 1.0.3, которая хорошо работает с модулем moviepy.editor: pip install moviepy==1.0.3 3. Проверяем правильность установки. После завершения установки вы можете убедиться, что moviepy установлен правильно, запустив следующий код в Python: import moviepy.editor as mp 🔠Надеюсь помогла🔠 🤩🤩🤩🤩🤩🤩 #Python #Pygame #ОшибкаMoviepy@PythonPygame 🤩🤩🤩🤩🤩

🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟 🌟🌟🌟🌟🌟 🐱В этом посте мы разберем как добавить видео в pygame. Для начала скачиваем модуль moviepy. ВНИМАНИЕ! Если у вас старая версия Pycharm, вы можете попробовать модуль movie. Просто у новый версий этот модуль может уже не работать! Скачиваем так: забиваем в терминал pip install moviepy . В следующем коде не расписано, как сделать так, чтобы видео было зациклено. Просто я сама пока не разобралась, как это сделать, простите🤍
import pygame
from moviepy.editor import VideoFileClip #Импортируем VdieoFileClip из moviepy.editor

pygame.init()

window = pygame.display.set_mode((WIDTH, HEIGHT))
WIDTH, HEIGHT = 800, 600
screen = pygame.Surface((WIDTH, HEIGHT))
pygame.display.set_caption("Test")
icon = pygame.image.load('icon.png')
pygame.display.set_icon(icon)

def main():
    video = VideoFileClip("video.mp4") #Загружаем видео
    video.preview() #Запускаем видео
    start = True
    while start:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                start = False
                pygame.quit()

        window.blit(screen, (0, 0))
        screen.blit(bg, (0, 0))

        pygame.display.flip()

pygame.quit()
🤩🤩🤩🤩🤩🤩🤩🤩 #Python #Pygame #ВидеоБезЦикла@PythonPygame 🤩🤩🤩🤩🤩