You are on page 1of 22

TRƯỜNG ĐẠI HỌC KIẾN TRÚC HÀ NỘI

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO ĐỒ ÁN
NGHIÊN CỨU VÀ XÂY DỰNG TRÒ CHƠI RẮN SĂN MỒI SỬ DỤNG
THUẬT TOÁN TÌM KIẾM THEO CHIỀU RỘNG (BFS)

Ngành: CÔNG NGHỆ THÔNG TIN


Giảng viên hướng dẫn: Ths. Nguyễn Thị Huệ
Lớp: 21CN2
Nhóm sinh viên thực hiện:
Họ và tên: Mai Xuân Điệp Msv: 2155010072
Họ và tên: Nguyễn Đỗ Công Msv: 2155010037
Họ và tên: Vũ Tuấn Dương Msv: 2155010062
Họ và tên: Nguyễn Vũ Việt Anh Msv: 2155010017

Hà Nội, 2023
MỤC LỤC

LỜI MỞ ĐẦU

DANH MỤC HÌNH ẢNH

DANH MỤC CÁC TỪ VIẾT TẮT, TỪ TIẾNG ANH

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT

1.1. Tổng quan về trí tuệ nhân tạo


1.1.1. Khái niệm
1.1.2. Phân loại
1.1.3. Ứng dụng của trí tuệ nhân tạo
1.1.4. Mặt tích cực và khó khăn của trí tuệ nhân tạo
1.2. Tổng quan về đề tài
1.2.1. Lý do chọn đề tài
1.2.2. Lịch sử hình thành và phát triển của trò chơi
1.2.3. Ứng dụng và đề xuất cải tiến trò chơi
1.3. Các công nghệ áp dụng trong đề tài
1.3.1. Tổng quan về ngôn ngữ lập trình Python
1.3.2. Thư viện Pygame

CHƯƠNG 2: ỨNG DỤNG THUẬT TOÁN BREADTH FIRST SEARCH


XÂY DỰNG SNAKE GAME

2.1. Thuật toán Breadth First Search


2.1.1. Mô tả thuật toán
2.1.2. Thuật toán
2.1.3. Ưu, nhược điểm
2.2. Ứng dụng thuật toán Breadth First Search xây dựng Snake Game

2
CHƯƠNG 3: XÂY DỰNG VÀ TRIỂN KHAI HỆ THỐNG

KẾT LUẬN

3
LỜI MỞ ĐẦU

4
DANH MỤC HÌNH ẢNH

5
DANH MỤC CÁC TỪ VIẾT TẮT, TỪ TIẾNG ANH

6
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1. Tổng quan về trí tuệ nhân tạo
1.1.1. Khái niệm
Ngày nay, cụm từ “Trí tuệ nhân tạo” hay AI không còn quá xa lạ và
chúng ta có thể bắt gặp rất nhiều những ứng dụng của AI trên rất nhiều lĩnh vực
trong đời sống như y tế, giáo dục, thể thao, công nghiệp,… và rất nhiều lĩnh vực
khác. Khái niệm Trí tuệ nhân tạo (Artificial Intelligence) hay AI đã xuất hiện từ
nhiều thập kỷ trước và từ đó cho đến nay khái niệm trí tuệ nhân tạo dần được
hoàn thiện hơn. Ta có thể đưa ra khái niệm về AI như sau:
Trí tuệ nhân tạo hay trí thông minh nhân tạo (Artifical intelligence – viết
tắt là AI) là một ngành thuộc lĩnh vực Khoa học máy tính (Computer science).
Là trí thông minh được thể hiện bằng máy móc được con người lập trình mô
phỏng quá trình suy nghĩ và hoạt động như con người giúp máy tính có thể tự
học, tự đưa ra các quyết định mà không cần lập trình trước hay nói cách khác
đây là quá trình mô phỏng bộ não của con người trên máy tính. Ngoài ra còn
nhiều cách đưa ra khái niệm về AI tuy nhiên chúng đều xoay quanh các đặc
điểm sau:
Hệ thống hành động như người
Con người được lấy làm thước đo khi đánh giá mức độ thông minh của
máy tính. Theo cách định nghĩa này, trí tuệ nhân tạo được phát triển nhằm tạo
ra các hệ thống có hành vi hay hành động tương tự con người. Hệ thống trí tuệ
nhân tạo cần có những khả năng sau:
Xử lý ngôn ngữ tự nhiên: để có thể phân tích, hiểu câu hỏi và tổng hợp
câu trả lời dựa trên một ngôn ngữ giao tiếp thông thường và phổ biến nhất hiện
nay là tiếng Anh.
Biểu diễn tri thức: phục vụ việc lưu giữ tri thức và thông tin trong hệ
thống.
Suy diễn: sử dụng những tri thức đã có để đưa ra câu trả lời
Học máy: sử dụng để thích nghi và học hỏi trong các môi trường, hoàn
cảnh khác nhau
Hệ thống có thể suy nghĩ như người
AI hành động một cách thông minh dựa trên quá trình phân tích dữ liệu
tương tự quá trình suy nghĩ của con người. Những nghiên cứu theo hướng này
dựa trên việc nghiên cứu quá trình nhận thức và tư duy của con người, từ đây
mô phỏng và tạo ra những hệ thống có khả năng tự nhận thức, tư duy hay nói
7
cách khác đây là quá trình mô phỏng bộ não con người. Tuy nhiên đây cũng
chính là bước cản lớn nhất khi phát triển AI.
Hệ thống có thể suy nghĩ hợp lý
Thực tế cho thấy con người luôn bị chi phối bởi tâm lý, cảm xúc. Do vậy,
không phải lúc nào con người cũng suy nghĩ và hành động theo hướng đạt tới
kết quả tốt. Do vậy những hệ thống được xây dựng để có khả năng lập luận dựa
trên việc sử dụng các hệ thống logic để đưa ra những kết quả tốt nhất.
Hệ thống hành động hợp lý
Đôi khi, ta phải đưa ra những quyết định trong những tình huống bất ngờ
chưa có yếu tố chắc mà chỉ dựa trên phản xạ. Tương tự như vậy, các hệ thống
hành động hợp lý có thể sử dụng cả hai cách tiếp cận dựa trên suy diễn và dựa
trên phản xạ để đạt được kết quả tốt.
1.1.2. Phân loại

