1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo chuyên đề học phần ngôn ngữ lập trình python đề ti xây dựng game rắn săn mồi

18 89 0

Đ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 Game Rắn Săn Mồi
Tác giả Sinh viên thực hiện
Người hướng dẫn Lê Mạnh Hùng, Giảng viên hướng dẫn
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 đề học phần
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 18
Dung lượng 1,27 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 ĐỀ TI: XÂY DỰNG GAME RẮN SĂN MỒI Hà Nội, tháng 1 năm 2023 Sinh viên thực hiện : Gi

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 NGÔN NGỮ LẬP TRÌNH PYTHON

ĐỀ TI:

XÂY DỰNG GAME RẮN SĂN MỒI

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

Sinh viên thực hiện :

Giảng viên hướng dẫn : LÊ MẠNH HÙNG

Trang 2

PHIẾU CHẤM ĐIỂM

Sinh viên thực hiện:

Giảng viên chấm:

Giảng viên chấm 1:

Giảng viên chấm 2:

Trang 3

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

Trang 4

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!

Trang 5

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

Trang 6

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

Trang 7

Recommandé 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 8

- 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

Trang 9

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)

Trang 10

 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:

Trang 11

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()

Trang 12

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/ ))

Trang 13

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 list(snake_position))

if snake_position[ ] 0 == fruit_position[ ] 0 and

snake_position[1] == fruit_position[1]:

Trang 14

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_p0 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( ,white,1 'times new roman' 20)

pygame.display.update()

Trang 15

fps.tick(snake_speed)

Trang 16

Chương 4 Kết quả 4.1 Giao diện GamePlay

Trang 17

4.2 Giao diện GameOver

Trang 18

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!

Ngày đăng: 09/06/2023, 15:41

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm