icantech
Lập trình Python
5040
10/10/2023

Pygame là gì? Tất cả những gì bạn cần biết về lập trình Pygame trong Python

Pygame là thư viện phát triển trò chơi của ngôn ngữ lập trình Python hay nói cách khác đó là một “cánh cửa” để giúp người dùng tạo ra những tựa game hấp dẫn. Trong bài viết hôm nay, hãy cùng ICANTECH khám phá hành trình thú vị và thỏa sức sáng tạo với những trò chơi nhập vai với lập trình Pygame nhé!

1. Tổng quan về thư viện Pygame trong Python

1.1. Pygame là gì?

Pygame là một thư viện của ngôn ngữ lập trình Python và là một tập hợp các mô-đun Python được thiết kế riêng để lập trình trò chơi. Pygame được viết bởi Pete Shinners thay thế cho chương trình PySDL sau khi quá trình phát triển dự án này bị đình trệ. Chính thức phát hành từ năm 2000, Pygame được phát hành theo phần mềm miễn phí GNU Lesser General Public License.

Pygame có thể chạy trên nhiều nền tảng và hệ điều hành khác nhau. Với thư viện pygame trong Python, các nhà phát triển có thể sử dụng công cụ và chức năng mở rộng để tạo ra các trò chơi nhập vai ấn tượng. Bởi vậy, Pygame đang ngày càng phổ biến với nhà phát triển vì tính đơn giản, linh hoạt, dễ sử dụng.

1.2. Đặc điểm nổi bật của lập trình Pygame

Dưới đây là một số đặc điểm nổi bật của Pygame:

  • Pygame sử dụng Simple DirectMedia Layer (SDL), một thư viện phát triển đa nền tảng cho phép các nhà phát triển có thể truy cập vào phần cứng máy tính như đồ họa, âm thanh và thiết bị đầu vào.
  • Xây dựng các trò chơi trên nhiều nền tảng khác nhau như Windows, Mac, Linux thậm chí là cả các thiết bị di động
  • Nhà phát triển có thể quản lý tất cả các yếu tố trong quá trình phát triển trò chơi. Đó có thể là các chức năng như xuất đồ họa, xử lý sự kiện, hoạt ảnh, hiệu ứng âm thanh và phát lại nhạc
  • Cung cấp nhiều chức năng mở rộng hỗ trợ nhà phát triển tập trung phát triển trò chơi 
  • API trực quan và dễ hiểu, hỗ trợ người mới sử dụng hay cả những nhà phát triển có kinh nghiệm đều có thể truy cập được
  • Nguồn tài nguyên và tài liệu phong phú, các nhà phát triển có thể sử dụng các mã nguồn mở miễn phí để phát triển dự án của mình
  • Tính đa phương tiện giúp nhà phát triển có thể ứng dụng để xử lí hình ảnh hay video, mô phỏng, công cụ giáo dục….


 

vi-du

1.3. Cấu trúc một chương trình Pygame

Một chương trình Pygame sẽ bao gồm các phần sau:

  • Import pygame, sys: Gọi thư viện pygame và thư viện sys
  • Pygame.init: Khởi tạo một chương trình pygame
  • Screen = pygame.display.set_mode ((400,300)): Khởi tạo kích thước màn hình game có ngang là 400, chiều dọc là 300
  • pygame.display.set_caption('Hello World!'): Tiêu đề của chương trình Pygame
  • while True: Vòng lặp vô hạn
  • for event in pygame.event.get(): Vòng lặp bắt các sự kiện của chương trình pygame
  • if event.type == pygame.QUIT:  sự kiện ấn thoát game
  • pygame.quit(): Thoát khỏi chương trình pygame
  • sys.exit(): Thoát khỏi hệ thống

Hệ tọa độ trong Pygame bao gồm:

  • O: Gốc tọa độ nằm ở góc trên bên trái của màn hình game
  • X: Trục X là trục ngang. Hướng từ gốc O sang phải có tọa độ dương, hướng từ gốc O sang trái tọa độ âm
  • Y: Trục Y là trục dọc. Hướng từ gốc O trên xuống dưới có tọa độ dương, hướng từ gốc O lên trên có tọa độ âm
he-toa-do

Trong trường hợp muốn đổi màu nền của màn hình Python bạn thực hiện theo hướng dẫn dưới đây:

thay-mau-nen

2. Cách cài thư viện Pygame trong Python