Phân loại AI dựa vào hai yếu tố, từ dó ta có hai cách phân loại sau:
Cách 1: Phân loại dựa trên mức độ thông minh:
Artificial Narrow Intelligence (ANI - Trí tuệ nhân tạo hẹp)
Loại trí tuệ nhân tạo này đại diện cho tất cả các AI hiện có, bao gồm
cả những AI phức tạp nhất và có khả năng nhất từng được tạo ra cho đến
nay. Trí tuệ nhân tạo hẹp đề cập đến các hệ thống AI chỉ có thể thực hiện
một nhiệm vụ cụ thể một cách tự động bằng cách sử dụng các khả năng
giống như con người. Những cỗ máy này không thể làm gì hơn những gì
chúng được lập trình để làm, và do đó có một phạm vi năng lực rất hạn chế
hoặc hẹp.
Artificial General Intelligence (AGI - Trí tuệ nhân tạo chung)
Trí tuệ nhân tạo tổng quát/ chung là khả năng của một AI có thể học,
nhận thức, hiểu và hoạt động hoàn toàn giống như một con người. Các hệ
thống này sẽ có thể xây dựng độc lập nhiều năng lực và hình thành các kết
nối và tổng quát hóa trên các lĩnh vực.
Artificial Super Intelligence (ASI - Siêu trí tuệ nhân tạo)
Được coi là đỉnh cao của nghiên cứu AI. ASI ngoài việc tái tạo trí
thông minh nhiều mặt của con người, sẽ cực kỳ tốt hơn trong mọi việc vì có
bộ nhớ lớn hơn, xử lý và phân tích dữ liệu nhanh hơn và khả năng ra quyết
định.

8
Cách 2: Phân loại dựa trên khả năng mô phỏng suy, hành động của con
người:
Reactive Machines - AI phản ứng
Là những dạng hệ thống AI lâu đời nhất, khả năng cũng cực kỳ hạn
chế. Chúng mô phỏng khả năng phản ứng của tâm trí con người với các loại
kích thích khác nhau. Những máy này không có chức năng dựa trên bộ nhớ.
Điều này có nghĩa là những máy như vậy không thể sử dụng những kinh
nghiệm đã đạt được trước đó để thông báo cho các hành động hiện tại của
chúng, tức là những máy này không có khả năng “học hỏi”
Limited Memory - AI với trí nhớ giới hạn
AI có bộ nhớ hạn chế là AI ngoài việc có các khả năng phản ứng
thuần túy, còn có khả năng học hỏi từ dữ liệu lịch sử để đưa ra quyết định.
Gần như tất cả các ứng dụng hiện có mà chúng ta biết đều thuộc thể loại AI
này. Hầu hết tất cả các ứng dụng AI ngày nay, từ chatbot và trợ lý ảo cho
đến xe tự lái đều được điều khiển bởi AI bộ nhớ hạn chế.
Theory of Mind - Lý thuyết về Trí tuệ nhân tạo
AI loại này vẫn tồn tại dưới dạng một khái niệm hoặc một công trình
đang được tiến hành. Đây là một lý thuyết mà AI sẽ có thể hiểu rõ hơn về
các thực thể mà nó đang tương tác bằng cách phân biệt nhu cầu, cảm xúc,
niềm tin hay nói một cách khác đó là sự thấu hiểu “con người”.
Self-Awareness - Tự nhận thức
Công nghệ AI này có khả năng tự nhận thức về bản thân, có ý thức và
hành xử như con người. Thậm chí, chúng còn có thể bộc lộ cảm xúc cũng
như hiểu được những cảm xúc của con người. Đây được xem là bước phát
triển cao nhất của công nghệ AI tuy nhiên đến thời điểm hiện tại, công nghệ
này vẫn chưa khả thi.
1.1.3. Ứng dụng của trí tuệ nhân tạo

Y tế và chăm sóc sức khoẻ


