Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 18 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
18
Dung lượng
1,27 MB
Nội dung
TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO CHUN ĐỀ 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 : 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 năm 2023 PHIẾU CHẤM ĐIỂM Sinh viên thực hiện: Họ tên sinh viên Chữ ký Điểm Giảng viên chấm: Họ tên giảng viên Giảng viên chấm 1: Giảng viên chấm 2: Chữ ký Ghi MỤC LỤC LỜI CẢM ƠN LỜI NÓI ĐẦU Chương Tổng quan đề tài 1.1 Đặt vấn đề .1 1.2 Mô tả đề tài .1 1.3 Phân tích yêu cầu 1.3.1 Yêu cầu chức 1.3.2 Yêu cầu phi chức Chương Giới thiệu ngôn ngữ lập trình Python 2.1 Giới thiệu ngôn ngữ Python Chương Xây dựng chương trình .5 3.1 Thuật toán xây dựng chương trình Chương Kết 4.1 Giao diện GamePlay 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ô khoa CNTT tận tình giảng dạy suốt thời gian vừa qua Nhờ có dạy tận tình thầy, giúp em hồn thành báo cáo chun đề Đặc biệt, em xin gửi đến thầy Lê Mạnh Hùng lời cảm chân thành tri ân sâu sắc tận tình hướng dẫn em hồn thành tốt báo cáo chuyên đề học phần Trong trình thực báo cáo, với phạm vi khả cho phép, em cố gắng hoàn thành chuyên đề cách tốt Song với kiến thức thân kinh nghiệm thực tiễn hạn chế nên báo cáo tránh khỏi thiếu sót Em mong nhận ý kiến đóng góp q thầy, để học thêm nhiều kinh nghiệm hoàn thiện thân bài cáo 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 phần thiếu sống, công nghệ thông tin đóng vai trị quan trọng ngành khoa học, kĩ thuật, kinh tế, xã hội nước giới Nó mang lại giá trị kinh tế, giáo dục đặc biệt mang tính giải trí cao Sự đời Internet, game online xuất nhanh chóng gây sức hút to lớn Hiện game online tiếp tục phát triển mạnh mẽ Nắm bắt xu người dùng, nhóm chúng em lên ý tưởng xây dựng ứng dựng trị chơi giải trí “Rắn săn mồi cổ điển” vào huyền thoại mà ai biết dựa ngơn ngữ lập trình python Chương Tổng quan đề tài 1.1 Đặt vấn đề Ngày CNTT trở thành lĩnh vực mũi nhọn công phát triển kinh tế xã hội Cùng với công nghệ sinh học lượng mới, CNTT vừa công cụ, vừa động lực thúc đẩy trình phát triển cơng nghiệp hóa đại hóa đất nước Có thể nói game trở thành nhu cầu giải trí thiết yếu sống người Một thể loại game kinh điển mà nhắc tới khơng cịn xa lạ với đặc biệt hệ 9x trở sau, game “Rắn săn mồi cổ điển” Trong bối cảnh công nghệ ngày phát triển nhiều thể loại game nhiều đời ngày nhiều thu hút nhiều bạn trẻ Tuy nhiên khơng mà game rắn săn mồi bị lu mờ mà giữ vị trí lịng người u thích thể loại game Game địi hỏi người chơi phải khéo léo thể khả điều khiển rắn ăn nhiều mồi tốt để có hội nhận điểm cao Một ưu điểm game rắn săn mồi cấu hình khơng q nặng, chơi máy tính thiết bị di động 1.2 Mô tả đề tài Rắn săn mồi game cổ điển Trong trò chơi, người chơi phải điều khiển rắn, mục tiêu để ăn nhiều mồi tốt Khi rắn ăn mồi, thân rắn tăng lên Con rắn phải tránh tường thể Kích thước đốt thân rắn 10px Con rắn điều khiển phím mũi tên Ban đầu rắn có khớp Nếu trị chơi kết thúc, hình hiể thị thơng báo điểm bạn hình Recommandé pour toi 27 Suite du document ci-dessous A Handbook OF Present-DAY English Lingua Inglese (Lingua E Fonologia)(A) 29 CH - The Pronunciation of English - A Handbook of Present-Day English Lingua Inglese 10 100% (7) A handbook of present-day english Lingua Inglese 100% (9) 100% (7) Prokaryote vs Eukaryote Worksheeet Intro to Speech 89% (28) - 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 phím tên để điều khiến rắn cho ăn mồi Nếu rắn đụng vào tường đụng vào mình, trị chơi kết thúc 1.3 Phân tích yêu cầu 1.3.1 Yêu cầu chức - Người chơi ấn vào button bắt đầu để tạo game - Mỗi rắn ăn mồi, rắn phải dài thêm đơn vị - Khi game kết thúc phải hiển thị điểm người chơi 1.3.2 Yêu cầu phi chức - 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 làm việc căng thẳng - Giúp người chơi tăng khả tập trung vào công việc Chương Giới thiệu ngơn ngữ lập trình Python 2.1 Giới thiệu ngôn ngữ Python Python ngôn ngữ lập trình thơng dịch (interpreted), hướng đối tượng (object-oriented), ngôn ngữ bậc cao (high-level) ngữ nghĩa động (dynamic semantics) Python hỗ trợ module gói (packages), khuyến khích chương trình module hóa tái sử dụng mã Trình thơng dịch Python thư viện chuẩn mở rộng có sẵn dạng mã nguồn dạng nhị phân miễn phí cho tất tảng phân phối tự Python hình thành vào cuối năm 1980, việc thực vào tháng 12 năm 1989 Guido van Rossum Centrum Wiskunde & Informatica (CWI) Hà Lan kế thừa cho ngôn ngữ ABC (tự lấy cảm hứng từ SETL) có khả xử lý ngoại lệ giao tiếp với Hệ điều hành Amoeba Van Rossum tác giả Python, vai trị trung tâm ơng việc định hướng phát triển Python Các đặc điểm 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 hỗ trợ gói (package) Xử lý lỗi ngoại lệ (Exception) Kiểu liệu động mức cao Có thư viện chuẩn module ngoài, đáp ứng tất nhu cầu lập trình Có khả tương tác với module khác viết C/C+ + (Hoặc Java cho Jython, Net cho IronPython) Có thể nhúng vào ứng dụng giao tiếp kịch (scripting interface) Hiện ngôn ngữ Python xếp hạng thứ Top 10 ngơn ngữ lập trình phổ biến 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 đa phần trường sử dụng ngôn ngữ Python để giảng dạy: Chương Xây dựng chương trình 3.1 Thuật tốn xây dựng chương trình import import import import pygame time random 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() 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 ran mac dinh ve ben phai direction = 'RIGHT' change_to = direction score = 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/2,window_y/4)) 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 phim chung toi khong muon 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] -= if direction == 'DOWN': snake_position[1] += if direction == 'LEFT': snake_position[0] -= if direction == 'RIGHT': snake_position[0] += 10 10 10 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]: 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[0],pos[1],10 ,10)) window.blit(Imghead,pygame.Rect(snake_body[0] [0],snake_body[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[0],fruit_p osition[1],m,m)) # game over conditions if snake_position[0] < or snake_position[0] > window_x-10: game_over() if snake_position[1] < or snake_position[1] > window_y-10: game_over() # 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() fps.tick(snake_speed) Chương Kết 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 “Xây dựng game rắn săn mồi” hồ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 truyền đạt kinh nghiệm quý báu để nhóm hồn thành tập thời gian ngắn Trong thời suốt thời gian nghiên cứu đề tài, thành viên nhóm hoạt động nhiệt tình có trách nhiệm việc tìm kiếm tài liệu đóng góp ý kiến để nghiêm cứu đề tài cách tốt Mặc dù cố gắng, thời gian để hoàn thành tập có hạn khả thành viên hạn chế nên báo cáo số thiếu sót mong nhận ý kiến đóng góp q báu q thầy Em xin chân thành cảm ơn! 12