যারা পাইথনকে চেনেন তাদের জন্য এটি পাইগেমের ভূমিকা। এই নিবন্ধটি আপনাকে একটি সাধারণ গেম তৈরির ধাপগুলি শিখিয়ে দেবে যাতে খেলোয়াড়কে বাউন্সিং বল ডোডিং করে।
ধাপ
8 এর অংশ 1: পাইগেম ইনস্টল করা
ধাপ 1. Pygame ডাউনলোড করুন।
Http://www.pygame.org/download.shtml থেকে আপনার প্ল্যাটফর্মের জন্য এটি খুঁজুন।
পদক্ষেপ 2. ইনস্টলার চালান।
পদক্ষেপ 3. যাচাই করুন যে ইনস্টলেশন কাজ করেছে।
একটি পাইথন টার্মিনাল খুলুন। টাইপ করুন "আমদানি পাইগেম।" যদি আপনি কোন ত্রুটি দেখতে না পান তাহলে Pygame সফলভাবে ইনস্টল করা হয়েছে।
পাইগেম আমদানি করুন
8 এর অংশ 2: একটি বেসিক উইন্ডো স্থাপন
ধাপ 1. একটি নতুন ফাইল খুলুন।
পদক্ষেপ 2. পাইগেম আমদানি করুন।
পাইগেম একটি লাইব্রেরি যা গ্রাফিক্স ফাংশনে অ্যাক্সেস প্রদান করে। আপনি যদি এই ফাংশনগুলি কীভাবে কাজ করে সে সম্পর্কে আরও তথ্য চান তবে আপনি সেগুলি পাইগেম ওয়েবসাইটে দেখতে পারেন।
pygame.locals থেকে pygame আমদানি করুন
ধাপ 3. উইন্ডো রেজোলিউশন সেট করুন।
আপনি স্ক্রিন রেজোলিউশনের জন্য একটি বৈশ্বিক পরিবর্তনশীল তৈরি করবেন যাতে গেমের বিভিন্ন অংশে রেফারেন্স করা যায়। ফাইলের শীর্ষে এটি খুঁজে পাওয়াও সহজ যাতে এটি পরে পরিবর্তন করা যায়। উন্নত প্রকল্পের জন্য, একটি পৃথক ফাইলে এই তথ্যটি রাখা একটি ভাল ধারণা হবে।
রেজোলিউশন = (400, 300)
ধাপ 4. কিছু রং সংজ্ঞায়িত করুন।
পাইগেমের রং হল (RBGA যার মান 0 থেকে 255 এর মধ্যে থাকে। আলফা মান (A) alচ্ছিক কিন্তু অন্যান্য রং (লাল, নীল এবং সবুজ বাধ্যতামূলক)।
সাদা = (255, 255, 255) কালো = (0, 0, 0) লাল = (255, 0, 0)
ধাপ 5. পর্দা শুরু করুন।
পূর্বে সংজ্ঞায়িত রেজোলিউশন ভেরিয়েবল ব্যবহার করুন।
পর্দা = pygame.display.set_mode (রেজোলিউশন)
ধাপ 6. একটি গেম লুপ তৈরি করুন।
আমাদের খেলার প্রতিটি ফ্রেমে নির্দিষ্ট ক্রিয়া পুনরাবৃত্তি করুন। একটি লুপ তৈরি করুন যা সর্বদা এই সমস্ত ক্রিয়াগুলির মাধ্যমে চক্রের পুনরাবৃত্তি করবে।
যখন সত্য:
ধাপ 7. পর্দা রঙ করুন।
screen.fill (সাদা)
ধাপ 8. পর্দা প্রদর্শন করুন।
আপনি যদি প্রোগ্রামটি চালান, পর্দা সাদা হয়ে যাবে এবং তারপর প্রোগ্রামটি ক্র্যাশ হবে। এর কারণ হল অপারেটিং সিস্টেম গেমটিতে ইভেন্ট পাঠাচ্ছে এবং গেমটি তাদের সাথে কিছু করছে না। একবার গেমটি অনেকগুলি অনিয়ন্ত্রিত ইভেন্ট গ্রহণ করলে, এটি ক্র্যাশ হবে।
যদিও সত্য:… pygame.display.flip ()
ধাপ 9. ইভেন্টগুলি পরিচালনা করুন।
প্রতিটি ফ্রেমে ঘটে যাওয়া সমস্ত ইভেন্টের একটি তালিকা পান। আপনি শুধুমাত্র একটি ইভেন্ট, প্রস্থান ইভেন্ট সম্পর্কে যত্ন করতে যাচ্ছেন। এটি ঘটে যখন ব্যবহারকারী গেম উইন্ডো বন্ধ করে। এটি অনেকগুলি ইভেন্টের কারণে আমাদের প্রোগ্রামটি ক্র্যাশ হওয়া থেকেও রক্ষা করবে।
সত্য হলেও: …
ধাপ 10. এটি ব্যবহার করে দেখুন
কোডটি এখন কেমন হওয়া উচিত তা এখানে:
pygame.locals থেকে pygame আমদানি করুন রেজুলেশন) যখন সত্য: pygame.event.get () এ ইভেন্টের জন্য screen.fill (সাদা) pygame.display.flip (): if event.type == Quit: pygame.quit ()
8 এর অংশ 3: একটি গেম অবজেক্ট তৈরি করা
ধাপ 1. একটি নতুন ক্লাস এবং কনস্ট্রাক্টর তৈরি করুন।
বস্তুর সমস্ত বৈশিষ্ট্য সেট করুন। আপনি সমস্ত বৈশিষ্ট্যের জন্য ডিফল্ট মান প্রদান করছেন।
ক্লাস বল: def _init _ (self, xPos = resolution [0] / 2, yPos = resolution [1] / 2, xVel = 1, yVel = 1, rad = 15): self.x = xPos self.y = yPos self.dx = xVel self.dy = yVel self.radius = rad self.type = "ball"
ধাপ 2. বস্তুটি কিভাবে আঁকবেন তা নির্ধারণ করুন।
কন্সট্রাকটরে সংজ্ঞায়িত বৈশিষ্ট্যগুলি ব্যবহার করুন যাতে বলটিকে বৃত্ত হিসাবে আঁকতে পারে এবং বস্তুটিকে আঁকতে ফাংশনে একটি পৃষ্ঠ প্রেরণ করতে পারে। পৃষ্ঠটি স্ক্রিন বস্তু হবে যা আগে রেজোলিউশন ব্যবহার করে তৈরি করা হয়েছিল।
ডিফ ড্র (স্ব, পৃষ্ঠ): pygame.draw.circle (পৃষ্ঠ, কালো, (self.x, self.y), self.radius)
ধাপ the। ক্লাসের একটি উদাহরণ তৈরি করুন এবং গেম লুপকে বলুন প্রতিটি লুপে বল আঁকতে।
বল = বল () যখন সত্য:… ball.draw (পর্দা)
ধাপ 4. বস্তু সরান।
একটি ফাংশন তৈরি করুন যা বস্তুর অবস্থান আপডেট করবে। প্রতিটি গেম লুপে এই ফাংশনটি কল করুন।
ক্লাস বল:… def update (self): self.x += self.dx self.y += self.dy
পদক্ষেপ 5. ফ্রেম রেট সীমিত করুন।
বল সত্যিই দ্রুত গতিতে চলে যাবে কারণ গেম লুপটি সেকেন্ডে শত শত বার চলছে। ফ্রেম রেট 60 fps এ সীমাবদ্ধ করতে Pygame এর ঘড়ি ব্যবহার করুন।
clock = pygame.time. Clock () যখন সত্য:… clock.tick (60)
ধাপ 6. পর্দায় বল রাখুন।
বলের দিক উল্টানোর জন্য আপডেট ফাংশনে চেক যোগ করুন যদি এটি স্ক্রিনের এক প্রান্তে আঘাত করে।
ক্লাস বল:… def আপডেট (self):… if (self.x <= 0 or self.x> = resolution [0]): self.dx *= -1 if (self.y <= 0 অথবা self.y > = রেজোলিউশন [1]): self.dy *= -1
ধাপ 7. এটি ব্যবহার করে দেখুন
কোডটি এখন কেমন হওয়া উচিত তা এখানে:
pygame.locals থেকে pygame আমদানি করুন রেজোলিউশন) ক্লাস বল: def _init _ (self, xPos = resolution [0] / 2, yPos = resolution [1] / 2, xVel = 1, yVel = 1, rad = 15): self.x = xPos self.y = yPos self.dx = xVel self.dy = yVel self.radius = rad self.type = "ball" def draw (self, পৃষ্ঠ): pygame.draw.circle (পৃষ্ঠ, কালো, (self.x, self.y), self.radius) def update (self): self.x += self.dx self.y += self.dy যদি (self.x <= 0 অথবা self.x> = resolution [0]): self.dx *= -1 যদি (self.y <= 0 অথবা self.y> = resolution [1]): self.dy *= -1 ball = Ball () clock = pygame.time. Clock () while True: screen। পূরণ করুন (সাদা) ball.draw (screen) ball.update () pygame.display.flip () clock.tick (60) in pygame.event.get (): if event.type == Quit: pygame.quit ()
Of র্থ পর্ব: গেমের আয়োজন
ধাপ 1. সবকিছু সংগঠিত করার জন্য ক্লাস ব্যবহার করুন।
খেলা আরও জটিল হতে চলেছে। আপনার কোড সংগঠিত করতে অবজেক্ট-ভিত্তিক কৌশলগুলি ব্যবহার করুন।
ধাপ 2. একটি ক্লাসে গেম লুপ তৈরি করুন।
যেহেতু আমাদের গেমটিতে এখন আপনার গেম অবজেক্ট এবং ফাংশন সহ ডেটা রয়েছে, তাই আপনার গেম লুপকে একটি ক্লাসে পরিণত করা বোধগম্য।
ক্লাস খেলা ():
ধাপ 3. একটি কন্সট্রাকটর যোগ করুন।
এখানে আপনি কিছু গেম অবজেক্ট ইনস্ট্যান্ট করবেন, আমাদের স্ক্রিন এবং ক্লক তৈরি করবেন এবং পাইগেম আরম্ভ করবেন। কিছু বৈশিষ্ট্য যেমন টেক্সট বা সাউন্ড ব্যবহার করার জন্য পাইগেমকে আরম্ভ করা প্রয়োজন।
ক্লাস খেলা (): def _init _ (স্ব): pygame.init () self.screen = pygame.display.set_mode (রেজোলিউশন) self.clock = pygame.time. Clock ()
ধাপ 4. একটি ফাংশনে ইভেন্টগুলি পরিচালনা করুন।
ক্লাস খেলা ():…
ধাপ 5. গেম লুপ একটি ফাংশন করুন।
প্রতি লুপে ইভেন্ট হ্যান্ডলিং ফাংশনটি কল করুন।
ক্লাস খেলা ():… ডিফ রান (স্ব): যখন সত্য: self.handleEvents () self.screen.fill (সাদা) self.clock.tick (60) pygame.display.flip ()
পদক্ষেপ 6. একাধিক গেম অবজেক্ট হ্যান্ডেল করুন।
এই মুহূর্তে এই কোডটি আমাদের বস্তুর প্রতিটি ফ্রেমে ড্র এবং আপডেট করতে হবে। যদি আপনার প্রচুর বস্তু থাকে তবে এটি অগোছালো হয়ে উঠবে। আসুন আমাদের বস্তুকে একটি অ্যারেতে যুক্ত করি এবং তারপরে প্রতিটি লুপে অ্যারেতে সমস্ত বস্তু আপডেট এবং আঁকুন। এখন আপনি সহজেই অন্য বস্তু যোগ করতে পারেন এবং এটি একটি ভিন্ন শুরুর অবস্থান দিতে পারেন।
class game (): def _init _ (self):… self.gameObjects = self.gameObjects.append (Ball ()) self.gameObjects.append (Ball (100))… def run (self): while true: self self.gameObjects- এ gameObj- এর জন্য.handleEvents ().flip ()
ধাপ 7. এটি ব্যবহার করে দেখুন
কোডটি এখন কেমন হওয়া উচিত তা এখানে:
pygame.locals থেকে pygame আমদানি করুন * (400, 300) সাদা = (255, 255, 255) কালো = (0, 0, 0) লাল = (255, 0, 0) পর্দা = pygame.display.set_mode (রেজোলিউশন) ক্লাস বল: def _init _ (self, xPos = resolution [0] / 2, yPos = resolution [1] / 2, xVel = 1, yVel = 1, rad = 15): self.x = xPos self.y = yPos self.dx = xVel self.dy = yVel self.radius = rad self.type = "ball" def draw (self, পৃষ্ঠ): pygame.draw.circle (পৃষ্ঠ, কালো, (self.x, self.y), self.radius) def update (self): self.x += self.dx self.y += self.dy যদি (self.x <= 0 অথবা self.x> = resolution [0]): self.dx *= -1 যদি (self.y <= 0 অথবা self.y> = resolution [1]): self.dy *= -1 ক্লাস গেম (): def _init _ (self): pygame.init () self.screen = pygame.display.set_mode (resolution) self.clock = pygame.time. Clock () self.gameObjects = self.gameObjects.append (Ball ()) self.gameObjects.append (Ball (100)) def handleEvents (self): pygame.event.get () এ ইভেন্টের জন্য: if event.type == QUIT: pygame.quit () def run (self): while True: self.handleEvent self.gameObjects এ gameObj এর জন্য s (): gameObj.update () self.screen.fill (সাদা) gameObj for self.gameObjects: gameObj.draw (self.screen) self.clock.tick (60) pygame.display। ফ্লিপ () গেম () রান ()
8 এর অংশ 5: একটি প্লেয়ার অবজেক্ট যুক্ত করা
ধাপ 1. একটি প্লেয়ার ক্লাস এবং কনস্ট্রাক্টর তৈরি করুন।
আপনি মাউস দ্বারা নিয়ন্ত্রিত আরেকটি বৃত্ত তৈরি করতে যাচ্ছেন। কনস্ট্রাক্টরের মানগুলি শুরু করুন। ব্যাসার্ধ একমাত্র গুরুত্বপূর্ণ মান।
ক্লাস প্লেয়ার: def _init _ (self, rad = 20): self.x = 0 self.y = 0 self.radius = rad
ধাপ 2. প্লেয়ার অবজেক্ট কিভাবে আঁকবেন তা নির্ধারণ করুন।
এটি একইভাবে হতে চলেছে যে আপনি অন্যান্য গেম অবজেক্টগুলি আঁকলেন।
ক্লাস প্লেয়ার:… ডিফ ড্র (স্ব, পৃষ্ঠ): pygame.draw.circle (পৃষ্ঠ, লাল, (self.x, self.y), self.radius)
ধাপ 3. প্লেয়ার বস্তুর জন্য মাউস নিয়ন্ত্রণ যোগ করুন।
প্রতিটি ফ্রেমে, মাউসের অবস্থান পরীক্ষা করুন এবং খেলোয়াড়দের বস্তুর অবস্থান সেই বিন্দুতে সেট করুন।
ক্লাস প্লেয়ার:… ডিফ আপডেট (স্ব): কর্ড = pygame.mouse.get_pos () self.x = কর্ড [0] self.y = কর্ড [1]
ধাপ 4. GameObjects এ একটি প্লেয়ার অবজেক্ট যুক্ত করুন।
একটি নতুন প্লেয়ার উদাহরণ তৈরি করুন এবং তালিকায় যোগ করুন।
ক্লাস গেম (): ডিফ _init _ (সেলফ):… self.gameObjects.append (প্লেয়ার ())
ধাপ 5. এটি ব্যবহার করে দেখুন
কোডটি এখন কেমন হওয়া উচিত তা এখানে:
pygame.locals থেকে pygame আমদানি করুন রেজোলিউশন) ক্লাস বল: def _init _ (self, xPos = resolution [0] / 2, yPos = resolution [1] / 2, xVel = 1, yVel = 1, rad = 15): self.x = xPos self.y = yPos self.dx = xVel self.dy = yVel self.radius = rad self.type = "ball" def draw (self, পৃষ্ঠ): pygame.draw.circle (পৃষ্ঠ, কালো, (self.x, self.y), self.radius) def update (self): self.x += self.dx self.y += self.dy যদি (self.x <= 0 অথবা self.x> = resolution [0]): self.dx *= -1 যদি (self.y <= 0 অথবা self.y> = resolution [1]): self.dy *= -1 ক্লাস প্লেয়ার: def _init _ (self, rad = 20): self.x = 0 self.y = 0 self.radius = rad self.type = "player" def draw (self, surface): pygame.draw.circle (সারফেস, লাল, (self.x, self.y), self.radius) def update (self): cord = pygame.mouse.get_pos () self.x = cord [0] self.y = cord [1] class game (): def _init _ (self): pygame.init () self.screen = pygame.display.set_ মোড (রেজোলিউশন) self.clock = pygame.time. Clock () self.gameObjects = self.gameObjects.append (Player ()) self.gameObjects.append (Ball ()) self.gameObjects.append (Ball (100))) def handleEvents (self): pygame.event.get () এ ইভেন্টের জন্য: if event.type == QUIT: pygame.quit () def run (self): while True: self.handleEvents () for gameObj for self.gameObjects: gameObj.update () self.screen.fill (white) for gameObj for self.gameObjects: gameObj.draw (self.screen) self.clock.tick (60) pygame.display.flip () game ()। চালান ()
8 এর অংশ 6: প্লেয়ারের সাথে বস্তু তৈরি করা
ধাপ 1. আপডেট ফাংশন পরিবর্তন করুন।
বস্তুর মিথস্ক্রিয়া করার জন্য, তাদের একে অপরের অ্যাক্সেস থাকতে হবে। আসুন গেমঅবজেক্টের তালিকায় পাস করার জন্য আপডেটে আরেকটি প্যারামিটার যুক্ত করি। আপনি এটি প্লেয়ার বস্তু এবং বল বস্তু উভয় যোগ করতে হবে। যদি আপনার প্রচুর গেম অবজেক্ট থাকে, উত্তরাধিকার আপনাকে আপনার সমস্ত পদ্ধতির স্বাক্ষর একই রাখতে সাহায্য করতে পারে।
ক্লাস বল:… ডিফ আপডেট (স্ব, গেমঅবজেক্টস):… ক্লাস প্লেয়ার:… ডিফ আপডেট (সেলফ, গেমঅবজেক্টস):
পদক্ষেপ 2. প্লেয়ার এবং বলের মধ্যে সংঘর্ষের জন্য পরীক্ষা করুন।
সমস্ত গেম অবজেক্টের মধ্য দিয়ে যান এবং দেখুন যে বস্তুর টাইপ বল। তারপর দুটি বস্তুর রেডিও এবং দূরত্বের সূত্র ব্যবহার করে দেখুন যে তারা সংঘর্ষ করছে কিনা। চেনাশোনাগুলি সত্যিই সংঘর্ষ পরীক্ষা করা সহজ। এটি সবচেয়ে বড় কারণ যে আপনি এই গেমটির জন্য অন্য কোন আকৃতি ব্যবহার করেননি।
ক্লাস প্লেয়ার:…) ** 2 <= (gameObj.radius + self.radius) ** 2:
ধাপ the. খেলোয়াড় যদি "আঘাত" পায় তবে গেমটি শেষ করুন।
আপাতত খেলা ছেড়ে দেওয়া যাক।
যদি (gameObj.x - self.x) ** 2 + (gameObj.y - self.y) ** 2 <= (gameObj.radius + self.radius) ** 2: pygame.quit ()
ধাপ 4. এটি ব্যবহার করে দেখুন
কোডটি এখন কেমন হওয়া উচিত তা এখানে:
pygame.locals থেকে pygame আমদানি করুন * (400, 300) সাদা = (255, 255, 255) কালো = (0, 0, 0) লাল = (255, 0, 0) পর্দা = pygame.display.set_mode (রেজোলিউশন) ক্লাস বল: def _init _ (self, xPos = resolution [0] / 2, yPos = resolution [1] / 2, xVel = 1, yVel = 1, rad = 15): self.x = xPos self.y = yPos self.dx = xVel self.dy = yVel self.radius = rad self.type = "ball" def draw (self, পৃষ্ঠ): pygame.draw.circle (পৃষ্ঠ, কালো, (self.x, self.y), self.radius) def update (self, gameObjects): self.x += self.dx self.y += self.dy যদি (self.x <= 0 অথবা self.x> = resolution [0]): self.dx *= -1 যদি (self.y <= 0 অথবা self.y> = resolution [1]): self.dy *= -1 ক্লাস প্লেয়ার: def _init _ (self, rad = 20): self.x = 0 self.y = 0 self.radius = rad self.type = "প্লেয়ার" ডিফ ড্র (self, সারফেস): pygame.draw.circle (সারফেস, লাল, (self.x, self.y), self.radius) def update (self, gameObjects): cord = pygame.mouse.get_pos () self.x = cord [0] self.y = cord [1] gameObj এর জন্য gameObjects: if gameObj.type == "ball": যদি (gameObj.x - self.x) ** 2 + (gameObj.y - self.y) ** 2 <= (gameObj.radius + self.radius) ** 2: pygame.quit () ক্লাস গেম (): def _init _ (self): pygame.init () self.screen = pygame.display.set_mode (resolution) self.clock = pygame.time. Clock () self.gameObjects = self.gameObjects.append (Player ()) self.gameObjects.append (Ball ()) self.gameObjects.append (Ball (100)) def handleEvents (self): pygame.event.get () এ ইভেন্টের জন্য: () def run (self): while True: self.handleEvents () for gameObj for self.gameObjects: gameObj.update (self.gameObjects) self.screen.fill (white) for gameObj for self.gameObjects: gameObj.draw (self.screen) self.clock.tick (60) pygame.display.flip () game ()। run ()
8 এর অংশ 7: অবজেক্ট তৈরি করতে একটি গেম কন্ট্রোলার যোগ করা
ধাপ 1. একটি গেম কন্ট্রোলার ক্লাস তৈরি করুন।
গেম কন্ট্রোলাররা গেমটি "চালানোর" জন্য দায়ী। এটি আমাদের গেম ক্লাস থেকে আলাদা যা আমাদের সকল বস্তু অঙ্কন এবং আপডেট করার জন্য দায়ী। কন্ট্রোলার পর্যায়ক্রমে স্ক্রিনে আরেকটি বল যোগ করবে যাতে গেমটি আরও কঠিন হয়। একটি কনস্ট্রাক্টর যোগ করুন এবং কিছু মৌলিক মান শুরু করুন। আরেকটি বল যোগ করার আগে ব্যবধান হবে।
ক্লাস গেম কন্ট্রোলার: def _init _ (self, interval = 5): self.inter = interval self.next = pygame.time.get_ticks () + (2 * 1000) self.type = "গেম কন্ট্রোলার"
ধাপ 2. আপডেট ফাংশন যোগ করুন।
এটি একটি বল যোগ করার সময় থেকে বা খেলা শুরুর সময় থেকে কতটা সময় অতিবাহিত হয়েছে তা পরীক্ষা করবে। যদি সময় ব্যবধানের চেয়ে বেশি হয় তবে আপনি সময়টি পুনরায় সেট করবেন এবং একটি বল যুক্ত করবেন।
ক্লাস গেম কন্ট্রোলার:… def আপডেট (self, gameObjects): if self.next <pygame.time.get_ticks (): self.next = pygame.time.get_ticks () + (self.inter * 1000) gameObjects.append (বল ())
ধাপ 3. বলগুলি এলোমেলো গতি দিন।
গেমটিকে প্রতিবার আলাদা করার জন্য আপনাকে এলোমেলো সংখ্যা ব্যবহার করতে হবে। যাইহোক, বলের বেগ এখন পূর্ণসংখ্যার পরিবর্তে একটি ভাসমান বিন্দু সংখ্যা।
ক্লাস গেম কন্ট্রোলার:… def আপডেট (self, gameObjects): if self.next <pygame.time.get_ticks (): self.next = pygame.time.get_ticks () + (self.inter * 1000) gameObjects.append (বল (xVel = এলোমেলো ()*2, yVel = এলোমেলো ()*2))
ধাপ 4. ড্র ফাংশন ঠিক করুন।
ড্র ফাংশন ভাসা গ্রহণ করবে না। বলগুলি আঁকার আগে বলের অবস্থানকে পূর্ণসংখ্যায় রূপান্তরিত করা যাক।
বর্গ বল:…
ধাপ ৫. গেম কন্ট্রোলারের জন্য ড্র পদ্ধতি নির্ধারণ করুন।
যেহেতু এটি একটি গেম বস্তু, তাই মূল লুপ এটি আঁকার চেষ্টা করবে। আপনাকে একটি ড্র ফাংশন সংজ্ঞায়িত করতে হবে যা কিছুই করে না যাতে গেমটি ক্র্যাশ না হয়।
ক্লাস গেম কন্ট্রোলার:… ডিফ ড্র (সেলফ, স্ক্রিন): পাস
ধাপ 6. গেম অবজেক্টে গেম কন্ট্রোলার যোগ করুন এবং 2 টি বল সরান।
গেমটি এখন প্রতি পাঁচ সেকেন্ডে একটি বল তৈরি করতে হবে।
ক্লাস খেলা (): def _init _ (স্ব):… self.gameObjects = self.gameObjects.append (GameController ()) self.gameObjects.append (Player ())
ধাপ 7. এটি ব্যবহার করে দেখুন
কোডটি এখন কেমন হওয়া উচিত তা এখানে:
pygame.locals থেকে এলোমেলো আমদানি র্যান্ডম থেকে আমদানি করুন pygame। display.set_mode (রেজুলেশন) ক্লাস বল: def _init _ (self, xPos = resolution [0] / 2, yPos = resolution [1] / 2, xVel = 1, yVel = 1, rad = 15): self.x = xPos self.y = yPos self.dx = xVel self.dy = yVel self.radius = rad self.type = "ball" def draw (self, পৃষ্ঠ): pygame.draw.circle (পৃষ্ঠ, কালো, x), int (self.y)), self.radius) def update (self, gameObjects): self.x += self.dx self.y += self.dy যদি (self.x <= 0 বা self। x> = রেজুলেশন [0]): self.dx *= -1 যদি (self.y <= 0 অথবা self.y> = resolution [1]): self.dy *= -1 ক্লাস প্লেয়ার: def _init _ (self, rad = 20): self.x = 0 self.y = 0 self.radius = rad self.type = "প্লেয়ার" ডিফ ড্র (স্ব, পৃষ্ঠ): pygame.draw.circle (পৃষ্ঠ, লাল, (self.x, self.y), self.radius) def update (self, gameObjects): cord = pygame.mouse.get_pos () self.x = cord [0] self.y = cord [1] gameObj for game বস্তু: যদি gameObj.type == "ball": if (gameObj.x - self.x) ** 2 + (gameObj.y - self.y) ** 2 <= (gameObj.radius + self.radius)* * 2: pygame.quit () ক্লাস GameController: def _init _ (self, interval = 5): self.inter = interval self.next = pygame.time.get_ticks () + (2 * 1000) self.type = "গেম কন্ট্রোলার "def update (self, gameObjects): if self.next <pygame.time.get_ticks (): self.next = pygame.time.get_ticks () + (self.inter * 1000) gameObjects.append (Ball (xVel = random ()*2, yVel = random ()*2)) def draw (self, screen): pass class game (): def _init _ (self): pygame.init () self.screen = pygame.display.set_mode (resolution)) self.clock = pygame.time. Clock () self.gameObjects = self.gameObjects.append (GameController ()) self.gameObjects.append (Player ()) def handleEvents (self): pygame.event এ ঘটনা.get (): if event.type == QUIT: pygame.quit () def run (self): while True: self.handleEvents () gameObj for self.gameObjects: gameObj.update (self.gameObjects) self.screen । self.gameO তে gameObj এর জন্য (সাদা) পূরণ করুন bjects: gameObj.draw (self.screen) self.clock.tick (60) pygame.display.flip () game ()। run ()
8 এর 8 ম অংশ: একটি স্কোর এবং গেম ওভার যোগ করা
ধাপ 1. গেম কন্ট্রোলার ক্লাসে একটি স্কোর যোগ করুন।
একটি ফন্ট অবজেক্ট এবং একটি স্কোর ভেরিয়েবল তৈরি করুন। স্কোর প্রদর্শন করতে এবং প্রতিটি ফ্রেমে আপডেটে স্কোর বাড়ানোর জন্য আপনি প্রতিটি ফ্রেমে ফন্ট আঁকবেন।
ক্লাস গেম কন্ট্রোলার: def _init _ (self, interval = 5):… self.score = 0 self.scoreText = pygame.font. Font (None, 12) def update (self, gameObjects):… self.score += 1 def draw (স্ব, পর্দা): screen.blit (self.scoreText.render (str (self.score), সত্য, কালো), (5, 5))
ধাপ 2. গেমটি কীভাবে শেষ হয় তা পরিবর্তন করুন।
আসুন খেলোয়াড় সংঘর্ষ সনাক্ত করলে প্রস্থান থেকে মুক্তি পাই। পরিবর্তে আপনি প্লেয়ারে একটি পরিবর্তনশীল সেট করবেন যা গেমটি পরীক্ষা করতে পারে। গেমওভার সেট হয়ে গেলে, অবজেক্ট আপডেট করা বন্ধ করুন। এটি সবকিছু স্থির করে দেবে যাতে খেলোয়াড় দেখতে পারে কি ঘটেছে এবং তাদের স্কোর চেক করুন। লক্ষ্য করুন যে বস্তুগুলি এখনও আঁকা হচ্ছে, কেবল আপডেট করা হয়নি।
ক্লাস প্লেয়ার: def _init _ (self, rad = 20):… self.gameOver = মিথ্যা def update (self, gameObjects):… gameObj এর জন্য gameObjects: if gameObj.type == "ball": if (gameObj.x - self.x) ** 2 + (gameObj.y - self.y) ** 2 <= (gameObj.radius + self.radius) ** 2: self.gameOver = True class game (): def _init _ (self): … Self.gameOver = মিথ্যা def run (self): while True: self.handleEvents () যদি self.gameOver: self.gameObjects এ gameObj এর জন্য: gameObj.update (self.gameObjects) যদি gameObj.type == "প্লেয়ার": self.gameOver = gameObj.gameOver
ধাপ 3. এটি ব্যবহার করে দেখুন
সমাপ্ত কোডটি এখন কেমন হওয়া উচিত তা এখানে:
pygame.locals থেকে এলোমেলো আমদানি র্যান্ডম থেকে আমদানি করুন pygame। display.set_mode (রেজুলেশন) ক্লাস বল: def _init _ (self, xPos = resolution [0] / 2, yPos = resolution [1] / 2, xVel = 1, yVel = 1, rad = 15): self.x = xPos self.y = yPos self.dx = xVel self.dy = yVel self.radius = rad self.type = "ball" def draw (self, পৃষ্ঠ): pygame.draw.circle (পৃষ্ঠ, কালো, x), int (self.y)), self.radius) def update (self, gameObjects): self.x += self.dx self.y += self.dy যদি (self.x <= 0 বা self। x> = রেজুলেশন [0]): self.dx *= -1 যদি (self.y <= 0 অথবা self.y> = resolution [1]): self.dy *= -1 ক্লাস প্লেয়ার: def _init _ (self, rad = 20): self.x = 0 self.y = 0 self.radius = rad self.type = "player" self.gameOver = মিথ্যা ডিফ ড্র (স্ব, পৃষ্ঠ): pygame.draw.circle (পৃষ্ঠ, লাল, (self.x, self.y), self.radius) def update (self, gameObjects): cord = pygame.mouse.get_pos () self.x = cord [0] self.y = cord [1] gameObjs এর জন্য gameObj- এর জন্য: যদি gameObj.type == "ball": if (gameObj.x - self.x) ** 2 + (gameObj.y - self.y) ** 2 <= (gameObj.radius + self.radius) ** 2: self.gameOver = True class GameController: def _init _ (self, interval = 5): self.inter = interval self.next = pygame.time.get_ticks () + (2*1000) self। type = "game controller" self.score = 0 self.scoreText = pygame.font. Font (None, 12) def update (self, gameObjects): if self.next <pygame.time.get_ticks (): self.next = pygame.time.get_ticks () + (self.inter*1000) gameObjects.append (Ball (xVel = random ()*2, yVel = random ()*2)) self.score + = 1 def draw (self, screen): screen.blit (self.scoreText.render (str (self.score), True, black), (5, 5)) class game (): def _init _ (self): pygame.init () self.screen = pygame.display.set_mode (resolution) self.clock = pygame.time. Clock () self.gameObjects = self.gameObjects.append (GameController ()) self.gameObjects.append (Player ()) self.gameOver = মিথ্যা def handleEvents (self): pygame.event.get () এ ইভেন্টের জন্য: যদি ev ent.type == Quit: pygame.quit () def run (self): while True: self.handleEvents () যদি self.gameOver না হয়: self.gameObjects এ gameObj এর জন্য: gameObj.update (self.gameObjects) যদি gameObj। টাইপ == "প্লেয়ার": self.gameOver = gameObj.gameOver self.screen.fill (সাদা) gameObj for self.gameObjects: gameObj.draw (self.screen) self.clock.tick (60) pygame.display.flip () খেলা () রান ()