【问题标题】:How to connect discord and pygame?如何连接不和谐和pygame?
【发布时间】:2021-03-22 00:14:24
【问题描述】:

所以几天前,我观看了一个人制作“不和谐游戏”的视频。他通过制作终端游戏然后将其转移到不和谐来做到这一点。但它是用 Java 编写的,所以我开始搜索并查看是否可以在 python 中做类似的事情。虽然我可以用一个终端游戏然后转移它,但我想看看我是否可以合并 pygame 和 discord 在 discord 中制作一个 pygame。我搜索了谷歌并找到了这个答案。想用但是想问问有没有别的方法。

这是表格的链接:Pygame with discord bot

它使用线程来同时运行(discord API 和 pygame)。

import discord, random, pygame, time, asyncio
import random # just for fun
from threading import Thread

### better to set them as a global variable
client = discord.Client()

pygame.init() # put these in the beginning
gameDisplay = pygame.display.set_mode((500, 500))
white = (255,255,255)
clock = pygame.time.Clock()
green = (0,255,0)
red   = (255,0,0)
black = (0,0,0)
###
#client.send_message()
@client.event
async def on_message(message):
    # do what you want to do...
    pass

async def send_message(msg):
    await client.send_message(client.get_channel('197481285852069898'), msg) # send a message, you can use channel id or any channel instance

def run_gui(): # for running the gui
    gameDisplay.fill(white) # initialize the screen white
    current_color = red 
    my_rect = pygame.draw.rect(gameDisplay, current_color, (50,50,50,50)) # draw a rect and save the rect
    while 1: # pygame mainloop
        pygame.display.update() # update the screen
        for event in pygame.event.get(): # proper way of retrieving events
            if event.type == pygame.MOUSEBUTTONDOWN: # check if the event is right clicked on mouse 
                mouse = pygame.mouse.get_pos()
                if my_rect.collidepoint(mouse): # see if it pressed the rect
                    # do stuff if the button is pressed...
                    current_color = red
                    # send a random message maybe?
                    choosen = random.choice(['hello','hi','I am a bot','wassup','I luv u <3'])
                    asyncio.ensure_future(send_message( msg=choosen)) # since discord.py uses asyncio

                else:
                    # do stuff if it's not pressed...
                    current_color = green
                # refill the screen white
                gameDisplay.fill(white)
                # redraw the rect
                my_rect = pygame.draw.rect(gameDisplay, current_color, (50,50,50,50)) 

        clock.tick(60) # 60 fps

def run_bot(): # for running the bot
    client.run('token') # run the bot

@client.event
async def on_ready():
    print('Logged in as')
    print(client.user.name)
    print(client.user.id)
    print('------')

Thread(target=run_bot).start() # start thread the run the bot
run_gui() # run the gui

【问题讨论】:

    标签: python pygame discord.py


    【解决方案1】:

    将更多静态类型的游戏制作成 Discord 机器人非常容易,但由于速率限制(您可以在每个指定时间段内发出多少请求),将“快节奏”游戏制作成 Discord 机器人非常困难.

    在您的示例中,原始线程中的那个人只想在他在游戏中单击时发送消息。不要将完整的游戏变成 Discord 机器人。

    如果您想制作“快节奏”的东西 - 意味着界面每秒更新多次,您可能会很不走运,因为 Discord 不允许这样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-12
      • 2021-12-06
      • 1970-01-01
      • 2021-08-30
      • 2021-08-19
      • 2020-06-07
      • 2019-08-01
      • 1970-01-01
      相关资源
      最近更新 更多