मैं हूँ लगातार दोहरा कोड और सोच रहा था अगर वहाँ एक तरीका है करने के लिए आसान बनाने, तो इन बयानों

0

सवाल

कोड मैं बनाया है में इस्तेमाल किया pygame को हाइलाइट करने के लिए बटन है कि मैं कर रहा हूँ पर मँडरा और क्लिक किया जब पर ट्रिगर किया जाएगा उनके इसी समारोह

if singleplayer_button.collidepoint(mx, my):
    pygame.draw.rect(WIN, (180, 0, 0), singleplayer_button)
    WIN.blit(singleplayer_button_text, (295, 400))
    if click:
        singleplayer()
else:
    pygame.draw.rect(WIN, RED, singleplayer_button)
    WIN.blit(singleplayer_button_text, (295, 400))

if multiplayer_button.collidepoint(mx, my):
    pygame.draw.rect(WIN, (180, 0, 0), multiplayer_button)
    WIN.blit(multiplayer_button_text, (727, 400))
    if click:
        multiplayer1()
else:
    pygame.draw.rect(WIN, RED, multiplayer_button)
    WIN.blit(multiplayer_button_text, (727, 400))

if leaderboard_button.collidepoint(mx, my):
    pygame.draw.rect(WIN, (180, 0, 0), leaderboard_button)
    WIN.blit(leaderboard_button_text, (291, 550))
    if click:
        leaderboard()
else:
    pygame.draw.rect(WIN, RED, leaderboard_button)
    WIN.blit(leaderboard_button_text, (291, 550))

if credit_button.collidepoint(mx, my):
    pygame.draw.rect(WIN, (180, 0, 0), credit_button)
    WIN.blit(credits_button_text, (774, 550))
    if click:
        credit()
else:
    pygame.draw.rect(WIN, RED, credit_button)
    WIN.blit(credits_button_text, (774, 550))

if register_button.collidepoint(mx, my):
    pygame.draw.rect(WIN, (180, 0, 0), register_button)
    WIN.blit(register_button_text, (300, 700))
    if click:
        register()
else:
    pygame.draw.rect(WIN, RED, register_button)
    WIN.blit(register_button_text, (300, 700))

if exit_button.collidepoint(mx, my):
    pygame.draw.rect(WIN, (180, 0, 0), exit_button)
    WIN.blit(exit_button_text, (737, 700))
    if click:
        exit_window()
else:
    pygame.draw.rect(WIN, RED, exit_button)
    WIN.blit(exit_button_text, (737, 700))

####_button एक आयत है

####_button_text है जो पाठ हो जाता है blitted शीर्ष पर आयत

pygame python
2021-11-23 17:15:29
1

सबसे अच्छा जवाब

3

पढ़ें एक मुक्केबाज़ी वर्गों.

बनाने के लिए एक Button वर्ग:

class Button():
    def __init__(self, rect, text, action):
        self.rect = rect
        self.text = text
        self.action = action
    def draw(self, win):
        pygame.draw.rect(win, (180, 0, 0), self.rect)
        WIN.blit(self.text, self.text.get_rect(center = self.rect.center))
    def click(self, mx, my, click):
        if self.rect.collidepoint(mx, my) and click:
            self.action()

की एक सूची बनाएँ Botton वस्तुओं:

buttons = [
    Button(singleplayer_button, singleplayer_button_text, singleplayer),
    Button(multiplayer_button,  multiplayer_button_text,  multiplayer1),
    Button(leaderboard_button,  leaderboard_button_text,  leaderboard),
    Button(credit_button,       credits_button_text,      credit),
    Button(register_button,     register_button_text,     register),
    Button(exit_button,         exit_button_text,         exit_window)
]

ड्रा में बटन के लिए एक पाश:

for button in buttons:
    button.draw(WIN)

क्या क्लिक करें पता लगाने में एक पाश:

for button in buttons:
    button.click(mx, my, click)
2021-11-23 19:01:17

धन्यवाद समाधान के लिए, अगर मैं कर सकता upvote मैं यह होगा.
Minhaj Rahman

@MinhajRahman धन्यवाद. आप का स्वागत कर रहे हैं.
Rabbid76

मैं बस चाहता था पर पालन करने के लिए । मैं और त्रुटि जब मैं चलाने के लिए प्रयास करें code line 147 में, आकर्षित, जीतने के लिए । blit(स्व.पाठ, स्व.पाठ.get_rect(केंद्र=self.रंगरूट.केंद्र)) AttributeError: 'pygame.रंगरूट' चीज है, कोई विशेषता 'get_rect'
Minhaj Rahman

@MinhajRahman क्षमा करें, मेरा बुरा है । में एक टाइपो था जवाब. Button(register_button, register_button_text, register), के बजाय Button(register_button, register_button, register), (2 तर्क है register_button_text).
Rabbid76

के लिए एक ही Button(exit_button, exit_button_text, exit_window).
Rabbid76

Ahhhh मैं कोशिश कर रहा हूँ यह पता लगाने के लिए थोड़ी देर के लिए अब और नहीं था यहां तक कि नोटिस, एक बार फिर धन्यवाद
Minhaj Rahman

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में