1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo chuyên Đề học phần lập trình python Đề ti xây dựng phần mềm game bắn g

24 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xây Dựng Phần Mềm Game Bắn Gà
Tác giả Bùi Thanh Hải, Vũ Xuân Quỳnh
Người hướng dẫn Lê Mạnh Hùng
Trường học Trường Đại Học Điện Lực
Chuyên ngành Công Nghệ Thông Tin
Thể loại Báo Cáo Chuyên Đề
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 24
Dung lượng 2,35 MB

Nội dung

Trongthời gian được học tập và thực hành dưới sự hướng dẫn của cô, chúng em khôngnhững thu được rất nhiều kiến thức bổ ích, mà còn được truyền sự say mê và thíchthú đối với bộ môn Lập tr

Trang 1

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 LẬP TRÌNH PYTHON

ĐỀ TI:

XÂY DỰNG PHẦN MỀM GAME BẮN G

Sinh viên thực hiện : BÙI THANH HẢI

VŨ XUÂN QUỲNH Giảng viên hướng dẫn : LÊ MẠNH HÙNG

Chuyên ngành : CÔNG NGHỆ PHẦN MỀM

Hà Nội, tháng 12 năm 2023

Trang 2

PHIẾU CHẤM ĐIỂM

1 Bùi Thanh Hải

Trang 3

MỤC LỤC

LỜI CẢM ƠN 1

LỜI MỞ ĐẦU 2

CHƯƠNG 1: TỔNG QUAN 3

1.1 Giới thiệu 3

1.2 Tính năng chính của python 4

1.3 Python được dùng ở đâu 6

1.4 Kết luận 8

CHƯƠNG 2: NỘI DUNG 9

2.1 Giới thiệu đề tài 9

2.2 Lập trình 10

CHƯƠNG 3: KẾT QUẢ, KẾT LUẬNV ĐÁNH GIÁ 16

3.1 Kết quả 16

3.2 Kết luận 16

3.3 Đánh giá 17

KẾT LUẬN 19

TI LIỆU THAM KHẢO 20

Trang 4

DANH MỤC HÌNH ẢNH

Hình ảnh 1: python 3

Hình ảnh 2: web python & djago 6

Hình ảnh 3: python về lĩnh vực maching learning 7

Hình ảnh 4: python lĩnh vực game 7

Hình ảnh 5: game bắn gà bằng python 16

Trang 5

LỜI CẢM ƠN

Trên thực tế không có sự thành công nào mà không gắn liền với những sự hỗtrợ, giúp đỡ dù ít hay nhiều, dù trực tiếp hay gián tiếp của người khác Trong suốtthời gian đã và đang học tập tại trường đến nay, em đã nhận được rất nhiều sự quantâm, giúp đỡ của quý Thầy Cô, gia đình và bạn bè

Và đặc biệt, trong học kỳ này Em xin cảm ơn thầy giáo Lê Mạnh Hùng đãhướng dẫn, góp ý, thảo luận để bài báo cáo này của em được hoàn thiện Trongthời gian được học tập và thực hành dưới sự hướng dẫn của cô, chúng em khôngnhững thu được rất nhiều kiến thức bổ ích, mà còn được truyền sự say mê và thíchthú đối với bộ môn Lập trình python

Mặc dù đã rất cố gắng hoàn thiện báo cáo với tất cả sự nỗ lực, tuy nhiên, dobước đầu đi vào thực tế, tìm hiểu và xây dựng đồ án trong thời gian có hạn, vớilượng kiến thức còn hạn chế, nhiều bỡ ngỡ, nên đồ án “Lập trình python” chắcchắn sẽ không thể tránh khỏi những thiếu sót Chúng em rất mong nhận được sựquan tâm, thông cảm và những đóng góp quý báu của các thầy cô và các bạn để đồ

án này ngày càng hoàn thiện hơn

Một lần nữa, chúng em xin chân thành cảm ơn cô và luôn mong nhận được sựđóng góp của thầy cô và các bạn

Sau cùng, chúng em xin kính chúc các thầy cô trong Khoa Công Nghệ ThôngTin dồi dào sức khỏe, niềm tin để tiếp tục thực hiện sứ mệnh cao đẹp của mình làtruyền đạt kiến thức cho thế hệ mai sau

Trân trọng!

Trang 6

LỜI MỞ ĐẦU

