2012-04-16 18 views
6

मैं पायगम में एक गेम बना रहा हूं और पहली स्क्रीन पर मैं चाहता हूं कि बटन बनें (i) खेल शुरू करें, (ii) निर्देशों के साथ एक नई स्क्रीन लोड करें, और (iii) प्रोग्राम से बाहर निकलें ।पायथन/पायगमेम में बटन कैसे बनाएं?

मुझे यह कोड बटन बनाने के लिए ऑनलाइन मिला है, लेकिन मुझे वास्तव में यह समझ में नहीं आता है (मैं ऑब्जेक्ट उन्मुख प्रोग्रामिंग पर अच्छा नहीं हूं)। अगर मुझे कुछ स्पष्टीकरण मिल सकता है कि यह क्या कर रहा है तो यह बहुत अच्छा होगा। साथ ही, जब मैं इसका उपयोग करता हूं और फ़ाइल पथ का उपयोग कर अपने कंप्यूटर पर एक फ़ाइल खोलने का प्रयास करता हूं, तो मुझे त्रुटि मिलती है: filepath: अनुमति अस्वीकार कर दी गई है, जिसे मैं हल नहीं करना चाहता हूं।

#load_image is used in most pygame programs for loading images 
def load_image(name, colorkey=None): 
    fullname = os.path.join('data', name) 
    try: 
     image = pygame.image.load(fullname) 
    except pygame.error, message: 
     print 'Cannot load image:', fullname 
     raise SystemExit, message 
    image = image.convert() 
    if colorkey is not None: 
     if colorkey is -1: 
      colorkey = image.get_at((0,0)) 
     image.set_colorkey(colorkey, RLEACCEL) 
    return image, image.get_rect() 
class Button(pygame.sprite.Sprite): 
    """Class used to create a button, use setCords to set 
     position of topleft corner. Method pressed() returns 
     a boolean and should be called inside the input loop.""" 
    def __init__(self): 
     pygame.sprite.Sprite.__init__(self) 
     self.image, self.rect = load_image('button.png', -1) 

    def setCords(self,x,y): 
     self.rect.topleft = x,y 

    def pressed(self,mouse): 
     if mouse[0] > self.rect.topleft[0]: 
      if mouse[1] > self.rect.topleft[1]: 
       if mouse[0] < self.rect.bottomright[0]: 
        if mouse[1] < self.rect.bottomright[1]: 
         return True 
        else: return False 
       else: return False 
      else: return False 
     else: return False 
def main(): 
    button = Button() #Button class is created 
    button.setCords(200,200) #Button is displayed at 200,200 
    while 1: 
     for event in pygame.event.get(): 
      if event.type == MOUSEBUTTONDOWN: 
       mouse = pygame.mouse.get_pos() 
       if button.pressed(mouse): #Button's pressed method is called 
        print ('button hit') 
if __name__ == '__main__': main() 

मेरी मदद कर सकते हैं जो किसी के लिए धन्यवाद।

उत्तर

12

मैं तुम्हारे लिए एक कोड उदाहरण की जरूरत नहीं है, लेकिन मैं कैसे करेंगे यह करने के लिए है: एक निर्माता तर्क के रूप में बटन पर जाने के लिए पाठ के साथ,

  1. एक बटन वर्ग बनाने
    1. एक pygame सतह एक छवि के दोनों बनाएँ, या रेक्ट
    2. भरा pygame
    3. Blit में
  2. Font.Render सामान के साथ इस पर पाठ प्रस्तुत स्क्रीन खेल के लिए, कि रेक्ट सहेजें।
  3. चेक, माउस क्लिक पर, mouse.get_pos देखने के लिए() रेक्ट है कि यह मुख्य सतह के लिए बटन के Blit द्वारा वापस में एक coord मेल खाता है।

यह आपके उदाहरण के समान है, हालांकि अलग-अलग है।

+0

ठीक है, मैं कोशिश करूँगा, मदद के लिए धन्यवाद। – user1334014

0

'कोड' आप ऑनलाइन पाया है कि अच्छा नहीं है। आपको बस एक बटन बनाने की जरूरत है। इसे अपने कोड की शुरुआत के करीब रखें:

def Buttonify(Picture, coords, surface): 
    image = pygame.image.load(Picture) 
    imagerect = image.get_rect() 
    imagerect.topright = coords 
    surface.blit(image,imagerect) 
    return (image,imagerect) 

अपने गेम लूप में निम्न को रखें। इसके अलावा अपने खेल पाश में कहीं:

