PyGame-এ টেক্সট রেন্ডারিং
PyGame-এ টেক্সট দেখানোর জন্য pygame.font.Font বা pygame.font.SysFont ব্যবহার করে ফন্ট অবজেক্ট তৈরি করতে হয়, তারপর render() মেথড দিয়ে সারফেস (Surface) তৈরি করে blit() দিয়ে স্ক্রিনে আঁকাতে হয়।
পূর্ণ কোড উদাহরণ
import pygame
import sys
pygame.init()
# স্ক্রিন ডাইমেনশন
sur_obj = pygame.display.set_mode((300, 200))
pygame.display.set_caption("Text in Pygame")
# রঙ ও ফন্ট
font_color = (0, 150, 250)
# সিস্টেম ফন্ট ব্যবহার (পাথে নির্ভরশীল না)
font_obj = pygame.font.SysFont("segoeui", 25) # বা "arial", "dejavusans"
# টেক্সট রেন্ডার (Anti-aliased = True)
text_obj = font_obj.render("Welcome to Pygame", True, font_color)
# মেইন লুপ
while True:
sur_obj.fill((255, 255, 255)) # সাদা ব্যাকগ্রাউন্ড
sur_obj.blit(text_obj, (22, 0)) # টেক্সট ব্লিট (x=22, y=0)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
pygame.display.update()
প্রধান ধাপগুলো
- ফন্ট লোড:
pygame.font.SysFont(name, size)(সিস্টেম ফন্ট) বাpygame.font.Font(file_path, size)(TTF ফাইল)। - রেন্ডার:
font.render(text, antialias, color, background=None)→ রিটার্ন করে একটিSurface। - ব্লিট:
screen.blit(text_surface, (x, y))→ স্ক্রিনে আঁকে। - আপডেট:
pygame.display.update()বাflip()।
উন্নত টেক্সট হ্যান্ডলিং
# মাল্টি-লাইন টেক্সট
lines = ["Line 1", "Line 2", "Line 3"]
y_offset = 10
for line in lines:
text_surf = font_obj.render(line, True, font_color)
sur_obj.blit(text_surf, (22, y_offset))
y_offset += text_surf.get_height() + 5
# টেক্সট সেন্টারিং
text_rect = text_obj.get_rect(center=(150, 100))
sur_obj.blit(text_obj, text_rect)
সাধারণ সমস্যা ও সমাধান
- ফন্ট না পাওয়া:
SysFontফেইল করলেpygame.font.get_default_font()ব্যবহার করুন। - ইউনিকোড/বাংলা: TTF ফন্ট ফাইল (যেমন NotoSansBengali-Regular.ttf) লোড করুন
Font()দিয়ে। - পারফরম্যান্স: স্ট্যাটিক টেক্সট একবার রেন্ডার করুন, লুপের বাইরে।