AI trong ra quyết định lâm sàng: IBM Watson là một trong những hệ
thống hàng đầu hỗ trợ chăm sóc sức khỏe bằng AI, giúp các bác sĩ đưa ra

9
quyết định hiệu quả. Với khả năng máy học (machine learning) và khả năng
xử lý ngôn ngữ tự nhiên, hệ thống này giúp các bác sĩ xem xét hồ sơ sức
khoẻ điện tử của bệnh nhân và cập nhật thông tin hướng dẫn điều trị từ các
công trình nghiên cứu y khoa.
AI trong hồ sơ sức khoẻ điện tử: Hiện nay, EHR đã trở thành một
trong những công việc tiêu tốn nhiều thời gian nhất của nhân viên y tế tại
các cơ sở chăm sóc sức khỏe. Công nghệ AI hứa hẹn có thể giúp các nhà
cung cấp dịch vụ chăm sóc sức khỏe thu thập, lưu trữ, định dạng lại và theo
dõi dữ liệu lâm sàng, cũng như các kế hoạch và đánh giá cá nhân hóa.
AI trong chẩn đoán: Công nghệ AI đã được sử dụng để cải thiện chất
lượng chẩn đoán, đặc biệt là trong X quang. AI dựa trên nguồn dữ liệu
129.450 hình ảnh lâm sàng để chẩn đoán bệnh ngoài da, kết quả đã chứng
minh rằng hệ thống này có thể phân loại ung thư da ở mức tương đương với
các bác sĩ da liễu
AI trong quản lý khám, chữa bệnh: Việc đưa công nghệ AI vào các hệ
thống quản lý chăm sóc sức khỏe có thể giúp xác định các chẩn đoán và điều
trị không cần thiết. Do đó, công nghệ AI y tế không chỉ tập trung vào các
tương tác cổ điển giữa bệnh nhân với nhà cung cấp dịch vụ chăm sóc sức
khỏe mà còn có thể được sử dụng trong quản lý hệ thống y tế cho các tổ
chức quy mô lớn
Giáo dục
Trí tuệ nhân tạo giúp cá nhân hóa lộ trình học tập: Trí tuệ nhân tạo sẽ
tổng hợp dữ liệu để đề xuất lộ trình học tập rõ ràng, phù hợp với từng học
viên. Sự chênh lệch về khả năng tiếp thu, tiềm năng phát triển giữa các học
viên sẽ được giải quyết. Giáo dục được ứng dụng trí tuệ nhân tạo nhằm
hướng tới sự tối ưu hóa khả năng tiếp thu, khắc phục điểm yếu và phát huy
thế mạnh riêng của từng người.
Trí tuệ nhân tạo là trợ giảng đa nhiệm: Giáo viên không cần phải 1
mình thực hiện nhiều tác vụ lặp lại như chấm bài, thống kê điểm, báo cáo
giáo án… AI sẽ thiết lập những công việc này được tự động hóa. Nhờ đó,
người dạy có thể tập trung vào chuyên môn, nâng cao tay nghề và hướng
dẫn học sinh sát sao hơn.
Trí tuệ nhân tạo định hướng nghề nghiệp: Bất lợi đối với nền giáo dục
của các nước đang phát triển, học sinh được đào tạo đồng bộ, ít có cơ hội
10
khám phá và thiếu sự định hướng dựa trên khả năng cá nhân. Trí tuệ nhân
tạo sẽ giải quyết thực trạng này bằng cách tổng hợp, phân tích khả năng, sở
thích, tư duy của từng người để định hướng nghề nghiệp.
An ninh và quân sự
AI trông việc theo dõi và phát hiện: AI có thể được sử dụng để theo
dõi hoạt động quân sự và phát hiện các mối đe dọa an ninh qua các phương
tiện truyền thông, xã hội.
Máy bay không người lái (drone) quân sự: AI có thể được tích hợp
vào máy bay không người lái để tăng cường năng lực quân sự, khả năng
trinh sát. Máy bay không người lái có nhiệm vụ bay cạnh các tiêm kích
chiến đấu và hỗ trợ phi công trong các nhiệm vụ bằng cách bổ sung thêm
cho họ khả năng giám sát và hỏa lực vốn đã sẵn có.
Xử lí ngôn ngữ tự nhiên
Chatbot: một chatbot thông minh với khả năng hội thoại tự nhiên và
mang đến trải nghiệm tốt cho khách hàng sẽ tạo ra lợi thế cạnh tranh vượt
trội. Một dịch vụ khách hàng tốt sẽ giúp tạo được ấn tượng tốt làm tiền đề
cho việc gia tăng tăng doanh thu.
Dịch thuật tự động: Google có một máy chủ riêng, sử dụng công nghệ
AI và có khả năng lưu trữ một lượng lớn các dữ liệu dịch thuật. Điều quan
trọng và đáng chú ý nhất của Google Dịch là tính năng tích lũy kết quả dịch
thuật (bản dịch có sẵn) từ các dịch giả. AI sẽ tự động chọn lọc các bản dịch
sao cho phù hợp nhất.
Giải trí:
Gợi ý nội dung: AI được sử dụng để gợi ý phim, âm nhạc, sách và nội
dung giải trí khác dựa trên quá trình quan sát và tìm hiểu những sở thích cá
nhân của người dùng.
Các trò chơi đối kháng với máy (game 1 người chơi):Trong game 1
người, người chơi sẽ phải chơi với máy, chính là chơi với AI. Nó sẽ phân
tích hành vi của người chơi sau đó tổng hợp dữ liệu, “học” lối chơi và đáp
trả họ, quá trình này sẽ diễn ra lặp đi lặp lại. Chính cách xử lý này đã giúp trí
thông minh nhân tạo trong chương trình cờ vây AlphaGo đã đánh bại Lee
Sedol, kì thủ với 18 giải quốc tế về môn cờ này với tỉ số 4-1 vào 2016

