Khái niệm về ngôn ngữ python Python là ngôn ngữ lập trình được sử dụng rất phổ biến ngày nay để phát triển nhiều loại ứng dụng phần mềm khác nhau như các chương trình chạy trên desktop,
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
LẬP TRÌNH PYTHON
ĐỀ TI:
XÂY DỰNG TRÒ CHƠI RẮN SĂN MỒI BẰNG PYTHON
Giảng viên hướng dẫn : LÊ MẠNH HÙNG
Hà Nội, tháng 12 năm 2022
Trang 2PHIẾU CHẤM ĐIỂM Sinh viên thực hiện:
Nguyễn Đức Chiến
Giảng viên chấm điểm:
Giảng viên chấm 1:
Giảng viên chấm 2:
Trang 3MỤC LỤC
LỜI CẢM ƠN 1
CHƯƠNG 1: TỔNG QUAN VỀ NGÔN NGỮ PYTHON 2
1.1 Khái niệm về ngôn ngữ python 2
1.2 Ứng dụng của ngôn ngữ python 3
CHƯƠNG 2: TỔNG QUAN VỀ ĐỀ TÀI 6
2.1 Giới thiệu 6
2.2 Mô tả về trò chơi 6
CHƯƠNG 3: XÂY DỰNG TRÒ CHƠI RẮN SĂN MỒI 7
3.1 Thiết lập chương trình 7
3.1.1 Tạo cửa sổ game 7
3.1.2 Khởi tạo 8
3.1.3 Xây dựng hàm 8
3.1.4 Xử lý di chuyển 9
3.1.5 Cơ chế săn mồi 10
3.1.6 Hiển thị ra cửa sổ 10
3.2 Kết quả 11
TỔNG KẾT 12
Trang 4LỜI CẢM ƠN
Em xin chân thành cảm ơn các thầy, cô giáo trong Khoa Công nghệ thông tin, trường Đại học Điện Lực, đã tạo điều kiện cho em thực hiện đề tài này
Để có thể hoàn thành báo cáo đề tài “Xây dựng trò chơi rắn săn mồi bằng python”, em xin gửi lời cảm ơn chân thành nhất tới thầy Lê Mạnh Hùng, đã truyền đạt, giảng dạy cho chúng em những kiến thức, những kinh nghiệm quý báu trong thời gian học tập và rèn luyện, tận tình hướng dẫn em trong quá trình làm báo cáo này
Em cũng gửi lời cảm ơn tới bạn bè đã đóng góp những ý kiến quý bàu để em
có thể hoàn thành báo cáo tốt hơn Tuy nhiên, do thời gian và trình độ có hạn nên báo cáo này chắc chắn không tránh khỏi những thiếu sót, em rất mong được
sự đóng góp ý kiến của các thầy và toàn thể các bạn
Một lần nữa, em xin chân thành cảm ơn và luôn mong nhận được sự đóng góp của tất cả mọi người
Trang 5CHƯƠNG 1: TỔNG QUAN VỀ NGÔN NGỮ PYTHON
1.1 Khái niệm về ngôn ngữ python
Python là ngôn ngữ lập trình được sử dụng rất phổ biến ngày nay để phát triển nhiều loại ứng dụng phần mềm khác nhau như các chương trình chạy trên desktop, server, lập trình các ứng dụng web Ngoài ra Python cũng là ngôn ngữ
ưa thích trong ngành khoa học về dữ liệu (data science) cũng như là ngôn ngữ phổ biến để xây dựng các chương trình trí tuệ nhân tạo trong đó bao gồm machine learning
Tại sao ngôn ngữ python phổ biến ?
Tính dễ sử dụng: Đối với những người mới lập trình, Python là một bước khởi đầu tuyệt vời Nó tương đối dễ học, giúp dễ dàng nắm bắt các kiến thức lập trình và nhanh chóng xây dựng ứng dụng cho mình
Cú pháp đơn giản: Python tương đối dễ đọc và dễ hiểu, vì cú pháp của nó giống tiếng Anh Bố cục đơn giản cho phép chúng ta hiểu được những gì mỗi dòng mã sẽ thực thi
Cộng đồng phát triển mạnh: Vì là ngôn ngữ mã nguồn mở nên bất kỳ ai cũng
có thể sử dụng Python để lập trình Hơn thế nữa, Python có cộng đồng hỗ trợ và phát triển hệ sinh thái, không ngừng góp sức thêm các thư viện của riêng họ vào cộng đồng chung
Tính linh hoạt: Khi tìm hiểu sâu hơn, có thể sử dụng Python cho nhiều mục đích khác nhau Cho dù quan tâm đến trực quan hóa dữ liệu (data visualization), trí tuệ nhân tạo (AI) hay phát triển web, đều có thể sử dụng ngôn ngữ này
Tại sao nên học python ?
Nhu cầu nhân lực cho ngành kỹ sư phần mềm Python (Python developers) đang cao: Nếu đang muốn bắt đầu hoặc thay đổi nghề nghiệp của mình, Python
có thể là một kỹ năng quan trọng nên có
Trang 6Là bước đệm dẫn tới những nghề có thu nhập cao: Dữ liệu cho thấy mức lương trung bình hàng năm cho những người có kỹ năng Python là khoảng
£65,000 ở Anh
Nhiều cơ hội việc làm: Do Python có thể được sử dụng trong nhiều công nghệ mới nổi, chẳng hạn như AI, máy học và phân tích dữ liệu, và đây là các kỹ năng cần thiết và không bị lỗi thời Học Python ngay bây giờ có thể mang lại lợi ích trong suốt sự nghiệp của mình
1.2 Ứng dụng của ngôn ngữ python
1 AI và máy học:
Vì Python là một ngôn ngữ lập trình ổn định, linh hoạt và đơn giản, nên Python là lựa chọn hoàn hảo cho nhiều dự án máy học (ML) và trí tuệ nhân tạo (AI) khác nhau Trên thực tế, Python là một trong những ngôn ngữ được ưa chuộng của các nhà khoa học dữ liệu, có rất nhiều thư viện và Packages máy học
và AI của Python được xây dựng sẵn, giúp việc thực thi các thuật toán AI và máy học được dễ dàng và thuận tiện hơn
2 Phân tích dữ liệu
Giống như AI và máy học, lập trình Python được sử dụng khá phổ biến trong phân tích dữ liệu, một lĩnh vực đang phát triển nhanh chóng Như một nhu cầu tất yếu của việc ứng dụng tin học hóa và thời đại công nghệ số là chúng ta đang
có nhiều dữ liệu hơn bao giờ hết, nên rất cần có những nhân sự có thể thu thập,
xử lý và tổ chức thông tin
Python là sự lựa chọn hợp lý cho khoa học dữ liệu và phân tích dữ liệu Ngôn ngữ này dễ học, linh hoạt và được hỗ trợ nhiều thư viện cho phép thực hiện các thao tác xử lý, phân tích dữ liệu một cách nhanh chóng Đặc biệt khi làm việc với một lượng lớn dữ liệu, Python càng phát huy hiệu quả hơn
3 Trực quan hóa dữ liệu (Data visualization)
Data visualization là một lĩnh vực phổ biến và đang phát triển, Python cung cấp nhiều thư viện vẽ đồ thị với đầy đủ các tính năng Cho dù đang tìm cách biểu diễn đồ họa đơn giản hay một biểu đồ có tính tương tác, đều có thể tìm thấy trên Python một thư viện phù hợp với nhu cầu của mình Python có nhiều thư viện trực quan như Pandas, Matplotlib, Seaborn và Plotly cho phép dễ dàng chuyển đổi dữ liệu thành hình ảnh trực quan
Trang 7Recommandé pour toi
A Handbook OF Present-DAY English
Lingua Inglese 1 (Lingua E Fonologia)(A) 100% (9)
CH 2 - The Pronunciation of English - A Handbook of Present-Day English
A handbook of present-day english
Prokaryote vs Eukaryote Worksheeet
Suite du document ci-dessous
27
29
10
3
Trang 84 Lập trình ứng dụng
Có thể lập trình tất cả các loại ứng dụng bằng Python Python là ngôn ngữ đa năng có thể được sử dụng để đọc và tạo thư mục tệp, tạo GUI và API, v.v Dù đó
có là ứng dụng blockchain, ứng dụng âm thanh và hình ảnh hay ứng dụng máy học, đều có thể xây dựng tất cả các phần mềm đó bằng Python
5 Phát triển web
Python là một lựa chọn tuyệt vời để phát triển web nhờ trên Python có nhiều framework web, chẳng hạn như Django, Pyramid và Flask Các framework này
đã được sử dụng để tạo các trang web và dịch vụ như Spotify, Reddit và Mozilla Ngoài ra, còn có các thư viện và mô-đun mở rộng đi kèm với các framework Python, nhờ vậy các chức năng truy cập cơ sở dữ liệu, quản lý nội dung và data authorisation đều có thể thực hiện được và dễ dàng Với tính linh hoạt của Python, không có gì ngạc nhiên khi Python ngày được sử dụng rộng rãi trong phát triển web
6 Phát triển game
Mặc dù vẫn chưa có thể tham gia vào mảng công nghệ game thật sự, nhưng Python thực sự có những đóng góp trong lập trình game Có thể tạo các trò chơi đơn giản bằng ngôn ngữ lập trình Python
Trên Python, có thể phát triển nhanh chóng một prototype (sản phẩm thử nghiệm) Tương tự, một số chức năng nhất định (chẳng hạn như tạo dialoge tree)
có thể thực hiện được trong Python
7 Phát triển ngôn ngữ lập trình
Với thiết kế đơn giản, tinh tế và cú pháp dễ đọc – dễ hiểu, Python đã truyền cảm hứng cho việc tạo ra các ngôn ngữ lập trình mới Các ngôn ngữ như Cobra, CoffeeScript và Go đều sử dụng cú pháp tương tự như Python
Điều đó có nghĩa là Python là một ngôn ngữ khởi đầu hữu ích Vì vậy, nếu mới bắt đầu học lập trình, việc hiểu Python có thể giúp mở rộng sang các lĩnh vực khác dễ dàng hơn
8 Tài chính
Python ngày càng được sử dụng nhiều hơn trong thế giới tài chính, thường là trong các lĩnh vực như phân tích định lượng và định tính Có thể xem Python là
Trang 9một công cụ hữu ích trong việc xác định xu hướng và dự đoán giá tài sản, cũng như trong việc tự động hóa quy trình công việc trên các nguồn dữ liệu khác nhau Python còn là một công cụ lý tưởng để làm việc với dữ liệu lớn và có rất nhiều thư viện có sẵn để giúp biên dịch và xử lý thông tin Do đó, nó là một trong những ngôn ngữ ưa thích trong ngành tài chính
9 Ứng dụng thiết kế
Python còn có thể được sử dụng để phát triển các ứng dụng thiết kế đồ họa Đáng ngạc nhiên, ngôn ngữ này được sử dụng trên một loạt các phần mềm hình ảnh 2D, chẳng hạn như Paint Shop Pro và Gimp Python thậm chí còn được sử dụng trong các phần mềm hoạt hình 3D như Lightwave, Blender và Cinema 4D
Trang 10CHƯƠNG 2: TỔNG QUAN VỀ ĐỀ TI 2.1 Giới thiệu
Rắn săn mồi (Snake) vốn dĩ là 1 tựa game mobile, chơi trên thiết bị di động với
nhiệm vụ của người chơi là điều khiển con rắn ăn các khối nhỏ hơn để cơ thể dài ra
và tránh va chạm vào tường/vật cản hoặc chính thân thể mình Đây là 1 trò chơi được ghi nhận thành tích qua số điểm và ai đạt điểm càng cao thì sẽ có thứ hạng càng cao
Game Rắn săn mồi lần đầu xuất hiện vào năm 1997 trên chiếc điện thoại di động Nokia 6110 Ở phiên bản này khi đó, trò chơi vẫn được hoạt động trên 1 màn hình đen trắng Tạo hình con rắn và các vật phẩm trong game đều ở dạng các khối vuông 8 bit
2.2 Mô tả về trò chơi
- Game cấu hình nhẹ, đơn giản, giải trí lành mạnh
- Cách chơi:
Người chơi dùng các phím mũi tên lên, xuống, trái, phải để điều khiển con rắn sao cho ăn được mồi
Điều kiện qua màn: Tích lũy số điểm theo đúng yêu cầu trò chơi quy định sẽ qua màn khác Mỗi lần ăn mồi sẽ được cộng điểm
Điều kiện thất bại (GameOver): Con rắn đụng vào vật cản trên đường
đi hoặc tự đâm vào chính mình thì sẽ kết thúc game
Trang 11CHƯƠNG 3: XÂY DỰNG TRÒ CHƠI RẮN SĂN MỒI 3.1 Thiết lập chương trình
3.1.1 Tạo cửa sổ game
Cài đặt thư viện cần thiết cho trò chơi:
#import
import pygame
import random
import time
import sys
pygame init ()
Tạo cửa sổ
# t o c a s ạ ử ổ
gameSurface = pygame.display set_mode (( 735 , 475 ))
pygame.display set_caption ( 'R n Gi m Cân!' ắ ả )
# vòng l p chính ặ
while True :
pygame.time delay ( 200 ) # t c đ ch i ố ộ ơ
for event in pygame.event get ():
if event type == pygame QUIT :
pygame quit ()
Kết quả đạt được:
Trang 123.1.2 Khởi tạo
Khởi tạo hình ảnh
Khởi tạo màu sắc
# màu s c ắ
red = pygame.Color( 255 , , )
blue = pygame.Color( 65 , 105 , 255 )
black = pygame.Color( , , )
white = pygame.Color( 255 255 , , 255 )
gray = pygame.Color( 128 , 128 , 128 )
Khởi tạo biến
# khai báo bi n ế
snakepos = [ 100 , 60 ]
snakebody = [[ 100 , 60 ],[ 80 60 , ],[ 60 60 , ]] foodx = random randrange ( , 1 71 ) foody = random randrange ( , 1 45 )
Trang 13if foody % 2 != 0 : foody += 1
foodpos = [ foodx * 10 , foody * 10 ]
foodflat = True
direction = 'RIGHT'
changeto = direction
score = 0
3.1.3 Xây dựng hàm
Hàm Game_Over
# hàm gameover
def game_over ():
gfont = pygame.font SysFont ( 'consolas' , 40 )
gsurf = gfont render ( 'Game over!' , True , red )
grect = gsurf get_rect ()
grect midtop = ( 360 150 , )
gameSurface blit ( gsurf grect , )
show_score ( )
pygame.display flip ()
time sleep ( ) #time wait to exit
pygame quit ()
sys exit ()
Hàm Show_Score
# hàm show_score
def show_score ( choice = 1 ):
sfont = pygame.font SysFont ( 'consolas' , 20 )
ssurf = sfont render ( 'Score: {0}' format ( score ), True , black ) srect = ssurf get_rect ()
if choice == 1
srect midtop = ( 70 20 , )
else :
srect midtop = ( 360 230 , )
gameSurface blit ( ssurf srect , )
3.1.4 Xử lý di chuyển
Xử lý phím
# x lý phím ử
if event type == pygame KEYDOWN :
if event key == pygame K_RIGHT :
changeto = 'RIGHT'
if event key == pygame K_LEFT :
changeto = 'LEFT'
if event key == pygame K_UP :
Trang 14if event key == pygame K_DOWN :
changeto = 'DOWN'
if event key == pygame K_ESCAPE :
pygame.event post (pygame.evet.Event(pygame QUIT ))
Hướng đi
# h ướ ng đi
if changeto == 'RIGHT' and not direction == 'LEFT' :
direction = 'RIGHT'
if changeto == 'LEFT' and not direction == 'RIGHT' :
direction = 'LEFT'
if changeto == 'UP' and not direction == 'DOWN' :
direction = 'UP'
if changeto == 'DOWN' and not direction == 'UP' :
direction = 'DOWN'
Cập nhật vị trí mới
# c p nh t v trí m i ậ ậ ị ớ
if direction == 'RIGHT' :
snakepos [ ] += m
if direction == 'LEFT' :
snakepos [ ] -= m
if direction == 'UP' :
snakepos [ ] -= m
if direction == 'DOWN' :
snakepos [ ] += m
Xử lý khi đụng phải 4 cạnh biên
# x lý di chuy n đ ng 4 c nh biên ử ể ụ ạ
if snakepos [ 0 ] > 710 or snakepos [ 0 ] < 10 :
game_over ()
if snakepos [ 1 ] > 450 or snakepos [ 1 ] < 10 :
game_over ()
3.1.5 Cơ chế săn mồi
Tăng chiều dài của rắn
#c ch thêm khúc dài ra ơ ế
snakebody insert ( , 0 list ( snakepos ))
if snakepos [ 0 ] == foodpos [ 0 ] and snakepos [ ] == foodpos [ ]:
Trang 15foodflat = False
else :
snakebody pop ()
Cơ chế tự ăn chính mình
# x lý t ăn chính mình ử ự
for b in snakebody [ 1 :]:
if snakepos [ 0 ] == b [ 0 ] and snakepos [ 1 ] == b [ 1 ]:
game_over ()
Sản sinh mồi
# s n sinh m i ả ồ
if foodflat == False :
foodx = random randrange ( , 1 71 )
foody = random randrange ( , 1 45 )
if foodx % 2 != 0 : foodx += 1
if foody % 2 != 0 : foody += 1
foodpos = [ foodx * 10 , foody * 10 ]
foodflat = True
3.1.6 Hiển thị ra cửa sổ
Cập nhật trên cửa sổ
# c p nh t lên c a s ậ ậ ưử ổử
gameSurface fill ( white )
for pos in snakebody :
gameSurface blit ( Imgbody ,pygame.Rect( pos [ ], pos [ 1 ], m m , ))
gameSurface blit ( Imghead ,pygame.Rect( snakebody [ ][ 0 ], snakebody [ 0 ][ 1 ], m m , )) gameSurface blit ( Imgfood ,pygame.Rect( foodpos [ ], foodpos [ 1 ], m m , ))
Đường viền
# đ ườ ng vi n ềề
pygame.draw rect ( gameSurface , gray ,( 10 10 715 , , , 455 ), 2
show_score ()
pygame.display flip ()
3.2 Kết quả
Trang 16TỔNG KẾT
Qua việc thực hiện đề tài “Xây dựng trò chơi rắn săn mồi bằng Python”, em
đã được biết thêm rất nhiều kiến thức về python cũng như bước đầu nắm bắt được python
Do kiến thức của em còn hạn hẹp và thời gian không cho phép nên em chưa thể thực hiện python phức tạp hơn Tuy nhiên em đã cố gắng để làm những trường hợp mà mình có thể nghĩ đến để đạt được kết quả tốt nhất để đưa tới Thầy/Cô Trong quá trình thực hiện em khó tránh khỏi những sai xót còn tồn tại
Vì vậy em rất mong được nhận lời góp ý và chỉnh sửa từ Thầy/Cô để có thể hoàn thành kiểm thử chương trình một cách hoàn chỉnh nhất
Em một lần nữa xin cảm ơn thầy Lê Mạnh Hùng đã tận tình giảng dạy cũng như hướng dẫn em làm sản phẩm kết thúc học phần trong môn học Ngôn ngữ Python, thầy đã giúp đỡ em trong quá trình thực hiện đề tài và chia sẻ những tài liệu hay cũng như các kỹ năng cần thiết