Việc đưa tin học vào công việc quản lý nhằm giảm bớt sức lao động của conngười, tiết kiệm thời gian, độ chính xác cao và tiện lợi hơn rất nhiều so với việclàm quản lý giấy tờ bằng thủ công như trước đây Tin học hóa nhằm thu hẹp khônggian lưu trữ, tránh làm thất lạc dữ liệu, tự động hóa và cụ thể hóa các thông tin theonhu cầu của con người Còn ở Việt Nam, ngành tin học tuy còn non trẻ nhưng cũngđang từng bước bứt phá được những thành công trong việc áp dụng tin học vàoviệc phát triển kinh tế, xã hội Tuy nhiên để có thể nghiên cứu ra các phần mềm rútngắn thao tác là một việc vô cùng quan trọng và thực tiễn trong tất cả các doanhnghiệp lớn nhỏ Cũng từ đó công việc LẬP TRÌNH PYTHON là một ngôn ngữ vôcùng hot, chúng em đã chọn đề tài “xây dựng game bắn gà” cho báo cáo lần này.Nhận thấy đây là một trong những ngành được ưa chuộng rất nhiều tại ViệtNam cũng như trên toàn thế giới Chúng em đã cảm thấy rất phấn khích khi nhậnthấy điều đó và đã phải chuẩn bị rất nhiều thời gian, tài liệu để hoàn thành báo cáonày

Chúng em xin cảm ơn thầy giáo Lê Mạnh Hùng đã hướng dẫn nhiệt tìnhgiúp chúng em hoàn thành được đề tài của mình với một bài toán quản lý Trongquá trình làm bài, chắc chắn chúng em sẽ mắc phải những thiếu sót nên rất mongnhận được sự đóng góp ý kiến của thầy để chúng em có cơ hội sửa sai, phát triểntrong thực tế và từng bước hoàn thiện mình

Chúng em xin chân thành cảm ơn!

Trang 7

CHƯƠNG 1: TỔNG QUAN

1.1 Giới thiệu

Python là một ngôn ngữ lập trình bậc cao cho các mục đích lập trình đanăng, do Guido van Rossum tạo ra và lần đầu ra mắt vào năm 1991 Python đượcthiết kế với ưu điểm mạnh là dễ đọc, dễ học và dễ nhớ Python là ngôn ngữ có hìnhthức rất sáng sủa, cấu trúc rõ ràng, thuận tiện cho người mới học lập trình và làngôn ngữ lập trình dễ học được dùng rộng rãi trong phát triển trí tuệ nhân tạo hoặc

AI Cấu trúc của Python còn cho phép người sử dụng viết mã lệnh với số lần gõphím tối thiểu Vào tháng 7 năm 2018, Van Rossum đã từ chức lãnh đạo trongcộng đồng ngôn ngữ Python sau 30 năm làm việc

Hình ảnh 1: python

Trang 8

Python hoàn toàn tạo kiểu động và dùng cơ chế cấp phát bộ nhớ tự động; dovậy nó tương tự như Perl, Ruby, Scheme, Smalltalk, và Tcl Python được phát triểntrong một dự án mã mở, do tổ chức phi lợi nhuận Python Software Foundationquản lý.

Ban đầu, Python được phát triển để chạy trên nền Unix Nhưng rồi theo thờigian, Python dần mở rộng sang mọi hệ điều hành từ MS-DOS đến Mac OS, OS/2,Windows, Linux và các hệ điều hành khác thuộc họ Unix Mặc dù sự phát triển củaPython có sự đóng góp của rất nhiều cá nhân, nhưng Guido van Rossum hiện nayvẫn là tác giả chủ yếu của Python Ông giữ vai trò chủ chốt trong việc quyết địnhhướng phát triển của Python

1.2 Tính năng chính của python

Ngôn ngữ lập trình đơn giản, dễ học: Python có cú pháp rất đơn giản, rõràng Nó dễ đọc và viết hơn rất nhiều khi so sánh với những ngôn ngữ lập trìnhkhác như C++, Java, C# Python làm cho việc lập trình trở nên thú vị, cho phépbạn tập trung vào những giải pháp chứ không phải cú pháp

Miễn phí, mã nguồn mở: Bạn có thể tự do sử dụng và phân phối Python,thậm chí là dùng nó cho mục đích thương mại Vì là mã nguồn mở, bạn khôngnhững có thể sử dụng các phần mềm, chương trình được viết trong Python mà còn

