नमस्ते मैं अपने अंतिम प्रश्न से इन निर्देशों का पालन करने की कोशिश कर रहा हूं: पायगेम: 150 छवियों को कैसे लोड करें और प्रत्येक को केवल .5 सेकंड प्रति परीक्षण के लिए कैसे प्रस्तुत करें

यह वह कोड है जो मेरे पास वर्तमान में है और मुझे यकीन नहीं है कि मैं कहां गलत हो रहा हूं।

import pygame, glob
pygame.init()
pygame.mixer.init()
clock=pygame.time.Clock()

#### Set up window
window=pygame.display.set_mode((0,0),pygame.FULLSCREEN)
centre=window.get_rect().center
pygame.mouse.set_visible(False)

#colours
black = (0, 0, 0)
white = (255, 255, 255)


types= '*.tif'
artfile_names= []
for files in types:
    artfile_names.extend(glob.glob(files))

image_list = []
for artwork in artfile_names:
    image_list.append(pygame.image.load(artwork).convert())

##Randomizing
index=0
current_image = image_list[index]

if image_list[index]>= 150:
    index=0

stimulus= pygame.image.load('image_list')
soundPlay=True
def artwork():
    window.blit(stimulus,pygame.FULLSCREEN)

while not soundPlay:
    for imageEvent in pygame.event.get():
        artwork()
        pygame.display.update()
        clock.tick()
1
Delly 16 नवम्बर 2017, 00:04

2 जवाब

सबसे बढ़िया उत्तर

पहली गलती वही है जो आपके पिछले प्रश्न: types= '*.tif' में है। इसका मतलब है कि types एक स्ट्रिंग है, लेकिन आप वास्तव में अनुमत फ़ाइल प्रकारों के साथ एक टपल चाहते थे: types = '*.tif', (अल्पविराम इसे टपल में बदल देता है)। तो आप '*.tif' में अक्षरों पर पुनरावृति करते हैं और उन्हें glob.glob में पास करते हैं जो आपको निर्देशिका में सभी फाइलें देता है और निश्चित रूप से image_list.append(pygame.image.load(artwork).convert()) काम नहीं कर सकता है यदि आप इसे उदाहरण के लिए पास करते हैं .py फ़ाइल।

अगली गलती stimulus = pygame.image.load('image_list') लाइन है जो काम नहीं करती है क्योंकि आपको load फ़ंक्शन के लिए एक पूर्ण फ़ाइल नाम या पथ पास करने की आवश्यकता है। मुझे लगता है कि आपका stimulus वैरिएबल वास्तव में current_image होना चाहिए।

यहां एक पूरा उदाहरण दिया गया है जो आपको टाइमर को लागू करने का तरीका भी दिखाता है।

import glob
import random
import pygame


pygame.init()
clock = pygame.time.Clock()
window = pygame.display.set_mode((640, 480))

file_types = '*.tif',  # The comma turns it into a tuple.
# file_types = ['*.tif']  # Or use a list.
artfile_names = []
for file_type in file_types:
    artfile_names.extend(glob.glob(file_type))

image_list = []
for artwork in artfile_names:
    image_list.append(pygame.image.load(artwork).convert())

random.shuffle(image_list)

index = 0
current_image = image_list[index]
previous_time = pygame.time.get_ticks()

done = False

while not done:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True

    # Calcualte the passed time, then increment the index, use
    # modulo to keep it in the correct range and finally change
    # the image.
    current_time = pygame.time.get_ticks()
    if current_time - previous_time > 500: # milliseconds
        index += 1
        index %= len(image_list)
        current_image = image_list[index]
        previous_time = current_time

    # Draw everything.
    window.fill((30, 30, 30))  # Clear the screen.
    # Blit the current image.
    window.blit(current_image, (100, 100))

    pygame.display.update()
    clock.tick(30)
1
skrx 16 नवम्बर 2017, 08:37

नीचे के पास आपके पास रेखा है:

stimulus= pygame.image.load('image_list')

यहां आप image_list शीर्षक वाली छवि लोड करने का प्रयास कर रहे हैं। वहाँ कोई फ़ाइल एक्सटेंशन नहीं है, इसलिए आपका OS फ़ाइल प्रकार को नहीं पहचानता है। लेकिन भले ही आपने फ़ाइल एक्सटेंशन शामिल किया हो, मुझे लगता है कि आप सूची में अलग-अलग छवियों को लोड करने का प्रयास कर रहे हैं image_list, और यह एक पूरी कहानी है।

1
paper man 16 नवम्बर 2017, 01:00