1. Trang chủ
  2. » Công Nghệ Thông Tin

Báo_cáo_Game_Pikachu

18 124 1

Đ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

Báo cáo cuối kỳ lập trình Python game Pikachu dùng thuật toán bfs, quay lui,...

BÁO CÁO ĐỀ TÀI GAME PIKACHU Sử dụng ngôn ngữ Python Mơn Giáo viên Lớp : Lập trình nâng cao : Ngô Thế Quyền : MAT3376 + CLCMTKHTT THÀNH VIÊN CỦA NHÓM 17 MSV Họ tên 19000418 Đinh Thị Hà 19000427 Lê Thị Hoa 19000490 Đặng Thị Phương Thúy Hà Nội 2021 Báo cáo project game Pikachu Python MỤC LỤC 2|Page Báo cáo project game Pikachu Python Lời nói đầu Python ngơn ngữ lập trình hướng đối tượng thơng dụng dùng để viết tiện ích hệ thống Nó sử dụng ngơn ngữ kết dính đóng vai trị tích hợp C C++ Python ngơn ngữ lập trình dễ học, dễ đọc Python tăng cường sử dụng từ khóa tiếng Anh, hạn chế ký hiệu cấu trúc cú pháp so với ngôn ngữ khác Các tảng xã hội loại game 4.0 ngày phát triển Tính cởi mở dễ dàng tương tác với giao diện đẹp mắt từ máy tính để bàn thiết bị cầm tay cho phép người chơi trải nghiệm game với chi phí thấp Điều có mặt tích cực tiêu cực Những trò chơi cổ điển thời xưa bị quên lãng thay vào trị bạo lực dần trở nên phổ biến Bên cạnh việc lập trình game ngôn ngữ Python ngày phổ biến ứng dụng nhiều Với mục đích học tập sáng tạo nên bọn em dựa gợi ý nhiệt tình, bổ ích thầy nên đề tài game Pikachu lựa chọn giúp bọn em tìm hiểu nâng cao kĩ lập trình phát triển tính sáng tạo thơng qua mơn học lập trình nâng cao Trong trình làm tập lớn dù cố gắng tìm hiểu khơng tránh khỏi sai sót mong thầy góp ý để nhóm em hồn thành tập lớn tốt Để hồn thành báo cáo này, nhóm chúng em xin gửi lời cảm ơn chân thành đến Thầy giáo hướng dẫn đề tài – ThS Ngô Thế Quyền , giảng viên Khoa Toán – Cơ – Tin học Trường Đại học Khoa Học Tự Nhiên Hà Nội - hết lịng giúp đỡ, hướng dẫn, góp ý tận tình để nhóm em hồn thành đề tài 3|Page Báo cáo project game Pikachu Python Tổng quan đề tài 1.1 Thông tin đề tài  Đặc tả đề tài :  Sử dụng ngôn ngữ lập trình Python làm game Pikachu  Nội dung game: Nhiệm vụ người chơi tìm hình cặp Pokemon giống để nối chúng lại, lần nối thành cơng nhận 100 điểm, thời gian cho lần thử thách phút STT Tên mục Nội dung Tên đề tài Game Pikachu Mô tả đề tài Sử dụng ngôn ngữ Python làm game Pikachu Mô tả game Game Pikachu xếp hình với luật chơi người chơi làm nhiệm vụ tìm cặp Pokemon giống nối chúng lại tối đa đường thẳng mà không bị cản trở vật khác Mục tiêu đề tài Xây dựng Game Pikachu Dữ liệu đầu vào • • Hình ảnh Pokemon Ngơn ngữ Python Dữ liệu đầu • • Game Pikachu Xây dựng giao diện chương trình Pikachu • Tính điểm cho người chơi 1.2 Phạm vi nghiên cứu, phạm vi ứng dụng  Phạm vi nghiên cứu: tự nghiên cứu  Phạm vi ứng dụng: cá nhân 4|Page Báo cáo project game Pikachu Python 1.3 Các vấn đề cần phải giải  Hệ thống phải đáp ứng chức sau: o Giao diện thân thiện: giao diện thân thiện, dễ dử dụng, hình ảnh bắt mắt o Chức tính điểm: tính tổng số điểm cho người chơi o Chức âm sinh động: âm sau kết thúc trò chơi, nối hay nối sai, âm chúc mừng người chơi đạt điểm cao o Vẽ đường bao quanh thẻ chọn: hiển thị rõ thẻ chọn giúp người chơi dễ phân biệt so với thẻ khác o Vẽ đường ăn cho thẻ: Ở hình hiển thị đường nối thẻ với vị trí đường tương ứng Phương pháp thực 2.1 Các cách giải vấn đề toán a Hiển thị ảnh pokemon  Tạo mảng PIKACHUIMGS = [] để lưu trữ ảnh pokemon  Dùng vòng lặp for chạy từ - > số ảnh pokemon + Trong vòng lặp này, tạo biến để gán ảnh tương ứng sau: o pikachuImage = pygame.image.load('%s.jpg' % i) o Dùng pygame.transform.smoothscale() để scale lại tất o ảnh pokemon với kích thước width & height 50 x 50 Sau append tất ảnh vào mảng PIKACHUIMGS b Xác định pokemon giống  Coi hình pokemon số nguyên dương tương ứng random hình để tạo ma trận chiếu có tọa độ x,y với x, y số hàng cột hình pokemon tạo Mỗi pokemon chứa địa số nguyên dương nó, tọa độ x tọa độ y Bằng việc tạo ma trận này, xử lý thuật toán game gián tiếp qua số vị trí chúng ma trận 5|Page Báo cáo project game Pikachu Python  Để xác định pokemon có giống Đầu tiên, tùy chọn ví trí tọa độ x,y chứa pokemon Nếu khơng có pokemon đc chọn tọa độ mặc định x = y = -1  Hàm selectPikachu(x,y) kiểm tra x, y có phải cặp giống với pokemon phía hay không o Nếu tọa độ pokemon thứ với x = y = -1 o Pokemon thứ khác id với pokemon o Đường nối pokemon đoạn o chương trình trả False Ngược lại trả True c Thuật toán game Pikachu  Toàn pokemon xếp theo mơ hình ma trận Ở game Pikachu chúng em xét ma trận vuông 10*10  Để thực giải thuật game Pikachu bọn em chia làm trường hợp từ đơn giản đến phức tạp để tìm đường (đường mà ăn) pokemon  Tổng quan có trường hợp trường hợp có nhánh nhỏ xét theo chiều ngang, chiều đọc o Trường hợp nằm hàng cột  TH1: Xem xét hai điểm nằm hàng ngang (x1 = x2))  TH2: Xem xét hai điểm nằm hàng dọc (y1 = y2) • Xét trường hợp hình pokemon nằm hàng ngang (x1 = x2), chúng em xét tọa độ cịn lại y1 y2 để tìm điểm có hồnh độ nhỏ (giả sử trả y1 < y2), xét liên tục ô theo hàng ngang x1 từ vị trí y1 đến y2, xét trống (có giá trị 0), hình pokemon nằm vị trí thỏa mãn • Tương tự ta xét hàng dọc Hai cặp pokemon theo chiều ngang chiều dọc giống tô đỏ tơ đen hình: hai pokemon giống nằm hàng dọc hàng ngang khơng có pokemon chen 6|Page Báo cáo project game Pikachu Python • o Phương án code:  Đối với hai tình bản, chúng em dùng vòng lặp for từ điểm đầu đến điểm cuối kiểm tra xem đường thẳng có thơng với khơng Nếu đúng, coi hồn thành, chưa đúng, tiếp tục sử dụng khai thác theo chiều ngang chiều dọc Xem xét hai trường hợp, hai hàm sử dụng hai checkLineX (y1, y2, x) checkLineY (x1, x2, y) tương ứng xét hàng cột Nếu điểm, hàm return true, ngược lại, trả false  Xét duyệt đường theo chiều ngang dọc bên chữ nhật  Xét điểm phạm vi bọc giới hạn từ tọa độ hình pokemon ứng với đầu hình chữ nhật Với trường hợp này, chúng em chia làm trường hợp nhỏ: xét đường theo chiều ngang chiều dọc  Trước tiên xem bên chữ nhật tạo điểm này, TH kiểm tra đường theo hình chữ Z  trường hợp dùng để bao qt tồn đường với hướng khác Chúng ta có hướng đi, muốn biết hướng dẫn đến đích, cần bao quát đường từ hướng  TH3: Xét duyệt đường theo chiều ngang phạm vi hình chữ nhật • Lấy hồnh độ điểm: y1 y2 Sau so sánh hồnh độ, tìm hồnh độ nhỏ hơn, bắt đầu tịnh tiến từ có hồnh độ nhỏ sang phía có hồnh độ lớn với vịng for giá trị tăng Với lần tịnh tiến y thêm đơn vị ấy, ta liên tục kiểm tra xem nằm vị trí kiểm tra có phải trống khơng Nếu trống, 7|Page Báo cáo project game Pikachu Python kiểm tra thêm đoạn thẳng lại để nối điểm có thỏa mãn khơng Nếu nối hình • Như hình minh họa pokemon giống có đường nối với tối đa đường đường nối không gặp pikachu khác: o Phương án code :  Xây dựng hàm checkRectX (p1, p2) dùng để kiểm tra bên chữ nhật có dạng ngang tạo điểm p1 p2  Với p1 , p2 tọa độ hình pokemon (vị trí pokemon)  Đầu tiên tìm điểm có cột nhỏ (y) (pMinY) điểm lớn (pMaxY) Tiếp theo, chúng em cho y chạy từ nhỏ đến lớn (từ trái sang phải), với cột (y), sử dụng checkLineX checkLineY để xem đường nhỏ xây dựng liền mạch hay không Nếu có cơng cụ cột kết nối dịng này, có đường điểm trả giá trị y cột Nếu khơng, trả -1   TH4: Xét duyệt đường theo chiều dọc 8|Page Báo cáo project game Pikachu Python • Xây dựng hàm checkRectY(p1,p2) tuơng tự TH3 làm xét theo chiều dọc • Hàm checkRectY(p1, p2) xây dựng tương tự TH3 thực hiện, theo chiều dọc Kiểm tra bên chữ nhật hình dạng ngang tạo điểm p1 p2 • Đầu tiên tìm điểm có tọa độ hàng (y) nhỏ (pMinY) điểm lớn (pMaxY) Tiếp theo, cho y chạy từ nhỏ đến lớn (từ trái sang phải), với cột (y), sử dụng checkLineX checkLineY để xem đường nhỏ xây dựng liền mạch hay khơng Nếu có cơng cụ cột kết nối dịng này, có đường điểm trả giá trị y cột Nếu khơng, trả -1 Xem xét mở rộng theo chiều ngang chiều dọc  Cuối cùng, TH không thành công, xem xét TH mở rộng • Đó trường hợp nối tối đa đoạn thẳng vượt phạm vi hình chữ nhật hình thành từ tọa độ hình pokemon.Tức phải xét đến trường hợp đường có hình dạng chữ U chữ L Như hình minh họa 2con pokemon giống vị trí hình chữ L đường nối với không gặp phải pokemon khác 9|Page Báo cáo project game Pikachu Python  TH5: Xét mở rộng theo chiều ngang • Đối với trường hợp này, xét mở rộng chiều ngang phía bên trái bên phải hàm checkMoreLineX(p1,p2, type) để giải vấn đề đoạn thẳng vượt ngồi hình chữ nhật hình thành từ đọa độ hình pokemon, tạo biến type tham số truyền vào hàm checkMoreLineX() • Trong p1, p2 điểm cần kiểm tra, tìm đường đi, type loại, type nhận giá trị (đi phải) -1 (đi trái) • So sánh hình pokemon tìm hình pokemon có hồnh độ nhỏ tương ứng pMinY pMaxY • Vì xét phạm vi hình chữ nhật đường thẳng điểm khơng đến với nhau, mở rộng cách xét bên trái từ cột pMaxY[1] (cột điểm chứa cột lớn hơn) bên phải từ cột pMinY Và tăng giảm dần số cột lên điểm (pMinY[0], y) (pMaxY[0], y) chướng ngại vật Nếu gặp giá trị y mà làm cho đường thẳng đứng thơng chứng tỏ tìm thấy đường 10 | P a g e Báo cáo project game Pikachu Python Khi hàm trả giá trị cột y tìm được, khơng trả -1 Tuy nhiên trước xét cột cần xét đoạn từ pMinY đến pMaxY (doạn màu xanh lá) có thơng không   TH6: Xét mở rộng theo chiều dọc • Thực hàm checkMoreLineY(p1,p2, type) tương tự duyệt theo hàng • Cuối viết hàm checkTwoPoint(p1, p2) để kiểm tra tìm đường gữa điểm p1, p2 Hàm trả đối tượng MyLine gồm điểm p1 p2 Trong TH đường thẳng điểm p1, p2 thơng trả MyLine gồm p1 p2, TH đường gấp khúc trả MyLine gồm điểm đoạn gấp khúc d Vẽ đường nối hai pokemon giống  Sau xác định pokemon giống tìm đc đường hợp lí ta dùng pygame.draw.rect để vẽ đường nối với 2.2 Các thư viện, kĩ thuật, công nghệ lựa chọn sử dụng STT Tên ứng dụng Nội dung/Note Visual Studio Code chỉnh sửa chạy code Word Báo cáo công việc Github Báo cáo công việc hàng tuần trao đổi code với 11 | P a g e Báo cáo project game Pikachu Python thành viên nhóm Development language Python Thư viện : Công dụng : random Chứa hàm tạo số nguyên ngẫu nhiên, tạo Pygame số float 0,0 1,0 Dùng để lập trình video games Time Xử lý tác vụ liên quan đến thời gian os Làm việc với tập tin thư mục cv2 Xử lí ảnh video game sys Truy cập tham số chức cụ thể hệ thống 2.3 Xây dựng liệu      Dữ liệu game pikachu: Có 10 hàng x 10 cột gồm 25 pokemon khác tạo thành ma trận vng Có âm nhạc sơi động tạo cảm hứng cho người chơi Có hiệu ứng vng chọn Xây dựng hàm tính đểm cho người chơi: lần 100đ o Dữ liệu pokemon: o Mỗi hình pokemon có kích cỡ : 50*50 12 | P a g e Báo cáo project game Pikachu Python  Xây dựng source code: 13 | P a g e Báo cáo project game Pikachu Python Giao diện trò chơi demo:  Để có giao diện pikachu hình, chúng em tạo packpage images gồm hình pokemon đặt tên rõ ràng từ 1đến 25 ( có 25 hình pokemon khác nhau).Và pokemon chọn ngẫu nhiên 14 | P a g e Báo cáo project game Pikachu Python Tạo file cfg.py lưu biến mặc định sử dụng xuyên suốt project:  File game.py file chứa tồn thuật tốn hàm hiển thị hình pokemon: 15 | P a g e Báo cáo project game Pikachu Python  File Pikachu.py file gọi hàm main 2.4 Một số sơ đồ mô tả hoạt động  Sơ đồ hệ thống nhận lệnh ghép pokemon Sơ đồ tác vụ người chơi với hệ thống 16 | P a g e Báo cáo project game Pikachu Python Tài liệu tham khảo  Các giảng, tài liệu colab lớp học giáo viên  Tham khảo thuật toán code nhiều tài liệu nguồn google o https://docs.python.org/3/ o https://www.youtube.com/watch?v=XGf2GcyHPhc  Một số nguồn tham khảo thuật toán source code: o https://codelearn.io/sharing/lam-game-sieu-xin-bang-java-phan-1 o https://nguyenvanquan7826.wordpress.com/2014/03/25/thuat-toan- game-pokemon-pikachu/  Do tài liệu code pikachu python cịn nên tồn tham khảo bọn em dựa code java kiến thức tìm hiểu học tập mạng Làm việc nhóm  Tất người nhóm tự tìm hiểu trước, nghiêm cứu đề tài cho họp trực tuyến thông qua meet Cùng nhận nhiệm vụ phù hợp với khả bạn: o Đinh Thị Hà: Nghiên cứu tài liệu, thuật toán, code o Lê Thị Hoa: Nghiên cứu tài liệu, thuật toán, làm báo cáo, code o Đặng Thị Phương Thúy: Nghiên cứu tài liệu, thuật toán, code  Một tuần buổi họp online trực tuyến code với ghép code: 17 | P a g e Báo cáo project game Pikachu Python  Xây dựng thuật toán: Chia nhỏ hàm với nhiệm vụ thành viên nhóm  Các thành viên code phân chia rõ ràng công việc nhiệm người theo buổi họp  Đưa hạn dealine phù hợp với thời gian thầy đề  Luôn đảm bảo bạn phải làm công việc đầy đủ 18 | P a g e

