Я пытаюсь создать интерактивную кнопку в аркаде, используя 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()
Я получаю много «неопределенных» сообщений об ошибках.Я не очень хорошо определил свои ценности.Я также ожидаю отказа, многие люди говорят мне, что это не может быть сделано.