Ngôn ngữ lập trình Python được dùng vào các mục đích: • Phát triển web trên máy chủ • Phát triển phần mềm 17 • Tính toán một cách khoa học • Lên kịch bản cho hệ thống 1.2 Các tính năng c
Trang 1TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO TIỂU LUẬN HỌC PHẦN
LẬP TRÌNH PYTHON
Đ TI: Xây dựng trò chơi Minesweepers
Sinh viên thực hiện : NGUYỄN ĐỨC QUANG
PHẠM HONG TRUNG SƠN Giảng viên hướng dẫn : Ts LÊ MẠNH HÙNG
Hà Nội, ……… năm 2022/
Trang 2PHIẾU CHẤM ĐIỂM
Sinh viên thực hiện:
Trang 3LỜI MỞ ĐẦU
Hiện nay, ngành công nghệ thông tin đã trở thành một phần không thể thiếutrong cuộc sống, công nghệ thông tin đã và đang đóng vai trò quan trọngtrọng các ngành khoa học, kĩ thuật, kinh tế, xã hội tại các nước trên thế giới
Nó mang lại giá trị về kinh tế, giáo dục và đặc biệt là mang tính giải trí cao.Như chúng ta đã thấy trong những năm gần đây sự phát triển vượt bậc vềcông nghệ đồ họa đã mang lại cho con người chúng ta vô vàn sự tiện nghi,những trải nghiệm mới mẻ, chân thực
Sự ra đời của Internet, các trò chơi dần xuất hiện và nhanh chóng gây đượcsức hút to lớn Hiện nay các trò chơi cũng đang tiếp tục phát triển mạnh mẽ.Nắm bắt được xu thế của người dùng, nhóm chúng em đã lên ý tưởng và xây
dựng ứng dựng trò chơi giải trí “Xây dựng trò chơi Minesweepers” Trong
quá trình học tập, nhờ có sự hướng dẫn tận tình của thầy Lê Mạnh Hùng,chúng em đã hoàn thành được đề tài này Từ đó chúng em có thể nắm vữngđược cách thức thiết kế một đề tài cụ thể
Trong quá trình làm đề tài dù đã cố gắng tìm hiểu nhưng vẫn không tránhkhỏi sai sót Tuy nhiên về cơ bản các chức năng chính của một hệ thống đãđược em hoàn thiện một cách tốt nhất Chúng em mong rằng sẽ nhận được
sự đóng góp ý kiến của các thầy cô để phần mềm cũng như kiến thức củachúng em được hoàn thiện hơn
Trang 4CHƯƠNG 1: GIỚI THIỆU V PYTHON
1.1 Giới thiệu
Lịch sử hình thành
Python đã được hình thành vào cuối những năm 1980 và được bắt đầu thựchiện vào tháng 12/1989 bởi Guido van Rossum tại CWI tại Hà Lan như làngười kế thừa của ngôn ngữ ABC (tự lấy cảm hứng từ SETL) có khả năng
xử lý ngoại lệ và giao tiếp với hệ điều hành Amoeba Van Rossum là tác giảchính của Python, và vai trò trung tâm của ông tiếp tục trong việc quyết địnhhướng phát triển của Python được phản ánh trong tiêu đề mà cộng đồngPython dành cho ông “Độc tài nhân từ cho cuộc sống” (benevolent dictatorfor life) (BDFL)
Python 2.0 được phát hành vào ngày 16/10/2000, với nhiều tính năng chínhmới bao gồm một bộ dọn rác đầy đủ và hỗ trợ Unicode Với phiên bản này,quá trình phát triển đã được thay đổi và trở thành minh bạch hơn và đượccộng đồng ủng hộ
Python 3.0 (còn được gọi là Python 3000 hoặc Py3k), một bản phát hànhlớn, không tương thích ngược, được phát hành vào ngày 03/12/2008 sau mộtthời gian dài thử nghiệm Nhiều trong số các tính năng chính của nó đã đượcđiều chỉnh để tương thích ngược với Python 2.6 và 2.7 Các tính năng và
Trang 5triết lý phát triển Python là 1 ngôn ngữ lập trình đa hình: lập trình hướng đốitượng và hướng cấu trúc được hỗ trợ đầy đủ, và có 1 số tính năng của ngônngữ hỗ trợ lập trình theo chức năng và lập trình hướng khía cạnh (Aspect-oriented programming) Nhiều mô hình khác được hỗ trợ bằng việc sử dụngcác phần mở rộng, bao gồm thiết kế theo hợp đồng (design by contract) vàlập trình luận lý.
Các trang như Mozilla, Reddit, Instagram và PBS đều được viết bằngPython Ngôn ngữ lập trình Python được dùng vào các mục đích:
• Phát triển web (trên máy chủ)
• Phát triển phần mềm 17
• Tính toán một cách khoa học
• Lên kịch bản cho hệ thống
1.2 Các tính năng của Python
Phân tích dữ liệu và học máy với mã Python
Với lượng dữ liệu ngày càng tăng mà chúng ta có ngày nay, điều quan trọng
là phải sử dụng nó trong quá trình ra quyết định Với công nghệ máy học vàphân tích dữ liệu, chúng ta có thể đạt được mục đích này Bạn sẽ thích thúkhi biết rằng ngôn ngữ lập trình Python là động lực đằng sau việc thu thập,
tổ chức và thao tác dữ liệu này
Phát triển web và phát triển phần mềm
Ngôn ngữ Python cũng giúp phát triển web và phát triển phần mềm Nó hỗ trợ nhiều khung như Pyramid, Django và Flask Các khung này đã góp phần tạo ra các trang web nổi tiếng như Spotify, Reddit và Mozilla Với quản lý nội dung, ủy quyền và truy cập cơ sở dữ liệu, các phiên bản khác nhau của ngôn ngữ lập trình Python là ngôn ngữ hàng đầu để phát triển web
Tự động hóa hoặc viết kịch bản bằng mã Python
Tạo mã để hoàn thành các tác vụ tự động được gọi là viết kịch bản Bạn cóthể sử dụng Python cho mục đích này Việc sử dụng kịch bản thường đượcthực hiện trong các công việc lặp đi lặp lại Mã Python có thể giúp bạn tựđộng hóa quy trình Nó giúp tiết kiệm thời gian, tài nguyên và công sức thủcông
Trang 6 Kiểm thử phần mềm và tạo nguyên mẫu
Theo dõi lỗi, kiểm soát tòa nhà, phát triển web, phát triển phần mềm vàkiểm tra phần mềm là những khía cạnh quan trọng mà Python có thể xử lý.Với mã Python để giải cứu bạn, thời gian cần thiết cho tất cả các hoạt độngnày có thể được giảm xuống mức tối thiểu, do đó cho phép bạn tập trungvào những gì cần thiết
1.3 Tại sao lại là Python?
Tại sao bạn nên sử dụng mã Python khi chúng ta có nhiều ngôn ngữ lậptrình phổ biến khác? Đây là những lý do:
Dễ học
Python rất đơn giản và dễ học Cú pháp rõ ràng và sự phụ thuộc vào ngônngữ tiếng Anh khiến nó trở nên dễ hiểu Do đó, việc áp dụng nó để thực hiệncác tác vụ khác nhau như phát triển phần mềm trở nên tương đối đơn giảnhơn
Cung cấp hỗ trợ cộng đồng tích cực
Không giống như các ngôn ngữ khác, bạn có thể tìm thấy cộng đồng hỗ trợtích cực cho ngôn ngữ Python Vì vậy, trong quá trình phát triển phần mềmcủa giai đoạn tự động hóa, nếu bạn phát hiện ra một số vấn đề, bạn có thểlên diễn đàn và tìm kiếm sự trợ giúp chuyên nghiệp Sự hiện diện của mộtcộng đồng như vậy đảm bảo bạn tìm thấy câu hỏi cho tất cả các vấn đề củamình liên quan đến Python
Cung cấp môi trường linh hoạt
Với mã Python, bạn không phải giới hạn bản thân trong một trường cụ thể
Nó được mô tả là một trong những ngôn ngữ lập trình có mục đích chung
có thể được sử dụng trong phát triển web, phát triển phần mềm hoặc giảipháp tự động, bất kể mức độ phức tạp hoặc miền
Nhiều thư viện và khung có sẵn
Theo thời gian, Python Software Foundation đã phát triển nhiều thư viện vàkhung, bao gồm nhưng không giới hạn ở NumPy và SciPy, Django Với sựtrợ giúp của các thư viện ngôn ngữ lập trình này, bạn không cần phải bắt đầuquá trình viết mã từ đầu để phát triển phần mềm, do đó cho phép bạn tiếtkiệm thời gian
Trang 7 Nền tảng phần mềm Python giúp ích trong các công nghệ phức tạp
Sau khi học mã Python, bạn có thể mong đợi các công nghệ phức tạp trởnên dễ dàng hơn một chút Có thể dễ dàng quản lý các nhiệm vụ như tự độnghóa đòi hỏi nhiều thời gian và kiến thức chuyên môn thông qua một trongnhững ngôn ngữ lập trình Python tốt nhất
Cú pháp mã Python và ngữ nghĩa
Cú pháp Python đề cập đến các quy tắc lập trình dựa trên đó ngôn ngữ sẽđược viết và giải thích, trong khi ngữ nghĩa là ý nghĩa của các câu lệnh đượcviết Đối với Python, các quy định và hàm ý đơn giản hơn so với các ngônngữ lập trình phổ biến khác
Sử dụng ngôn ngữ có thể đọc được trong cú pháp cho phép các nhà pháttriển hiểu nó rõ ràng và đảm bảo rằng những người mới bắt đầu có thể diễngiải ngôn ngữ lập trình và mã dễ dàng hơn Bên cạnh đó, sự hiện diện củakhoảng trắng trong phần thụt đầu dòng của ngữ nghĩa Python và hạn chế chỉcung cấp một cách duy nhất để thực hiện một tác vụ cụ thể giúp giảm khảnăng nhầm lẫn Vì nền tảng phần mềm Python là một trong những ngôn ngữlập trình có mục đích chung, các nhà phát triển đã giữ cho nó toàn diện vàđơn giản để mọi người sử dụng
Môi trường phát triển phần mềm tích hợp Python
Các nền tảng ngôn ngữ lập trình hoặc môi trường phát triển phần mềm nàycho phép các lập trình viên có các công cụ toàn diện để phát triển các phầnmềm và ứng dụng khác nhau Khung Python cơ bản đã được thiết lập giúpcác nhà phát triển và những người không phải là nhà phát triển dễ dàng tùychỉnh hoặc tạo một ứng dụng, dịch vụ hoặc sản phẩm kỹ thuật số mới
Trang 9CHƯƠNG 2: TỔNG QUAN V BI TOÁN2.1 Giới thiệu về thư viện Pygame
2.1.1 Tổng quan về thư viện Pygame
Giới thiệu
Pygame là một thư viện của ngôn ngữ lập trình Python và là một tập hợpcác mô-đun Python được thiết kế riêng để lập trình trò chơi Pygame đượcviết bởi Pete Shinners thay thế cho chương trình PySDL sau khi quá trìnhphá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 PublicLicense
Pygame có thể chạy trên nhiều nền tảng và hệ điều hành khác nhau Vớithư 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, linhhoạt, dễ sử dụng
Đặc điểm
Pygame sử dụng Simple DirectMedia Layer (SDL), một thư việnphát triển đa nền tảng cho phép các nhà phát triển có thể truy cập vàophầ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áttriể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 trungphá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ữngnhà 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
Trang 10Tí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….
Cấu trúc
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
Trang 11X: 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
Cách cài đặt thư viện Pygame
Để cài đặt thư viện Pygame trong Python bạn thực hiện theo các bướcdướ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ậpPython.org và tải xuống phiên bản tương thích với hệ điều hành củamì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ị đầucuố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ảinghiệm thư viện Pygame
Các thành phần cấu tạo nên Pygame
Trang 12Mô-đun Pygame: Là khối xây dựng cơ bản giúp phát triển trò chơi,
quản lý cửa sổ, xử lý sự kiện và hiển thị đồ họa
Bề mặt hiển thị: Nơi hiển thị các đối tượng và hình ảnh trong trò
chơi, cho phép tùy chỉnh kích thước và thuộc tính
Nhân vật (Sprites): Đại diện cho thực thể trong trò chơi, Pygame
hỗ trợ quản lý và phát hiện xung đột giữa các nhân vật và môi trường
Bề mặt (Surface): Dùng để hiển thị các đồ họa như hình ảnh và văn
bản, cho phép tải lên các hình ảnh khác nhau
Xử lý sự kiện: Giúp phát hiện và đáp ứng tương tác của người dùng
như nhấn phím và nhấp chuột, tạo ra trò chơi tương tác
Âm thanh và Âm nhạc: Pygame cho phép tạo và quản lý âm
thanh, giúp trò chơi trở nên sống động hơn với hiệu ứng âm thanh vànhạc nền
Phát hiện va chạm: Cung cấp cơ chế phát hiện va chạm giữa các
đối tượng, giúp điều chỉnh cơ chế chơi và tương tác trong trò chơi
Trang 13 Ưu điểm
Thân thiện với người dùng: Pygame dễ học và sử dụng, phù hợp
cho cả người mới bắt đầu và lập trình viên chuyên nghiệp Có nhiều tàinguyên, mã nguồn mẫu, và tài liệu sẵn có trên cộng đồng PyPI, giúpnhà phát triển học hỏi và phát triển nhanh chóng
Mã nguồn mở và miễn phí: Pygame hoàn toàn miễn phí và được
cấp phép mã nguồn mở, cho phép người dùng tùy chỉnh và sử dụng màkhông phải trả phí
Đa nền tảng: Chạy trên nhiều hệ điều hành như Windows, macOS,
và Linux, giúp các trò chơi phát triển dễ dàng tiếp cận người chơi trênnhiều nền tảng
Kiểm soát linh hoạt: Nhà phát triển có quyền kiểm soát hoàn toàn
đối với đồ họa, âm thanh, và xử lý nhập liệu, giúp tạo ra trò chơi vớitính năng độc đáo
Cộng đồng lớn: Có một cộng đồng sôi động gồm các nhà phát triển
chia sẻ ý tưởng, hỗ trợ kỹ thuật, và cung cấp tài nguyên học tập
Phù hợp cho giáo dục: Pygame là công cụ tuyệt vời để dạy lập
trình và phát triển trò chơi, đặc biệt cho trẻ em và người học Python
Nhược điểm
Giới hạn về hiệu suất: Pygame không được tối ưu hóa cho các trò
chơi 3D hoặc đồ họa phức tạp Nó phù hợp hơn với trò chơi 2D hoặctrò chơi nhỏ
Không có GUI tích hợp hiện đại: Pygame thiếu các công cụ giao
diện người dùng (GUI) tiên tiến, khiến việc phát triển giao diện phứctạp khó khăn hơn
Không cập nhật thường xuyên: Thư viện Pygame không
nhận được cập nhật tính năng mới thường xuyên, dẫn đến hạnchế trong việc hỗ trợ công nghệ hiện đại
Trang 14Thiếu công cụ phát triển toàn diện: Không có môi trường phát
triển tích hợp (IDE) hoặc công cụ dựng trò chơi sẵn như các công cụkhác (Unity, Unreal Engine), khiến việc phát triển các trò chơi phứctạp mất nhiều thời gian hơn
Hiệu suất thấp so với các công cụ chuyên dụng: Đối với các dự
án thương mại lớn hoặc yêu cầu hiệu suất cao, Pygame không thể cạnhtranh với các engine chuyên nghiệp như Unity hay Godot
Một số trò chơi sử dụng Pygame
Frest on Fire
Trang 15Super Potato Bruh
Solar Woft
Trang 162.1 Giới thiệu về trò chơi Minesweepers
Lịch sử trò chơi dò mìn
Dò mìn hay gỡ bom (tiếng Anh: Minesweeper) là một trò chơi giải đố trênmáy tính dành cho một người chơi Trò chơi bao gồm một "bãi mìn" lànhững ô vuông có thể chứa "mìn", và người chơi cần phải dựa vào nhữngcon số thể hiện số mìn xung quanh để mở hết tất cả những ô vuông trống
mà không kích nổ quả mìn nào Trò chơi được xây dựng như một chươngtrình giải trí cài đặt trên hệ điều hành Microsoft Windows NgoàiWindows, trò chơi còn có trong Linux (như KMines (giao diện KDE) vàgnomine (giao diện GNOME) Nhờ quy luật đơn giản, nhiều biến thể củatrò chơi cũng được phát hành như Dò mìn 3D, Minesweeper X, vàCrossmines
Mặc dù đã có nhiều phiên bản đầu tiên gần giống với Minesweeper, nhưngtrò chơi này không được phát hành chính thức cho đến năm 1990.Minesweeper là một phần của gói Giải trí của Microsoft Tuy nhiên, sau sựphổ biến rộng rãi của Minesweeper, Windows đã quyết định vào năm 1992rằng nó sẽ được cài đặt tự động khi người dùng tải xuống bản cập nhật 3.1,thay thế Reversi làm trò chơi gia đình trên máy tính Microsoft
Trong nhiều năm, chỉ có một số trò chơi được cài đặt tự động trên máytính, nhiều trò chơi trong số đó đã trở thành những cái tên quen thuộc trongngành công nghiệp trò chơi trong nhiều năm tới Những trò chơi này baogồm Cờ vua , Lật ngược và Solitaire để kể tên một số trò chơi lớn.Minesweeper sẽ vẫn còn trên mọi bản cập nhật Windows, cho đếnMicrosoft 8.0 khi nó bị loại khỏi danh sách sau khoảng hai thập kỷ hoạtđộng Mặc dù trò chơi có thể không được cài đặt như một phần của giaodiện Microsoft nữa, nhưng lịch sử của Minesweeper vẫn tiếp tục qua nhiềunăm
Trang 17Một số lợi ích của trò chơi dò mìn:
Phát triển Tư Duy Logic: Trò chơi Dò Mìn đòi hỏi người chơi phải suy
luận và áp dụng logic để tìm ra vị trí của các quả bom Việc phải suy nghĩmột cách chi tiết và logic giúp cải thiện khả năng tư duy và giải quyết vấn
đề của người chơi
Nâng Cao Kỹ Năng Quan Sát: Người chơi phải cẩn thận quan sát mỗi ô
trên lưới để phát hiện và tránh các quả bom Việc này giúp cải thiện khảnăng quan sát và tăng cường sự chú ý đối với chi tiết
Phát Triển Khả Năng Ra Quyết Định: Trò chơi Dò Mìn thúc đẩy
người chơi phải ra quyết định nhanh chóng và chính xác trong việc chọn ô
để mở Điều này củng cố khả năng ra quyết định của họ trong một thời gianngắn
Giải Trí và Giảm Stress: Mặc dù trò chơi có thể đòi hỏi sự tập trung
cao, nhưng nó cũng mang lại trải nghiệm giải trí và thư giãn Việc tìm kiếm
và loại bỏ bom có thể là một thách thức thú vị và giúp giảm căng thẳng
Khích Lệ Sự Kiên Nhẫn và Kiên Định: Trò chơi này đòi hỏi sự kiên
nhẫn và kiên định để giải quyết các bài toán phức tạp và tránh bom mộtcách an toàn Việc vượt qua các thử thách trong trò chơi có thể giúp ngườichơi phát triển sự kiên nhẫn và kiên định trong cuộc sống hàng ngày