присвоение значения переменных через функцию класса Python

Рейтинг: 1Ответов: 0Опубликовано: 17.06.2023

у меня есть некая переменная screen_mode она должна иметь одно из трёх значений: menu, game, settings.

это основной файл↓

from Config import *
from StartScreen import *
import pygame as pg

screen = pg.display.set_mode((WIDTH,HEIGHT))
screen_mode = 'menu'
X,Y = -1, -1 #без начальной позиции код не хочет работать

start_screen=StartScreen()

while True:
    for event in pg.event.get():
        if event.type == pg.FINGERDOWN:
            X, Y = event.x*WIDTH,event.y*HEIGHT
    
    if screen_mode == 'menu':
        start_screen.draw(screen,pg)
        start_screen.update(screen_mod,screen,pg, X ,Y)
    if screen_mode == 'game':
        screen.fill((255,0,255))
    pg.display.update()

это файл класса↓

from Button import *
button = Button(300,300,100,400,(25,0,80))
class StartScreen():
    def __init__(self):
        self.bg_color = (255,0,123)
    def draw(self, sc,pg):
        sc.fill(self.bg_color)
        pg.draw.rect(sc, (0,0,0),(200,200,200,100))
        
    def update(self, screen_mode, sc ,pg, x, y):
        button.draw(sc,pg)
        frame = button.frame
        if (x>frame[0] and x<(frame[0]+frame[2]))and(y>frame[1] and y<(frame[1]+frame[3])):
            screen_mode = "game"

в этом классе есть функция update в ней я проверяю находиться ли кординаты нажатия в кнопке и если да, то меняю значения screen_mode на game и экран меняется

итак вопрос вот в чем: как мне изменить значения переменной в одном файле с помощью функции в друг

я размышляю на эту тему сам и вот к чему я пришел

в основном файле

if screen_mode == 'menu':
        
        screen_mode = start_screen.update(screen_mod,screen,pg, X ,Y)

в файле класса

    def update(self, screen_mode, sc ,pg, x, y):
        button.draw(sc,pg)
        frame = button.frame
        if (x>frame[0] and x<(frame[0]+frame[2]))and(y>frame[1] and y<(frame[1]+frame[3])):
            return "game"

то есть я возвращаю значение после проверки и присваиваю его переменной, но меня это не устраивает.

я задумываюсь о том как работают функции с глобальными переменными которые, но не знаю будет ли это тут работать

Ответы

Ответов пока нет.