Để cài đặt thư viện Pygame trong Python bạn thực hiện theo các bước dưới đây:

  • Bước 1: Trước khi cài đặt thư viện Pygame trong Python, hãy đảm bảo rằng bạn đã cài Python trên máy tính của mình. Sau đó truy cập Python.org và tải xuống phiên bản tương thích với hệ điều hành của mình.
  • Bước 2: Chạy file “Python-version” trong terminal 
  • Bước 3: Để cài đặt lập trình Pygame, bạn cần sử dụng trình quản lý gói pip (thường đi xem với các bản cài đặt Python). Chạy thiết bị đầu cuối và thực hiện lệnh “pip install pygame”. Lệnh sẽ tải xuống và cài đặt phiên bản Pygame mới nhất từ Python Package Index (PyPI)
  • Bước 4: Tạo một file mới bằng Python và nhập mô-đun Pygame bằng cách thêm dòng “Nhập pygame”, lưu tập có đuôi “.py” và bắt đầu trải nghiệm thư viện Pygame

3. Các thành phần cấu tạo nên Pygame

Việc nắm được các thành phần chính của Pygame sẽ giúp bạn tận dụng và lập trình game với Pygame dễ dàng hơn. Bên cạnh đó, làm quen với mô-đun của Pygame, hoạ tiết, bề mặt, xử lí sự kiện, âm thanh, âm nhạc sẽ giúp bạn nắm được các công cụ cần thiết để lập trình game bằng Pygame Python và tạo ra các trò chơi hấp dẫn.

Dưới đây là các thành phần cấu tạo nên Pygame:

  • Pygame Module (Mô-đun Pygame): Đóng vai trò là khối xây dựng để giúp phát triển từng bước tạo ra trò chơi. Mô-đun hỗ trợ nhà phát triển các tác vụ như quản lý cửa sổ trò chơi, xử lý sự kiện và hiển thị đồ họa màn hình. Bằng cách kết hợp mô-đun Pygame vào code của mình, nhà phát triển sẽ tận dụng được tối đa tính năng này
  • Display Surface (Bề mặt hiển thị): Đóng vai trò rất lớn trong Pygame vì đây là nơi trò chơi của nhà phát triển hiển thị. Màn hình sẽ hiển thị lần lượt các đối tượng, hình ảnh, hoạt ảnh cũng như môi trường đồ hoạ trong trò chơi. Với chức năng này, nhà phát triển cũng có thể điều chỉnh kích thước, tiêu đề và các thuộc tính theo ý muốn của mình.
  • Sprites (Nhân vật): Là một trong những yếu tố thiết yếu để phát triển trò chơi. Nhân vật sẽ đại diện cho thực thể trong thế giới trò chơi. Thư viện Pygame đơn giản hoá việc quản lý các nhân vật bằng cách cung cấp các nhân vật có sẵn được hiển thị trên màn hình. Pygame cũng cung cấp chức năng để nhà phát triển phát hiện được những xung đột giữa tương tác nhân vật và các hoạ tiết được thêm vào
  • Surface (Bề mặt): Các bề mặt trong Pygame là bơi hiển thị đồ hoạ như hình ảnh, văn bản… Với thư viện Pygame, nhà phát triển có thể tùy ý tải lên các hình ảnh khác nhau
  • Event Handling (Xử lí sự kiện): Thao tác này được Pygame đơn giản hóa bằng quá trình phát hiện và phản hồi các tương tác của người dùng. Bằng việc sử dụng mô-đun sự kiện do Pygame cung cấp, nhà phát triển có thể nắm bắt các sự kiện như nhấn phím, nhấp chuột và thay đổi kích thước cửa sổ. Chức năng này cho phép nhà phát triển tạo các trò chơi tương tác phản hồi linh hoạt, tạo điều kiện thuận lợi cho việc triển khai trò chơi và giao diện người dùng
  • Sound and Music (Âm thanh và Âm nhạc): Đây là hai thành tố không thể thiếu trong trò chơi, Pygame cung cấp các chức năng để nhà điều khiển có thể tự mình tạo ra các âm thanh cho trò chơi của mình. Bên cạnh đó, mô-đun trộn trong Pygame còn cho phép nhà phát triển tải và phát hiệu ứng âm thanh, nhạc nền, điều chỉnh âm lượng… để giúp trò chơi sống động hơn
  • Collision Detection (Phát hiện va chạm): Đây là một trong những khía cạnh quan trọng trong quá trình phát triển trò chơi. Pygame cung cấp cơ chế tích hợp để phát hiện va chạm giữa các họa tiết và các đối tượng bằng việc sử dụng tính năng phát hiện va chạm, nhà điều khiển có thể phát hiện và phản hồi các va chạm, triển khai cơ chế chơi trò chơi như tính điểm và tạo tương tác thực tế giữa với các nhân vật trong thế giới của mình

