SỞ GIÁO DỤC VÀ ĐÀO TẠO NGHỆ AN TRƯỜNG THPT ĐẶNG THAI MAI TRƯỜNG THPT ĐẶNG THÚC HỨA SỬ DỤNG LẬP TRÌNH GAME ĐỂ MINH HỌA TRÒ CHƠI ĐƠN GIẢN TẠO HỨNG THÚ CHO HỌC SINH HỌC MÔN TIN 11 Lĩnh vự
Trang 1
ĐỀ TÀI:
SỬ DỤNG LẬP TRÌNH GAME ĐỂ MINH HỌA TRÒ CHƠI ĐƠN GIẢN
TẠO HỨNG THÚ CHO HỌC SINH HỌC MÔN TIN 11
Tháng 4, năm 2022
Trang 2SỞ GIÁO DỤC VÀ ĐÀO TẠO NGHỆ AN TRƯỜNG THPT ĐẶNG THAI MAI TRƯỜNG THPT ĐẶNG THÚC HỨA
SỬ DỤNG LẬP TRÌNH GAME ĐỂ MINH HỌA TRÒ CHƠI ĐƠN GIẢN
TẠO HỨNG THÚ CHO HỌC SINH HỌC MÔN TIN 11 Lĩnh vực: Tin học
Nhóm tác giả:
1 Tô Thị Linh – Trường THPT Đặng Thai Mai
2 Lê Thị Vinh – Trường THPT Đặng Thúc Hứa Điện thoại: 0369.530.798 – 0363.063.491
Tháng 4, năm 2022
Trang 3PHỤ LỤC
PHẦN I ĐẶT VẤN ĐỀ 5
PHẦN II NỘI DUNG NGHIÊN CỨU 6
2.1 Mục đích nghiên cứu 6
2.2 Nhiệm vụ nghiên cứu 6
2.3 Phương pháp nghiên cứu 6
2.3.1 Nghiên cứu lý thuyết (Cơ sở khoa học) 6
2.3.3 Các ngôn ngữ lập trình game được sử dụng phổ biến nhất hiện nay 8
2.3.4 Ưu và nhược điểm của các ngôn ngữ lập trình 9
2.3.5 Lập trình game sử dụng ngôn ngữ Python 13
2.3.6 Một số game được lập trình bằng python 14
2.4 Thực nghiệm 15
2.4.1 Quy trình xây dựng tạo game chú chim bay lượn Flappy Bird 15
2.4.2 Quy trình xây dựng và thiết kế trò chơi rắn săn mồi Snaker 22
2.4.3 Quy trình xây dựng đấm giấy kéo Rock Paper Scissors 31
2.5 Kết quả thực nghiệm 38
PHẦN III KẾT LUẬN VÀ KIẾN NGHỊ 41
3.1 Quy trình nghiên cứu 41
3.2 Ý nghĩa của đề tài: 41
3.3 Đề xuất: 42
DANH MỤC CÁC TÀI LIỆU THAM KHẢO 44
Trang 5PHẦN I ĐẶT VẤN ĐỀ
Với sự phát triển của công nghệ, học sinh càng có nhiều cơ hội trong các hoạt động giải trí, trong đó các trò chơi thường có sức hấp dẫn lạ kỳ đối với lứa tuổi học sinh, trò chơi điện tử trở thành tâm điểm chú ý của mọi thế hệ trẻ, độ tuổi ham học hỏi thích sự sáng tạo, tìm tòi, khám phá cao Nhiều người thường nghĩ chơi game
là một hình thức giải trí vô bổ, tiêu tốn thời gian và ảnh hưởng tiêu cực tới sức khỏe Tuy nhiên, xét về khía cạnh khoa học, chơi game một cách hợp lý có thể giúp bạn xả stress, kích thích phát triển trí não, phát triển kỹ năng giải quyết vấn đề
Chúng tôi công tác và giảng dạy cũng hơn 12 năm, nhận thấy khi học lập trình học sinh thường không thích thú với môn Tin học, với nhiều lí do như: Khó hiểu, khô khan, đòi hỏi tư duy nhiều, các thuật ngữ bằng tiếng anh và nội dung liên quan đến toán học cũng là vấn đề đó, khó khăn làm cho HS học lập trình trở nên không hứng thú,… Do đó để học tốt đòi hỏi học sinh phải có hứng thú, đặc biệt với học sinh giỏi môn Tin học cần có sự đam mê, tìm tòi, yêu thích, học hỏi mới có thể gắn
bó, theo học lâu dài môn học lập trình
Cùng với các môn học khác trong nhà trường, Tin học là môn ứng dụng và khoa học thực nghiệm với phương pháp nghiên cứu chủ yếu là lý thuyết gắn với thực hành Vì vậy trong giờ dạy Tin học nếu GV không tìm cách tổ chức hay minh họa một giờ dạy học sao cho hợp lý, sinh động, hấp dẫn thì rất khó lôi cuốn học sinh, giờ học sẽ tẻ nhạt, khô khan
Để giờ dạy - học Tin học đạt kết quả tốt hơn, gây được hứng thú học tập và phát huy được tính tích cực của học sinh, GV cần phải thường xuyên đổi mới phương pháp dạy học và hình thức tổ chức các hoạt động dạy học Một trong những hình thức dạy học đem lại hiệu quả cao là kết hợp tổ chức/ giới thiệu các trò chơi trong giờ dạy Tin học
Từ những lý do trên chúng tôi mạnh dạn đề xuất đề tài “Sử dụng lập trình game để minh hoạ trò chơi đơn giản tạo hứng thú cho học sinh học môn tin 11”
Muốn giới thiệu kinh nghiệm bản thân trong việc tạo hứng thú cho học sinh học lập trình, một khi đã có hứng thú kết hợp với phương pháp, công cụ lập trình Python, tạo ra các game đơn giản minh hoạ cho học sinh trong quá trình học chắc chắn các em sẽ yêu thích lập trình và học tốt môn này
Trang 6PHẦN II NỘI DUNG NGHIÊN CỨU 2.1 Mục đích nghiên cứu
- Hướng dẫn quy trình thiết kế game, xây dựng và mô phỏng các trò chơi đơn giản trong dạy học lập trình câu lệnh rẽ nhánh và cấu trúc lặp trong chương trình THPT môn Tin học
- Rèn tư duy nhanh nhạy, kỹ năng quan sát, phân tích tổng hợp, khái quát hóa kiến thức, phát triển năng khiếu và óc phán đoán của học sinh
- Thực hiện và vận dụng được yêu cầu đổi mới phương pháp dạy học hiện nay
GV đóng vai trò là người tổ chức, hướng dẫn, điều khiển hoạt động của HS còn học sinh
là đối tượng tham gia trực tiếp, linh hoạt, chủ động, sáng tạo trong các hoạt động học tập của mình tạo ra tính tò mò, không khí phấn khởi, hào hứng trong giờ học
2.2 Nhiệm vụ nghiên cứu
- Xác định cơ sở lý luận của các câu lệnh trong ngôn ngữ lập trình Python
- Một số ngôn ngữ lập trình game mạnh nhất hiện nay
- Phương pháp thiết kế và lập trình game ứng dụng câu lệnh của Python
- Tiến hành thống kê chất lượng dạy học và thi HSG của học sinh và áp dụng dạy học thực nghiệm từ đó rút ra được hiệu quả và kết luận việc áp dụng minh họa game trong dạy học Tin học
2.3 Phương pháp nghiên cứu
2.3.1 Nghiên cứu lý thuyết (Cơ sở khoa học)
Giới thiệu về game
Game là một trò chơi sử dụng các thiết bị điện tử để tạo ra một hệ thống tương tác mà người chơi có thể chơi Về cơ bản game là 1 vòng lặp vô hạn với các chức năng sau:
- Hiển thị: Đã là game thì hiển thị không thể thiếu, lúc đầu chỉ làm cho phần
hiển thị thật đơn giản, đừng quá chú tâm vào việc làm sao cho thật đẹp, chỉ làm tượng trưng thôi, khi nào game hoàn thiện cơ bản thì hãy chú tâm đến phần đẹp, việc đầu tiên là game phải chạy được đã
- Nhận lệnh từ người chơi, điều khiển: Khi đã hiển thị được các phần của
game ra màn hình thì tiếp theo việc cần làm là điều khiển, việc điều khiển được xem là phần khó nhất và quan trọng nhất của game, ở bước này muốn game của mình hay, hấp dẫn thì việc ứng dụng các kiến thức toán học, vật lí, là không thể thiếu Ví dụ: ứng dụng tốc độ rơi tự do trong game khủng long lúc rớt mạng mà các bạn vẫn quen thuộc, phương trình chuyển động của các nhân vật trong game,
Trang 7- Xử lí: Đây là 1 bước để tăng thêm độ hấp dẫn các game lập trình, phần này sẽ
thiết lập 1 số các chức năng, vật phẩm (item), xử lí các trường hợp có thể xảy ra,
- Win, lose: lập trình game về cơ bản là 1 vòng lặp vô hạn, để xử lí việc thắng
hay thua game thì chỉ việc thoát vòng lặp game và thực hiện các chức năng khác
Tìm hiểu về lập trình game
- Lập trình game là xây dựng, thiết kế và phát triển game phục vụ người chơi
Nó là công việc phát triển và tạo ra tất cả các khía cạnh sáng tạo của game (trò chơi điện tử) trên nhiều nền tảng như máy tính, điện thoại di động,…nhằm tạo ra code để làm mọi hoạt động trong trò chơi Trực tiếp nhận tương tác từ bên ngoài bằng những phím điều khiển và gamepad đến hiển thị màn hình
Các ngôn ngữ có thể sử dụng để lập trình game là: Python, C, C++, C#, Java,
- Các công việc cụ thể của lập trình game
Viết ra ý tưởng, xây dựng câu chuyện cho trò chơi, đưa ra nhân vật và các tính cách trong game
Lên kịch bản chi tiết cho các tình huống trong game
Xác định cách thức game sẽ hoạt động, lên kế hoạch về các cấp độ game
Thiết kế bố cục của trò chơi, thiết kế tạo hình nhân vật và bối cảnh game (phối hợp với designer)
Lập trình bằng cách tạo mã, chỉnh sửa mã, kết hợp tính nghệ thuật vào trò chơi, tối ưu truy cập trực tuyến và tạo danh mục (menu) cho trò chơi Game Developer cũng có thể thực hiện nhiệm vụ kiểm tra game dưới vai trò của một GM (Game master) Nhiệm vụ của họ là kiểm tra và khắc phục sự cố chức năng của trò chơi mà họ đang xây dựng Họ có thể tự phát hiện ra các lỗi hoặc được người chơi thông báo và sửa chúng
2.3.2 Cơ sở thực tiễn
Hội nhập kinh tế quốc tế đòi hỏi về mặt con người khá toàn diện, ngoài trình
độ chuyên môn đòi hỏi người Việt Nam còn phải sử dụng thành thạo máy vi tính, cập nhật công nghệ thông tin, nói thông viết thạo một số ngoại ngữ… Hiện nay một số bộ phận thanh thiếu niên có dấu hiệu thờ ơ và thiếu nghiêm túc trong việc học Tin học và cập nhật công nghệ thông tin dẫn đến trong quá trình phát triển kém, trong quan hệ cộng đồng khó khăn, thiếu niềm tin trong cuộc sống, ý chí hội nhập phát triển kém, không còn tính tự chủ dễ bị tụt hậu so với xã hội
Những năm gần đây Tin học được đưa vào trường trung học phổ thông trong phạm vi cả nước, là môn học bắt buộc Khi mới làm quen với Tin học các em tỏ ra rất hào hứng vì đây là một môn học khá mới mẻ, hiện đại và mang tính thực tế cao Tuy nhiên sau một thời gian khi kiến thức đã khó hơn, nhất là kiến thức về lập trình thì học sinh lại có thái độ thờ ơ trong học tập cũng như vận dụng Tin học vào
Trang 8thực tế Đặc biệt đối với học sinh trung học phổ thông thường chỉ chú tâm và nổ lực học tập các môn khối để ôn thi trung học phổ thông quốc gia nên vai trò của môn Tin học trong các em rất mờ nhạt Bên cạnh đó, cơ sở vật chất phục vụ cho việc giảng dạy cho môn Tin ở các trường đang còn chưa đáp ứng, đặc biệt là phòng máy thực hành cho học sinh Các em đang còn phải ngồi rất chật chội, thậm chí 3-4 học sinh/ 1 máy tính.Vì vậy, để tạo hứng thú, sự yêu thích, đam mê học Tin học cho học sinh là một vấn đề rất khó khăn
2.3.3 Các ngôn ngữ lập trình game được sử dụng phổ biến nhất hiện nay
Game là một nền công nghiệp hot nhất hiện nay với rất nhiều tựa game và thể loại game Để lập trình game cũng có rất nhiều ngôn ngữ lập trình nhưng phổ biến
và mạnh nhất hiện nay gồm Python, C++, C#, Java, JavaScript, Objective-C, Lua,…tuy nhiên vì đề tài có hạn nên chúng tối chỉ giới thiệu một số loại sau
Ngôn ngữ lập trình C#
C# là ngôn ngữ hướng đối tượng Ngôn ngữ này nếu chưa học căn bản thì có thể rất khó với các học sinh, sinh viên Nếu đã học C, C++ rồi thì học C# dễ chứ không đến nối khó Nhưng khi học được ngôn ngữ này thì sẽ được một mũi tên trúng 3 đích hơn cả C++ bao gồm website, app, và game Nếu dùng C# làm Ngôn Ngữ Lập Trình Game thì có những Engine sau đây hỗ trợ nó:
Unity: hỗ trợ rất tốt không có điểm yếu
Godot: Support vẫn khá còn yếu
CryEngine: Đây là Engine được built từ c++ và nó hỗ trợ C#, Lua
WaveEngine: Đây là Engine mà được tạo ra dựa trên C# cho phép bạn tạo game đa nên tảng
Các game nổi tiếng lập trình bằng C#: lag Pokemon Go và Super Mario Run
Ngôn ngữ lập trình Python
Được tạo ra vào năm 1991 bởi một người đàn ông tên là Guido van Rossum, Python là ngôn ngữ lập trình có mục đích chung (general-purpose programming), nhấn mạnh tính năng hàng đầu của nó là dễ đọc
Ngay từ những ngày đầu phát triển, Python đã được sử dụng đơn giản nhất có thể Sự đơn giản thực sự là những gì nó được biết đến - Python sử dụng một lượng khoảng trắng dồi dào để làm cho mã code dễ đọc, do đó giúp cho việc trải nghiệm, học tập đơn giản và dễ chịu hơn
Python đây thật sự là 1 Ngôn Ngữ Lập Trình Game dễ hơn các ngôn ngữ lập trình khác Python được ứng dụng trong game tương đối đa số là Engine game Python cũng được đánh giá khá cao trên bảng xếp hạng Với Engine hỗ trợ thì có:
Trang 9- Godot Engine: luôn hỗ trợ như C# – Unity Ngôn ngữ riêng của Engine này
sử dụng GDScript dựa trên Python và Lua Hầu hết là Python, Lua chiếm khá là ít Support 2D & 2.5D & 3D
- Cocos2D Engine: Support giống Godot
- Panda3D: tương tự C## (3D)
- Pygame: làm game ổn định
Với cấu trúc đơn giản, không quá chú trọng về cú pháp mà tập trung vào sức sáng tạo chức năng câu lệnh của người viết nên Python rất phù hợp với người mới bắt đầu học lập trình Các trò chơi phổ biến bao gồm: Snake rắn săn mồi, Tetris, Space Invader, Sudoku, Tom Clancy’s Politika hoặc Roboforge, Disney’s Toontown Online,
Ngôn ngữ lập trình C++
Ngày nay, hầu hết các game “chuyên nghiệp” được viết trên nền tảng C++ (game engine) C++ là một ngôn ngữ "hướng đối tượng" Lập trình hướng đối tượng (OOP) là một chủ đề rất rộng vượt ra ngoài phạm vi của đề tài này, C++ là nơi tất cả các hành động có thể thực hiện và xử lý được tổ chức thành một danh sách lớn gọi là các "hàm", lập trình hướng đối tượng cung cấp một cách để cấu trúc tất cả những hành động và quá trình thành một hệ thống các"classes" với các dữ liệu và các hàm liên quan chặt chẽ với nhau
C++ được dùng để tạo ra rất nhiều game như caro nổi tiếng trên thế giới như World of Warcraft, Diablo series, StarCraft series, Doom 3, Team Fortress 2, Counter-Strike, Warcraft III, Football Pro, Master of Orion III… Và tất nhiên cũng
có rất nhiều engine game sử dụng C++ để phát triển như Unreal Engine, Coscos2dx framework,
Tuy nhiên với đề tài có hạn, chúng tôi chỉ giới thiệu một số game phổ biến phù hợp với lứa tuổi học sinh và liên quan đến câu lệnh và cấu trúc lặp đơn giản,
dễ học, dễ nhớ
2.3.4 Ưu và nhược điểm của các ngôn ngữ lập trình
Để tìm ngôn ngữ phù hợp cho các bạn học sinh ta tìm ưu điểm và nhược điểm của các ngôn ngữ lập trình này nhé
Python với C++
Ưu điểm:
- C++ tạo đồ họa lõi cứng và các game nặng, hiệu năng tức tốc độ nhanh hơn, phát triển trò chơi chiếm ưu thế, linh hoạt hơn C++ cũng có thể học máy nhưng không tốt bằng
- Python có cú pháp đơn giản hơn, mã code dễ đọc, phù hợp với người mới bắt đầu dễ học dễ hiểu, python coi phần cuối là của dòng là phần cuối của câu lệnh
Trang 10Python là ngôn ngữ hàng đầu về phân tích dữ liệu và học máy
- Phát triển trò chơi thì python phù hợp cho người mới bắt đầu như HS, còn C++ phù hợp cho chuyên nghiệp hơn dành cho chuyên da
Nhược điểm:
- C++ Cú pháp phức tạp đòi hỏi phải suy ngấm ở chỗ C, C++ đều sử dụng dấu ngoặc nhọn và dấu chấm phẩy, còn Python sử dụng sự thụt lề Một tính năng khác quan trong của python nó là ngôn ngữ được dịch.C++ dành cho những người
có kinh nghiệm nó nhanh hơn và tích hợp với framewwork.net trên nền tảng microshoft word
- Python thường chậm hơn do giải mã code
Ví dụ: đoạn code in ra lời chào “xin chao Hoan”
Ưu điểm của Python so với C#
- Python có nhiều lợi thế hơn trong việc phát triển dự án, chẳng hạn như tốc độ tương đối nhanh và dễ dàng hơn Còn C# cần nhiều bước build và biên dịch không cần thiết
- Đối lập với C# vốn dĩ chỉ nằm trong vũ trụ Microsoft (mãi đến năm 2017 mới thực sự trở thành ngôn ngữ mã nguồn mở), thì Python lại có tất cả những điều đó
và trở nên nổi tiếng với người dùng chỉ sau vài ngày ra mắt Bên cạnh đó, Python cũng có cộng đồng lập trình viên lớn hơn rất nhiều so với C#, với số lượng người đóng góp lớn thứ 3 trên Github trong khi với C# lại chỉ đứng thứ 8
- Không giống với C# dựa trên 100% concept OOP, thì Python còn hỗ trợ thêm nhiều mô hình lập trình khác nữa như (lập trình thủ tục, lập trình hàm, v.v…)
- Có thể được tích hợp với các ngôn ngữ khác Java (JVM), NET, C và cả Javascript trong khi C# chỉ có thể được hỗ trợ trên framework NET (và với mình thì đây là nhược điểm lớn nhất mà C# có) cũng như những nền tảng khác sử dụng module của bên thứ ba đến từ Package Python Index (PyPI)
- Cú pháp của Python khá đơn giản và không đòi hỏi ở một người mới quá nhiều thời gian để làm quen, trong khi đối với C# thì bạn không thể viết ra một
Trang 11chương trình mà chẳng biết gì về việc biên dịch, namespace, class hay các phương thức của nó, v.v…
- Khi phát triển game engines thì C# có thể nhanh, nhưng tốc độ của nó lại không thể đánh bại được tốc độ phát triển siêu xịn xò đến từ Python
- Sở hữu kho thư viện package khổng lồ và đa dạng hơn, rất nhiều code
- Ứng dụng C# vào machine learning, nhưng điều đó có vẻ khá khó khăn so với việc dùng Python
Nhược điểm của Python so với C#
- Python có một nhược điểm khá lớn khi lập trình so với C#, đó là bởi chính cơ chế Global Interpreter Lock (GIL) của mình nên việc sử dụng đa luồng đòi hỏi đa tiến trình Trong khi với C# thì chuyện này dễ như ăn cháo nhờ sử dụng NET framework
- Nhờ có sự hỗ trợ của framework Common Language Infrastructure mà C# có thể chạy nhanh và có hiệu suất cao hơn so với Python gấp 44 lần Có thể C# khiến bạn mất khá nhiều thời gian cho việc viết code nhưng lại giúp bạn trải nghiệm tốt hơn khi chạy ứng dụng
Ví dụ: in ra dòng “ Xin chao Hoan”
Thực hiện trên C# Thực hiện trên Python
Trang 12Bảng 2.1 Bảng so sánh xếp hạng thế giới về các NNLT tháng 4/2022
Chú giải: Rank: thứ hạng; change: thay đổi; share: chia sẻ; trend: xu hướng
Biểu đồ cho thấy sự phổ biến của Python đang tăng lên nhanh chóng
Trang 13Từ các phân tích trên, các bạn sẽ có thể hiểu hơn về ưu và nhược điểm của Python so với C# và C++ cũng như tìm ra câu trả lời phù hợp cho việc tìm ngôn ngữ nào để học cho các dự án sắp tới và công việc của mình
Cũng chính vì những ưu và nhược điểm như thế mà chúng tôi đã chọn ngôn ngữ lập trình python để giới thiệu lập trình và tạo các game đơn giản minh họa cho HS trong đề tài này
2.3.5 Lập trình game sử dụng ngôn ngữ Python
Lập trình game bằng Python là sử dụng NNLT Python để sáng tạo nên
những game trực tuyến thú vị của riêng bạn Có nhiều NNLT được sử dụng cho việc sáng tạo game như C++, Java, Lua, Python, C#… Trong số đó Python được
số đông lựa chọn bởi những ưu điểm riêng của nó
Ngôn ngữ lập trình Python là một loại ngôn ngữ cao cấp, với đặc điểm nổi bật nhất đó là cấu trúc đơn giản, không quá chú trọng về cú pháp mà tập trung vào sức sáng tạo chức năng câu lệnh của người viết Python cho phép lập trình viên di chuyển giữa các máy, hỗ trợ nhúng Và đặc biệt khi sử dụng Python vào công việc sáng tạo game, lập trình viên được hỗ trợ bởi phần mềm Pygame rất hữu ích
Python được khuyến khích sử dụng đối với người mới bắt đầu bước và nghề lập trình, không chỉ sáng tạo ra trò chơi mà còn ứng dụng vào thiết kế phần mềm, xây dựng website, ứng dụng trên các thiết bị điện tử…
Hình 2.1 Giao diện ngôn ngữ lập trình Python
Trong ngôn ngữ Python có nhiều câu lệnh, cấu trúc lặp, hàm,… thường sử dụng trong lập trình game như câu lệnh if, cấu trúc lặp for, while, là một trong những câu lệnh, cấu trúc cơ bản trong lập trình hướng đối tượng Tuy nhiên trước một bài toán lập trình Tin học có các câu lệnh điều kiện nhiều, thao tác lặp đi lặp lại nhiều học sinh thường lúng túng, không biết nên lựa chọn và sử dụng câu lệnh rẽ nhánh, hay lặp nào cho phù hợp với yêu cầu bài toán và tối ưu hóa thuật toán? Một số học sinh khá, giỏi có thể sử dụng cấu trúc lặp để mô tả nhưng đa số chưa biết tối ưu hóa thuật toán để giảm số lần lặp và điều đó gây tâm lý chán nản cho các em Với
Trang 14tình hình ấy để giúp HS có kĩ năng tốt hơn trong việc sử dụng cấu trúc lặp để mô tả thuật toán, thì giáo viên cần tăng cường rèn luyện cho học sinh kĩ năng sử dụng cấu trúc lặp từ các các bài toán cơ bản quen thuộc mà các em đã biết, khai thác các yếu tố đặc trưng của một số bài toán cơ bản để tìm thuật toán cho các bài toán mới, dựa vào đặc điểm cụ thể của từng bài toán để tối ưu hóa thuật toán Việc rèn luyện
kĩ năng lập trình cho học sinh từ những bài toán cơ bản hoặc các bài toán trò chơi
từ các bài toán cơ bản đó là một quá trình giúp học sinh rèn luyện kỹ năng lập trình
và gây hứng thú cho các em
2.3.6 Một số game được lập trình bằng python
Game Snake (Con rắn săn mồi)
Snake là một trò chơi vui nhộn cổ điển, trong đó bạn có được một con rắn trên một hộp lưới bảng Bạn cho nó ăn, và mỗi lần con rắn của bạn ăn, nó sẽ dài ra một đoạn Tránh những viên thuốc độc hoặc bất kỳ chướng ngại vật nào có thể giết chết nó Giới hạn các bức tường ranh giới của bạn hoặc sử dụng chúng làm kích thước, như trong điện thoại di động Nokia Một trò chơi thú vị mà bạn có thể thực hiện bằng cách sử dụng mã Python
Phát triển trò chơi Snake trong Python rất đơn giản Và mọi thứ còn trở nên
dễ dàng hơn với thư viện Pygame Sử dụng kiến thức cơ bản Snake của bạn để tạo màn hình, rắn, thức ăn và chức năng tăng chiều dài Cuối cùng, hiển thị thông báo Game Over khi con rắn va chạm vào phần cơ thể của nó
Flappy Bird (Chú chim vỗ cánh)
Flappy bird là một trò chơi điện tử trên điện thoại do Nguyễn Hà Đông, một lập trình viên ở Hà Nội, Việt Nam phát triển nổi tiếng khắp thế giới năm 2013, đưa lên App Store và Play Store đầu 2014, dù mang phong cách game thập niên 90 (có
vẻ lỗi thời) nhưng lại làm mưa làm gió trong giới lập trình và được hành triệu lượt tải về toàn thế giới, trở thành trò chơi kinh điển Về cơ bản, bạn có thể thấy rằng hầu hết mọi nhà phát triển Python đều từng làm trò chơi này Cách chơi khá đơn giản, người dùng phải liên tục nhấn vào màn hình để điều khiển chú chim vượt qua các chướng ngại vật là những ống cống màu xanh Trò chơi kết thúc khi chú chim chạm vào chướng ngại vật và người dùng sẽ được tính 1 điểm nếu vượt qua một ống cống
Vì vậy, trò chơi này dựa trên cơ bản hai khái niệm mà chúng tôi phải tập trung vào khi phát triển Đầu tiên, một trong những đường ống xuất hiện ngẫu nhiên (đối tượng cản trở) Mô-đun ngẫu nhiên có thể xử lý điều này và thứ hai là giao diện người dùng đồ họa có sẵn thư viện Pygame Phần còn lại của phần mã hóa phụ thuộc vào cách người lập trình sử dụng và hoàn thành dự án này
Rock – paper – scissor (Oẳn tù tì)
Oẳn tù tì thực sự không phải là một trò chơi điện tử Nó đúng hơn là một cách để quyết định ai sẽ đi trước Người chơi thường sử dụng điều này trong hành
Trang 15động vật lý để tung trước khi chơi một trò chơi vật lý Vì vậy, nếu bạn đã quen thuộc với trò chơi này và mọi thứ hoạt động ở đó May mắn thay, bạn có thể tạo điều này bằng cách sử dụng python và đó là một trong những dự án dễ dàng hơn
mà bạn có thể tiếp tục
Dự án Oẳn tù tì thuộc dự án đơn giản Trong 60 dòng mã, bạn có thể hoàn thành nó ở mức tối thiểu Để bắt đầu xây dựng, trước tiên hãy nhập một mô-đun ngẫu nhiên để tạo các số ngẫu nhiên, sử dụng ba số 0,1,2 Liên kết chúng tương ứng với đá, giấy, kéo trong khi điều này được thực hiện Phần lớn trò chơi sẽ kết thúc Sử dụng vòng lặp while để lặp lại trò chơi nếu người dùng muốn và các biến
để thực hiện chức năng THẮNG, THUA và các mục tiêu quan trọng khác
2.4 Thực nghiệm
Lập trình tạo ra ứng dụng, một số trò chơi đơn giản, quen thuộc, đa số học
sinh cũng đã biết như: Rock-paper-scissors “Oẳn tù tỳ”, Flappy Bird - "Chú chim bay lượn", Snake “rắn săn mồi”, sử dụng các trò chơi để minh hoạ cho học
sinh trong quá trình giảng dạy, các bài học giới thiệu về ngôn ngữ lập trình, câu lệnh rẽ nhánh, câu lệnh lặp
2.4.1 Quy trình xây dựng tạo game chú chim bay lượn Flappy Bird
Giáo viên xác định các nhóm chơi, số người trong nhóm, các đồ dùng, dụng
cụ cần thiết như: bút màu, giấy trắng, thước, nam châm ghim giấy lên bảng,…
Chú ý: Năng lực của học sinh trong nhóm chơi phải phù hợp với nhiệm vụ của nhóm đó
Mục tiêu:
o Củng cố khắc sâu kiến thức của bài học, của chương từ đó giáo dục ý thức, thái độ của học sinh qua bài dạy Tin học
o Rèn kỹ năng nhớ, vận dụng kiến thức Tin học đã học của HS
o Phát triển tư duy lành mạnh, sáng tạo của HS
Nhóm 1: Biên kịch (tương đương ví trí công việc Game Designer)
Nhiệm vụ: Viết ra ý tưởng, xây dựng câu chuyện cho trò chơi, đưa ra nhân vật và các tính cách trong game
Bước 0: Ổn định tổ chức: Để tập trung sự chú ý cho cả lớp (sau khi học một nội dung nào đó hoặc đã học xong kiến thức trọng tâm của bài)
Bước 1: Lên kịch bản cho các ống (vật cản đường)
Trang 16Hình 2.2 Nhóm đồ họa đang thiết kế mô hình game
Hình 2.3 Nhóm đồ họa đang trình bày mô hình game
Trang 17Hình 2.4 Giới thiệu game
o Các ống màu xanh luôn di chuyển qua trái
o Ống nào đi hết qua trái rồi phải có ống mới được tạo ra
Trang 18o Các ống có chiều cao ngẫu nhiên
o Luôn có 2 ống đối diện nhau
o Khoảng cách giữa ống trên và ống dưới không đổi
Hình 2.5 Hình vẽ các cột chướng ngại vật minh họa game flappybird của nhóm đồ họa
Bước 2: Vẽ con chim
Đây thực chất là 1 ô vuông hoặc chèn ảnh con chim vào, nó di chuyển lên xuống, vì ống luôn đi sang trái nên có cảm giác như con chim đang di chuyển Thực chất là con chim chỉ đứng im và biết nhảy và rơi (xem hình 2.4)
Mục tiêu:
o Bấm phím cách (space) để làm con chim nhảy lên
o Làm chim rơi tự do (tốc độ rơi tăng dần theo thời gian)
Bước 3: Tính điểm
Ta sẽ tính điểm, khi chim đi qua 1 ống thì điểm được +1
Nghe có vẻ đơn giản, tuy nhiên, bạn không thể chỉ xét xem khi nào ống ở bên trái con chim Nếu làm vậy thì điểm cứ tăng liên tục khi chim đi qua ống
Ta cần xét xem khi nào chim đi qua ống rồi, và quan trọng là, nếu đã đi qua rồi thì đánh dấu là đi qua rồi và không tính điểm cho ống đó nữa
Bước 4: Dừng màn hình
o Màn hình sẽ dừng lại khi chim chạm vào ống hoặc rơi
o Khi chim chạm vào ống hoặc rơi sẽ hện điểm và chữ "Game Over"
o Người chơi có thể bấm dấu cách (Space) để chơi lại
Trang 19Cái số 3 cần tinh tế một tí vì nút Space vừa dùng để nhảy vừa dùng để chơi lại khi đã chạm vào ống hoặc rơi
Bước 5: Dùng hình thật
Ở bước 5, ta sẽ thay hình nền và hình còn chim
Cực kì đơn giản, ta cần lấy hình vẽ hoặc download ảnh trên mạng, từ assets nghĩa là các thứ mà game đó sử dụng, như là âm thành, hình vẽ, màu sắc, font chữ Đối với ảnh, nó được hiểu như 1 hình chữ nhật mà thôi, ta sẽ load ảnh bằng đường dẫn, sau đó chỉnh kích thước ảnh nếu cần và thay hình mình vẽ bằng ảnh
Nhóm 2: Đạo diễn (tương đương ví trí công việc manager)
Nhiệm vụ: Phân công các nhóm làm việc, lên kịch bản chi tiết cho các tình huống trong game, xác định cách thức game sẽ hoạt động, lên kế hoạch về các cấp độ game
Nhóm 3: Đồ họa (tương đương ví trí công việc Game Artist)
Nhiệm vụ: Thiết kế bố cục của trò chơi, thiết kế tạo hình nhân vật và bối cảnh game
Nhóm 4: Tìm hiểu một số câu lệnh Python và ứng dụng trong lập trình game
(Game Developer):
Hình 2.6: Giáo viên giảng phần câu lệnh rẽ nhánh if
Nhiệm vụ: tìm hiểu và lập trình bằng cách tạo mã, chỉnh sửa mã, kết hợp tính nghệ
thuật vào trò chơi, tối ưu truy cập trực tuyến và tạo danh mục (menu) cho trò chơi Game Developer cũng có thể thực hiện nhiệm vụ kiểm tra game dưới vai trò của
Trang 20một GM (Game master) Nhiệm vụ của họ là kiểm tra và khắc phục sự cố chức năng của trò chơi mà họ đang xây dựng Họ có thể tự phát hiện ra các lỗi hoặc được người chơi thông báo và sửa chúng
Nhóm 5: Kiểm thử (Game Tester)
Nhiệm vụ: phát hiện, báo cáo lỗi, thường không đòi hỏi chuyên môn cao, chỉ cần tỉ mỉ, kiên nhẫn
Tùy từng bài toán (trò chơi) ta sử dụng cầu lệnh rẽ nhánh hay lặp hoặc vừa lặp vừa rẽ nhánh,…Sau đây là một số câu lệnh, cấu trúc thường sử dụng
Trang 21Ví dụ : Đoạn lệnh game kiểm tra oắn tù tỳ
Code game đầy đủ xem bước 8
Ví dụ: Đoạn lệnh thoát game
while game_close == True:
dis.fill(white)
message("", red)
Trang 22pygame.display.update()
Nhóm 5: Kiểm thử (Game Tester): Chày thử và báo cáo cho nhóm 1,2,3,4
2.4.2 Quy trình xây dựng và thiết kế trò chơi rắn săn mồi Snaker
Các nhóm và nhiệm vụ tương tự mục 2.4.1
Nhóm 1: Biên kịch luật chơi
Game oẳn tù tì online cũng tương tự như oẳn tù tì truyền thống, cụ thể như sau:
o Bắt đầu ván chơi, bạn chỉ cần đặt cược vào một trong 3 cửa: Kéo, Dao, Búa làm sao để có thể thắng được máy Lưu ý, mỗi cửa cược sẽ có tỷ lệ trả thưởng khác nhau
o Sau khi đặt cược xong, hệ thống sẽ tự động quay và cho ra kết quả
o Nếu người chơi thắng máy thì sẽ được ăn thưởng theo tỷ lệ mà máy đã đưa ra Nếu thua sẽ mất số điểm đặt cược ban đầu còn nếu hòa sẽ được hoàn lại điểm cược
o Thông thường tỷ lệ trả thưởng game Oẳn tù tì ở các máy online thường là 1:2, gấp đôi số điểm đặt cược lúc đầu
Nhóm 2: Đạo diễn phân công theo dõi các nhóm làm nhiệm vụ
Nhóm 3: Đồ họa thực hiện vẽ bản thảo trò chơi
Các bước phác họa game:
Bước 1: Chuẩn bị (dụng cụ bút màu, giấy, thước, …)
Bước 2: Vẽ hình
Vẽ bản đồ (lưới ô vuông)
Hình 2.7: Nhóm đồ họa thiết kế phác thảo game snake
Nơi tọa độ các con rắn sẽ di chuyển, ăn mồi