কম্পিউটার টিউটোরিয়াল

পাইথনে বল ক্যাচিং গেম তৈরি

পাইথন ব্যবহার করে কম্পিউটার গেমও তৈরি করা যায়। এই আর্টিকেলে আমরা দেখব কিভাবে পাইথন ব্যবহার করে বল ক্যাচিং গেম তৈরি করা যায়। এই গেমে একটি বอล ক্যানভাস উইন্ডোর উপরের অংশ থেকে নিচে পড়তে থাকে এবং উইন্ডোর নিচে একটি বার থাকে। বারটিকে বাম এবং ডানে সরানোর জন্য দুটি বাটন দেওয়া থাকে। মাউস বাটন প্রেস করে নিচের বারটিকে সরিয়ে পড়তে থাকা বอลটি ক্যাচ করতে হয়। বอลটি ভিন্ন ভিন্ন সময়ে ভিন্ন ভिन्न পজিশন থেকে পড়ে।

অ্যাপ্রোচ

গেম তৈরির পদ্ধতি নিচের ধাপগুলোতে বর্ণনা করা হলো।

  • ধাপ ১ − একটি টкин্টার রেক্ট্যাঙ্গুলার ক্যানভাস আঁকুন যা গ্রাফিক্স, টেক্সট, ইমেজ ইত্যাদি আরও লে-আউট ধারণ করতে ব্যবহার করা যাবে।

  • ধাপ ২ − উপরে থেকে পড়তে থাকা বอลটি তৈরি করুন। এর জন্য create_oval মেথড ব্যবহার করুন। এটি ওয়াল তৈরি করতে ৪টি কো-অর্ডিনেট নেয় যা বৃত্ত এবং রেক্ট্যাঙ্গুলের মিশ্রণ।

  • ধাপ ৩ − নিচে সরবরাহ করতে থাকা বারটি তৈরি করুন যা মাউস বাটন প্রেস করলে বাম থেকে ডানে 움직িবে। এর জন্য create_rectangle মেথড ব্যবহার করা যায়।

  • ধাপ ৪ − বোল বা বারটি সরানোর জন্য canvas.move মেথড ব্যবহার করুন। এই মেথডটি অবজেক্টের উর্ধ্বমুখী এবং অনুভূমিক দুটোই সরানোর জন্য ব্যবহার হয়।

  • ধাপ ৫ − নিচের বারটি সরানোর জন্য যেসব বাটন ব্যবহার হবে সেগুলো তৈরি করুন। এই বাটনগুলোর সাথে ইভেন্ট জড়িত থাকবে যা বাটন ক্লিক হলে ট্রিগার হবে।

প্রোগ্রাম

নিচে উপরের ধাপগুলোর উপর ভিত্তি করে প্রাসঙ্গিক মেথড এবং অবজেক্ট ব্যবহার করে পুরো প্রোগ্রামটি দেওয়া হলো।

উদাহরণ

# Catching the ball game using Python
from tkinter import Tk, Button, Label
from tkinter import Canvas
from random import randint

base = Tk()
base.title("BALL GAME")
base.resizable(False, False)
color = Canvas(base, width=590, height=610)
color.pack()
standard = 0
length = 5
marks = 0

class model:
    def __init__(self, color, m1, n1, m2, n2):
        self.m1 = m1
        self.n1 = n1
        self.m2 = m2
        self.n2 = n2
        self.color = color
        self.circle = color.create_oval(self.m1, self.n1, self.m2, self.n2, fill="blue", tags='dot1')

    def Game(self):
        offset = 5
        global standard
        if standard >= 510:
            global length, marks, next
            if (length - offset <= self.m1 and
                length + 40 + offset >= self.m2):
                marks += 5
                color.delete('dot1')
                game_play()
            else:
                color.delete('dot1')
                slide.remove(self)
                result()
            return
        standard += 1
        self.color.move(self.circle, 0, 1)
        self.color.after(10, self.Game)

class slide:
    def __init__(self, color, m1, n1, m2, n2):
        self.m1 = m1
        self.n1 = n1
        self.m2 = m2
        self.n2 = n2
        self.color = color
        self.num = color.create_rectangle(self.m1, self.n1, self.m2, self.n2, fill="green", tags='dot2')

    def push(self, num):
        global length
        if (num == 1):
            self.color.move(self.num, 20, 0)
            length += 20
        else:
            self.color.move(self.num, -20, 0)
            length -= 20

    def remove(self):
        color.delete('dot2')

def game_play():
    global standard
    standard = 0
    size = randint(0, 570)
    game1 = model(color, size, 20, size + 30, 50)
    game1.Game()

def result():
    base2 = Tk()
    base2.title("THE BALL GAME")
    base2.resizable(False, False)
    set = Canvas(base2, width=300, height=300)
    set.pack()
    z = Label(set, text="\nGame over\n\nYou have scored = " + str(marks) + "\n\n")
    z.pack()
    btx = Button(set, text="Enter if you want to play again", bg="yellow", command=lambda: repeat(base2))
    btx.pack()
    bty = Button(set, text=" CLOSE ", bg="red", command=lambda: destroy(base2))
    bty.pack()

def repeat(base2):
    base2.destroy()
    function()

def destroy(base2):
    base2.destroy()
    base.destroy()

def function():
    global marks, length
    marks = 0
    length = 0
    x1 = slide(color, 5, 560, 45, 575)
    Bt0 = Button(color, text="move right**", bg="pink", command=lambda: x1.push(1))
    Bt0.place(x=335, y=580)
    Bt1 = Button(color, text="**move left ", bg="pink", command=lambda: x1.push(0))
    Bt1.place(x=260, y=580)
    game_play()
    base.mainloop()

if (__name__ == "__main__"):
    function()

আউটপুট

উপরের কোডটি রান করলে নিচের ফলাফলটি মিলবে −

পাইথনে বল ক্যাচিং গেম তৈরি

  1. পাইথনে Unittest মডিউল ব্যবহার করে ইউনিট টেস্টিং

  2. পাইথনে কনওয়ের গেম অফ লাইফ (Conway's Game of Life)

  3. পাইথনে লিনাক্স টার্মিনালে ফরম্যাটেড টেক্সট প্রিন্ট করা

  4. পাইথন Tkinter-এ কালার গেম তৈরি