Việc liên tục tìm hiểu và ứng dụng các thành phần trong Pygame giúp nhà phát triển tối ưu được toàn bộ tính năng trong thư viện Pygame và ứng dụng biến những ý tưởng trò chơi thành hiện thực.

4. Tại sao nên học Pygame?

4.1. Tính thân thiện

Pygame thân thiện với các nhà phát triển ở mọi lứa tuổi khác nhau, kể cả người lớn lẫn trẻ em. Bên cạnh việc phát triển game trên nền tảng này, các nhà phát triển có thể tham khảo các mã nguồn mở miễn phí đến từ các lập trình viên trên toàn thế giới bằng cách truy cập vào Python Package Index (PyPI, kho phần mềm được phát triển bởi những người dùng Python khác).

Tại đây, các nhà phát triển có thể tham khảo trò chơi mẫu, các câu lệnh trong Pygame, code mẫu…. và tiến hành tải xuống và sử dụng cho trò chơi của mình với bằng cách sử dụng tiện ích trong thư viện GUI. 

Pygame là một thư viện phát triển trò chơi của ngôn ngữ Python mà các nhà phát triển hoàn toàn có quyền kiểm soát những gì hiển thị trên màn hình và có thể chọn kiểu nhập liệu người dùng ưa thích. Chơi trò chơi do chính mình tạo ra thông qua việc điều khiển phím mũi tên, cần điều khiển chuột. Với những tính năng này, bạn có thể phát triển nhiều loại trò chơi trên Pygame. 

4.2. Tham gia cộng đồng game lớn nhất thế giới

Tại Pygame, nhà phát triển có thể tạo trò chơi của mình thông qua mã nguồn mở, phần mềm miễn phí, phần mềm chia sẻ… Bởi vậy, các nhà phát triển không chỉ truy cập vào các chương trình do các lập trình viên khác viết mà còn có thể xuất bản dự án của mình sáng tạo trên Pygame với mục đích thương mại.

Trên thực tế, nhiều trò chơi được tạo ra từ thư viện Pygame đã được sử dụng cho mục đích thương mại và được vinh danh tại các sự kiện trò chơi trên thế giới - những dự án này còn được biết đến với tên gọi là “Sundance”.

5. Hướng dẫn lập trình trò chơi Rắn săn mồi bằng cách sử dụng Pygame

5.1. Mô tả trò chơi Rắn săn mồi

Để lập trình trò chơi Rắn săn mồi bằng cách sử dụng Pygame, hãy cùng ICANTECH phân tích trò chơi này như sau:

  • Ban đầu trên màn hình sẽ hiển thị một con rắn rất nhỏ (ngắn)
  • Con rắn này sẽ đi săn mồi
  • Mỗi lần con rắn ăn một miếng mồi thì rắn sẽ dài thêm một lượng nhất định
  • Trong trường hợp rắn tự cắn hoặc đâm vào biên thì trò chơi sẽ kết thúc

5.2. Các bước lập trình trò chơi Rắn săn mồi bằng cách sử dụng Pygame

Với các phân tích như trên, để lập trình trò chơi Rắn săn mồi chúng ta sẽ cần thực hiện các bước như sau:

  • Khởi tạo màn hình trò chơi.
  • Tạo rắn 
  • Tạo chuyển động của rắn
  • Thêm con mồi
  • Tăng độ dài con rắn khi ăn được mồi
  • Sự kiện rắn đâm vào biên và hiện thông báo
  • Sự kiện con rắn cắn vào đuôi và hiện thông báo
  • Ghi nhận điểm số

5.2.1. Khởi tạo màn hình trò chơi

Ở bước khởi màn hình, chúng ta sẽ lần lượt khai báo các thư viện cần thiết cho trò chơi: pygame, sys và random theo:

  • Định nghĩa về các màu sắc sẽ dùng trong trò chơi
  • Khởi tạo chương trình pygame, thêm thông số kích thước màn hình, tiêu đề trò chơi
  • Hiển thị màn hình trò chơi

Với các phân tích như vậy, chúng ta sẽ sử dụng các hàm trong Pygame theo ảnh dưới đây: 

khoi-tao-man-hinh-tro-choi

5.2.2. Lập trình tạo rắn

Thực tế con rắn là nhiều hình vuông ghép lại với nhau. Để vẽ các hình vuông trong Pygame, chúng ta sử dụng lệnh vẽ hình chữ nhật pygame.draw.rect() với chiều dài và chiều rộng bằng nhau. 