có thể thay đổi mã nguồn của nó Python có một cộng đồng rộng lớn, không ngừngcải thiện nó mỗi lần cập nhật

Trang 9

Khả năng di chuyển: Các chương trình Python có thể di chuyển từ nền tảngnày sang nền tảng khác và chạy nó mà không có bất kỳ thay đổi nào Nó chạy liềnmạch trên hầu hết tất cả các nền tảng như Windows, macOS, Linux.

Khả năng mở rộng và có thể nhúng: Giả sử một ứng dụng đòi hỏi sự phứctạp rất lớn, bạn có thể dễ dàng kết hợp các phần code bằng C, C++ và những ngônngữ khác (có thể gọi được từ C) vào code Python Điều này sẽ cung cấp cho ứngdụng của bạn những tính năng tốt hơn cũng như khả năng scripting mà những ngônngữ lập trình khác khó có thể làm được

Ngôn ngữ thông dịch cấp cao: Không giống như C/C++, với Python, bạnkhông phải lo lắng những nhiệm vụ khó khăn như quản lý bộ nhớ, dọn dẹp những

dữ liệu vô nghĩa, Khi chạy code Python, nó sẽ tự động chuyển đổi code sangngôn ngữ máy tính có thể hiểu Bạn không cần lo lắng về bất kỳ hoạt động ở cấpthấp nào

Thư viện tiêu chuẩn lớn để giải quyết những tác vụ phổ biến: Python có một

số lượng lớn thư viện tiêu chuẩn giúp cho công việc lập trình của bạn trở nên dễthở hơn rất nhiều, đơn giản vì không phải tự viết tất cả code Ví dụ: Bạn cần kếtnối cơ sở dữ liệu MySQL trên Web server? Bạn có thể nhập thư viện MySQLdb và

sử dụng nó Những thư viện này được kiểm tra kỹ lưỡng và được sử dụng bởi hàngtrăm người Vì vậy, bạn có thể chắc chắn rằng nó sẽ không làm hỏng code hay ứngdụng của mình

Hướng đối tượng: Mọi thứ trong Python đều là hướng đối tượng Lập trìnhhướng đối tượng (OOP) giúp giải quyết những vấn đề phức tạp một cách trựcquan Với OOP, bạn có thể phân chia những vấn đề phức tạp thành những tập nhỏhơn bằng cách tạo ra các đối tượng

Trang 10

1.3 Python được dùng ở đâu

Lập trình ứng dụng web: Bạn có thể tạo web app có khả năng mở rộng(scalable) được bằng cách sử dụng framework và CMS (Hệ thống quản trị nộidung) được tích hợp trong Python Vài nền tảng phổ biến để tạo web app là:Django, Flask, Pyramid, Plone, Django Các trang như Mozilla, Reddit, Instagram

và PBS đều được viết bằng Python

Hình ảnh 2: web python & djago

Khoa học và tính toán: Có nhiều thư viện trong Python cho khoa học và tínhtoán số liệu, như SciPy và NumPy, được sử dụng cho những mục đích chungchung trong tính toán Và, có những thư viện cụ thể như: EarthPy cho khoa học tráiđất, AstroPy cho Thiên văn học, Ngoài ra, Python còn được sử dụng nhiều trongmachine learning, khai thác dữ liệu và deep learning

Trang 11

Hình ảnh 3: python về lĩnh vực maching learning

Tạo nguyên mẫu phần mềm: Python chậm hơn khi so sánh với các ngôn ngữđược biên dịch như C++ và Java Nó có thể không phải là lựa chọn tốt nếu nguồnlực bị giới hạn và yêu cầu về hiệu quả là bắt buộc Tuy nhiên, Python là ngôn ngữtuyệt vời để tạo những nguyên mẫu (bản chạy thử - prototype) Ví dụ, bạn có thể

sử dụng Pygame (thư viện viết game) để tạo nguyên mẫu game trước Nếu thíchnguyên mẫu đó có thể dùng C++ để viết game thực sự

Hình ảnh 4: python lĩnh vực game

Trang 12

Ngôn ngữ tốt để dạy lập trình: Python được nhiều công ty, trường học sửdụng để dạy lập trình cho trẻ em và những người mới lần đầu học lập trình Bêncạnh những tính năng và khả năng tuyệt vời thì cú pháp đơn giản và dễ sử dụngcủa nó là lý do chính cho việc này.