Image = Buttonify('YOUR_PICTURE.png',THE_COORDS_OF_THE_BUTTON'S_TOP_RIGHT_CORNER, THE_NAME_OF_THE_SURFACE) 

इसके अलावा अपने खेल पाश में रखते भी आप for event in pygame.event.get

if event.type == MOUSEBUTTONDOWN and event.button == 1: 
    mouse = pygame.mouse.getpos 
    if Image[1].collidrect(mouse): 
     #code if button is pressed goes here 

किया है तो, buttonify छवि उस बटन पर होगा लोड करता है। यह छवि कोड के समान निर्देशिका में .jpg फ़ाइल या कोई अन्य चित्र फ़ाइल होना चाहिए। चित्र अपने नाम है। नाम यह बाद .jpg या कुछ और होना आवश्यक है और नाम उद्धरण चिह्नों में होना चाहिए। Buttonify में coords पैरामीटर आपकी स्क्रीन या विंडो पर शीर्ष दाएं समन्वय है जो pygame से खुलता है।

blahblahblah = pygame.surface.set_mode((WindowSize)) 
/|\ 
    | 
    Surface's Name 

तो यह समारोह कुछ 'छवि' कहा जाता है जो एक pygame सतह है बनाता है, उसके चारों ओर यह imagerect '(एक स्थान पर यह स्थापित करने के लिए कहा जाता है और दूसरे के लिए एक आयत कहते हैं: सतह यह बात है पैरामीटर करते समय पैरामीटर,) और उसके बाद यह अपना स्थान सेट करता है, और आखिरी पंक्ति में दूसरी बार इसे ब्लूट करता है।

कोड का अगला बिट 'छवि' दोनों 'छवि' और 'imagerect' का एक tuple बनाता है।

अंतिम कोड if event.type == MOUSEBUTTONDOWN and event.button == 1: है जिसका मूल रूप से मतलब है कि बाएं माउस बटन दबाया जाता है। यह कोड for event in pygame.event.get में होना चाहिए। अगली पंक्ति माउस को मकान की स्थिति का एक टुपल बनाती है।आखिरी पंक्ति जांचती है कि माउस छवि [1] से टक्कर लगी है, जैसा कि हम जानते हैं कि 'सही' है। कोड उस का पालन करता है।

मुझे बताएं कि मुझे आगे की व्याख्या करने की आवश्यकता है या नहीं।

0

तो आपको 8 पैरामीटर प्राप्त करने वाले बटन का नाम बनाना होगा। 1) बटन 2) बटन बटन के बाएं शीर्ष कोने की एक्स स्थिति 3) बटन 4 के बाएं कोने के वाई स्थिति 4) बटन 5 की चौड़ाई 5) बटन की ऊंचाई 6) निष्क्रिय रंग (पृष्ठभूमि रंग) 7) सक्रिय रंग (रंग जब आप मंडराना) 8) कार्रवाई आप

def button (msg, x, y, w, h, ic, ac, action=None): 
    mouse = pygame.mouse.get_pos() 
    click = pygame.mouse.get_pressed() 

    if (x+w > mouse[0] > x) and (y+h > mouse[1] > y): 
     pygame.draw.rect(watercycle, CYAN, (x, y, w, h)) 
     if (click[0] == 1 and action != None): 
      if (action == "Start"): 
       game_loop() 
      elif (action == "Load"): 
       ##Function that makes the loading of the saved file## 
      elif (action == "Exit"): 
       pygame.quit() 

    else: 
     pygame.draw.rect(watercycle, BLUE, (x, y, w, h)) 
     smallText = pygame.font.Font("freesansbold.ttf", 20) 
     textSurf, textRect = text_objects(msg, smallText) 
     textRect.center = ((x+(w/2)), (y+(h/2))) 
     watercycle.blit(textSurf, textRect) 

perfom करना चाहते हैं उसका नाम तो जब आप अपने खेल पाश बना सकते हैं और बटन समारोह आप कॉल:

बटन ("स्टार्ट", 600, 120, 120, 25, नीला, साइयन, "स्टार्ट")

0

यहां एक बटन के लिए एक कक्षा है जिसे मैंने पहले बनाया था: https://www.dropbox.com/s/iq5djllnz0tncc1/button.py?dl=0 बटन विंडोज 7 शैली है जहां तक ​​मुझे याद है, और मैं हाल ही में इसका परीक्षण करने में सक्षम हूं क्योंकि मेरे पास कंप्यूटर पर पायगम नहीं है I उपयोग कर रहा हूँ उम्मीद है की यह मदद करेगा!

संबंधित मुद्दे