Sáng kiến kinh nghiệm THPT: 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
lượt xem 5
download
Mục đích nghiên cứu sáng kiến "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" nhằm 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.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Sáng kiến kinh nghiệm THPT: 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
- ĐỀ 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 1
- 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ự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 2
- PHỤ 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 3
- BẢNG CHỮ VIẾT TẮT Từ viết tắt Nội dung đầy đủ THPT Trung học phổ thông GVBM Giáo viên bộ môn GV Giáo viên HS Học sinh SGK Sách giáo khoa HSG Học sinh giỏi NNLT Ngôn ngữ lập trình 4
- PHẦ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 đề và luyện phản xạ mắt. Tổng thống Barack Obama đã phát biểu: “Đừng chỉ mua game, hãy tạo ra nó. Đừng chỉ chơi game trên điện thoại, hãy học cách lập trình game”. Học sinh nên học lập trình vì không chỉ giúp chúng thành công trong tương lai nhờ được học những thứ cần thiết còn khiến các em có thêm nhiều kỹ năng tốt trong tất cả các lĩnh vực. Học lập trình nghĩa là tìm ra một giải pháp hữu hiệu cho một vấn đề. Điều này có nghĩa không có một đáp án duy nhất, không có sai và đúng mà luôn hướng đến việc sửa chữa, tìm ra thứ tối ưu, thỏa mãn nhiều tiêu chí nhất. 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. 5
- PHẦ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,... 6
- - 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 7
- thự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ó: 8
- - 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. 9
- Python 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” C++ python Mất 7 dòng lệnh Chỉ cần 1 dòng lệnh Ư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 10
- chươ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 Cần 11 dòng lệnh Chỉ cần 1 dòng lệnh 11
- Bả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 12
- Từ 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 13
- tì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 14
- độ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) 15
- Hì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 16
- Hì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 17
- o 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 18
- Cá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 19
- 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. 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 Cấu trúc rẽ nhánh if … Cú pháp: if : Ví dụ: Ứng dụng trong trò chơi Oắn tù tỳ Cấu trúc rẽ nhánh if … else Cú pháp: if : else: Ví dụ: kiểm tra số chẵn lẻ Cấu trúc rẽ nhánh lông nhau if …elif …else Cú pháp: if điều_kiện_1: đoạn_mã_1 if điều_kiện_2: đoạn_mã_2 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Sáng kiến kinh nghiệm THPT: Tăng cường sử dụng phương pháp dạy học trực quan vào giảng dạy môn Toán THPT
37 p | 40 | 13
-
Sáng kiến kinh nghiệm THPT: Khai thác và sử dụng các biến nhớ của máy tính điện tử cầm tay trong chương trình Toán phổ thông
128 p | 148 | 11
-
Sáng kiến kinh nghiệm THPT: Sử dụng sơ đồ phân bố thời gian giúp học sinh giải nhanh bài tập trắc nghiệm liên quan đến thời điểm và khoảng thời gian trong mạch dao động
24 p | 25 | 9
-
Sáng kiến kinh nghiệm THPT: Sử dụng các bài hát, tục ngữ, ca dao trong dạy học Địa lí 10, 12
31 p | 66 | 9
-
Sáng kiến kinh nghiệm THPT: Sử dụng kĩ thuật giao nhiệm vụ nhằm nâng cao hiệu quả về năng lực tự quản, khả năng giao tiếp và hợp tác nhóm cho học sinh lớp 11B4 - Trường THPT Lê Lợi
13 p | 118 | 8
-
Sáng kiến kinh nghiệm THPT: Sử dụng sơ đồ tư duy hệ thống, khắc sâu kiến thức Hoá học hữu cơ lớp 12 cơ bản
30 p | 43 | 8
-
Sáng kiến kinh nghiệm THPT: Sử dụng phiếu học tập dưới dạng đề kiểm tra sau mỗi bài học, để học sinh làm bài tập về nhà, làm tăng kết quả học tập môn Hóa
13 p | 27 | 8
-
Sáng kiến kinh nghiệm THPT: Sử dụng Infographic nhằm nâng cao hiệu quả và tăng hứng thú học tập Ngữ văn của học sinh THPT
15 p | 18 | 7
-
Sáng kiến kinh nghiệm THPT: Sử dụng sơ đồ tư duy giúp học sinh lớp 12 trường THPT Trần Đại Nghĩa làm bài kiểm tra đạt hiệu quả cao
41 p | 56 | 7
-
Sáng kiến kinh nghiệm THPT: Dạy học theo mô hình STEM bài Sự điện li của nước. pH. Chất chỉ thị axit – bazơ và bài Ankan, Hoá học 11 ở trường THPT
56 p | 18 | 6
-
Sáng kiến kinh nghiệm THPT: Sử dụng bản đồ tư duy (mind map) để tổng hợp kiến thức ôn thi tốt nghiệp và đại học cho học sinh khối 12
6 p | 55 | 6
-
Sáng kiến kinh nghiệm THPT: Lồng ghép giáo dục ý thức chống rác thải nhựa qua dạy học môn GDCD 11 trường THPT Nông Sơn
33 p | 19 | 5
-
Sáng kiến kinh nghiệm THPT: Hướng dẫn học sinh lớp 12 ôn tập môn Lịch Sử theo định hướng 5 bước 1 vấn đề, đáp ứng yêu cầu mới của kỳ thi THPT Quốc gia
29 p | 35 | 5
-
Sáng kiến kinh nghiệm THPT: Một số biện pháp nhằm nâng cao nhận thức và kĩ năng sử dụng tiếng Việt của học sinh trường THPT Nguyễn Thị Giang
21 p | 48 | 4
-
Sáng kiến kinh nghiệm THPT: Nâng cao hiệu quả dạy học cho học sinh theo chủ đề tích hợp liên môn trong bài “Khái niệm mạch điện tử - chỉnh lưu - nguồn một chiều” chương trình công nghệ 12 ở trường THPT Y
55 p | 62 | 3
-
Sáng kiến kinh nghiệm THPT: Sử dụng hệ thống bài tập hóa học có nhiều cách giải để phát triển năng lực tư duy cho học sinh
106 p | 25 | 2
-
Sáng kiến kinh nghiệm THPT: Sử dụng bảng hệ thống kiến thức nhằm nâng cao chất lượng trong ôn thi tốt nghiệp trung học phổ thông phần Lịch sử Việt Nam (1919-1945)
47 p | 40 | 2
-
Sáng kiến kinh nghiệm THPT: Lồng ghép một số tư liệu lịch sử Bình Long trong dạy học lịch sử Việt Nam giai đoạn 1954 -1975
16 p | 53 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn