Python cũng có thể được sử dụng để tạo trò chơi máy tính. Trong bài viết này, chúng ta sẽ xem cách tạo trò chơi bắt bóng bằng python. Trong trò chơi này, một quả bóng tiếp tục rơi từ trên cùng của cửa sổ bằng vải canvas và một thanh nằm ở dưới cùng của cửa sổ. Hai nút được cung cấp để di chuyển thanh theo hướng trái và phải. Sử dụng các phím bấm của chuột, chúng ta di chuyển thanh ở phía dưới để đón quả bóng rơi xuống. Vào những thời điểm khác nhau, bóng rơi từ các vị trí khác nhau.
Phương pháp tiếp cận
Cách tiếp cận để xây dựng trò chơi được mô tả trong các bước sau.
-
Bước 1 - Vẽ một canvas hình chữ nhật tkinter có thể được sử dụng để chứa các bố cục khác như đồ họa, văn bản và hình ảnh khác nhau, v.v.
-
Bước 2 - Tạo quả bóng sẽ rơi từ trên xuống. Sử dụng create_oval phương pháp cho nó. Cần 4 tọa độ để tạo một hình bầu dục là hỗn hợp của hình tròn và hình chữ nhật.
-
Bước 3 - Tạo thanh ở dưới cùng sẽ di chuyển từ trái sang phải khi nhấn nút chuột. create_rectangle phương pháp này có thể được sử dụng cho việc này.
-
Bước 4 - Sử dụng canvas.move phương pháp di chuyển bóng hoặc thanh. Phương pháp này được sử dụng cho cả chuyển động dọc và ngang của các đối tượng mà nó được gắn vào.
-
Bước 5 - Tạo các nút sẽ được sử dụng để di chuyển thanh ở dưới cùng. Sẽ có các sự kiện được áp dụng cho nó sẽ kích hoạt khi các nút được nhấp vào.
Chương trình
Dưới đây là chương trình hoàn chỉnh dựa trên các bước trên bằng cách sử dụng các phương thức và đối tượng có liên quan.
Ví dụ
#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()
Đầu ra
Chạy đoạn mã trên cho chúng ta kết quả sau -