Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 17 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
17
Dung lượng
1,5 MB
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 LẬP TRÌNH PYTHON ĐỀ TI: XÂY DỰNG TRÒ CHƠI RẮN SĂN MỒI BẰNG PYTHON Họ Tên : NGUYỄN ĐỨC CHIẾN Giảng viên hướng dẫn : LÊ MẠNH HÙNG Ngành : CÔNG NGHỆ THÔNG TIN Chun ngành Lớp Khóa : CƠNG NGHỆ PHẦN MỀM : D14CNPM6 : 2019-2024 Hà Nội, tháng 12 năm 2022 PHIẾU CHẤM ĐIỂM Sinh viên thực hiện: Họ Tên Điểm Chữ ký Chữ ký Ghi Nguyễn Đức Chiến Giảng viên chấm điểm: Họ tên giảng viên Giảng viên chấm 1: Giảng viên chấm 2: MỤC LỤC LỜI CẢM ƠN CHƯƠNG 1: TỔNG QUAN VỀ NGÔN NGỮ PYTHON 1.1 Khái niệm ngôn ngữ python 1.2 Ứng dụng ngôn ngữ python CHƯƠNG 2: TỔNG QUAN VỀ ĐỀ TÀI .6 2.1 Giới thiệu 2.2 Mơ tả 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 3.1.3 Xây dựng hàm 3.1.4 Xử lý di chuyển 3.1.5 Cơ chế săn mồi 10 3.1.6 Hiển thị cửa sổ 10 3.2 Kết 11 TỔNG KẾT 12 LỜI CẢM ƠN Em xin chân thành cảm ơn thầy, cô giáo 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 đề tài Để hồn thành báo cáo đề tài “Xây dựng trò chơi rắn săn mồi python”, em xin gửi lời cảm ơn chân thành tới thầy Lê Mạnh Hùng, truyền đạt, giảng dạy cho chúng em kiến thức, kinh nghiệm quý báu thời gian học tập rèn luyện, tận tình hướng dẫn em trình làm báo cáo Em gửi lời cảm ơn tới bạn bè đóng góp ý kiến quý bàu để em hồn thành báo cáo tốt Tuy nhiên, thời gian trình độ có hạn nên báo cáo chắn không tránh khỏi thiếu sót, em mong đóng góp ý kiến thầy toàn thể bạn Một lần nữa, em xin chân thành cảm ơn ln mong nhận đóng góp tất người 1.1 CHƯƠNG 1: TỔNG QUAN VỀ NGÔN NGỮ PYTHON Khái niệm ngôn ngữ python Python ngơn ngữ lập trình sử dụng phổ biến ngày để phát triển nhiều loại ứng dụng phần mềm khác chương trình chạy desktop, server, lập trình ứng dụng web Ngồi Python ngơn ngữ ưa thích ngành khoa học liệu (data science) ngôn ngữ phổ biến để xây dựng chương trình trí tuệ nhân tạo bao gồm machine learning Tại ngơn ngữ python phổ biến ? Tính dễ sử dụng: Đối với người lập trình, Python 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 kiến thức lập trình nhanh chóng xây dựng ứng dụng cho Cú pháp đơn giản: Python tương đối dễ đọc dễ hiểu, cú pháp giống tiếng Anh Bố cục đơn giản cho phép hiểu dịng mã thực thi Cộng đồng phát triển mạnh: Vì ngơn ngữ mã nguồn mở nên sử dụng Python để lập trình Hơn nữa, Python có cộng đồng hỗ trợ phát triển hệ sinh thái, không ngừng góp sức thêm thư viện riêng họ vào cộng đồng chung Tính linh hoạt: Khi tìm hiểu sâu hơn, sử dụng Python cho nhiều mục đích khác Cho dù quan tâm đến trực quan hóa liệu (data visualization), trí tuệ nhân tạo (AI) hay phát triển web, sử dụng ngơn ngữ Tại nên học python ? Nhu cầu nhân lực cho ngành kỹ sư phần mềm Python (Python developers) cao: Nếu muốn bắt đầu thay đổi nghề nghiệp mình, Python kỹ quan trọng nên có Là bước đệm dẫn tới nghề có thu nhập cao: Dữ liệu cho thấy mức lương trung bình hàng năm cho người có kỹ Python khoảng £65,000 Anh Nhiều hội việc làm: Do Python sử dụng nhiều công nghệ nổi, chẳng hạn AI, máy học phân tích liệu, kỹ cần thiết không bị lỗi thời Học Python mang lại lợi ích suốt nghiệp 1.2 Ứng dụng ngôn ngữ python AI máy học: Vì Python ngơn ngữ lập trình ổn định, linh hoạt đơn giản, nên Python lựa chọn hoàn hảo cho nhiều dự án máy học (ML) trí tuệ nhân tạo (AI) khác Trên thực tế, Python ngôn ngữ ưa chuộng nhà khoa học liệu, có nhiều thư viện Packages máy học AI Python xây dựng sẵn, giúp việc thực thi thuật toán AI máy học dễ dàng thuận tiện Phân tích liệu Giống AI máy học, lập trình Python sử dụng phổ biến phân tích liệu, lĩnh vực phát triển nhanh chóng Như nhu cầu tất yếu việc ứng dụng tin học hóa thời đại cơng nghệ số có nhiều liệu hết, nên cần có nhân thu thập, xử lý tổ chức thông tin Python lựa chọn hợp lý cho khoa học liệu phân tích liệu Ngôn ngữ dễ học, linh hoạt hỗ trợ nhiều thư viện cho phép thực thao tác xử lý, phân tích liệu cách nhanh chóng Đặc biệt làm việc với lượng lớn liệu, Python phát huy hiệu Trực quan hóa liệu (Data visualization) Data visualization lĩnh vực phổ biến phát triển, Python cung cấp nhiều thư viện vẽ đồ thị với đầy đủ tính Cho dù tìm cách biểu diễn đồ họa đơn giản hay biểu đồ có tính tương tác, tìm thấy Python thư viện phù hợp với nhu cầu Python có nhiều thư viện trực quan Pandas, Matplotlib, Seaborn Plotly cho phép dễ dàng chuyển đổi liệu thành hình ảnh trực quan 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) Lập trình ứng dụng Có thể lập trình tất loại ứng dụng Python Python ngôn ngữ đa sử dụng để đọc tạo thư mục tệp, tạo GUI API, v.v Dù có ứng dụng blockchain, ứng dụng âm hình ảnh hay ứng dụng máy học, xây dựng tất phần mềm Python Phát triển web Python lựa chọn tuyệt vời để phát triển web nhờ Python có nhiều framework web, chẳng hạn Django, Pyramid Flask Các framework sử dụng để tạo trang web dịch vụ Spotify, Reddit Mozilla Ngoài ra, cịn có thư viện mơ-đun mở rộng kèm với framework Python, nhờ chức truy cập sở liệu, quản lý nội dung data authorisation thực dễ dàng Với tính linh hoạt Python, khơng có ngạc nhiên Python ngày sử dụng rộng rãi phát triển web Phát triển game Mặc dù chưa tham gia vào mảng cơng nghệ game thật sự, Python thực có đóng góp lập trình game Có thể tạo trị chơi đơn giản ngơn ngữ lập trình Python Trên Python, phát triển nhanh chóng prototype (sản phẩm thử nghiệm) Tương tự, số chức định (chẳng hạn tạo dialoge tree) thực Python Phát triển ngôn ngữ lập trình Với thiết kế đơn giản, tinh tế cú pháp dễ đọc – dễ hiểu, Python truyền cảm hứng cho việc tạo ngôn ngữ lập trình Các ngơn ngữ Cobra, CoffeeScript Go sử dụng cú pháp tương tự Python Điều có nghĩa Python ngơn ngữ khởi đầu hữu ích Vì vậy, bắt đầu học lập trình, việc hiểu Python giúp mở rộng sang lĩnh vực khác dễ dàng Tài Python ngày sử dụng nhiều giới tài chính, thường lĩnh vực phân tích định lượng định tính Có thể xem Python cơng cụ hữu ích việc xác định xu hướng dự đoán giá tài sản, việc tự động hóa quy trình cơng việc nguồn liệu khác Python công cụ lý tưởng để làm việc với liệu lớn có nhiều thư viện có sẵn để giúp biên dịch xử lý thông tin Do đó, ngơn ngữ ưa thích ngành tài Ứng dụng thiết kế Python cịn sử dụng để phát triển ứng dụng thiết kế đồ họa Đáng ngạc nhiên, ngôn ngữ sử dụng loạt phần mềm hình ảnh 2D, chẳng hạn Paint Shop Pro Gimp Python chí cịn sử dụng phần mềm hoạt hình 3D Lightwave, Blender Cinema 4D CHƯƠNG 2: TỔNG QUAN VỀ ĐỀ TI 2.1 Giới thiệu Rắn săn mồi (Snake) tựa game mobile, chơi thiết bị di động với nhiệm vụ người chơi điều khiển rắn ăn khối nhỏ để thể dài tránh va chạm vào tường/vật cản thân thể Đây trị chơi ghi nhận thành tích qua số điểm đạt điểm cao có thứ hạng cao Game Rắn săn mồi lần đầu xuất vào năm 1997 điện thoại di động Nokia 6110 Ở phiên đó, trị chơi hoạt động hình đen trắng Tạo hình rắn vật phẩm game dạng khối vng bit 2.2 Mơ tả 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 phím mũi tên lên, xuống, trái, phải để điều khiển rắn cho ăn mồi Điều kiện qua màn: Tích lũy số điểm theo u cầu trị chơi quy định qua khác Mỗi lần ăn mồi cộng điểm Điều kiện thất bại (GameOver): Con rắn đụng vào vật cản đường tự đâm vào kết thúc game CHƯƠ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 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 đạt được: 3.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,0,0) blue = pygame.Color(65,105,255) black = pygame.Color(0,0,0) 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) if foodx % != 0: foodx += if foody % != 0: foody += foodpos = [foodx * 10, foody * 10] foodflat = True direction = 'RIGHT' changeto = direction score = 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(0) pygame.display.flip() time.sleep(3) #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 == if event.key changeto if event.key changeto if event.key pygame.KEYDOWN: == pygame.K_RIGHT: = 'RIGHT' == pygame.K_LEFT: = 'LEFT' == pygame.K_UP: changeto = 'UP' if event.key == pygame.K_DOWN: changeto = 'DOWN' if event.key == pygame.K_ESCAPE: pygame.event.post(pygame.evet.Event(pygame.QUIT)) Hướng # hướng 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í # cập nhật vị trí if direction == 'RIGHT': snakepos[0] += m if direction == 'LEFT': snakepos[0] -= m if direction == 'UP': snakepos[1] -= m if direction == 'DOWN': snakepos[1] += m Xử lý đụng phải cạnh biên # xử lý di chuyển đụng 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 rắn #cơ chế thêm khúc dài snakebody.insert(0,list(snakepos)) if snakepos[0] == foodpos[0] and snakepos[1] == foodpos[1]: score += foodflat = False else: snakebody.pop() Cơ chế tự ăn # xử lý tự ăn 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 += if foody %2 != 0: foody += foodpos = [foodx * 10, foody * 10] foodflat = True 3.1.6 Hiển thị cửa sổ Cập nhật 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[0],pos[1],m,m)) gameSurface.blit(Imghead,pygame.Rect(snakebody[0][0],snakebody[0][1],m,m)) gameSurface.blit(Imgfood,pygame.Rect(foodpos[0],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 TỔNG KẾT Qua việc thực đề tài “Xây dựng trò chơi rắn săn mồi Python”, em biết thêm nhiều kiến thức python bước đầu nắm bắt python Do kiến thức em cịn hạn hẹp thời gian khơng cho phép nên em chưa thể thực python phức tạp Tuy nhiên em cố gắng để làm trường hợp mà nghĩ đến để đạt kết tốt để đưa tới Thầy/Cơ Trong q trình thực em khó tránh khỏi sai xót cịn tồn Vì em mong nhận lời góp ý chỉnh sửa từ Thầy/Cơ để hồn thành kiểm thử chương trình cách hồn chỉnh Em lần xin cảm ơn thầy Lê Mạnh Hùng tận tình giảng dạy hướng dẫn em làm sản phẩm kết thúc học phần môn học Ngôn ngữ Python, thầy giúp đỡ em trình thực đề tài chia sẻ tài liệu hay kỹ cần thiết