Bài tập lớn Lập Trình Hướng Đối Tượng Thầy Cao Tuấn Dũng

31 3.5K 15
Bài tập lớn Lập Trình Hướng Đối Tượng  Thầy Cao Tuấn Dũng

Đ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

Đề tài: “Phát triển hệ thống phần mềm soạn thảo các câu đố chữ và trò chơi đố chữ” Mục lục Lời nói đầu3 PHẦN 1: TỔNG QUAN4 PHẦN 2 :PHÂN TÍCH THIẾT KẾ MỨC KIẾN TRÚC CỦA BÀI TOÁN5 I.Phân tích bài toán bằng biểu đồ use-case:5 1.Phần thứ nhất (Soạn Game) cho phép người dùng soạn thảo câu đố.6 2.Phần thứ hai (Chơi Game) cho phép người dùng chọn câu đố và thực hiện giải đố.6 II.Biểu đồ trình tự7 1.Phần Soạn Câu hỏi7 2.Phần Soạn Câu đố8 3.Phần Chơi Game9 III.Xây dựng các lớp10 1.Các lớp cần thiết10 2.Biểu đồ lớp10 3.Biểu đồ trạng thái ( StateChart Diagrams )11 4.Biểu đồ hoạt động ( Activity Diagrams )12 PHẦN 3 : THIẾT KẾ CHI TIẾT VÀ GIẢI PHÁP KỸ THUẬT XÂY DỰNG CÁC LỚP VÀ CHỨC NĂNG CHÍNH CỦA NÓ14 I.Chi tiết các lớp14 II.Các vấn đề khó khăn, hay, thú vị trọng tâm cần vượt qua và cách giải quyết22 1.Kéo thả hàng chữ22 2.Đếm thời gian - Countdown timer25 3.Xóa từ hàng ngang đã chọn26 4.Lưu và sắp xếp điểm người chơi ( Rank )26 III.Mô hình thiết kế theo MVC28 PHẦN 4: KẾT LUẬN VÀ ĐÁNH GIÁ30 I.Kết quả đạt được30 II.Phân công công việc nhóm30 III.TÀI LIỆU THAM KHẢO31

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG ──────── * ─────── BÀI TẬP LỚN MÔN: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Đề tài: “Phát triển hệ thống phần mềm soạn thảo các câu đố chữ và trò chơi đố chữ” Mã đề tài: De05C Sinh viên thực hiện: Nguyễn Đức Hiếu (Nhóm trưởng) Phan Quốc Khánh Trần Vũ Duy Nhóm sinh viên : Nhóm 2 Lớp : ICT-K56 Giáo viên hướng dẫn : TS. Cao Tuấn Dũng Hà Nội, tháng 04 năm 2014 Mục lục MỤC LỤC HÌNH VẼ ~ 2 ~ Lời nói đầu Có lẽ ai học công nghệ thông tin đều biết,các ngôn ngữ lập trình hướng đối tượng ưu việt hơn nhiều so với các ngôn ngữ hướng thủ tục,điều này đã được kiểm nghiệm và chứng minh.Nhưng nhờ đâu các nhà thiết kế lại có thể nghĩ ra ngôn ngữ lập trình hướng đối tượng,có lẽ tên mà ta hay gọi cho nó cũng đã bao hàm câu trả lời cho câu hỏi trên rồi,đối tượng là một khái niệm không hề có trong lập trình hướng thủ tục,mà đối tượng chính là các thực thể trong thế giới thực.Khi mới bắt đầu làm quen với lập trình hướng đối tượng chúng thì cách tiếp cận khá tốt là đi vào các ví dụ mà ở đó ranh giới giữa các đối tượng rõ ràng. Giải đoán ô chữ đang là một trò chơi rất phổ biến trên các tờ báo, hay các gameshow truyền hình được đông đảo mọi người theo dõi như Olympia, Chiếc nón kỳ diệu,…Chúng em thấy đây là một trò chơi rất hay và bổ ích, đồng thời cũng không khó khăn để xác định các thực thể trong hệ thống trò chơi này, vì lý do đó nhóm sinh viên bọn em lựa chọn đề tài “Phát triển hệ thống soạn thảo các câu đố chữ và trò chơi đố chữ”, đề tài thực hiện chương trình mô phỏng trò chơi đố chữ, cho phép người dùng soạn thảo và giải đáp các ô chữ hang ngang theo gợi ý và từ đó đoán ô chữ khoá chính. Chương trình được viết bởi ngôn ngữ lập trình Android - một ngôn ngữ lập trình cho ứng dụng chạy trên nền tảng mobile Android, là sự kết hợp của ngôn ngữ lập trình thuần đối tượng Java và ngôn ngữ thiết kế XML. Do mới làm quen với ngôn ngữ Java và việc xử lý các kỹ thuật trong lập trình hướng đối tượng nên trong chương trình còn có nhiều hạn chế. Nhóm chúng em mong nhận được các nhận xét của thầy về đề tài này của nhóm để nhóm em có thể khắc phục các hạn chế trong đề tài này để có thể làm tốt hơn trong những đề tài tiếp theo. ~ 3 ~ PHẦN 1: TỔNG QUAN Kiến thức nền tảng phục vụ cho bài toán: - Phân tích và thiết kế hướng đối tượng,bao gồm : + Tư duy lập trình hướng đối tượng. + Các nguyên lý cơ bản trong lập trình hướng đối tượng (đóng gói, kế thừa, sử dụng các giao diện, đa hình, chồng phương thức ) + Biết sử dụng ngôn ngữ lập trình java. + Tìm hiểu cách thức lập trình game bằng phương pháp hướng đối tượng + Kiến thức cơ bản về cơ sở dữ liệu và thiết kế cơ sở dữ liệu cho game ~ 4 ~ PHẦN 2 :PHÂN TÍCH THIẾT KẾ MỨC KIẾN TRÚC CỦA BÀI TOÁN Yêu cầu: Trò chơi đố chữ rất phổ biến trong mục giải trí của một số tờ báo, hay trên các gameshow như đường lên đỉnh Olympia. Mục đích của người chơi là giải từng ô chữ theo hàng ngang theo các gợi ý và từ đó đoán ô chữ theo hàng dọc. Yêu cầu tối thiểu là chương trình cho phép tạo ô chữ có một khóa chính. Cần tạo ra một chương trình phần mềm bao gồm: - Phần thứ nhất cho phép người dùng soạn thảo câu đố. Chú ý là với mỗi ô chữ hàng ngang hay dọc ta có thể có nhiều cấp độ gợi ý. Nếu người chơi chỉ từ gợi ý đầu tiên đã đoán đúng được ô chữ thì được điểm cao nhất – nếu càng cần nhiều gợi ý thì điểm số bị trừ dần. Có thể quản lý các câu đố theo từng chủ đề. Giao diện soạn thảo câu đố là giao diện đồ họa tương tác, người dùng có thể kéo, dịch các ô chữ sang trái, phải hay lên, xuống. Khi dịch chuyển ô chữ mà không thỏa mãn điều kiện tạo khóa chính thì thảo tác thả xuống không có tác dụng. - Phần thứ hai cho phép người dùng chọn câu đố và thực hiện giải đố. Trò chơi cần được giới hạn về thời gian. I. Phân tích bài toán bằng biểu đồ use-case: Từ yêu cầu của đề bài, chương trình cho phép người dùng “soạn thảo câu đố” ,“chọn câu đố và thực hiện giải đố”. Hình : Biểu đồ use-case góc nhìn người dùng + Tác nhân của hệ thống : người chơi. ~ 5 ~ Người chơi có thể soạn thảo trò chơi và chơi trò chơi. + Các Use case chính : Soạn Game và Chơi Game. 1. Phần thứ nhất (Soạn Game) cho phép người dùng soạn thảo câu đố. Phần soạn thảo chia ra làm 2 bước cho phép người dùng lựa chọn: - Bước 1: Tạo câu hỏi Mỗi câu hỏi sẽ có 1 câu hỏi và 1 câu gợi ý tương ứng. Các câu hỏi được người dùng xếp và các chủ đề phù hợp. - Bước 2: Tạo câu đố Mỗi ô chữ hàng ngang hay dọc sẽ lấy dữ liệu câu hỏi từ bước 1. Người dùng chọn chủ đề cho game đố, giao diện tạo game sẽ mở ra. Chương trình có 1 panel tìm kiếm câu hỏi ở bên phải màn hình cho phép người dùng truy cập dữ liệu câu hỏi. Đầu tiên người dùng được yêu cầu chọn khóa chính. Chương trình sẽ tạo ra 1 cột hàng dọc ở giữa màn hình và thông báo mời người dùng lựa chọn các câu hàng ngang. Các câu hàng ngang được tạo ra sẽ có khả năng kéo và thả vào cột khóa chính tương ứng. Người dùng có thể kéo, dịch các ô chữ sang trái, phải hay lên, xuống. Khi dịch chuyển ô chữ mà không thỏa mãn điều kiện tạo khóa chính thì thảo tác thả xuống không có tác dụng. Sau khi tạo đủ các từ hàng ngang phù hợp với từ khóa chính, chương trình sẽ hiện nút Lưu để người dùng lưu câu đố với tên nhất định. 2. Phần thứ hai (Chơi Game) cho phép người dùng chọn câu đố và thực hiện giải đố. Giao diện chương trình có panel bên trái cho phép người dùng chọn chủ đề. Khi bấm vào 1 chủ đề nhất định, tên các câu đố sẽ hiện ra trong vùng bên trái. Giao diện phần chơi sẽ có các ô chữ ở bên trái. Người chơi bấm chọn hàng hang hoặc dọc để trả lời. Câu hỏi và textbox để nhập câu trả lời sẽ hiện ở panel bên phải. Nếu người chơi chỉ từ gợi ý đầu tiên đã đoán đúng được ô chữ thì được điểm cao nhất – nếu càng cần nhiều gợi ý thì điểm số bị trừ dần. Trò chơi cần được giới hạn về thời gian. Nếu hết thời gian không trả lời được thì coi như là trả lời sai. Nếu người chơi đoán đúng câu hàng dọc, với mỗi từ hàng ngang chưa được mở ra, người chơi sẽ được cộng thêm điểm, các ô chữ được lật hết ra và kết thúc trò chơi. Còn nếu trả lời sai thì không được gì cả, trò chơi vẫn kết thúc. Chương trình có khả năng lưu điểm cao của người dùng và được tổ chức theo mô hình MVC. ~ 6 ~ II. Biểu đồ trình tự 1. Phần Soạn Câu hỏi Hình : Biểu đồ trình tự soạn Câu hỏi ~ 7 ~ 3. Phần Soạn Câu đố Hình : Biểu đồ trình tự soạn Câu đố ~ 8 ~ 4. Phần Chơi Game Hình : Biểu đồ trình tự chơi game III. Xây dựng các lớp 1. Các lớp cần thiết Ô chữ (Square) Khóa chính (keyWord) Câu hỏi (Row) ~ 9 ~ Câu đố (PackageGame) Gợi ý (hint) Điểm (score) Chủ đề (Category) Drag&Drop Thời gian (timer) Soạn thảo (creating) Chơi game (playing) Câu hỏi (question) Dữ liệu (database) Các lớp cần tạo trong lập trình : - PackageGame - Row - Square - Creating - Playing - DBAdapter 5. Biểu đồ lớp - Biểu đồ lớp của các lớp quan trọng : Hình : Biểu đồ lớp của các lớp quan trọng ( chi tiết cụ thể các lớp được viết ở phần 3 : Thiết kế chi tiết các lớp) - Đối tượng của lớp Row sẽ chứa các đối tượng của lớp Square. Đối tượng của lớp Square không thể tồn tại độc lập - Lớp GamePack là kết tập của lớp Row. Mối quan hệ thể hiện một câu đố có thể có nhiều câu hỏi - GWGCreateGame là lớp điều khiển hoạt động tạo câu đố từ người dùng, chứa một câu đố cho người dùng thả câu hỏi vào và chứa nhiều câu hỏi để kéo - GWGPlay là lớp điều khiển hoạt động khi người dùng chơi game, có chứa một câu đố để hiển thị cho người dùng chọn chơi ~ 10 ~ [...]... true; } ~ 25 ~ }; 19 Lưu và sắp xếp điểm người chơi ( Rank ) +, Khi kết thúc một game, người chơi sẽ được hỏi lưu điểm Nếu người chơi không điền tên, chương trình sẽ không lưu điểm, hiện ra trên màn hình "Sorry, no name, can't save" Nếu nhập tên, chương trình sẽ lưu điểm vào CSDL với tên game , điểm và tên builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface... theo nhóm, đồng thời nâng cao rõ rệt về khả năng sử dụng ngôn ngữ java vào các ứng dụng khác - Khuyết điểm còn tồn tại: VI Phân công công việc nhóm • Thảo luận chung để đưa ra định hướng gồm có: - Phân tích yêu cầu - Thống nhất thuật toán - Tạo biểu đồ Use Case - Biểu đồ trình tự • Cá nhân mỗi người: - Nguyễn Đức Hiếu: o Đề ra hướng đi của project, xác định... private ArrayList squares = new ArrayList(); +, Gói câu hỏi chứa các hàng ngang private ArrayList rows = new ArrayList(); +, Khi người dùng chọn được “keyword” cho game, chương trình khởi tạo gói câu hỏi ( GamePack ) với các hàng ngang chỉ chứa 1 ô chữ xếp với nhau tạo thành từ khóa theo hàng dọc public GamePack(Context context, String keyWord, int keyWordID , String[] wordInRow,... thả đúng trong phạm vi nhất định, hàng chữ sẽ được đưa vào trong gói câu đố Nếu sai vị trí, hàng chữ hiện lại với vị trí cũ Nếu hàng chữ kéo thả chỉ chứa 1 chữ cái khớp với từ trong từ khóa thì chương trình sẽ tự động nhận diện và biến đổi hàng chữ trong gói câu hỏi (game pack) Người dùng sẽ giữ phần cuối của hàng chữ và điều chỉnh sao cho khớp với chữ cái có trong gói câu hỏi private void inputHangChu(Row... = new StringBuilder(); b.append(dragged.getNonSpaceWord()); for (int i = 0; i < b.toString().length(); i++) { ~ 23 ~ while (b.charAt(i) == ' ') b.deleteCharAt(i); } +, khi thả vào đúng, thực hiện quá trình biến đổi :điều chỉnh từ hàng ngang cho phù hợp (đúng chữ cái trong từ khóa), sau đó copy dữ liệu từ hàng ngang người dùng thả vào chính StringBuilder a = new StringBuilder(); // Dieu chinh vi tri... chu se hien lai vi tri cu dragged.setVisibility(View.VISIBLE); } } +, Hàng chữ để kéo thả vào đòi hỏi phải có “setOnLongClickListener(longListen)” nhằm tạo hiệu ứng liên quan đến kéo thả (ảnh trong quá trình kéo thả, vị trí người dùng chạm màn hình sẽ là phía cuối hàng chữ ) OnLongClickListener longListen = new OnLongClickListener() { @Override public boolean onLongClick(View v) { ClipData data = ClipData.newPlainText("",... onFinish() { Toast.makeText(getApplicationContext(), "time out!", Toast.LENGTH_LONG).show(); } }.start(); 18 Xóa từ hàng ngang đã chọn Khi tạo game mới, người dùng chọn từ và hàng chữ sẽ xuất hiện Chương trình cho phép người dùng xóa nếu muốn bằng cách thả vào hình thùng rác private View vTrash; vTrash = (View)findViewById(R.id.image_create_bin); +, Khi thả vào hình thùng rác hiển thị của hàng chữ sẽ biến... thị và đổi màu các ô chữ cùng lúc b) Các thuộc tính: STT Tên thuộc tính Type Ý nghĩa 1 word :String Từ tạo thành hàng ngang 2 letterInKeyWord : String Chữ cái trong từ khóa chính 3 squares List tập hợp các thành phần thuộc lớp Square 4 posOfKeyWord : int Vị trí chữ cái trong từ khóa chính 5 longClick OnClickListener Tạo hiệu ứng kéo thả ~ 15 ~ c) Các phương thức - phương thức Row(Context, String):... name, can't save",Toast.LENGTH_LONG).show(); else{ getDB().insertRankRow(game, et.getText().toString(), score); isEnd = true; } finish(); } } ); +, Khi người dùng chọn nút “Rank” trên Main Menu, chương trình sẽ lấy dữ liệu từ CSDL và in ra màn hình với số thứ tự, tên game, tên người chơi và điểm ( sắp xếp theo điểm giảm dần ) public void setFullListData(Cursor c) { int itemSTT = 0; StringBuilder rank... tvScore.setText(score.toString()); ~ 26 ~ } ~ 27 ~ V Mô hình thiết kế theo MVC - Hệ thống được thiết kế theo mô hình MVC (Model-View-Controller), gồm 3 phần: 1 Model: - chứa các dữ liệu và các logic của chương trình: Hình : Gói Model 2 View: - cung cấp phần hiển thị của phần Model cho người dùng Hình : Gói View 3 Controller: - truyền đầu vào từ người dùng đến với hệ thống ~ 28 ~ Hình : Gói Controller ~ 29 ~

Ngày đăng: 11/06/2014, 11:12

Từ khóa liên quan

Mục lục

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

Tài liệu liên quan