là từ website, tool, phân loại hợp lý từ đó đưa ra các chiến lược khai thác, tất cảnhững điều đó đã thúc đẩy chúng em lựa chọn đề tài Lập Trình Python người dùngcủa website

Trang 13

CHƯƠNG 2: NỘI DUNG

Một thực tế không thể phủ nhận về tầm quan trọng của công việc Lập TrìnhPython, nhưng để Lập Trình Python thì tuần tự các bước như thế nào? và sử dụngphần mềm nào để lập trình chính xác, đầy đủ các thông tin của dữ liệu? đó đều làcác câu hỏi chủ chốt tối quan trọng cần giải quyết trong chương 2 này

2.1 Giới thiệu đề tài

Chicken Invaders là một sản phẩm của nhà phát triển InterAction Studios,được ra mắt lần đầu tiên trên thị trường vào năm 1999 Tựa game là một trongnhững tên tuổi lẫy lừng trong thể loại Shoot’em up (bắn súng vui nhộn) ở Hy Lạpcũng như trên toàn thế giới

Game có cốt truyện xoay quanh việc chiến đấu giữa người chơi - trong vaimột phi thuyền giữa không gian - chiến đấu với binh đoàn gà đang lăm le xâmchiếm trái đất Những con gà này được trang bị vũ khí hiện đại và có khả năng hủydiệt cả hành tinh chúng ta đang sống Game là sự tổng hợp hài hòa giữa tính căngnão của những tựa game chiến đấu với sự hài hước, tinh nghịch mà bất kỳ lứa tuổinào cũng có thể chơi được

Chính vì sự có ấn tượng với game tuổi thơ này, vì vậy chúng em muốn môphỏng lại con game này trong học ký lần này Tuy bước vào thực tế, thời gian tìmhiểu có hạn, chắc chắn sẽ không thể tránh khỏi những thiếu sót Chúng em rấtmong nhận được sự quan tâm, thông cảm và những đóng góp quý báu của cácthầy Một lần nữa chúng em xin chân thành cảm ơn thầy giáo Lê Mạnh Hùng đãgiúp đỡ chúng em rất nhiều trong quá trình học tập, trau dồi về bộ môn ngôn ngữlập trình python này

Trang 14

2.2 Lập trình

Ý tưởng là game bắn gà, chúng em đang cố gằng mô phỏng lại nó vì vậychắc chắc không thể hoàn thiện như game đã phát hành, ở đây, em xây dựng khôngchỉ là bắn gà đơn thuần, mà còn có cấp độ (level) của cả người chơi và kẻ địch.import pygame

screen pygame = display set_mode (( WIDTH , HEIGHT ))