11
Nghiên cứu khoa học và phát triển sản phẩm
AI tìm kiếm và phân tích dữ liệu: Công nghệ AI cho phép xử lý lượng
lớn dữ liệu phức tạp ở tốc độ cao, chẳng hạn như việc phân tích dữ liệu lịch
sử để dự báo xu hướng và hành vi mua hàng của khách hàng trong tương lai.
Các công cụ phân tích văn bản được hỗ trợ bởi AI có thể sàng lọc dữ liệu phi
cấu trúc như đánh giá của khách hàng và bình luận trên mạng xã hội, để tìm
ra thông tin quý giá về ý kiến và sở thích của người mua. Đồng thời, AI
cũng có thể phát hiện các hoạt động gian lận hay bất thường trong giao dịch
tài chính.
Mô phỏng và thử nghiệm sản phẩm: AI có thể giúp các tổ chức thiết
kế ra sản phẩm. Đây là cách nó hoạt động: một nhà thiết kế hoặc một kỹ sư
đưa các mục tiêu thiết kế vào các thuật toán thiết kế tổng quát. Các thuật
toán này sau đó khám phá tất cả các hoán vị có thể có của một giải pháp và
tạo ra các phương án thiết kế. Cuối cùng, nó sử dụng học máy để kiểm tra
mỗi lần lặp và cải thiện nó.
1.1.4. Mặt tích cực và khó khăn của trí tuệ nhân tạo

Trí tuệ nhân tạo (AI) là một lĩnh vực có nhiều mặt tích cực và tiềm năng
lớn, nhưng cũng đối diện với nhiều khó khăn và thách thức.
Mặt tích cực của trí tuệ nhân tạo
Giải quyết vấn đề phức tạp: AI có khả năng xử lí và phân tích dữ liệu
phức tạp một cách nhanh chóng và hiệu quả, giúp giải quyết các vấn đề lớn và
phức tạp như phân tích dữ liệu y tế, dự đoán thời tiết và tối ưu hoá quá trình sản
xuất.
Tăng cường năng suất: AI có thể thực hiện các nhiệm vụ lặp đi lặp lại
một cách tự động giúp tang cường năng suất và giảm công việc tay chân cho
con người.
Phát triển trí tuệ: Nghiên cứu trong lĩnh vực AI đã giúp con người hiểu rõ
hơn về cách hoạt động của não bộ và học hỏi từ đó.
Ứng dụng trong y tế: AI có tiềm năng lớn trong việc chuẩn đoán bệnh, dự
đoán biến chứng và tạo ra các phương pháo điều trị hiệu quả hơn.
Khó khăn của trí tuệ nhân tạo

12
Đạo đức và luân lý: Sử dụng AI có thể đặt ra nhiều vấn đề đạo đức và
luân lý chẳng hạn như quyền riêng tư, tự động hoá công việc và tạo ra vũ khí tự
động.
Khả năng thất nghiệp: AI có thể thay thế công việc của con người trong
nhiều ngành gây ra tình trạng thất nghiệp và sự bất ổn xã hội.
Rủi ro an ninh: Sử dụng AI để tạo ra phần mềm độc hại hoặc tấn công
mạng có thể gây ra rủi ro an ninh lớn, từ việc đánh cắp dữ liệu cá nhân đến tấn
công mạng quốc gia.
Hạn chế trong hiểu biết và tư duy: Hiện tại AI vẫn có hạn chế trong việc
hiểu biết sâu rộng và tư duy đa chiều như con người. Nó có thể gặp khó khăn
khi đối mặt với tình huống mới và phức tạp.
Quản lí dữ liệu: AI yêu cầu lượng lớn dữ liệu để huấn luyện và hoạt động
hiệu quả. Việc quản lí và bảo vệ dữ liệu này có thể gây ra nhiều rắc rối về
quyền riêng tư và an ninh.

1.2. Tổng quan về đề tài


1.2.1. Lý do chọn đề tài

