В Python, как я могу сделать интерактивную кнопку, используя изображения в аркаде? - PullRequest
1 голос
/ 28 мая 2019

Я пытаюсь создать интерактивную кнопку в аркаде, используя python.Я использую ОС для импорта изображений и подумал, смогу ли я преобразовать функцию щелчка в изображение.Я надеюсь открыть новое окно, нажав на изображение.Я знаю, что для этого в основном используется tkinter, но я создаю игру и не хочу использовать tkinter.Я также не люблю использовать PyGame.Я не уверен, как вы можете применить границы к изображению, импортированному из os.

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

import arcade
import os
SCREEN_WIDTH = 700
SCREEN_HEIGHT = 700
class MyGame(arcade.Window):
    def __init__(self):
        super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "sprites")
        file_path = os.path.dirname(os.path.abspath(__file__))
        os.chdir(file_path)
        self.player_list = None
        self.player_sprite = None
        self.set_mouse_visible(True)
        self.pressed = (False)
        arcade.set_background_color(arcade.color.AMAZON)
    def Button(self, center_x, center_y, action_function):
        self.player_list = arcade.SpriteList()
        self.player_sprite = arcade.Sprite("osss.png", 0.5)
        self.player_sprite.center_x = center_x
        center_x = 50
        self.player_sprite.center_y = center_y
        center_y = 50
        self.player_list.append(self.player_sprite)
        self.action_function = action_function

    def on_draw(self):
        arcade.start_render()
        self.player_list.draw()
    def on_mouse_motion(self, x, y, dx, dy):
        self.player_sprite.center_x = x
        self.player_sprite.center_y = y
    def update(self, delta_time):
        x = self.center_x
        y = self.center_y
        if not self.pressed:
            x -= self.Button_height
            y += self.Button_height

    def on_press(self):
        self.pressed = True

    def on_release(self):
        self.pressed = False

    def check_mouse_press_for_buttons(x, y, self): #Button.on_press()
        for button in self.player_list:
            if x > button.center_x + button.width / 2:
                continue
            if x < button.center_x - button.width / 2:
                continue
            if y > button.center_y + button.height / 2:
                continue
            if y < button.center_y - button.height / 2: 
                continue
        def check_mouse_release_for_buttons(x, y, dx, dy, button_list):  #make the action happen
            for button in button_list:
                if button.pressed:
                    button.on_release()
                    arcade.draw_randomrect_filled(x, y, dx, dy, arcade.color.PINK)

    def on_release(self):
        super().on_release()
        self.action_function()


def main():
    window = MyGame()
    window.Button(center_x, center_y, action_function)
    arcade.run()
if __name__ == "__main__":
   main()

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...