ĐỒ ÁN CUỐI KỲ C++: GAME ĐOÁN SỐ VIẾT BẰNG CÂY NHỊ PHÂN

18 1.2K 0
ĐỒ ÁN CUỐI KỲ C++: GAME ĐOÁN SỐ VIẾT BẰNG CÂY NHỊ PHÂN

Đ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

2.1.1.Giới thiệu về gameGame “Đoán Số” của nhóm chúng tôi lấy ý tưởng tưởng từ thuật toán tìm kiếm nhị phân đã được học trong học phần cấu trúc dữ liệu và giải thuật. Nhóm đã tạo một game trên máy tính và viết theo ngôn ngữ C++:•Game đoán số làm game rất phổ biến và áp dụng triệt để thuật toán tìm kiếm nhị phân trong một mảng số nguyên đã sắp xếp sẵn.•Dựa trên nguyên tắc có thứ tự của một mảng các số tự nhiên.•Game thể hiện sự nhanh trí, quá trình suy đoán, lập luận của người chơi.•Game đoán số dựa vào sự phân vùng dữ liệu để đoán giá trị (đoán số) nằm trong vùng nào để thu hẹp lại không gian tìm kiếm và xử lý dữ liệu.2.1.2.Luật chơiRất đơn giản người chơi chỉ cần nghĩ một số trong đầu nhưng bạn hãy trung thực, sau đó bạn hãy trả lời những câu hỏi mà máy tính đặt ra:•Nếu đúng từ bàn phím bạn gõ chữ “y”.•Nếu sai từ bàn phím bạn gõ chữ “n”.Trong khoảng 10 bước đoán của máy thì máy sẽ đoán đúng số bạn nghĩ trong đầu.