BFS là thuật toán tìm kiếm theo chiều rộng nổi tiếng trong lý thuyết đồ
thị. Thuật toán này sẽ duyệt từ gốc và loang dần đến các nút có độ sâu tăng
dần. Nó là một thuật toán đơn giản giúp chúng ta tìm được đường đi ngắn
nhất giữa 2 ô trong ma trận. Dựa trên thuật toán này chúng ta sẽ xây dựng
được một AI đơn giản cho Snake game. Từ đó mô tả một phần ứng dụng
của AI trong thực tế.
Snake game hay còn được gọi là trò chơi rắn săn mồi là một trò chơi mà
chúng ta cần khiến con rắn di chuyển đến chỗ thức ăn. Con rắn sẽ ngày một
dài ra đòi hỏi nó phải có khả năng điều khiển để có thể né tránh các chướng
ngại vật kể cả cơ thể của nó. Với thuật toán BFS, ta có thể dễ dàng tìm
đường đi ngắn nhất giữa đầu rắn và thức ăn. Ta có thể trang bị cho con rắn
năng lực điểu khiển cơ thể để tránh vật cản thông qua một nhận xét quan
trọng: “ Miễn là tồn tại đường đi từ đầu rắn đến đuôi rắn, về cơ bản con rắn
có thể đi tiếp”.
1.2.2. Lịch sử hình thành và phát triển của trò chơi

13
Trò chơi Snake (hay còn gọi là rắn săn mồi) là một trong những trò chơi
điện tử đầu tiên và đã trở thành một biểu tượng của ngành công nghiệp game
Trò chơi Snake xuất hiện đầu tiên vào những năm 1970 trên các máy tính
đơn giản như DEC PDP-1. Trò chơi này không được phát triển để công bố mà
chỉ là một ví dụ minh họa cho các hệ thống máy tính thời kỳ đó. Đến thập kỷ
1980 game Snake trở nên phổ biến khi xuất hiện trên các máy chơi game điện
tử như Nokia 6110 vào những năm 1997. Điều này làm cho trò chơi trở nên nổi
tiếng trên toàn cầu và trở thành một trong những trò chơi đầu tiên trên điện
thoại di động. Trong thập kỷ 1990, Snake đã xuất hiện trên nhiều hệ thống máy
tính và thiết bị di động khác nhau, và phiên bản của trò chơi này đã được phát
triển và cải thiện liên tục. Nokia Snake (1997): Snake trở nên phổ biến trên điện
thoại di động khi Nokia giới thiệu trò chơi này trên điện thoại di động Nokia
6110. Snake II (2000): Phiên bản Snake II có thêm tính năng gấp đôi, khiến con
rắn tăng gấp đôi mỗi khi ăn mồi. Nhiều phiên bản và biến thể: Kể từ đó, có
hàng loạt phiên bản và biến thể của trò chơi Snake đã được phát triển trên nhiều
nền tảng và thiết bị khác nhau, từ điện thoại di động đến máy tính cá nhân và
các trang web chơi game trực tuyến. Ngày nay, Snake vẫn còn tồn tại dưới
nhiều hình thức khác nhau. Ngoài các phiên bản trên điện thoại di động, có các
phiên bản trò chơi trực tuyến miễn phí hoặc được tích hợp vào các trình duyệt
web.
Snake đã trở thành một phần của ký ức game của nhiều người chơi và vẫn
được kính trọng như một biểu tượng của lịch sử game điện tử.
1.2.3. Ứng dụng và đề xuất cải tiến trò chơi

Trò chơi rắn săn mồi (Snake) không chỉ là một trò giải trí đơn thuần, mà
còn có nhiều ứng dụng và lợi ích khác ngoài việc giúp người chơi giải trí. Trò
chơi Snake là một cách tuyệt vời để giải trí và giảm căng thẳng. Người chơi có
thể chơi trong thời gian ngắn để giải toả căng thẳng hoặc giải trí trong những
khoảnh khắc trống rảnh. Chơi Snake yêu cầu sự tập trung và kỹ năng phản xạ,
giúp cải thiện khả năng tập trung và nhanh nhẹn của người chơi. Trong một số
trường hợp, các phiên bản của trò chơi Snake đã được sử dụng để giảng dạy lập
trình hoặc làm ví dụ minh họa cho các khái niệm trong khoa học máy tính. Việc
phát triển phiên bản riêng của trò chơi Snake có thể giúp người học lập trình
phát triển kỹ năng lập trình và hiểu rõ về các nguyên tắc của trò chơi điện tử.
Người thiết kế giao diện có thể sử dụng các yếu tố của trò chơi Snake để thiết
kế các yếu tố tương tác trong ứng dụng hoặc trang web, đặc biệt là với việc sử
dụng hình ảnh của con rắn và các mô hình chuyển động. Trò chơi Snake cũng
đã được sử dụng trong lĩnh vực trí tuệ nhân tạo để phát triển các thuật toán về

