Hướng dẫn pygame python - trăn pygame
Chào mọi người! Trong bài hướng dẫn này chúng ta sẽ tìm hiểu về thư viện pygame của python cùng với những yếu tố trong lập trình game. Trong những bài hướng dẫn sau mình sẽ giúp các bạn vận dụng kiến thức cơ bản để tạo ra những game đơn giản để chơi nha! Show Để có thể bắt đầu tìm hiểu pygame, các bạn phải biết python cơ bản kèm theo một tí kiến thức về đồ hoạ. Các bạn nhớ cài thêm thư viện 6 nhé!Cài đặt python và thư viện kèm theo:Cài đặt pythonNếu các bạn chưa cài python click Tại đây để được hướng dẫn. Tại đây để được hướng dẫn.
Trong bài hướng dẫn mình không thể giải thích hết cho các bạn những hàm, lệnh... trong pygame. Vì thế, các bạn cần phải tự tìm hiểu thêm qua google, youtube,... Các bạn cũng có thể lên trang này để tìm hiểu thêm về các hàm, lệnh... trong pygame. Và đây là hướng dẫn lập trình game cho người mới bắt đầu
Trong bài hướng dẫn có những đoạn code, các bạn hãy tự tay gõ vào và chạy thử nhé! Đừng copy code nhé! Tạo cửa sổ gameVòng lặp game
Bắt sự kiện Vẽ hình đơn giản
Trong bài hướng dẫn có những đoạn code, các bạn hãy tự tay gõ vào và chạy thử nhé! Đừng copy code nhé!
Bây giờ chúng ta tìm hiểu 1 ví dụ đơn giản như sau. Mình sẽ giải thích từng dòng cho các bạn, nên hãy yên tâm nha!
Đây là kết quả có được:
Nào, chúng ta hãy tìm hiểu từng dòng code.
Hai dòng trên dùng để khai báo các thư viện cần thiết. Vòng lặp gameBắt sự kiện Vẽ hình đơn giản
Nào, chúng ta hãy tìm hiểu từng dòng code. Hai dòng trên dùng để khai báo các thư viện cần thiết.Dòng trên cần phải có để sử dụng các hàm của pygame, Chỉ cần biết khi dùng pygame thì nhớ thêm dòng này vào. Dòng này dùng để tạo cửa sổ game. Hai số trong tuple (400, 300) chính là chiều rộng và chiều cao của cửa sổ. Đơn vị độ dài hay toạ độ của đối tượng trong pygame là pixel. DISPLAYSURF là 1 biến dạng surface. Surface là gì thì mình sẽ giải thích kĩ ở phần sau nhe. Bây giờ các bạn cứ hiểu đơn giản DISPLAYSURF là cái khung đen đen ấy là được.
Dòng trên dùng để tạo cái tiêu đề thôi! Đây là đoạn khá phức tạp với các bạn mới học lập trình game. Các bạn tập trung đoạn này nhe. Tớ sẽ giải thích đoạn code này trong các phần tiếp theo. Để nói cho dễ hiểu thì các chuyển động trong game cũng giống như trong phim hoạt hình. Tức là để tạo ra các chuyển động thì người ta sẽ “phát” liên tục các hình ảnh. Trong game cũng tương tự thế. Vì vậy, chúng ta cần có một vòng lặp để “vẽ” liên tục những hình ảnh. Vòng lặp 7 trong đoạn code trên chính là vòng lặp game.
Ví dụ, muốn cho một viên bi màu xanh chuyển động từ trái sang phải, phía sau là một nền đỏ thì phải làm như sau:
Vẽ nền đỏ, vẽ viên bi Thay đổi vị trí viên bi (cho sang phải một tí)Lặp lại bước đầu tiên
Trong vòng lặp game còn một phần quan trọng nữa là bắt “sự kiện”. Tiếp theo chúng ta sẽ tìm hiểu về sự kiện nhé! Sự kiện Sự kiện trong game có thể là một cái click chuột, ấn phím….Bây giờ cùng xem lại đoạn code này: 0Dòng code này có tác dụng: Khi click vào nút X trên cửa sổ thì kết thúc game và đóng cửa sổ lại. Dùng biến event trong vòng 8 để lấy các sự kiện xảy ra. Dòng if để kiểm tra sự kiện có phải là “click nút X” hay không. Hai dòng cuối dùng để đóng chương trình.Quay lại ví dụ về viên bi lúc nãy, nếu muốn khi ấn phím space thì viên bi nhảy lên thì phải bắt sự kiện ấn phím space, sau đó code để xử lý cho viên bi nhảy lên.
Tìm hiểu về surfaceNếu các bạn có biết qua photoshop thì chắc hẳn các bạn biết đến khái niệm 6. Surface trong pygame cũng tương tự như thế, nó là một “lớp” ảnh trong suốt. Các surface có thể được vẽ chồng lên nhau. Biến 7 được dùng từ đầu đến giờ là một surface đặc biệt, nó có kích thước bằng cửa sổ game và nằm dưới cùng.Để hiểu rõ về surface, chúng ta hãy đến 1 ví dụ cụ thể: 1Đây là kết quả: Bây giờ tiếp tục nghiên cứu những dòng code thôi! 2Dòng trên dùng để tạo một surface dài 150 pixel và cao 50 pixel. Biến surface2rect đại diện cho surface đó. 3Dòng này dùng để tô màu xanh lá cho surface2rect. 4Dòng trên dùng để vẽ hình chữ nhật màu đỏ lên surface2rect. Cần chú ý là hoành độ và tung độ được tính theo surface2rect chứ không phải tính theo cửa sổ game nhe! 5Hàm 8 dùng để vẽ 1 surface lên 1 surface khác. Cụ thể ở đây là vẽ surface2rect lên DISPLAYSURF. (100, 80) là vị trí để vẽ (tương tự như hoành độ và tung độ hình chữ nhật). Các bạn có thể xem ảnh minh hoạ dưới đây nhé!Chắc sẽ có nhiều bạn nghĩ rằng chỉ cần vẽ 2 hình chữ nhật lên DISPLAYSURF là được rồi, cần gì phải tạo thêm cái surface2rect cho phức tạp. Thực ra, nếu vẽ 2 hình chữ nhật thì nếu muốn di chuyển cái hình đó thì phải thay đổi vị trí của 2 hình chữ nhật, còn nếu có suface2rect thì chỉ cần thay đổi vị trí trong hàm blit là được, nếu vẽ 1 hình càng phức tạp thì nó càng hữu ích đấy. Ngoài ra, việc sử dụng surface còn có nhiều lợi ích khác nữa, các bạn hãy tự tìm hiểu thêm nhe! Tạm kếtBài viết cũng sẽ khá dài rồi. Mình sẽ chia bài hướng dẫn thành nhiều phần để các bạn tiện theo dõi. Chào các bạn và hẹn gặp lại ở những bài hướng dẫn sau. Nếu có thắc mắc gì thì hãy để lại comment ở đây nha các bạn, chúng ta sẽ cùng thảo luận. |