Ngày đăng: 17/04/2022, 20:23

Xem thêm:

HÌNH ẢNH LIÊN QUAN

 Nội dung game: Nhiệm vụ của người chơi là tìm ra những hình cặp Pokemon giống nhau để nối chúng lại, cứ mỗi lần nối thành công thì  sẽ nhận được 100 điểm, thời gian cho mỗi lần thử thách là 3 phút. - Báo_cáo_Game_Pikachu
i dung game: Nhiệm vụ của người chơi là tìm ra những hình cặp Pokemon giống nhau để nối chúng lại, cứ mỗi lần nối thành công thì sẽ nhận được 100 điểm, thời gian cho mỗi lần thử thách là 3 phút (Trang 4)
• Như hình minh họa 2con pokemon giống nhau có đường đi nối với nhau tối đa là 3 đường và đường nối không gặp  con pikachu khác: - Báo_cáo_Game_Pikachu
h ư hình minh họa 2con pokemon giống nhau có đường đi nối với nhau tối đa là 3 đường và đường nối không gặp con pikachu khác: (Trang 8)
• So sánh 2 hình pokemon rồi tìm ra hình pokemon có hoành độ nhỏ hơn tương ứng là pMinY và pMaxY. - Báo_cáo_Game_Pikachu
o sánh 2 hình pokemon rồi tìm ra hình pokemon có hoành độ nhỏ hơn tương ứng là pMinY và pMaxY (Trang 10)
• Vì khi xét trong phạm vi hình chữ nhật hoặc trên đường thẳng thì 2 điểm đều không đến được với nhau, do đó  chúng ta mở rộng nó ra bằng cách xét về bên trái từ cột  pMaxY[1] (cột của điểm chứa cột lớn hơn) và về bên phải  từ cột pMinY - Báo_cáo_Game_Pikachu
khi xét trong phạm vi hình chữ nhật hoặc trên đường thẳng thì 2 điểm đều không đến được với nhau, do đó chúng ta mở rộng nó ra bằng cách xét về bên trái từ cột pMaxY[1] (cột của điểm chứa cột lớn hơn) và về bên phải từ cột pMinY (Trang 10)
o Mỗi hình pokemon có kích cỡ : 50*50 - Báo_cáo_Game_Pikachu
o Mỗi hình pokemon có kích cỡ : 50*50 (Trang 12)
 Để có giao diện pikachu như màn hình, chúng em tạo ra một packpage images gồm các hình pokemon được đặt tên rõ ràng từ 1đến 25 ( có 25 hình pokemon  khác nhau).Và những con pokemon đều được chọn ngẫu nhiên. - Báo_cáo_Game_Pikachu
c ó giao diện pikachu như màn hình, chúng em tạo ra một packpage images gồm các hình pokemon được đặt tên rõ ràng từ 1đến 25 ( có 25 hình pokemon khác nhau).Và những con pokemon đều được chọn ngẫu nhiên (Trang 14)
 File game.py là file chứa toàn bộ thuật toán và các hàm hiển thị những hình pokemon: - Báo_cáo_Game_Pikachu
ile game.py là file chứa toàn bộ thuật toán và các hàm hiển thị những hình pokemon: (Trang 15)

Mục lục

    1. Tổng quan về đề tài

    1.1 Thông tin đề tài

    1.2 Phạm vi nghiên cứu, phạm vi ứng dụng

    1.3 Các vấn đề cần phải giải quyết

    2. Phương pháp thực hiện

    2.1 Các cách giải quyết vấn đề của bài toán

    a. Hiển thị các ảnh pokemon

    b. Xác định 2 con pokemon giống nhau

    c. Thuật toán game Pikachu

    2.2 Các thư viện, kĩ thuật, công nghệ được lựa chọn sử dụng

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

w