14
máy học và học sâu, đặc biệt trong ngữ cảnh của việc học máy tự học
(reinforcement learning).
Cải tiến trò chơi rắn săn mồi có thể tạo ra trải nghiệm mới và thú vị cho
người chơi. Chúng ta cải thiện đồ họa và hiệu ứng để tạo ra trải nghiệm hấp dẫn
hơn. Sử dụng đồ họa 3D hoặc các hiệu ứng đặc biệt để làm cho trò chơi trở nên
sống động hơn. Thêm chế độ chơi đa người để người chơi có thể thi đấu với bạn
bè hoặc người chơi trực tuyến khác. Phát triển chế độ chơi đối kháng trực
tuyến, trong đó người chơi có thể thi đấu trực tuyến với người chơi khác từ
khắp nơi trên thế giới. Tạo ra nhiều cấp độ khó khăn và thách thức khác nhau
để người chơi không bao giờ cảm thấy chán chường. Cho phép người chơi chọn
các kỹ năng hoặc đặc điểm đặc biệt cho con rắn của họ, giúp họ tạo ra chiến
lược chơi riêng và trải nghiệm cá nhân hóa. Thêm chế độ chơi theo cấp độ,
trong đó người chơi phải hoàn thành các màn chơi với các điều kiện và thách
thức đặc biệt để tiến xa hơn trong trò chơi. Sử dụng trí tuệ nhân tạo để tạo ra
một hệ thống điều khiển cho con rắn không người chơi, giúp tạo ra một trải
nghiệm chơi đầy thách thức. Xây dựng hệ thống điểm số và xếp hạng trực tuyến
để khuyến khích cạnh tranh và sự tham gia của người chơi. Cho phép con rắn
tương tác với môi trường xung quanh, như tránh các chướng ngại vật hoặc tận
dụng chúng để đạt được mục tiêu. Tạo ra nhiều màn chơi và bản đồ đa dạng,
mỗi bản đồ có các tính chất và điểm đặc biệt, giúp người chơi không bao giờ
cảm thấy nhàm chán. Tích hợp tính năng tương tác với cộng đồng, cho phép
người chơi chia sẻ thành tích, gợi ý và thậm chí thiết kế các màn chơi và bản đồ
mới.
1.3. Các công nghệ áp dụng trong đề tài
1.3.1. Tổng quan về ngôn ngữ lập trình Python

Python là ngôn ngữ lập trình hướng đối tượng bậc cao. Điều đặc biệt ở
ngôn ngữ này là sự đa năng, đa công dụng. Mang các tính năng ưu việt như tạo
kiểu dữ liệu tự động và cơ chế cung cấp bộ nhớ tự động. Python là ngôn ngữ có
mục đích chung, nghĩa là nó có thể được sử dụng để tạo nhiều chương trình
khác nhau và không chuyên biệt cho bất kỳ vấn đề cụ thể nào. Tính linh hoạt
này, cùng với sự thân thiện thì Python cực kỳ phù hợp cho người mới bắt đầu.
Những tính năng chính của Python
Cực kỳ đơn giản và dễ tiếp thu cũng như thực hành: sự đơn giản của
ngôn ngữ này thể hiện ở các câu lệnh dễ học, dễ hiểu. Python biến những “cú
pháp code khó nhằn” trở nên dễ dàng hơn bằng những giải pháp.

15
Hoàn toàn miễn phí và là mã nguồn mở: nhà lập trình có thể thoải mái di
chuyển Python thậm chí sử dụng nó với mục đích thương mại hóa. Với đặc
trưng là một ngôn ngữ lập trình mã nguồn mở. Bạn hoàn toàn có thể thay đổi
các mã nguồn mở của Python ở bất cứ các ứng dụng phần mềm nào.
Là một ngôn ngữ di động: di động có nghĩa là nó rất dễ di chuyển từ nền
tảng này sang các nền tảng khác. Đồng thời, bạn có thể chạy chương trình của
Python ở mọi nền tảng mà không sợ có bất kỳ những thay đổi nào ảnh hưởng.
Python là ngôn ngữ phiên dịch cao cấp: khi chạy chương trình Python
trên bất cứ hệ điều hành hay mạng Internet nào. Python có thể hoàn toàn tự
động dịch và chạy theo đúng chương trình dữ liệu của máy tính đó.
Ưu điểm của Python
Python có cấu trúc đơn giản, rõ ràng và rất dễ học. Đây được coi là một
trong những ngôn ngữ nên học cho những người mới bắt đầu tiếp cận đến lập
trình.
Python có mặt trên tất cả các hệ điều hành phổ biến như: Windows,
MacOS, MS-DOS, Unix,… đây cũng thể hiện được sự Đà Nẵng của ngôn ngữ
này.
Tương thích với thư viện lớn nhất hiện nay với 400 triệu người sử dụng
như data mining Scikit-learn, Pandas…
Tốc độ xử lý cũng là một trong những lí do tạo nên ưu điểm của Python.
Ngôn ngữ này có thể tạo ra những script siêu nhỏ tới những phần mềm cực lớn
như Blender 3D.
Nhược điểm của Python
Các cấu trúc của Python đòi hỏi nhiều không gian bộ nhớ hơn, ngôn ngữ
này không thể phát huy hết tác dụng trong điều kiện bộ nhớ hạn chế.
Python không phải là ngôn ngữ được ưu tiên để phát triển ứng dụng di
động hay trò chơi do tiêu tốn nhiều bộ nhớ hơn và tốc độ xử lý chậm so với
ngôn ngữ khác.
Rất khó để chạy các bài kiểm tra trên mã được viết bằng Python, các lỗi
trên này thường xuất hiện trong thời gian chạy, điều này khiến việc kiểm tra trở
nên khó khăn hơn.

