python समस पैगैम प्रोग्राम में छपाई न करें



पहिले मुद्रणालय (1)

pygame.display.flip साथ स्क्रीन को अपडेट करने से पहले, आपका कोड स्क्रीन को चलाता है। screen.blit(background,(0,0)) , जो स्क्रीन पर आपके द्वारा खींची गई सभी चीज़ों को पूर्णतः ओवरराइड करती है। अपने while keepGoing की शुरुआत के लिए पृष्ठभूमि की while keepGoing इस समस्या का समाधान होगा

मैं एक प्रोग्राम पायथन में लिख रहा हूं जो कि खेल के स्क्रैच टिकट प्रकार के रूप में कार्य करेगा। मेरे पास सभी चीजों को छपाई करने के अलावा काम किया है जब उपयोगकर्ता टिकट पर वर्ग को 'खरोंच कर देता है'। यह मेरा कोड है:

    import pygame
    pygame.init()
    pygame.font.init()

    screen = pygame.display.set_mode((300,450))
    pygame.display.set_caption("test grid")

    background = pygame.Surface(screen.get_size())
    background.fill((209, 95, 238))

    clock = pygame.time.Clock()
    keepGoing = True

    pos = [0, 0]

    x = 40
    for line in range(5):
        y = 200
        for row in range(4):
            pygame.draw.rect(background, (238, 201, 0), (x, y, 40, 40), 0)
            y += 45
        x += 45

    board = [[1, 1, 3, 15, 11],
             [1, 14, 13, 15, 9],
             [2, 6, 7, 15, 5],
             [8, 10, 4, 12, 7]]

    myfont = pygame.font.SysFont("arial", 50)

    while keepGoing:
        clock.tick(30)

        y = 200
        x = 40
        x1 = 40
        x2 = 80
        y1 = 200
        y2 = 240
        num = 0
        label = myfont.render(str(num),1,(255,255,255))

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                keepGoing = False
            elif event.type == pygame.MOUSEBUTTONDOWN:
                pos = pygame.mouse.get_pos()
                print pygame.mouse.get_pos()
                for row in range(4):
                    for line in range(5):
                        if pos[0] >= x1 and pos[0] <= x2 and pos[1] >= y1 and pos[1] <= y2:
                            pygame.draw.rect(background, (0,0,0), (x,y,40,40), 0)
                            num = board[row][line]
                            label = myfont.render(str(num), 1, (255,255,255))
                            x1 += 45
                        else:
                            x1 += 45
                            x2 += 45
                            x += 45
                    x = 40
                    y += 45
                    y1 += 45
                    y2 += 45
                    x1 = 40
                    x2 = 80

        screen.blit(label,(200,200))         
        screen.blit(background, (0,0))
        pygame.display.flip()

    pygame.quit()

किसी कारण से मैं समझ नहीं पा रहा हूं, मुझे कोई फर्क नहीं पड़ता है, मेरी कोई भी फ़ॉन्ट सामग्री प्रिंट नहीं होगी। मैंने इसे केवल लूप के बाहर घोषित करने की कोशिश की, मैंने इसे केवल लूप के भीतर ही घोषित करने की कोशिश की, मैंने दोनों एक साथ कोशिश की, और किसी कारण से कुछ भी काम नहीं करेगा, और मैं समझ नहीं सकता कि मेरा टेक्स्ट स्क्रीन पर प्रिंट करने से इनकार क्यों करता है कृपया मदद करें?

मेरे शिक्षक ने कहा कि यह मेरे एक्स 1 और एक्स 2 वैरिएबल के साथ कुछ था, लेकिन मैंने जांच की और वे ठीक उसी तरह कर रहे हैं कि उन्हें क्या करना चाहिए।

(किसी को भी सोचने के लिए, जिस कारण से मैंने 45 से एक्स 1 जोड़ लिया है, भले ही अगर सच में बयान सही है, क्योंकि इस तरह से यह दोहराने और छपने के लिए फिर से बार बार जारी नहीं करेगा। समाधान लेकिन केवल एक ही मैं सोच सकता था।)





pygame