Báo cáo ngôn ngữ lập trình Python - Công nghệ thông tin | Trường đại học Điện Lực
Báo cáo ngôn ngữ lập trình Python - Công nghệ thông tin | Trường đại học Điện Lực được sưu tầm và soạn thảo dưới dạng file PDF để gửi tới các bạn sinh viên cùng tham khảo, ôn tập đầy đủ kiến thức, chuẩn bị cho các buổi học thật tốt. Mời bạn đọc đón xem!
Môn: Công nghệ thông tin(CNTT350)
Trường: Đại học Điện lực
Thông tin:
Tác giả:
Preview text:
TRƯỜ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 ĐỀ TI:
XÂY DỰNG GAME RẮN SĂN MỒI
Sinh viên thực hiện :
Giảng viên hướng dẫn : LÊ MẠNH HÙNG Khoa
: CÔNG NGHỆ THÔNG TIN Chuyên ngành
: CÔNG NGHỆ PHẦN MỀM Lớp : D14CNPM5 Khóa : 2019 - 2023
Hà Nội, tháng 1 năm 2023 PHIẾU CHẤM ĐIỂM Sinh viên thực hiện:
Họ và tên sinh viên Chữ ký Điểm Giảng viên chấm:
Họ và tên giảng viên Chữ ký Ghi chú Giảng viên chấm 1: Giảng viên chấm 2: MỤC LỤC
LỜI CẢM ƠN............................................................................................5
LỜI NÓI ĐẦU...........................................................................................6
Chương 1. Tổng quan về đề tài................................................................1
1.1. Đặt vấn đề.........................................................................................1
1.2. Mô tả đề tài.......................................................................................1
1.3. Phân tích yêu cầu..............................................................................2
1.3.1. Yêu cầu chức năng......................................................................2
1.3.2. Yêu cầu phi chức năng................................................................2
Chương 2. Giới thiệu ngôn ngữ lập trình Python..................................3
2.1. Giới thiệu ngôn ngữ Python..............................................................3
Chương 3. Xây dựng chương trình.........................................................5
3.1. Thuật toán xây dựng chương trình....................................................5
Chương 4. Kết quả....................................................................................9
4.1. Giao diện GamePlay ........................................................................9
4.2. Giao diện GameOver......................................................................10
LỜI KẾT..................................................................................................11 LỜI CẢM ƠN
Để hoàn thành báo cáo chuyên đề học phần này, trước tiên em xin gửi đến
quý thầy, cô giáo trường Đại học Điện Lực lời cảm ơn chân thành. Em xin cảm
ơn quý thầy, cô trong khoa CNTT đã tận tình giảng dạy trong suốt thời gian vừa
qua. Nhờ có sự chỉ dạy tận tình của thầy, cô đã giúp em hoàn thành báo cáo chuyên đề này.
Đặc biệt, em xin gửi đến thầy Lê Mạnh Hùng lời cảm chân thành và sự tri
ân sâu sắc nhất khi đã tận tình hướng dẫn em hoàn thành tốt báo cáo chuyên đề học phần này.
Trong quá trình thực hiện bài báo cáo, với phạm vi khả năng cho phép,
em đã cố gắng hoàn thành chuyên đề một cách tốt nhất. Song với kiến thức bản
thân cũng như kinh nghiệm thực tiễn còn hạn chế nên bài báo cáo không thể
tránh khỏi những thiếu sót. Em rất mong nhận được những ý kiến đóng góp của
quý thầy, cô để học được thêm nhiều kinh nghiệm và hoàn thiện bản thân cũng
như những bài bài cáo sắp tới. Em xin chân thành cảm ơn! LỜI NÓI ĐẦU
Hiện nay, ngành công nghệ thông tin đã trở thành một phần không thể
thiếu trong cuộc sống, công nghệ thông tin đã và đang đóng vai trò quan trọng
trong 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.
Sự ra đời của Internet, game online xuất hiện và nhanh chóng gây được
sức hút to lớn. Hiện nay game online 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í “Rắn săn mồi cổ điển” đã đi vào huyền thoại
mà ai ai cũng biết dựa trên ngôn ngữ lập trình python.
Chương 1. Tổng quan về đề tài 1.1. Đặt vấn đề
Ngày nay CNTT đã trở thành một lĩnh vực mũi nhọn trong công cuộc
phát triển kinh tế xã hội. Cùng với công nghệ sinh học và năng lượng mới,
CNTT vừa là công cụ, vừa là động lực thúc đẩy quá trình phát triển công nghiệp
hóa hiện đại hóa đất nước.
Có thể nói game đã và đang trở thành một nhu cầu giải trí thiết yếu trong
cuộc sống của con người hiện nay. Một trong những thể loại game kinh điển mà
khi nhắc tới không còn xa lạ gì với chúng ta và đặc biệt là thế hệ 9x trở về sau,
đó chính là game “Rắn săn mồi cổ điển”.
Trong bối cảnh công nghệ ngày càng phát triển như hiện nay thì nhiều thể
loại game được nhiều ra đời ngày càng nhiều và thu hút được nhiều bạn trẻ. Tuy
nhiên không vì vậy mà game rắn săn mồi bị lu mờ mà vẫn giữ được một vị trí
trong lòng những người yêu thích thể loại game này. Game đòi hỏi người chơi
phải khéo léo và thể hiện khả năng điều khiển con rắn ăn càng nhiều mồi càng
tốt để có cơ hội nhận được điểm cao. Một ưu điểm của game rắn săn mồi là cấu
hình không quá nặng, có thể chơi được trên máy tính cũng như các thiết bị di động.
1.2. Mô tả đề tài
Rắn săn mồi là game cổ điển. Trong trò chơi, người chơi phải điều khiển
con rắn, mục tiêu là để ăn được nhiều mồi càng tốt. Khi con rắn ăn một mồi,
thân con rắn nó sẽ tăng lên. Con rắn phải tránh những bức tường và cơ thể của chính mình.
Kích thước của mỗi đốt thân con rắn là 10px. Con rắn được điều khiển
bằng phím mũi tên. Ban đầu con rắn có 3 khớp. Nếu trò chơi kết thúc, màn hình
sẽ hiể thị thông báo điểm của bạn ở giữa màn hình. 1 - Mô tả:
+ 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 để điều khiến con rắn sao cho ăn được mồi.
Nếu con rắn đụng vào các bức tường hoặc đụng vào chính mình, trò chơi sẽ kết thúc.
1.3. Phân tích yêu cầu
1.3.1. Yêu cầu chức năng
- Người chơi ấn vào button bắt đầu thì để tạo ra game mới.
- Mỗi khi rắn ăn mồi, thì rắn phải dài ra thêm 1 đơn vị.
- Khi game kết thúc phải hiển thị điểm của người chơi.
1.3.2. Yêu cầu phi chức năng
- Cấu hình nhẹ, dễ cài đặt
- Giao diện thân thiện dễ sử dụng
- Giúp người chơi thư giãn sau những giờ làm việc căng thẳng
- Giúp người chơi tăng khả năng tập trung vào công việc 2
Chương 2. Giới thiệu ngôn ngữ lập trình Python
2.1. Giới thiệu ngôn ngữ Python
Python là một ngôn ngữ lập trình thông dịch (interpreted), hướng đối tượng
(object-oriented), và là một ngôn ngữ bậc cao (high-level) ngữ nghĩa động
(dynamic semantics). Python hỗ trợ các module và gói (packages), khuyến khích
chương trình module hóa và tái sử dụng mã. Trình thông dịch Python và thư
viện chuẩn mở rộng có sẵn dưới dạng mã nguồn hoặc dạng nhị phân miễn phí
cho tất cả các nền tảng chính và có thể được phân phối tự do. Python đã được
hình thành vào cuối những năm 1980, và việc thực hiện nó vào tháng 12 năm
1989 bởi Guido van Rossum tại Centrum
Wiskunde & Informatica (CWI) ở Hà
Lan như là một kế thừa cho 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 trong việc quyết định hướng phát triển của Python.
Các đặc điểm của Python:
Ngữ pháp đơn giản, dễ đọc.
Vừa hướng thủ tục (procedural-oriented), vừa hướng đối tượng (object-oriented)
Hỗ trợ module và hỗ trợ gói (package)
Xử lý lỗi bằng ngoại lệ (Exception)
Kiểu dữ liệu động ở mức cao.
Có các bộ thư viện chuẩn và các module ngoài, đáp ứng tất cả các nhu cầu lập trình.
Có khả năng tương tác với các module khác viết trên C/C+
+ (Hoặc Java cho Jython, hoặc .Net cho IronPython). 3
Có thể nhúng vào ứng dụng như một giao tiếp kịch bản (scripting interface).
Hiện nay ngôn ngữ Python được xếp hạng thứ 3 trong Top 10 các ngôn ngữ lập
trình phổ biến nhất đang được thế giới sử dụng. (Bảng xếp hạng năm 2022):
Theo thống kê từ top 39 trường giảng dạy khoa học máy tính thì đa phần các
trường sử dụng ngôn ngữ Python để giảng dạy: 4
Chương 3. Xây dựng chương trình
3.1. Thuật toán xây dựng chương trình import pygame import time import random import sys snake_speed = 10 window_x = 720 window_y = 480 black = pygame.Color( , 0 , 0 ) 0 white = pygame.Color( , 255 , 255 255) red = pygame.Color( , 255 , 0 ) 0 green = pygame.Color(0, , 255 ) 0 blue = pygame.Color( , 0 , 0 ) 255 pygame.init()
pygame.display.set_caption("Snake Game by Quan AT")
window = pygame.display.set_mode((window_x,window_y)) fps = pygame.time.Clock() 5 snake_position = [100 ] 50 , m=10 Imghead =
pygame.transform.scale(pygame.image.load('head.jpg'), (m,m)) Imgfruit=
pygame.transform.scale(pygame.image.load('fruit.jpg'), (m,m)) snake_body = [[100 60 , ], [80 60 , ], [60 60 , ]] # fruit position
fruit_position = [random.randrange(1,(window_x// )) 10 * 10,
random.randrange(1,(window_y// )) 10 * ] 10 # spawn: đ ẻ trứng fruit_spawn = True
# setting default snake position towards right: dat huong con ran mac dinh ve ben phai direction = 'RIGHT' change_to = direction score = 0 def show_score( , choice , color font, ): size
score_font = pygame.font.SysFont(font, ) size
score_surface = score_font.render("Score: " + str(score),True,color)
score_rect = score_surface.get_rect()
window.blit(score_surface,score_rect) def game_over():
my_font = pygame.font.SysFont('times new roman',50)
game_over_surface = my_font.render('Your score is: ' + str(score),True,red) game_over_rect =
game_over_surface.get_rect(center=(window_x/ ,window_y 2 / )) 4 6
window.blit(game_over_surface,game_over_rect) pygame.display.flip() time.sleep( ) 2 pygame.quit() while True:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN: if event.key == pygame.K_UP: change_to = 'UP'
if event.key == pygame.K_DOWN: change_to = 'DOWN'
if event.key == pygame.K_LEFT: change_to = 'LEFT'
if event.key == pygame.K_RIGHT: change_to = 'RIGHT'
# neu nhan dong thoi 2 phim chung toi khong muon con
ran di chuyen theo hai huong cung mot luc
if change_to == 'UP' and direction != 'DOWN': direction = 'UP'
if change_to == 'DOWN' and direction != 'UP': direction = 'DOWN' if change_to == ' ' LEFT and direction != 'RIGHT': direction = ' ' LEFT
if change_to == 'RIGHT' and direction != 'LEFT': direction = 'RIGHT' # moving the snake if direction == 'UP': snake_position[1] -= 10 if direction == 'DOWN': snake_position[1] += 10 if direction == 'LEFT': snake_position[0] -= 10 if direction == 'RIGHT': snake_position[0] += 10
# co che phat trien ran: neu trai cay va ran va cham thi diem so se tang len 10 snake_body.insert( , 0 (snake_position)) list if snake_position[ ] 0 == fruit_position[ ] 0 and
snake_position[1] == fruit_position[ ]: 1 7 score += 10 fruit_spawn = False : else snake_body.pop() if not fruit_spawn:
fruit_position = [random.randrange(1, (window_x//10)) * 10, random.randrange(1, (window_y//10)) * 10] fruit_spawn = True window.fill(black) for pos in snake_body:
pygame.draw.rect(window,green,pygame.Rect(pos[ ],pos[ 0 1],10 , )) 10
window.blit(Imghead,pygame.Rect(snake_body[ ] 0 [ ],snake_body[ 0 ][ 0 1],m,m)) # head
pygame.draw.rect(window,white,pygame.Rect(fruit_position[0 ],fruit_position[ ], 1 10, )) 10
window.blit(Imgfruit,pygame.Rect(fruit_position[ ],fruit_p 0 osition[ ],m,m)) 1 # game over conditions if snake_position[ ] 0 < 0 or snake_position[ ] 0 > window_x- : 10 game_over() if snake_position[ ] 1 < 0 or snake_position[ ] 1 > window_y- : 10 game_over()
# khi ran tu va cham vao body cua no for block in snake_body[1:]: if snake_position[ ] 0 == block[0] and snake_position[1] == block[1]: game_over()
show_score(1,white,'times new roman', ) 20 pygame.display.update() 8 fps.tick(snake_speed) 9 Chương 4. Kết quả
4.1. Giao diện GamePlay 10
4.2. Giao diện GameOver 11 LỜI KẾT
Bài tập Ngôn ngữ lập trình Python với đề tài về “Xây dựng game rắn săn
mồi” đã hoàn thành. Nhóm em xin gửi lời cảm ơn tới thầy Lê Mạnh Hùng đã tận
tình giảng dạy, hướng dẫn cách thức tìm hiểu đề tài và truyền đạt những kinh
nghiệm quý báu để nhóm có thể hoàn thành bài tập trong thời gian ngắn.
Trong thời suốt thời gian nghiên cứu đề tài, các thành viên trong nhóm đã
hoạt động nhiệt tình và rất có trách nhiệm trong việc tìm kiếm tài liệu cũng như
đóng góp ý kiến để nghiêm cứu đề tài một cách tốt nhất. Mặc dù đã rất cố gắng,
nhưng do thời gian để hoàn thành bài tập có hạn và khả năng của các thành viên
còn hạn chế nên bản báo cáo này vẫn còn một số thiếu sót rất mong nhận được
những ý kiến đóng góp quý báu của quý thầy cô. Em xin chân thành cảm ơn! 12