16
Ứng dụng của Python
Phân tích dữ liệu và học máy: Trong khoa học dữ liệu, cho phép các nhà
phân tích dữ liệu và các chuyên gia khác sử dụng ngôn ngữ này để thực hiện
các phép tính thống kê phức tạp, tạo trực quan hóa dữ liệu, xây dựng thuật toán
học máy, thao tác và phân tích dữ liệu cũng như hoàn thành các nhiệm vụ khác
liên quan đến dữ liệu.
Python có thể xây dựng nhiều dạng trực quan hóa dữ liệu khác nhau,
chẳng hạn như biểu đồ đường và thanh, biểu đồ hình tròn, biểu đồ 3D.
Python cũng có một số thư viện cho phép các lập trình viên viết chương
trình để phân tích dữ liệu và học máy nhanh hơn và hiệu quả hơn, như
TensorFlow và Keras.
Phát triển web: Python thường được sử dụng để phát triển back-end của
trang web hoặc ứng dụng—những phần mà người dùng không nhìn thấy. Vai
trò của Python trong phát triển web có thể bao gồm gửi dữ liệu đến và đi từ máy
chủ, xử lý dữ liệu và giao tiếp với cơ sở dữ liệu, định tuyến URL và đảm bảo
tính bảo mật. Python cung cấp một số khuôn khổ để phát triển web. Những cái
thường được sử dụng bao gồm Django và Flask.
Tự động hoá và phát triển phần mềm: Python có thể tư động hóa một
nhiệm vụ lặp đi lặp lại. Quá trình viết code được sử dụng để xây dựng các quy
trình tự động này được gọi là viết script. Trong thế giới mã hóa, tự động hóa có
thể được sử dụng để kiểm tra lỗi trên nhiều tệp, chuyển đổi tệp, thực hiện phép
toán đơn giản và loại bỏ các bản sao trong dữ liệu.
Python thậm chí có thể được sử dụng bởi những người mới bắt đầu để tự
động hóa các tác vụ đơn giản trên máy tính—chẳng hạn như đổi tên tệp, tìm và
tải xuống nội dung trực tuyến hoặc gửi email hoặc văn bản theo khoảng thời
gian mong muốn.
Trong phát triển phần mềm, Python có thể hỗ trợ các tác vụ như kiểm
soát bản dựng, theo dõi lỗi và thử nghiệm. Với Python, các nhà phát triển phần
mềm có thể tự động kiểm tra các sản phẩm hoặc tính năng mới. Một số công cụ
Python được sử dụng để kiểm thử phần mềm bao gồm Green và Requestium.

1.3.2. Thư viện Pygame

17
Pygame là một mô-đun Python đa nền tảng được thiết kế để viết trò chơi điện
tử. Nó bao gồm đồ hoạ máy tính và thư viện âm thanh được thiết kế để sử dụng
với ngôn ngữ lập trình Python.

Pygame ban đầu được viết bởi Pete Shinners để thay thế PySDL sau khi quá
trình phát triển của nó bị đình trệ. Đây là một dự án cộng đồng từ năm 2000 và
được phát hành theo phần mềm miễn phí mã nguồn mở GNU Lesser General
Public License.

Pygame sử dụng thư viện Simple DirectMedia Layer (SDL), với mục đích cho
phép phát triển trò chơi máy tính trong thời gian thực mà không cần cơ chế bậc
thấp của ngôn ngữ lập trình C và các dẫn xuất của nó. Điều này dựa trên giả
định rằng các chức năng đắt tiền nhất bên trong trò chơi có thể được trừu tượng
hóa khỏi logic trò chơi, do đó có thể sử dụng ngôn ngữ lập trình bậc cao, chẳng
hạn như Python, để cấu trúc trò chơi.
Các tính năng khác mà SDL không có bao gồm toán học vectơ, phát hiện va
chạm, quản lý độ họa 2d, hỗ trợ MIDI, camera, thao tác mảng pixel, chuyển
đổi, lọc, hỗ trợ phông chữ freetype nâng cao và vẽ.
Các ứng dụng sử dụng pygame có thể chạy trên điện thoại và máy tính
bảng Android với việc sử dụng Bộ phụ pygame cho Android (pgs4a). Âm
thanh, rung, bàn phím và gia tốc kế được hỗ trợ trên Android.

18
CHƯƠNG 2: ỨNG DỤNG THUẬT TOÁN BREADTH FIRST SEARCH
XÂY DỰNG SNAKE GAME

2.1. Thuật toán Breadth First Search


2.1.1. Mô tả thuật toán