Mỗi hình vuông thể hiện là một khúc của con rắn có kích thước là 10x10 và các khúc của con rắn là 10x10 nên các tọa độ bắt đầu vẽ các khúc của rắn sẽ là bội của 10.

Tiếp theo, ICANTECH sẽ tiến hành khai báo 2 biến toàn cục xác định toạ độ x và tọa độ y bắt đầu của con rắn (đầu rắn) và tiến hành khai báo tiếp biến toàn cục xác định độ dài một khúc (hình vuông) của rắn.

Với các phân tích như vậy, chúng ta sẽ sử dụng các câu lệnh trong Pygame theo ảnh dưới đây: 

lap-trinh-tao-ran

5.2.3. Tạo chuyển động của rắn

Để di chuyển rắn, ICANTECH sẽ lần lượt cần tạo ra các sự kiện KEYDOWN của Pygame. Các sự kiện được sử dụng ở đây là K_UP, K_DOWN, K_LEFT và K_RIGHT tương ứng với các mũi tên trên bàn phím di chuyển lên, xuống, trái và phải của rắn.

Như vậy, chúng ta sẽ sử dụng các câu lệnh sau:

chuyen-dong

Tiếp theo, chúng ta sẽ khai báo hai biến mới là x_head_change và y_head_change để xác định sự thay đổi của đầu rắn. 

Ví dụ tọa độ đầu di chuyển sang phải thì tọa độ x tăng 1 lượng là 10 tọa độ y sẽ không thay đổi, di chuyển xuống dưới thì tọa độ x không thay đổi tọa độ y tăng 1 lượng là 10.

Cuối cùng, ICANTECH tiến hành khai báo và cài đặt số lượng khung hình (FPS) trong một giây.

chuyen-dong

5.2.4. Thêm con mồi

Con mồi sẽ xuất hiện ngẫu nhiên trên màn hình hiển thị trò chơi. Vì mỗi bước đi của con rắn là 10 nên con mồi sẽ xuất hiện ở những vị trí có tọa độ là bội của 10.

them-con-moi

Để con mồi xuất hiện ngẫu nhiên chúng ta dùng thư viện random lấy tọa độ x, y. Sau khi lấy được tọa độ x, y tiến hành tính toán làm tròn sao cho tọa độ x, y là bội của 10.

them-con-moi

5.2.5. Tăng độ dài rắn khi ăn được mồi

Để tăng độ dài của rắn khi ăn được mồi bạn lần lượt thực hiện khai báo một biến lưu dữ liệu độ dài của con rắn và một danh sách lưu tọa độ các khúc của con rắn.

lap-trinh-do-dai

Tiếp theo, bạn tiến hành khai báo danh sách lưu toạ độ của đầu rắn và lần lượt  Xây dựng một hàm để vẽ con rắn lên màn hình game.

lap-trinh-tang-do-dai

Trong trường hợp rắn chạm vào con mồi thì sẽ tạo một con mồi khác ở vị trí mới.

lap-trinh-tang-do-dai

5.2.6. Sự kiện rắn đâm vào biên và hiện thông báo

Khi rắn đâm vào biên, chúng ta sẽ thực hiện các bước sau đây:

  • Khai báo font chữ Arial.
  • Định nghĩa hàm hiển thị thông báo

ran-dam-vao-bien

  • Khai báo biến xác định thua game
  • Khi thua game bấm phím cách để chơi lại
bien-xac-dinh-thua-game

5.2.7. Sự kiện con rắn cắn vào đuôi và hiện thông báo

Khi rắn cắn vào thân hoặc đuôi thì gán biến game_close = True để dừng game lại.

ran-can-vao-duoi

5.2.8. Ghi nhận điểm số

Ở bước cuối cùng, bạn lần lượt xây dựng các hàm trong Pygame và hiển thị điểm số đạt được lên màn hình.

Số điểm mà người chơi đạt được chính là độ dài của rắn. Như vậy, chúng ta sẽ sử dụng các câu lệnh sau:

ghi-nhan-diem-so

6. Lời Kết

Như vậy, ICANTECH - nền tảng học lập trình online cùng bạn khám phá thư viện Pygame cũng như các kiến thức, đặc điểm, cấu trúc của lập trình Pygame. Hi vọng với những kiến thức được ICANTECH chia sẻ bạn đã có thể ứng dụng và phát triển những trò chơi của riêng mình tại Pygame. Bắt đầu hành trình chinh phục Pygame ngay hôm nay bạn nhé!

Nguồn ảnh: ICANTECH.

Share
Tags
Lập trình Python

Bài tương tự