MỤC LỤC LỜI NÓI ĐẦU CHƯƠNG 1: TỔNG QUAN LÝ THUYẾT 1.1.LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG (OBJECT ORIENTED PROGRAMMING) 1.1.1.Sơ lược lập trình hướng đối tượng 1.1.2.Cấu trúc chương trình C++ .2 1.2.1.Lớp (class), đối tượng (object), phương thức (method) 1.2.2.Lớp sở (base class), lớp dẫn xuất (derived class) 1.2.3.Tính kế thừa (Inheritance) 1.2.4.Tính đa hình (Polymorphism) .4 1.3.SƠ LƯỢC VỀ LỚP (CLASS) TRONG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 1.3.1.Khái niệm class 1.3.2.Định nghĩa lớp (class) CHƯƠNG 2: GIỚI THIỆU 2.1.GIỚI THIỆU CHUNG 2.1.1.Giới thiệu game .5 2.1.2.Luật chơi .6 2.2.MỤC TIÊU CHƯƠNG 3: PHÂN TÍCH THIẾT KẾ CHƯƠNG TRÌNH CHƯƠNG 5: TỔNG KẾT 15 TÀI LIỆU THAM KHẢO .16 GAME ĐOÁN SỐ GVHD: Th.S Trần Uyên Trang LỜI NÓI ĐẦU Game máy tính hay thiết bị di động trò chơi giải trí ưa chuộng mạnh, năm gần đây, mà thiết bị di động thông minh phát triển mạnh Tổng giá trị thị trường game Hàn Quốc 9,16 tỷ USD (tương đương 180 ngàn tỷ đồng), Nhật Bản ước tính giá trị gấp lần Và Việt Nam nước có thị trường game non trẻ, nhiên Việt Nam bắt đầu hội nhập với số hãng game lớn xuất game thị trường giới VinaGame ví dụ Ngoài ra, với tìm tòi, sáng tạo cá nhân tự viết số game từ đến phức tạp để đáp ứng nhu cầu thân nhu cầu xã hội Hiện với cường độ làm việc học tập ngày cao nhu cầu giảm stress, thư giản đầu óc nhu cầu giải trí người ngày tâm nâng cao Để đáp ứng yêu cầu, mong muốn xã hội tạo công cụ giải trí cho người Nhóm lập game nhỏ, đơn giản nhằm đáp ứng yêu cầu Game nhóm thực ngôn ngữ lập trình C++ (Ngôn ngữ lập trình hướng đối tượng) có tên “Game đoán số” Chúng xin trân thành cảm ơn cô Trần Uyên Trang hướng dẫn giúp đỡ trình học tập hoàn thành tốt tập lớn Đây lần lần nhóm thiết kế, lập trình game hiểu biết, kinh nghiệm hạn chế nên chắn chương trình game không tránh khỏi thiếu sót định Rất mong nhận ý kiến đóng góp cô bạn để game nhóm hoàn thiện Chúng xin chân thành cảm ơn! Nhóm SVTH: Nhóm Trang GAME ĐOÁN SỐ GVHD: Th.S Trần Uyên Trang CHƯƠNG 1: TỔNG QUAN LÝ THUYẾT 1.1 Lập trình hướng đối tượng (Object Oriented Programming) 1.1.1 Sơ lược lập trình hướng đối tượng - Lập trình hướng đối tượng ngôn ngữ xây dựng tảng lập trình có cấu trúc với trừu tượng hóa liệu - Sự trừu tượng liệu tác động liệu trừu tượng hóa chức làm chức Khi trừu tượng hóa liệu xảy ra, cấu trúc liệu phần tử sử dụng mà không cần ý đến chi tiết cụ thể mà người ta xây dựng - Sự thay đổi chỗ: chương trình hướng đối tượng thiết kế xoay quanh liệu mà ta làm việc thân chức chương trình - Lập trình hướng đối tượng liên kết cấu trúc liệu với thao tác theo cách mà thường nghĩ giới xung quanh là: gắn hành động cụ thể với loại đối tượng - Lập trình hướng đối tượng cho phép sử dụng trình suy nghĩ giới quan vào liệu 1.1.2 Cấu trúc chương trình C++ (1): [Khai báo thư viện] (2): [Khai báo nguyên mẫu hàm người dùng] (3): [Các định nghĩa kiểu] (4): [Các định nghĩa Macro] (5): [Các định nghĩa biến, hằng] (6): main ([khai báo tham số]) (7): { (8): Thân hàm main (9): } (10): Các định nghĩa hàm người dùng 1.2 Những thuật ngữ lập trình hướng đối tượng 1.2.1 Lớp (class), đối tượng (object), phương thức (method) - Lập trình hướng đối tượng cho phép tổ chức liệu theo cách tương tự nhà sinh học tổ chức loại thực vật khác Nhóm SVTH: Nhóm Trang GAME ĐOÁN SỐ GVHD: Th.S Trần Uyên Trang Theo cách nói lập trình hướng đối tượng loài thực vật gọi lớp (class) - Một lớp bảng mẫu mô tả thông tin cấu trúc liệu lẫn công việc cụ thể phần tử liệu - Một phần tử mà khai báo thuộc lớp gọi phương thức (Method) chúng hàm xử lý liệu đối tượng lớp - Các cấu trúc liệu dùng để mô tả lớp gọi thuộc tính (Properties) - Mỗi đối tượng có riêng phần tử liệu lớp - Các phương thức định nghĩa lớp gởi đối tượng Điều gọi gởi thông điệp cho đối tượng Các thông điệp phụ thuộc vào đối tượng nhận, nghĩa đối tượng nhận thông điệp phải làm theo thông điệp 1.2.2 Lớp sở (base class), lớp dẫn xuất (derived class) - Không giống kiểu liệu có sẵn, lớp sử dụng lớp khác làm viên gạch cho - Một lớp dùng để xây dựng lớp Lớp ban đầu gọi lớp sở (base class) Còn lớp gọi lớp dẫn xuất (derived class) 1.2.3 Tính kế thừa (Inheritance) - Đó khả cho phép sử dụng lại lớp có sẵn để xây dựng lớp đề cập - Lớp dẫn suất kế thừa tất thuộc tính (properties) phương thức (method) lớp sở, có thuộc tính phương thức riêng Nhóm SVTH: Nhóm Trang GAME ĐOÁN SỐ GVHD: Th.S Trần Uyên Trang 1.2.4 Tính đa hình (Polymorphism) - Tính đa hình dựa ràng buộc, trình buộc, trình phương thức với hàm thực Khi phương thức kiểu đa hình sử dụng, trình biên dịch không xác định hàm tương ứng với phương thức gọi Hàm cụ thể gọi tùy thuộc vào lúc chạy Điều gọi ràng buộc muộn, xảy chương trình thực - Sự ràng buộc sớm đươc sử dụng cho phương thức không theo kiểu đa hình (còn gọi phương thức tĩnh) Lúc đó, biên dịch trình biên dịch biết cụ thể hàm gọi gắn với phương thức 1.3 Sơ lược lớp (class) lập trình hướng đối tượng 1.3.1 Khái niệm class - Lớp (class) khái niệm trung tâm lập trình hướng đối tượng - Lớp mở rộng khái niệm cấu trúc (struct) C ghi (record) pascal - Ngoài thành phần liệu cấu trúc, lớp chứa thành phần hàm, gọi phương thức (method) hay hàm thành viên (member function) - Trong phần xây dựng định nghĩa lớp, phương thức, phạm vi truy nhập, sử dụng thành phần lớp, lời gọi phương thức 1.3.2 Định nghĩa lớp (class) - Lớp (class) nhóm đối tượng (objects) có chung thuộc tính (properties) có mối quan hệ chung - Thuật ngữ class viết tắc từ nhóm từ “class of object” - Lớp định nghĩa sau: Class tenlop { Nhóm SVTH: Nhóm Trang GAME ĐOÁN SỐ GVHD: Th.S Trần Uyên Trang Private: //Khai báo thuộc tính gồm biến thành phần, //liệu biến Và không truy xuất bên lớp Public: //khai báo phương thức gồm hàm //nó truy xuất lớp } CHƯƠNG 2: GIỚI THIỆU 2.1 Giới thiệu chung 2.1.1 Giới thiệu game - Game “Đoán Số” nhóm lấy ý tưởng tưởng từ thuật toán tìm kiếm nhị phân học học phần cấu trúc liệu giải Nhóm SVTH: Nhóm Trang GAME ĐOÁN SỐ GVHD: Th.S Trần Uyên Trang thuật Nhóm tạo game máy tính viết theo ngôn ngữ C+ +: • Game đoán số làm game phổ biến áp dụng triệt để thuật toán tìm kiếm nhị phân mảng số nguyên xếp sẵn • Dựa nguyên tắc có thứ tự mảng số tự nhiên • Game thể nhanh trí, trình suy đoán, lập luận người chơi • Game đoán số dựa vào phân vùng liệu để đoán giá trị (đoán số) nằm vùng để thu hẹp lại không gian tìm kiếm xử lý liệu 2.1.2 Luật chơi - Rất đơn giản người chơi cần nghĩ số đầu bạn trung thực, sau bạn trả lời câu hỏi mà máy tính đặt ra: • Nếu từ bàn phím bạn gõ chữ “y” • Nếu sai từ bàn phím bạn gõ chữ “n” - Trong khoảng 10 bước đoán máy máy đoán số bạn nghĩ đầu 2.2 Mục tiêu - Mục tiêu nhóm thiết kế game đơn giản chạy tốt máy tính Và game “Đoán Số” lựa chọn nhóm - Game “Đoán Số” dựa luật chơi đơn giản, dễ hiểu đáp ứng nhu cầu trình độ phù hợp với lứa tuổi CHƯƠNG 3: PHÂN TÍCH THIẾT KẾ CHƯƠNG TRÌNH 3.1 Tìm hiểu toán tìm kiếm nhị phân Cho dãy A gồm N số nguyên khác nhau: a 1, a2, ,aN số nguyên k (gọi tắt khóa k) Cần biết có hay không số i (0 ≤ i ≤ N) mà a i = k Nếu có cho biết số Nhóm SVTH: Nhóm Trang GAME ĐOÁN SỐ GVHD: Th.S Trần Uyên Trang Xác định toán: Input: Dãy A gồm N số nguyên khác a1, a2, ,aN số nguyên k; Output: Chỉ số i mà = k thông báo phần tử dãy A có giá trị k 3.2 Thuật toán giải toán tìm kiếm nhị phân Xét toán trường hợp đặc biệt Input dãy A xếp tăng dần (a1 < a2 k - Quá trình tiếp tục lặp lặp lại với dãy phần tử đứng trước sau tìm thấy khóa k dãy A phạm vi tìm kiếm (hay dãy phần tử) rỗng (không phần tử nào) kết thúc a1 aGiua Thuật toán tìm kiếm nhị phân viết cách liệt kê: aN Bước 1: Nhập N, số hạng a1, a2, ,aN khóa k; Bước 2: Dau  1; Cuoi  N;  Dau + Cuoi  Bước 3: Giua    ;  Bước 4: Nếu aGiua = k thông báo số Giua, kết thúc; Bước 5: Nếu aGiua > k đặt Cuoi = Giua – chuyển đến bước 7; Bước 6: Dau  Giua + 1; Bước 7: Nếu Dau > Cuoi thông báo dãy A số hạng có giá trị k, kết thúc; Bước 8: Quay lại bước 3; 3.3 Áp dụng thuật toán tìm kiếm nhị phân cho game Bước 1: Khởi tạo đối tượng DoanSo gồm số nguyên n (khoảng {0,n}) phương thức để hiển thị liệu trình đoán số Nhóm SVTH: Nhóm Trang GAME ĐOÁN SỐ GVHD: Th.S Trần Uyên Trang Bước 2: Thực thi phương thức đối tượng DoanSo cách áp dụng theo nguyên tắc thuật toán tìm kiếm nhị phân Bước 3: Sử dụng while(true), tức làm (lặp liên tục đi), tìm thấy giá trị dừng Bước 4: Trong source code có sử dụng việc tương tác người dùng máy Máy liên tục hỏi người dùng người dùng trả lời cách nhập từ bàn phím y: đồng ý với câu hỏi, n: không đồng ý với câu hỏi Với n nhập vào, số lần mà máy tính hỏi để đoán số log2n: Tức nhỏ Bước 5: Giả sử n = 1000 số lần tối đa mà máy tính hỏi log 21000 gần 10 Bởi 210 > 1000, nên độ phức tạp thuật toán tốt Ngoài game đoán số với thuật toán tìm kiếm nhị phân dùng cho nhiều toán khác 3.4 Thiết kế CLASS đoạn code chương trình Chương trình xây dựng với lớp class DoanSo, lớp class DoanSo chứa : - Các thuộc tính lớp nằm phần private chứa biến n có kiểu int, biến truy xuất lớp “class DoanSo” không - truy xuất bên lớp Các phương thức lớp nằm phần public chứa hàm “void hienthi()” constructor đối “DoanSo(int n1)” class DoanSo //Lớp có tên Doanso { private: //Là thuộc tính dùng để khai báo biến int n; public: //Là phương thức dùng để khai báo hàm thành phần void hienthi(); //Hàm thực thi chương trình DoanSo(int n1); //Constructor đối dùng để khởi tạo giá trị cho biến n (Với n kích thước liệu vùng tìm kiếm) } - Hàm “void hienthi()” Có chức thực thi chương trình chính, người chơi cần trả lời cấu hỏi máy sai, cụ thể sau: Nhóm SVTH: Nhóm Trang GAME ĐOÁN SỐ GVHD: Th.S Trần Uyên Trang + Nếu người chơi đồng ý với câu hỏi mà máy tính đưa từ bàn phím người chơi gõ phím “y” (y = yes) +Nếu người chơi không đồng ý với câu hỏi mà máy tính đưa bàn phím người chơi gõ phím “n” (n = no) Sử dụng vòng lặp do…while(true) để làm (lặp liên tục đi), tìm thấy giá trị dừng void DoanSo::hienthi() { cout[...]... Nhóm 2 Trang 11 GAME ĐOÁN SỐ GVHD: Th.S Trần Uyên Trang l = (l+r)/2; } } count++; cout

Ngày đăng: 16/05/2016, 20:12

Từ khóa liên quan

Mục lục

  • LỜI NÓI ĐẦU

  • CHƯƠNG 1: TỔNG QUAN LÝ THUYẾT

    • 1.1. Lập trình hướng đối tượng (Object Oriented Programming)

      • 1.1.1. Sơ lược về lập trình hướng đối tượng

      • 1.1.2. Cấu trúc của một chương trình C++

      • 1.2.1. Lớp (class), đối tượng (object), phương thức (method)

      • 1.2.2. Lớp cơ sở (base class), lớp dẫn xuất (derived class)

      • 1.2.3. Tính kế thừa (Inheritance)

      • 1.2.4. Tính đa hình (Polymorphism)

      • 1.3. Sơ lược về lớp (class) trong lập trình hướng đối tượng

        • 1.3.1. Khái niệm về class

        • 1.3.2. Định nghĩa lớp (class)

        • CHƯƠNG 2: GIỚI THIỆU

          • 2.1. Giới thiệu chung

            • 2.1.1. Giới thiệu về game

            • 2.1.2. Luật chơi

            • 2.2. Mục tiêu

            • CHƯƠNG 3: PHÂN TÍCH THIẾT KẾ CHƯƠNG TRÌNH

            • CHƯƠNG 5: TỔNG KẾT

            • TÀI LIỆU THAM KHẢO

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

Tài liệu liên quan