(TIỂU LUẬN) MINH họa GIẢI bài TOÁN 8 QUÂN hậu BẰNG THƯ VIỆN đồ họa

26 7 0
(TIỂU LUẬN) MINH họa GIẢI bài TOÁN 8 QUÂN hậu BẰNG THƯ VIỆN đồ họa

Đ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Ộ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC NHA TRANG KHOA CÔNG NGHỆ THÔNG TIN MINH HỌA GIẢI BÀI TOÁN QUÂN HẬU BẰNG THƯ VIỆN ĐỒ HỌA Giảng viên hướng dẫn: ThS Đoàn Vũ Thịnh Sinh viên thực hiện: Lê Hoàng Nam Mã số sinh viên: 61133986 Khánh Hịa - 2021 TRƯỜNG ĐẠI HỌC NHA TRANG KHOA CƠNG NGHỆ THÔNG TIN BỘ MÔN HỆ THỐNG THÔNG TIN MINH HỌA GIẢI BÀI TOÁN QUÂN HẬU BẰNG THƯ VIỆN ĐỒ HỌA Giảng viên hướng dẫn: ThS Đoàn Vũ Thịnh Sinh viên thực hiện: Lê Hoàng Nam Mã số sinh viên: 61133986 Khánh Hòa - Tháng 12/2021 TRƯỜNG ĐẠI HỌC NHA TRANG Khoa: Công nghệ Thông tin PHIẾU THEO DÕI TIẾN ĐỘ VÀ ĐÁNH GIÁ BÁO CÁO THỰC TẬP CƠ SỞ Tên đề tài: MINH HỌA GIẢI BÀI TOÁN QUÂN HẬU BẰNG THƯ VIỆN ĐỒ HỌA Giảng viên hướng dẫn: ThS Đoàn Vũ Thịnh Sinh viên hướng dẫn: Lê Hồng Nam MSSV: 61133986 Khóa: 61 Lần Ngày 7/12/2020 14/12/2020 21/12/2020 4/01/2021 11/01/2021 18/1/2021 Nhận xét chung (sau sinh viên hoàn thành ĐA/KL): Điểm hình thưc: …./10 Điểm nội dung: … /10 Điểm tổng kết: … /10 Đồng ý cho sinh viên: Được bảo vệ: Khơng bảo vệ: Khánh Hịa, ngày 20 tháng 01 năm 2021 Cán hướng dẫn (Ký ghi rõ họ tên) MỤC LỤC TÓM TẮT GIỚI THIỆU 1.1Bài toán quân hậu: 1.2Đệ quy: 1.3Thuật toán quay lui: 1.4Visual Studio Code thư viện Graphics: PHƯƠNG PHÁP NGHIÊN CỨU 2.1Cài đặt Visual Studio Code thư viện graphics.h: 2.2Sử dụng thuật toán quay lui giải toán: 2.3Các hàm khác chương trình: 2.4Hàm floodfill cách xác định vị trí quân cờ bàn 2.5Hàm main: KẾT QUẢ KẾT LUẬN TÀI LIỆU THAM KHẢO TĨM TẮT Bài tốn qn hậu toán logic kinh điển từ kỷ XIX Sau tổng quát biết đến nhiều với cách gọi toán xếp hậu (bài tốn xếp n qn hậu bàn cờ n ×n) Ở dạng tổng qt này, ta tìm hàng tỷ cách giải với điều kiện n đủ lớn Đây tốn ứng dụng nhiều mục đích giải trí học tập Việc giải tốn với mơ tả theo cách trực quan đem đến nhìn sâu tốn thuật toán cài đặt để giải toán Sử dụng đồ họa máy tính, lĩnh vực Công Nghệ Thông Tin dùng để nghiên cứu sở toán học, thuật toán kĩ thuật tạo, hiển thị, sử dụng hình ảnh hiển thị máy tính Đây lựa chọn tối ưu để tạo nên góc nhìn trực quan Cùng với thuật tốn quay lui đệ quy, thuật toán học tìm hiểu, báo cáo thể hiện, mơ tả, giải đáp kết luận tồn q trình giải tốn qn hậu máy tính Thơng qua báo cáo, người đọc xác định ý tưởng cách giải toán quân hậu, quy luật quy ước giải Biết cách cài đặt Visual Studio Code thư viện đồ họa Quan trọng nhất, người đọc có nhìn tổng quan thuật toán quay lui đệ quy, hiểu cách thuật toán sử dụng để giải tốn qn hậu Cùng với thơng tin liên quan đến đồ họa, hàm có thư viện GIỚI THIỆU 1.1 Bài toán quân hậu: Bài toán quân hậu đưa vào năm 1848 kỳ thủ Max Bezzel Bài toán yêu cầu xếp quân hậu (hoặc n quân hậu dạng toán xếp hậu tổng quát) bàn cờ kích thước 8×8 (hoặc n×n dạng tốn xếp hậu tổng qt) Sao cho khơng có qn hậu “ăn” qn hậu khác cách di chuyển theo luật cờ vua Minh họa lời giải toán quân hậu Hình thể lời giải quân hậu bàn cờ thể hình vng đen viền trắng cờ thể 64 hình vng viền trắng bên bàn cờ Các ô cờ tô màu xanh thể vị trí cờ đặt qn hậu thỏa mãn yêu cầu toán Một số lời giải số học có dạng dãy số: 1,5,8,6,3,7,2,4 Đánh số thứ tự phần tử dãy từ đến Số thứ tự Dãy số Các số dòng cột đánh số từ xuống dưới, từ trái sang phải theo cách đánh số ma trận Mỗi số thứ tự xem số cột vị trí cờ mà qn hậu đặt, số dãy số dịng cờ mà quân hậu đặt Từ đó, ký hiệu quân hậu nằm ô thứ j đứng cột thứ i Q[i,j], ta hiểu dãy số vị trí: (1,1), (2,5), (3,8), (4,6), (5,3), (6,7), (7,2), (8,4) 1.2 Đệ quy: Theo Wikipedia, tính chất (hoặc cấu trúc) gọi đệ quy lớp đối tượng phương pháp xác định việc xác định số trường hợp phương pháp đơn giản (thơng thường một) sau xác định quy tắc đưa trường hợp phức tạp trường hợp đơn giản Trong lập trình, hiểu đơn giản, trình chạy chương trình (hàm, thủ tục), chương trình (hàm, thủ tục) gọi lại gọi đệ quy Với toán quân hậu này, đệ quy dùng sở thuật toán quay lui 1.3 Thuật toán quay lui: Quay lui thuật toán phát triển dựa đệ quy, thường xuyên dùng để giải toán thõa mãn ràng buộc (Các toán thỏa mãn ràng buộc tốn có lời giải đầy đủ, thứ tự phần tử khơng quan trọng Các toán bao gồm tập biến mà biến cần gán giá trị tùy theo ràng buộc cụ thể toán) Việc quay lui giúp ta thử tất tổ hợp để tìm tất lời giải Rất phù hợp cho toán toán quân hậu Ví dụ trường hợp quay lui: Xét ô cờ cột chưa xét (cột thứ 7) ta thấy tất ô cột khơng thỏa u cầu tốn qn hậu: Minh họa ví dụ quay lui toán quân hậu Lúc thuật toán quay lui tiếp tục xét ô cờ khả thi cột (ô thứ 6, 7, 8) 1.4 Visual Studio Code thư viện Graphics: Theo Wikipedia (https://vi.wikipedia.org/wiki/Visual_Studio_Code) Visual Studio Code trình biên tập mã phát triển Microsoft dành cho Windows, Linux macOS Nó dựa Electron, tảng sử dụng để triển khai ứng dụng Node.js máy tính cá nhân chạy động bố trí Blink Mặc dù sử dụng tảng Electron[5] phần mềm khác Atom, thực dựa trình biên tập Visual Studio Online Visual Studio Code công bố, mắt phiên thử nghiệm vào ngày 29 tháng năm 2015 Microsoft hội nghị Build 2015 Vào ngày 14 tháng năm 2016 Visual Studio Code hoàn tất thử nghiệm phát hành thức Visual Studio Code trình biên tập mã Nó hỗ trợ nhiều ngơn ngữ chức tùy vào ngôn ngữ sử dụng theo bảng sau Nhiều chức Visual Studio Code không hiển thị menu tùy chọn hay giao diện người dùng Thay vào đó, chúng gọi thông qua khung nhập lệnh qua tập tin json (ví dụ tập tin tùy chỉnh người dùng) Khung nhập lệnh giao diện theo dịng lệnh Tuy nhiên, biến người dùng nhấp nơi khác, nhấn tổ hợp phím để tương tác với bên ngồi Tương tự với dòng lệnh tốn nhiều thời gian để xử lý Khi thực điều trình xử lý dịng lệnh bị hủy Thư viện Graphics.h (Borland Graphics Interface – biết đến với tên gọi BGI) thư viện đồ họa phổ biến DOS máy tính chạy hệ điều hành Windows thời kì đầu Windows 95, Windows 98 Thư viện cung cấp cho người dùng file: graphics.h graphics.lib để sử dụng với ngơn ngữ C/C++ module graph người dùng sử dụng ngôn ngữ Pascal Bộ thư viện kèm với IDE Borland C++ 3.1 (1992) Nó chứa số hàm vẽ ảnh cách tạo ảnh chuyển động, in chữ Một điểm mạnh thư viện việc khởi tạo sử dụng đơn giản, đời lâu có nhiều trường đại học sử dụng cho mục đích giảng dạy Thư viện winbmin Đồ họa C sử dụng hàm WinBGIm (Windows 7) sử dụng để vẽ hình dạng khác nhau, hiển thị văn phông chữ khác nhau, thay đổi màu sắc nhiều Thư viện winbgim cho phép bạn sử dụng thói quen đồ họa BGI hỗ trợ chuột đơn giản cho ứng dụng Windows mà bạn viết trình biên dịch mingw32 gnu C ++ CS1300 với trình biên dịch Borland C ++ (phiên 5.0) Nó hoạt động với trình biên dịch Windows khác PHƯƠNG PHÁP NGHIÊN CỨU 2.1 Cài đặt Visual Studio Code thư viện graphics.h: Để cài đặt Visual Studio Code 2019 máy, vào đường dẫn: (https://visualstudio.microsoft.com/download) Tiến hành tải cài đặt theo hướng dẫn đường dẫn: (https://duythanhcse.wordpress.com/2019/04/03/huong-dan-tai-cai-dat-va-su-dungvisual-studio-2019) Cài đặt Graphics theo đường link: (https://github.com/thinhdoanvu/ComputerGraphics/tree/master/Coding/library) Không cách cài Graphics cho DevC, để sử dụng thư viện Graphics Visual Studio Code bạn cần cài đặt thêm TDM-GCC theo đường dẫn: (https://jmeubank.github.io/tdm-gcc), thiết lập Visual Studio Code theo hướng dẫn tại: (https://www.youtube.com/watch?v=J0_vt-7Ok6U) Bạn thay Visual Studio Code phần mềm DevC thực cài đặt thư viện đồ họa theo bước: Bước 1: Copy tập tin 6-ConsoleAppGraphics, ConsoleApp_cpp_graph đến đường dẫn C:\Program Files\Dev-Cpp\Templates Bước 2: Copy tập tin graphics, winbgim đến thư mục C:\Program Files\DevCpp\MinGW64\x86_64-w64-mingw32\include Bước 3: Copy tập tin libbgi.a đến đường dẫn C:\Program Files\Dev-Cpp\ MinGW64\x86_64-w64-mingw32\lib Bước 4: Hiệu chỉnh phiên TDM-GCC cho phù hợp với hệ điều hành phần mềm DevC/C++ theo đường dẫn sau: Tools - Compiler Option ta chọn TDMGCC 4.9.2 32bit Release Thiết lập phiên TDM-GCC phù hợp với DevC/C++ phiên 32 bit 2.2 Sử dụng thuật toán quay lui giải toán: 2.2.1 Tạo biến chuẩn bị cho cài đặt thuật toán: Trước sử dụng giải thuật để giải toán Sử dụng biến mảng có kiểu liệu Boolean để lưu trạng thái hàng đường chéo Từ sử dụng liệu để biết hàng, đường chéo có quân hậu hay chưa Đầu tiên, số dòng, cột đánh số từ xuống dưới, từ trái sang phải theo cách đánh số ma trận Thì ta thấy tính chất: phần tử nằm hàng có số hàng phần tử nằm cột có số cột phần tử nằm đường chéo song song với đường chéo có hiệu số hàng với số cột phần tử nằm đường chéo song song với đường chéo phụ có tổng số hàng với số cột Quy ước đường chéo song song với đường chéo đường chéo trừ, đường chéo song song với đường chéo phụ đường chéo cộng, khai báo mảng ghi trạng thái sau: Quy ước giá trị False phần tử thứ n biểu thị trạng thái chưa có quân hậu hàng đường chéo thứ n Ví dụ: phần tử hang[8] có giá trị False biểu thị hàng thứ chưa có ô cờ đặt quân hậu Tiếp tục tạo biến mảng để lưu kết quả: Cuối ta khởi tạo giá trị toàn biến mảng False hàm main(), biểu trị bàn cờ trống: 10 2.2.2 Cài đặt thuật toán quay lui đệ quy: Tạo hàm quay lui tên giai() với tham số truyền vào số thứ tự cột: Với tham số này, thuật toán xét cột không cần biến mảng để ghi trạng thái cột Bắt đầu cài đặt thuật toán, tạo vòng lập for với biến đếm j = biểu thị cho hàng xét, biểu thức điều kiện j bé số hàng bàn cờ: Trong vòng lập for tạo câu lệnh điều kiện để xét vị trí cờ có nằm hàng, đường chéo cộng, đường chéo trừ đặt quân hậu hay chưa Trường hợp thỏa điềề̀u kiện (có quân cờ hàng đường chéo): Lưu kết gán giá trị True để biểu thị hàng, đường chéo cộng, đường chéo trừ xét đặt qn hậu Sau tơ màu vàng ô cờ hàm floodfill() nhằm biểu thị ô cờ đặt quân hậu dung hàm delay để thể q trình giải thuật tốn: Tiếp tục sử dụng câu lệnh điều kiện cột xét cột cuối bàn cờ tơ xanh cờ tô vàng (tô dựa theo giá trị gán mảng ketqua khai báo) Dùng hàm getch() để giữ hình hiển thị kết cho người dùng Tô vàng ô theo cách tô xanh kết để tiếp tục xét trường hợp Trong trường hợp 11 không thỏa điều kiện (chưa xét đến cột cuối bàn cờ), đệ quy hàm giai() để tiếp tục xét cột kết tiếp: Kế đến gán giá trị phần tử mảng hàng, đường chéo cộng, đường chéo trừ chứa ô xét thành False: tô đen ô cờ để thể bỏ chọn ô cờ xét: Trường hợp không thỏa điềề̀u kiện (khơng có qn hậu hàng đường chéo): Tơ màu đỏ, sau delay khoảng thời gian định, tô đen ô cờ, điều hiển thị hình thể cờ xét khơng thỏa mãn u cầu tốn đặt ra: 12 2.2.3 Tồn thuật tốn quay lui: 2.3 Các hàm khác chương trình: 2.3.1 Hàm vebanco (vẽ bàn cờ): Hàm vẽ bàn cờ sử dụng hàm có sẵn thư viện graphics.h để vẽ bàn cờ Bàn cờ vẽ hình đồ họa có độ lớn 400×400 pixel, có đỉnh có tọa độ (10;10) (410;410) Các cờ có độ lớn 50×50 pixel, tất thể đường thẳng trắng Hàm gọi hàm main() trước gọi hàm giai() 13 2.3.2 Hàm menu ktramenu: Hàm menu thể tùy chọn tốc độ thoát ứng dụng cho người dùng thông qua nhấp chuột Hàm menu vẽ tùy chọn thành ô với chữ để người dùng chọn Trong có chữ nhật ứng với từ xuống tăng tốc độ lên lần, giảm tốc độ xuống lần Mỗi có độ lớn 150 ×100 pixel Các có cặp đỉnh: (450;100) (600;150), (450;150) (600;200), (450;350) (600;400) Hàm gọi hàm main() trước sau vẽ bàn cờ Trong đó, hàm ktramenu() kiểm tra xem người dùng có click chuột lúc sử dụng chương trình khơng Hàm gọi vòng lặp for hàm 14 giai() (mỗi xét ô bàn cờ đồng thời xét xem có thao tác click chuột hay không) Khai báo biến để lưu tọa độ nhấp chuột mx my sau dùng hàm getmouseclick() để gán hoành độ x click chuột cho mx tung độ y click chuột cho my Nếu có, tùy theo vị trí tọa độ nhấp chuột hình đồ họa nằm tùy chọn menu mà có lệnh khác tăng tốc, giảm tốc thoát Ngược lại người dùng không click chuột click chuột vào tọa độ khơng nằm tùy chọn menu, câu lệnh bỏ qua Với tùy chọn × toc / toc Ta khai báo biến tocdo với giá trị 400 truyền vào hàm delay() hàm giai() để thể trình giải cho mắt thường theo dõi Nếu người dùng chọn × toc ta gán tocdo = tocdo/2, / tocdo ta gán tocdo = tocdo×2 Đồng thời phải đặt điều kiện cho giá trị tốc độ trước gán giá trị để tránh trường hợp biến tocdo bị chia lấy nguyên giá trị thời gian delay() lớn (ở đặt tocdo phải 10 4000 tương đương 0.01 giây giây) 2.4 Hàm floodfill cách xác định vị trí quân cờ bàn cờ: Hàm floodfill() hàm có sẵn thư viện graphics.h, cho phép tơ màu pixel xung quanh tọa độ định có giá trị màu chênh lệch khoảng giá trị cho phép với pixel tọa độ Sử dụng hàm floodfill() ta tô ô cờ theo quy ước ô cờ xét thỏa điều kiện màu vàng, ô cờ xét không thỏa điều kiện màu đỏ, ô cờ xét tạo thành lời giải màu xanh Tuy nhiên, để tô màu ô cờ ta phải xác định tọa độ để truyền vào hàm tham số Với bàn cờ tạo từ đỉnh đối (10;10) (410;410), độ lớn 400 ×400 pixel, ô cờ lớn 50×50 pixel, ta dùng số hàng cột có sẵn để tạo thành cơng thức tính tọa độ tơ màu cờ thuộc cột i hàng∈ j: x = (i-1) × 50 + a y = (j-1) × 50 + b Với a,b 15 (0;50) Ví dụ sử dụng hàm floodfill() việc tơ ô cờ: 2.5 Hàm main: Vì chương trình sử dụng thư viện đồ họa, cần sử dụng hàm để khởi động chế độ đồ họa Chương trình khơng gặp lỗi chạy bình thường, ngược lại thông báo lỗi khởi động đồ họa với mã lỗi nguyên nhân Gán giá trị cho mảng trình bày gọi hàm tạo sau gọi hàm giai() để giải toán 16 KẾT QUẢ Sau chạy chương trình, kết thu lời giải sau cho toán quân hậu: 17 18 19 Số lượng lời giải thu 92, với thống kê số lượng lời giải toán quân hậu có từ trang bách khoa tồn thư điện tử Wikipedia Các lời giải không trùng thỏa mãn u cầu tốn 20 Q trình mơ tả giải tốn mơ tả trực quan, khiến q trình giải tốn qn hậu thuật tốn quay lui đệ quy dễ dàng theo dõi trước Các ô cờ đặt quân hậu xét, đúng, sai minh họa màu vàng, xanh đỏ giúp mơ tả tốn Các tùy chọn tăng giảm tốc độ giúp người dùng dễ dàng theo dõi với tốc độ mong muốn không xảy lỗi Minh họa chương trình xuất lời giải 21 Minh họa chương trình giải tốn 22 KẾT LUẬN Sau hoàn thành báo cáo nhận thấy ưu nhược điểm thuật toán quay lui đệ quy với chương trình Visual Studio Code so với thuật tốn chương trình khác: Ưu điểm thuật tốn quay lui đệ quy: -Dễ cài đặt thuật toán -Cho kết xác -Có thể áp dụng với toán xếp hậu (dạng tổng quát toán quân hậu) Nhược điểm thuật toán: -Cần xét đến trường hợp nên thời gian giải chậm -Không thể dùng với toán xếp hậu số quân hậu nhiều thời gian giải lâu Ưu điểm Visual Studio Code: -Mơi trường lập trình chun nghiệp -Có nhiều extension (các chương trình hỗ trợ tích hợp) cho phép lập trình dễ dàng Nhược điểm Visual Studio Code: -Khó cài đặt để sử dụng -Việc cài đặt thư viện đồ họa khó khăn so với Dev C chương trình khác -Khơng hỗ trợ sẵn biên dịch chương trình đồ họa 23 TÀI LIỆU THAM KHẢO https://github.com/thinhdoanvu/ComputerGraphics/tree/master/Coding/library https://vi.wikipedia.org/wiki/Visual_Studio_Code https://duythanhcse.wordpress.com/2019/04/03/huong-dan-tai-cai-dat-va-su- dung-visual-studio-2019 https://www.youtube.com/watch?v=J0_vt-7Ok6U 24 ... Bài toán quân hậu: Bài toán quân hậu đưa vào năm 184 8 kỳ thủ Max Bezzel Bài toán yêu cầu xếp quân hậu (hoặc n quân hậu dạng tốn xếp hậu tổng qt) bàn cờ kích thư? ??c 8? ?8 (hoặc n×n dạng tốn xếp hậu. .. code minh họa đồ họa Code minh họa đồ họa Code sau chạy: Chương trình chạy minh họa 2.2 Sử dụng thuật toán quay lui giải toán: 2.2.1 Tạo biến chuẩn bị cho cài đặt thuật toán: Trước sử dụng giải. .. MÔN HỆ THỐNG THÔNG TIN MINH HỌA GIẢI BÀI TOÁN QUÂN HẬU BẰNG THƯ VIỆN ĐỒ HỌA Giảng viên hướng dẫn: ThS Đoàn Vũ Thịnh Sinh viên thực hiện: Lê Hoàng Nam Mã số sinh viên: 61133 986 Khánh Hòa - Tháng

Ngày đăng: 11/12/2022, 04:37

Tài liệu cùng người dùng

Tài liệu liên quan