Đây là thuật toán tìm đường đi từ đỉnh xuất phát đến đỉnh kết thúc bằng các
duyệt theo chiều rộng.
Đây là thuật toán nằm trong nhóm thuật toán tìm kiếm mù, thuật toán không
quan tâm đến trọng số trên đường đi mà chỉ duyệt theo những đỉnh kề liên tiếp
nó.
Xuất phát tử một đỉnh và đi tới các đỉnh kề nó, tiếp tục cho đến khi không
còn đỉnh nào để đi.
Trong quá trình đi đến đỉnh kề, tiến hành lưu lại đỉnh kề để khi đi ngược lại
từ đỉnh kết thúc đến đỉnh xuất phát ta có được đường đi ngắn nhất.
Mô tả thuật toán: Cách đỉnh đã được xét thì không thể xét lại lần 2 nữa. Cơ
chế lưu lại đỉnh kề sẽ là lưu các đỉnh kề thành 1 danh sách và lấy từ từ danh
sách các đỉnh kề ra để xét, khi mà một đỉnh kề của một đỉnh đang xét được
thêm vào danh sách thì nó sẽ được thêm vào cuối của danh sách hay còn gọi là
cơ chế Queue(hàng đợi). Cơ chết này có nghĩa khi thêm một phần tử thì phần tử
đó sẽ được thêm ở cuối danh sách hàng đợi, còn lấy phần tử ra thì sẽ lấy ra ở
đầu danh sách hàng đợi. Đó chính là điểm nổi bật để phân biệt thuật toán này
với các thuật toán khác.
2.1.2. Thuật toán

BFS(Q, S, G, P)
Đầu vào: bài toán tìm kiếm
Đầu ra: trạng thái đích
Khởi tạo: O←S // O được tổ chức như hàng đợi FIFO
-------------------------
While(O ≠ Ø) do
1. Chọn nút n đầu tiên của O và xóa n khỏi O
2. If n ∈ G, return (đường đi tới n)
3. Thêm P(n) vào cuối O
Return: Không có lời giải

19
Con trỏ ngược: Khi mở rộng một nút ta cần sử dụng con trỏ ngược để ghi lại
nút cha của nút vừa được mở ra. Con trỏ này được sử dụng để tìm ngược lại
đường đi về trạng thái xuất phát khi tìm được trạng thái đích. Khi ta cài đặt
thuật toán, mỗi nút được biểu diễn bằng một cấu trúc dữ liệu có chứa một con
trỏ được trỏ tới nút cha.
Các cải tiến
Tránh xem xét lại các nút mở rộng: Việc xem xét lại các nút đã mở rộng
có thể dẫn tới vòng lặp. Mặc dù vòng lặp không ảnh hưởng tới khả năng tìm ra
lời giải của tìm kiếm theo chiều rộng, xong việc có vòng lặp và xem xét lại các
nút làm tang độ phức tạp tính toán do phải khảo sát nhiều nút hơn. Vấn đề này
có thể giải quyết bằng cách sử dụng tập đóng. Một trạng thái đã có mặt trong
tập đóng hoặc trong tập biên sẽ không được thêm vào tập biên nữa.
Kiểm tra đích trước khi thêm vào tập biên: Trong thuật toán tổng quát,
việc kiểm tra điều kiện đích được thực hiện khi nút được lấy ra khỏi O để mở
rộng. Thay vào đó, ta có thể kiểm tra trước khi thêm nút vào O. Ưu điểm của
cách này là giảm bớt các nút cần duyệt.
Tính chất
Đầy đủ: nếu không gian trạng thái là hữu hạn thì thuật toán là đầy đủ.
Ngược lại , nếu không gian trạng thái là vô hạn thì thuật toán là không đầy đủ
do có thể di chuyển theo một đường đi không chứa nút đích và có độ sâu vô hạn
(cứ đi theo nhánh không đúng mãi mà không chuyển sang nhánh khác được).
Tối ưu: không, bởi thuật toán có thể mở rộng những nhánh dẫn tới lời
giải không tối ưu trước, đặc biệt trong trường hợp có nhiều lời giải.
Thời gian (độ phức tạp tính toán): với mức độ rẽ nhánh là b và độ sâu lời
giải d, thuật toán sinh ra O(bd+1) nút trước khi tìm ra lời giải hay O(bd) nút nếu
kiểm tra đích trước khi thêm nút vào tập biên. Độ phức tạp này là lớn và tăng
rất nhanh khi b và d tăng.
Bộ nhớ: thuật toán cần lưu O(bd+1) nút trong tập biên nên sau khi đã mở rộng
tất cả các nút ở độ sâu d. Nếu sử dụng tập các nút đóng thì tập này cần lưu
O(bd) nút. Như vậy độ phức tạp bộ nhớ của tìm kiếm theo chiều rộng là O(bd+1)

20
2.1.3. Ưu, nhược điểm

Ưu điểm

Dễ cài đặt.
Nếu số đỉnh là hữu hạn, thuật toán chắc chắn tìm ra kết quả.
Nhược điểm

Mang tính chất vét cạn, không nên áp dụng nếu duyệt số đỉnh quá lớn.
Mang tính chất mù quáng, duyệt tất cả đỉnh, không chú ý đến thông tin trong
các đỉnh để duyệt hiệu quả, dẫn đến duyệt qua các đỉnh không cần thiết.
Chiếm thời gian và không gian bộ nhớ khi số đình duyệt nhiều.

2.2. Ứng dụng thuật toán Breadth First Search xây dựng Snake Game

21
22

You might also like