Trong quá trình thực hiện, chúng em sẽ phân tích, thiết kế và lập trình game vớingôn ngữ Python, sử dụng thư viện Pygame để hỗ trợ các yếu tố đồ họa và âmthanh.. Với cú pháp rõ ràng và g
Trang 1TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN NGÔN NGỮ LẬP TRÌNH PYTHON
ĐỀ TÀI: XÂY DỰNG GAME FLAPPY BIRD
Sinh viên thực hiện : LÊ HỒNG QUANG
LÊ THẾ VIỆT Giảng viên hướng dẫn : TRẦN THỊ MINH THU
Trang 3MỤC LỤC
LỜI NÓI ĐẦU 6
CHƯƠNG 1: KHẢO SÁT VÀ XÁC LẬP DỰ ÁN 7
1.1 Khảo sát hiện trạng 7
1.1.1 Tổng quan về Flappy Bird 7
1.1.2 Cách thức hoạt động 7
1.2 Xác lập dự án 9
1.2.1 Kế hoạch triển khai dự án 9
1.2.2 Ngôn ngữ lập trình 9
1.2.3 Công cụ phát triển 9
CHƯƠNG 2: GIỚI THIỆU VỀ PYTHON VÀ PHÂN TÍCH BÀI TOÁN 10
2.1 Giới thiệu về Python 10
2.1.1 Lịch sử và sự phát triển của Python 10
2.1.2 Ưu điểm và nhược điểm của Python 12
2.1.3 Ứng dụng của Python 15
2.1.4 Các ứng dụng Python áp dụng vào bài toán 17
2.2 Phân tích bài toán 20
2.2.1 Xác định Actor và UC tổng quát 20
CHƯƠNG 3: TRIỂN KHAI VÀ KẾT QUẢ 23
3.1 Môi trường và công cụ phát triển 23
3.2 Quy trình cài đặt và chạy ứng dụng 23
3.3 Source Code 24
3.4 Giao diện game 28
3.4.1 Giao diện chính 28
3.4.2 Giao diện gameplay 29
KẾT LUẬN 30
TÀI LIỆU THAM KHẢO 31
Trang 4DANH MỤC HÌNH ẢNH
Hình 2.1: Timeline lịch sử phát triển Python 8
Hình 2.2 Ứng dụng của Python 23
Hình 2.3 Sơ đồ tuần tự game Flappy Bird 23
Hình 2.4 Giao diện Game 23
Hình 2.5 Biểu đồ lớp 24
Hình 3.1 Thiết lập thư viện pygame và các biến cơ bản 24
Hình 3.2 Xác lập các tệp âm thanh và hình ảnh của chim 24
Hình 3.3 Quản lý các thuộc tính và hình ảnh 25
Hình 3.4 Tạo và quản lý ống trò chơi 25
Hình 3.5 Tạo và quản lý nền trò chơi 26
Hình 3.6 Điều khiển vòng lặp 26
Hình 3.7 Duy trì hoạt động 27
Hình 3.8 Xử lý việc tính điểm 28
Trang 5LỜI NÓI ĐẦU
Trong thời đại phát triển mạnh mẽ của công nghệ thông tin, lập trình không chỉ làmột kỹ năng cần thiết mà còn là công cụ mạnh mẽ giúp con người hiện thực hóa ýtưởng và sáng tạo Các trò chơi điện tử là một ví dụ rõ ràng về ứng dụng của lậptrình, không chỉ mang lại niềm vui giải trí mà còn tạo nên những trải nghiệm đầythách thức và tương tác Với mong muốn tiếp cận sâu hơn với lập trình game,nhóm chúng em đã lựa chọn đề tài "Xây dựng game Flappy Bird" làm đồ án chomôn Lập trình Python
Flappy Bird là một trò chơi nổi tiếng với cơ chế đơn giản nhưng gây nghiện, yêucầu người chơi phải khéo léo điều khiển nhân vật vượt qua các chướng ngại vật
Dù có vẻ đơn giản, nhưng việc phát triển một trò chơi như Flappy Bird đòi hỏi sựkết hợp của nhiều kiến thức từ đồ họa, vật lý, và logic lập trình Đồ án này sẽ giúpchúng em ứng dụng kiến thức đã học vào một sản phẩm thực tế, đồng thời hiểu rõhơn về các nguyên tắc cơ bản trong phát triển trò chơi
Trong quá trình thực hiện, chúng em sẽ phân tích, thiết kế và lập trình game vớingôn ngữ Python, sử dụng thư viện Pygame để hỗ trợ các yếu tố đồ họa và âmthanh Qua đó, đồ án không chỉ giúp củng cố kỹ năng lập trình mà còn mở rộnghiểu biết về cách một trò chơi được xây dựng từ ý tưởng cho đến khi hoàn thiện
Hy vọng báo cáo này sẽ không chỉ giúp nâng cao kỹ năng lập trình mà còn gópphần khơi dậy đam mê sáng tạo và phát triển các ứng dụng giải trí trong tương lai
Trang 6CHƯƠNG 1: KHẢO SÁT VÀ XÁC LẬP DỰ ÁN
1.1 Khảo sát hiện trạng
1.1.1 Tổng quan về Flappy Bird
Flappy Bird là một trò chơi đơn giản nhưng gây nghiện, được phát triển bởiNguyễn Hà Đông, một lập trình viên người Việt Nam Trò chơi được phát hành lầnđầu vào năm 2013 và nhanh chóng trở nên nổi tiếng toàn cầu nhờ lối chơi dễ hiểunhưng khó thành thạo
1.1.2 Cách thức hoạt động
Game Flappy Bird là một trò chơi rất đơn giản nhưng đầy thách thức Ngườichơi điều khiển một chú chim nhỏ bay qua các chướng ngại vật bằng cách nhấphoặc chạm vào màn hình Mỗi lần nhấp, chú chim sẽ "vỗ cánh" để bay lên, và nếungười chơi không tiếp tục nhấp, chim sẽ rơi xuống do lực hấp dẫn Mục tiêu là đưachú chim vượt qua các cột liên tiếp mà không va chạm
Ưu điểm
1 Gameplay đơn giản, dễ hiểu:
Flappy Bird có lối chơi đơn giản, chỉ cần một thao tác chạm để điều khiển.
Điều này làm cho game dễ tiếp cận với mọi lứa tuổi, không yêu cầu người chơiphải học nhiều quy tắc phức tạp
2 Thời gian chơi ngắn:
Người chơi có thể chơi game trong khoảng thời gian ngắn, thích hợp để giải trínhẹ nhàng Đặc biệt, khi thua, người chơi có thể bắt đầu lại ngay lập tức mà khôngmất nhiều thời gian
Trang 73 Thiết kế đơn giản và hiệu quả:
Game có đồ họa tối giản nhưng rất dễ nhận biết, khiến nó thu hút mà không cầndùng các hiệu ứng đồ họa phức tạp Điều này cũng giúp game nhẹ, có thể chạy tốttrên hầu hết các thiết bị di động
4 Hiệu ứng xã hội:
Flappy Bird từng tạo ra một làn sóng thách thức và chia sẻ điểm số trên mạng
xã hội, giúp game trở thành hiện tượng nhờ tính cạnh tranh giữa bạn bè và cộngđồng
Nhược điểm
1 Độ khó cao, dễ gây nản lòng:
Mặc dù tính thử thách là một điểm hấp dẫn, nhưng game có độ khó cao và dễkhiến người chơi thất vọng, nản lòng khi liên tục thua mà không đạt được điểmcao
2 Thiếu chiều sâu trong nội dung:
Lối chơi của Flappy Bird rất lặp đi lặp lại và không có thêm nội dung hoặc cấp
độ mới, khiến game dễ gây nhàm chán sau một thời gian dài chơi
3 Thiếu tính năng đa dạng:
Game không có các tính năng nâng cấp, nhiệm vụ hay phần thưởng, dẫn đếnviệc người chơi không có động lực hoặc mục tiêu dài hạn ngoài việc đạt điểm cao
4 Không phù hợp với mọi người chơi:
Do độ khó cao và tính đơn giản của trò chơi, Flappy Bird có thể không hấp dẫnđối với những người chơi thích game có cốt truyện hoặc tính năng phức tạp hơn
Trang 81 Môi trường phát triển (IDE):
Visual Studio Code: Nhẹ, phổ biến, tích hợp tốt với Python.
PyCharm (Community Edition): Tính năng mạnh mẽ, hỗ trợ kiểm tra lỗi,
gợi ý mã
2 Thư viện:
Pygame: Xử lý đồ họa 2D, sự kiện, âm thanh và hiệu ứng.
Random: Tạo độ cao và khoảng cách ngẫu nhiên cho cột.
Sys: Quản lý thoát chương trình.
3 Công cụ hỗ trợ thiết kế:
Canva hoặc Figma: Tạo nền và các hình ảnh minh họa đơn giản
GIMP hoặc Photoshop: Chỉnh sửa hình ảnh (nếu cần)
Bfxr hoặc Audacity: Tạo âm thanh hiệu ứng (nếu không sử dụng âm thanh
có sẵn)
Trang 9CHƯƠNG 2: GIỚI THIỆU VỀ PYTHON VÀ PHÂN TÍCH BÀI
TOÁN2.1 Giới thiệu về Python
Python là một ngôn ngữ lập trình cấp cao, được thiết kế với triết lý đơn giản, dễhiểu, và dễ học Với cú pháp rõ ràng và gần gũi với ngôn ngữ tự nhiên, Python là một lựachọn lý tưởng cho những người mới bắt đầu lập trình cũng như các chuyên gia muốn xâydựng các ứng dụng phức tạp Được đánh giá cao nhờ tính linh hoạt, Python hỗ trợ pháttriển ứng dụng trong nhiều lĩnh vực, từ phát triển phần mềm, khoa học dữ liệu, trí tuệnhân tạo (AI), học máy (Machine Learning), tự động hóa, đến phát triển ứng dụng web.Một trong những điểm nổi bật của Python là hệ sinh thái phong phú với hàng nghìnthư viện mã nguồn mở, giúp lập trình viên giải quyết các bài toán từ đơn giản đến phứctạp một cách nhanh chóng Những thư viện nổi tiếng như NumPy, Pandas, TensorFlow,hay Django đã củng cố vị thế của Python trong các lĩnh vực như phân tích dữ liệu, trí tuệnhân tạo, và phát triển ứng dụng web
Python không chỉ là một ngôn ngữ lập trình; nó còn là công cụ mạnh mẽ giúp các tổchức, nhà nghiên cứu, và doanh nghiệp tiết kiệm thời gian và chi phí nhờ khả năng tối ưuhóa quy trình làm việc
2.1.1 Lịch sử và sự phát triển của Python
Python được Guido van Rossum, một lập trình viên người Hà Lan, phát triển lầnđầu tiên vào cuối những năm 1980 Lúc bấy giờ, ông đang làm việc tại Trung tâm Nghiêncứu Quốc gia về Công nghệ Thông tin (CWI) ở Hà Lan Mục tiêu của Guido là tạo ra mộtngôn ngữ lập trình mới đơn giản, dễ sử dụng nhưng vẫn đủ mạnh để giải quyết các vấn đềphức tạp
Nguồn gốc tên gọi: Tên gọi Python không xuất phát từ loài rắn, mà từ chương trình
hài kịch nổi tiếng "Monty Python's Flying Circus" Guido chọn tên này vì ông muốn ngônngữ mới của mình mang tính giải trí và không quá nghiêm túc
Python chính thức được ra mắt vào năm 1991 với phiên bản Python 1.0, bao gồm nhữngtính năng cơ bản như:
Hỗ trợ lập trình hướng đối tượng (OOP)
Trang 10 Quản lý bộ nhớ tự động với cơ chế thu gom rác (garbage collection).
Hệ thống xử lý lỗi hiệu quả
Những cột mốc phát triển quan trọng của Python:
1994: Python 1.0
Phiên bản đầu tiên của Python được phát hành Dù còn nhiều hạn chế, Python đãgiới thiệu những ý tưởng đột phá như cú pháp dễ đọc và khả năng tích hợp mạnhmẽ
2000: Python 2.x
Đây là giai đoạn Python bắt đầu được sử dụng rộng rãi trong các dự án phầnmềm Python 2.x mang đến nhiều cải tiến như:
+ Hỗ trợ Unicode, cho phép xử lý tốt hơn các ngôn ngữ khác nhau
+ Hệ thống quản lý bộ nhớ được tối ưu hóa
+ Xuất hiện các framework web như Django, giúp Python khẳng định vai tròtrong phát triển ứng dụng web Tuy nhiên, Python 2 cũng tồn tại nhiều hạnchế, đặc biệt là những bất đồng trong cú pháp và khả năng tương thích vớicác phiên bản mới hơn
+ Tối ưu cú pháp, giúp mã nguồn trở nên rõ ràng và ngắn gọn hơn
+ Hiệu suất được cải thiện đáng kể, đặc biệt trong các ứng dụng tính toán phứctạp Python 3 nhanh chóng trở thành chuẩn mực trong cộng đồng lập trình,đặc biệt sau khi Python 2 chính thức ngừng hỗ trợ vào năm 2020
Trang 11Hình 2 1: Timeline lịch sử phát triển Python
2.1.2 Ưu điểm và nhược điểm của Python
Python, một trong những ngôn ngữ lập trình phổ biến nhất hiện nay, nổi bật nhờtính linh hoạt, dễ học, và khả năng ứng dụng trong nhiều lĩnh vực Tuy nhiên, như bất kỳcông cụ nào khác, Python cũng có những hạn chế cần lưu ý Dưới đây là phân tích chi tiết
về ưu điểm và nhược điểm của Python
Ưu điểm của Python
Thư viện phong phú và mạnh mẽ
+ Một trong những yếu tố làm nên sức mạnh của Python là hệ sinh thái thưviện phong phú, hỗ trợ lập trình viên trong hầu hết các lĩnh vực:
Trang 12 Khoa học dữ liệu: NumPy, Pandas, Matplotlib giúp phân tích và trựcquan hóa dữ liệu.
Học máy và AI: TensorFlow, Keras, và Scikit-learn cung cấp các công
cụ xây dựng mô hình trí tuệ nhân tạo và học máy mạnh mẽ
Phát triển web: Django, Flask, FastAPI là các framework nổi tiếng giúpxây dựng website và API hiệu quả
Xử lý hình ảnh: OpenCV và Pillow hỗ trợ các tác vụ như nhận diệnkhuôn mặt, xử lý ảnh, và tạo hiệu ứng
Tự động hóa: Các thư viện như Selenium, PyAutoGUI cho phép tự độnghóa các tác vụ thường ngày
+ Hệ sinh thái thư viện đa dạng giúp Python có thể được sử dụng linh hoạttrong nhiều dự án, từ nhỏ đến lớn
Tính di động cao
+ Python là một ngôn ngữ đa nền tảng, có thể chạy trên nhiều hệ điều hànhphổ biến như Windows, macOS, Linux, và thậm chí trên các thiết bị nhúngthông qua các phiên bản như MicroPython hoặc CircuitPython
+ Mã nguồn Python không cần thay đổi khi chuyển đổi giữa các nền tảng, giúptiết kiệm thời gian và công sức khi phát triển phần mềm đa nền tảng
Hỗ trợ tốt cho khoa học dữ liệu và AI
+ Python hiện là ngôn ngữ hàng đầu trong lĩnh vực khoa học dữ liệu, trí tuệnhân tạo (AI), và học máy (ML) nhờ vào:
Khả năng xử lý dữ liệu mạnh mẽ
Hệ thống thư viện chuyên dụng
Cộng đồng lập trình viên đông đảo sẵn sàng chia sẻ tài liệu và hỗ trợ.+ Các công ty lớn như Google, Facebook, và Netflix đều sử dụng Python đểtriển khai các giải pháp AI và xử lý dữ liệu lớn
Cộng đồng lớn và hỗ trợ mạnh mẽ
Trang 13+ Python có một cộng đồng toàn cầu đông đảo, cung cấp hàng loạt tài liệu,khóa học, và diễn đàn trực tuyến như Stack Overflow, Reddit, vàPython.org.
+ Người dùng có thể dễ dàng tìm thấy câu trả lời hoặc giải pháp cho các vấn
đề khi lập trình với Python
Nhược điểm của Python:
Hiệu suất không cao
+ Python là một ngôn ngữ thông dịch (interpreted language), nghĩa là mã Python được thực thi bởi trình thông dịch thay vì được biên dịch thành mã máy Điều này dẫn đến:
Tốc độ chậm hơn so với các ngôn ngữ biên dịch như C++ hay Java
Python không phù hợp cho các ứng dụng yêu cầu hiệu suất cao, chẳng hạn như xử lý đồ họa hoặc game thời gian thực
+ Tuy nhiên, hạn chế này có thể được khắc phục bằng cách sử dụng các công
cụ như Cython hoặc tích hợp với mã C++
Không hỗ trợ đa luồng thực sự
+ Python sử dụng cơ chế GIL (Global Interpreter Lock), giới hạn việc thực thi đồng thời các luồng (threads) trong chương trình Điều này gây trở ngại cho các ứng dụng yêu cầu xử lý song song cao, như máy chủ đa luồng hoặc hệ thống thời gian thực
+ Dù vậy, Python vẫn hỗ trợ xử lý song song qua multiprocessing, nhưng cáchtiếp cận này phức tạp hơn so với việc sử dụng đa luồng thực sự
Không tối ưu cho phát triển ứng dụng di động
+ Python không phổ biến trong lập trình ứng dụng di động so với các ngôn ngữ như Swift (cho iOS) hay Kotlin (cho Android)
+ Dù có các framework như Kivy hoặc BeeWar , nhưng chúng không mang e
lại trải nghiệm người dùng và hiệu suất tốt bằng các công cụ chuyên biệt
Hạn chế trong lập trình nhúng và hệ thống
Trang 14+ Python không được thiết kế để hoạt động ở cấp độ phần cứng hoặc các tác
vụ hệ thống thấp, vốn là thế mạnh của các ngôn ngữ như C hoặc C++.+ Trong các ứng dụng nhúng, Python thường chỉ được sử dụng khi hiệu suất không phải là ưu tiên hàng đầu
2.1.3 Ứng dụng của Python
Python, nhờ vào tính linh hoạt, cú pháp dễ học và hệ sinh thái thư viện phong phú,
đã trở thành một ngôn ngữ lập trình được sử dụng rộng rãi trong nhiều lĩnh vực Dưới đây
là phân tích chi tiết về các ứng dụng phổ biến của Python
Phát triển ứng dụng web: Python là một lựa chọn mạnh mẽ cho phát triển ứng
dụng web nhờ các framework đa dạng và hiệu quả như:
+ Django: Một framework cấp cao, cung cấp sẵn các công cụ để phát triển
nhanh chóng các ứng dụng web phức tạp Django được biết đến với khảnăng bảo mật tốt, dễ mở rộng, và hỗ trợ phát triển API nhanh chóng
+ Flask: Một framework nhỏ gọn, linh hoạt, phù hợp với các dự án cần tùy
chỉnh nhiều hoặc có quy mô nhỏ hơn Flask thường được sử dụng cho cácdịch vụ API và các ứng dụng tối giản
+ FastAPI: Một framework hiện đại được thiết kế để xây dựng API nhanh
chóng và hiệu quả, đặc biệt trong các ứng dụng yêu cầu tốc độ và hiệu suấtcao
Khoa học dữ liệu và phân tích dữ liệu: Trong lĩnh vực khoa học dữ liệu,
Python là ngôn ngữ không thể thiếu, đặc biệt khi xử lý và phân tích dữ liệu lớn Các thư viện mạnh mẽ như:
+ Pandas: Hỗ trợ phân tích và xử lý dữ liệu dạng bảng.
+ NumPy: Cung cấp các công cụ tính toán số học hiệu quả, đặc biệt cho xử lý
Trang 15 Học máy và trí tuệ nhân tạo (AI): Python được xem là ngôn ngữ chủ đạo trong
lĩnh vực học máy và AI Các thư viện và framework chuyên dụng đã giúp Python thống trị lĩnh vực này, bao gồm:
+ TensorFlow: Một nền tảng học máy cấp cao, được phát triển bởi Google,
cho phép xây dựng các mô hình học sâu phức tạp
+ Keras: Một thư viện giao diện dễ sử dụng, xây dựng trên TensorFlow, giúp
triển khai các mô hình AI nhanh chóng
+ PyTorch: Được phát triển bởi Facebook, PyTorch đặc biệt hữu ích trong
nghiên cứu và phát triển mô hình AI nhờ tính năng linh hoạt và dễ dàngdebug
+ NLTK và spaCy: Các thư viện xử lý ngôn ngữ tự nhiên, hỗ trợ các ứng
dụng như phân tích văn bản, dịch thuật, và chatbot
Tự động hóa và DevOps: Python là công cụ hữu ích trong việc tự động hóa các
tác vụ lặp đi lặp lại, giúp tiết kiệm thời gian và nâng cao hiệu quả làm việc Một
số ứng dụng trong tự động hóa và DevOps bao gồm:
+ Quản lý hệ thống: Sử dụng các thư viện như Fabric hoặc Ansible để quản
lý và triển khai phần mềm trên nhiều máy chủ
+ Kiểm tra tự động (Automation Testing): Sử dụng Python với Selenium để
tự động hóa việc kiểm tra các trang web
+ Viết script tự động hóa: Python có thể được sử dụng để viết các script nhỏ
gọn, tự động thực hiện các tác vụ như tải dữ liệu, gửi email hàng loạt, hoặcsao lưu dữ liệu
Ứng dụng desktop: Python cũng có thể được sử dụng để phát triển ứng dụng
desktop thông qua các thư viện như:
+ Tkinter: Một thư viện cơ bản để xây dựng giao diện đồ họa (GUI) với các
widget đơn giản
+ PyQt và wxPython: Cung cấp các công cụ để xây dựng ứng dụng GUI phức
tạp hơn, chuyên nghiệp hơn