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? При обычной загрузки кода в консоль 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
➖➖➖➖➖➖➖➖➖
+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
🤩🤩🤩🤩🤩