pygame display set_caption ( Bắ n Gà "

# Định nghĩa nhấn vật và đạn

player_width = 35

player_height = 35

player_x = ( WIDTH player_width - ) //

player_y HEIGHT player_height = - - 10

Trang 15

# Hàm vẽ gà màu xanh biể n

def draw_blue_chicken ( , y):

M M pygame draw rect screen ( , BLUE , [ , y blue_chicken_width , ,

blue_chicken_height ])

# Hàm vẽ gà kích thửớc lớn

def draw_large_chicken ( , y):

M M pygame draw rect screen ( , YELLOW , [ x y large_chicken_width , ,

large_chicken_height ])

# Hàm kiể m tra va chạm giữa hai đổ i tửợng

def is_collision ( obj1_x , obj1_y, obj1_width , obj1_height , obj2_x, obj2_y , obj2_width , obj2_height ):

M M return obj1_x obj2_x obj2_width < + and obj1_x obj1_width obj2_x + > and obj1_y obj2_y < + obj2_height and obj1_y + obj1_height obj2_y >

Trang 16

# M M bullet_list = []

# M M bullet_speed = 10 M# Tổ c độ đạn

# M M angle_increment = math.radians(10) M# Góc giữa các viển đạn (10 độ)

# M M start_angle = -angle_increment * (num_bullets // 2) M# Góc bắ t đấR u

# M M for i in range(num_bullets):

# M M M M angle = start_angle + i * angle_increment

# M M M M bullet_x = player_x + player_width // 2 - bullet_width // 2

M M global level single_shot bullet_speed , ,

M M if score >= 30 and level == :

M M M M level = 2

M M M M single_shot = False

M M M M bullet_speed = 10 M # ĐiểR u chỉ nh tổ c độ đạn cho cấ p độ 2

M M M M print ( Level 2 - Đạn đa nòng! "

M M elif score >= 50 and level == 2

M M M M level = 3

M M M M bullet_speed = 22 M # ĐiểR u chỉ nh tổ c độ đạn cho cấ p độ 3

M M M M print ( Level 3 - Đạn siểu tổ c! "

# Vòng lặp chính

running = True

clock pygame = time Clock ()

while running :

M M for event in pygame event get ():

M M M M if event type == pygame QUIT :

Trang 17

M M M M M M M M bullets append ([ bullet_x1 , bullet_y ])

M M M M M M M M bullets append ([ bullet_x2 , bullet_y ])

M M keys pygame = key get_pressed ()

M M if keys [ pygame K_LEFT ] and player_x > 0

M M M M M M large_chickens append ([ large_chicken_x , large_chicken_y ])

M M for chicken in chickens :

M M M M chicken [ ] 1 += chicken_speed

M M M M if chicken [ ] 1 HEIGHT :

M M M M M M chickens remove chicken ( )

Trang 18

M M M M M M if is_collision ( bullet [ ], bullet [ ], 1 bullet_width ,

bullet_height , chicken [ ], chicken [ ], 1 chicken_width , chicken_height ):

M M M M M M M M bullets remove bullet ( )

M M M M M M M M chickens remove chicken ( )

M M for blue_chicken in blue_chickens :

M M M M blue_chicken [ ] += blue_chicken_speed

M M M M if blue_chicken [ ] > HEIGHT :

M M M M M M blue_chickens remove blue_chicken ( )

M M M M for bullet in bullets :

M M M M M M if is_collision ( bullet [ ], bullet [ ], 1 bullet_width ,

bullet_height , blue_chicken [ ], 0 blue_chicken [ ], 1 blue_chicken_width ,

blue_chicken_height ):

M M M M M M M M bullets remove bullet ( )

M M M M M M M M blue_chicken_health -= 1

M M M M M M M M if blue_chicken_health == 0

M M M M M M M M M M blue_chickens remove blue_chicken ( )

M M M M M M M M M M score += M # Điể m sổ cao hởn vì gà khó hởn

M M M M M M M M M M update_level ()

M M for large_chicken in large_chickens :

M M M M large_chicken [ ] += large_chicken_speed

M M M M if large_chicken [ ] > HEIGHT :

M M M M M M large_chickens remove large_chicken ( )

M M M M for bullet in bullets :

M M M M M M if is_collision ( bullet [ ], bullet [ ], 1 bullet_width ,

bullet_height , large_chicken [ ], 0 large_chicken [ ], 1 large_chicken_width ,

large_chicken_height ):

M M M M M M M M bullets remove bullet ( )

M M M M M M M M large_chicken_health -= 1

M M M M M M M M if large_chicken_health == 0

M M M M M M M M M M large_chickens remove large_chicken ( )

M M M M M M M M M M score += 10 M # Điể m sổ cao hởn vì gà khó hởn

M M M M M M M M M M update_level ()

M M for chicken in chickens :

M M M M if is_collision ( player_x , player_y player_width player_height , , ,

chicken [ ], chicken [ ], 1 chicken_width , chicken_height ):

M M M M M M running = False

M M for blue_chicken in blue_chickens :

Trang 19

blue_chicken [ ], blue_chicken [ ], blue_chicken_width ,

blue_chicken_height ):

M M M M M M running = False

M M for large_chicken in large_chickens :

M M M M if is_collision ( player_x , player_y player_width player_height , , ,

large_chicken [ ], 0 large_chicken [ ], 1 large_chicken_width ,

large_chicken_height ):

M M M M M M running = False

M M screen fill (( 0 0 ))

M M draw_player ( player_x , player_y )

M M for bullet in bullets :

M M M M draw_bullet ( bullet [ ], 0 bullet [ ])

M M for chicken in chickens :

M M M M draw_chicken ( chicken [ ], 0 chicken [ ])

M M for blue_chicken in blue_chickens :

M M M M draw_blue_chicken ( blue_chicken [ ], 0 blue_chicken [ ]) 1

M M for large_chicken in large_chickens :

M M M M draw_large_chicken ( large_chicken [ ], 0 large_chicken [ ]) 1

M M pygame display flip ()

M M clock tick ( 60 )

pygame quit ()

sys exit ()

Ngày đăng: 23/01/2025, 12:20