मैं एक स्पेस शूटर गेम बना रहा हूं जिसकी पृष्ठभूमि में एक ग्रह है। मैंने कुछ ग्रहों को पृष्ठभूमि में खींचने का फैसला किया है और जब मैं दाईं ओर जाता हूं तो ग्रहों को बाईं ओर जाना चाहिए। यानी खिलाड़ी को यह महसूस करना कि अंतरिक्ष यान अंतरिक्ष के चारों ओर घूम रहा है। हालाँकि मैं इसे केवल एक ग्रह के लिए ही कर सकता था। जब अन्य ग्रहों को एक वर्ग में लागू करने का प्रयास किया जाता है तो यह लगातार दूसरे ग्रह में बदल रहा है।
lanetdic = {'planets':[]}
imagestoload = ['Feza/graphs/sprites/saturne.png']
for i in imagestoload:
img = pg.image.load(i).convert_alpha()
planetdic['planets'].append(img)
यह स्प्राइट लोड करना है। और नीचे में मैंने ग्रहों के लिए एक वर्ग बनाया है।
class Planets(pg.sprite.Group):
def __init__(self):
pg.sprite.Group.__init__(self)
self.frame = 0
self.image = planetdic['planets'][self.frame]
self.rect = self.image.get_rect()
self.rect.center = (500+100*self.frame,HEIGHT/2)
self.pos = vec(500,HEIGHT/2)
self.vel = vec(0,0)
self.acc = vec(0,0)
def update(self):
#self.acc = vec(0,0)
self.frame = (self.frame + 1)%len(planetdic['planets'])
हो सकता है कि किसी ग्रह के लिए एक वर्ग बनाना समझदारी न हो, लेकिन अगर वहाँ है तो मुझे कोई दूसरा रास्ता नहीं मिल सकता है, कृपया मुझे बताएं।
अगर हम फिर से मुद्दे पर आते हैं। नीचे मैंने छवियों को लोड करने के लिए लूप के लिए बनाया है। और लूप के लिए फिर से उसी का उपयोग किया जाता है
planetdic = {'planets':[]}
imagestoload = ['Feza/graphs/sprites/saturne.png','Feza/graphs/sprites/jupiter.png','Feza/graphs/sprites/venus.png','Feza/graphs/sprites/uranus.png','Feza/graphs/sprites/neptune.png']
for i in imagestoload:
img = pg.image.load(i).convert_alpha()
planetdic['planets'].append(img)
जब मैं बहु छवियों को लागू करता हूं तो यह मिलीसेकंड में एक से दूसरे में बदल जाता है मैं इसे कैसे रोक सकता हूं। मैं बस हर ग्रह को पृष्ठभूमि में दिखाना चाहता हूं और उन्हें गतिमान करना चाहता हूं।
1 उत्तर
एक कक्षा में एकाधिक स्प्राइट कैसे आकर्षित करें
आप ऐसा नहीं करते। हालांकि, आप एक वर्ग के अनेक इंस्टेंस ऑब्जेक्ट बना सकते हैं।
छवि (सतह) कक्षा Planet
के निर्माता का एक पैरामीटर होना चाहिए। Planet
वर्ग sprite.Sprite
, नहीं sprite.Group
< /ए>:
class Planet(pg.sprite.Sprite):
def __init__(self, image):
pg.sprite.Group.__init__(self)
self.frame = 0
self.image = image
self.rect = self.image.get_rect()
self.rect.center = (500+100*self.frame,HEIGHT/2)
self.pos = vec(500,HEIGHT/2)
self.vel = vec(0,0)
self.acc = vec(0,0)
प्रत्येक ग्रह के लिए Planet
वर्ग का एक नया इंस्टेंस ऑब्जेक्ट बनाएं:
planets = pg.sprite.Group()
imagestoload = ['Feza/graphs/sprites/saturne.png','Feza/graphs/sprites/jupiter.png','Feza/graphs/sprites/venus.png','Feza/graphs/sprites/uranus.png','Feza/graphs/sprites/neptune.png']
for filepath in imagestoload:
img = pg.image.load(filepath).convert_alpha()
planet = Planet(img)
planets.add(planet)
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।