Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 37 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
37
Dung lượng
2,28 MB
Nội dung
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG THÁI NGUYÊN o0o BÀI TẬP THẢO LUẬN MÔN NHẬP MÔN CÔNG NGHỆ PHẦN MỀN Đề tài: HIỂU VÀ CẢI TIẾN DỰ ÁN Number Guesing Game ĐÃ CÓ SẴN Lớp: CNTT K20P Trần Thị Lan Anh Nguyễn Văn Hào Thành viên nhóm Lường Văn Minh Kiều Bắc Sơn Đặng Thị Tâm Người hướng dẫn Phạm Thị Thương Mục lục LỜI NÓI ĐẦU CHƯƠNG 1: GIỚI THIỆU CHUNG Mục đích Thông tin dự án Thành viên dự án Mục tiêu CHƯƠNG 2: TỔNG QUAN VỀ LÝ THUYẾT 2.1 Ngơn ngữ lập trình Java gì? 2.2 Đặc điểm CHƯƠNG 3: KẾ HOẠCH QUẢN LÝ DỰ ÁN PHẦN MỀN 3.1 Mục đích 3.2 Tổ chức dự án 3.2.1 Mơ hình quy trình phần mền .6 3.2.2 Cơ cấu tổ chức .7 3.2.3 Vai trò trách nhiệm 3.2.4 Vai trò thành viên dự án 3.2.5 Cộng cụ kỹ thuật 3.3 Kế hoạch quản lý dự án .9 3.3.1 Lịch trình nhiệm vụ .9 3.3.2 Biên họp .9 CHƯƠNG 4: THÔNG SỐ KỸ NGHỆ YÊU CẦU 10 4.1 Yêu cầu chức 10 4.2 Yêu cầu phi chức .11 4.2.1 Khả sử dụng .11 4.2.2 Khả bảo trì khả mở rộng .11 CHƯƠNG PHÂN TÍCH THIẾT KẾ CHƯƠNG TRÌNH .11 5.1 Code 11 5.1.1Chương trình đầy đủ 11 5.1.2 Giao diện 12 5.2 Chơi thử nghiệm 13 CHƯƠNG 6: TỔNG KẾT 14 CHƯƠNG 7: TÀI LIỆU THAM KHẢO 15 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ụ Ngồ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 chúng em lập game nhỏ, đơn giản nhằm đáp ứng yêu cầu Game nhóm chúng em thực ngơn ngữ lập trình Java (Ngơn ngữ lập trình hướng đối tượng sử dụng rộng rãi trang website, phần mền, ứng dụng hay game) có tên “Game đốn số” Chúng em xin trân thành cảm ơn cô Phạm Thị Thương hướng dẫn giúp đỡ chúng em q trình học tập hồn thành tốt tập lớn Đây lần lần nhóm chúng em 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 chúng em khơng tránh khỏi thiếu sót định Rất mong nhận ý kiến đóng góp bạn để game nhóm chúng tơi hồn thiện Chúng em xin chân thành cảm ơn! CHƯƠNG 1: GIỚI THIỆU CHUNG Mục đích Chương giới thiệu giới thiệu bối cảnh ý tưởng ban đầu Dự án Number guesing game Trong chương này, chúng em – nhóm phát triển – cung cấp thơng tin chúng em làm, lý làm Thơng tin dự án Tên dự án: Number guesing game Thành viên dự án Trần Thị Lan Anh Nguyễn Văn Hào Lường Văn Minh Kiều Bắc Sơn Đặng Thị Tâm Mục tiêu - Mục tiêu nhóm chúng em thiết kế game đơn giản chạy tốt máy tính Và game “Đốn Số” lựa chọn nhóm chúng em - 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 2: TỔNG QUAN VỀ LÝ THUYẾT 2.1 Ngơn ngữ lập trình Java gì? Java ngơn ngữ lập trình đại, bậc cao, bảo mật mạnh mẽ Nó sử dụng phát triển phần mềm, trang web, game hay ứng dụng thiết bị di động Java phát hành năm 1994, đến năm 2010 Oracle mua lại từ Sun MicroSystem Ban đầu Java tạo nhằm mục đích viết phần mềm cho sản phẩm gia dụng, có tên Oak Điều khác biệt Java ngơn ngữ lập trình khác Java thực nhiều tác vụ mà bạn cần thiết lập chúng chạy lần Với tiêu chí: “Viết lần, thực thi khắp nơi” (Write Once, Run Anywhere – WORA) Chương trình phần mềm viết Java chạy tảng (platform) khác thông qua môi trường thực thi với điều kiện có mơi trường thực thi thích hợp hỗ trợ tảng 2.2 Đặc điểm Thơng dịch Java ngơn ngữ lập trình vừa thông dịch, vừa biên dịch Khi viết mã, hệ thống tạo tệp java Khi biên dịch mã nguồn chương trình biên dịch mã byte code Máy ảo Java thông dịch mã bytecode thành machine code (hay native code) nhận yêu cầu chạy chương trình Hướng đối tượng Tất thứ đề cập đến Java liên quan đến đối tượng định nghĩa trước giống ngơn ngữ lập trình C++ Chỉ khác chỗ, hướng đối tượng java khơng có tính đa kế thừa C++ mà thay sử dụng interface để hỗ trợ tính đa kế thừa Đa luồng Java cho phép hoạt động đa tiến trình để thực thi cơng việc lúc Đồng thời cung cấp giải pháp đồng tiến trình Đặc điểm thường sử dụng nhiều lập trình game Tính an toàn bảo mật cao Java hỗ trợ bảo mật tốt thuật tốn mã hóa mã hóa theo dạng chiều mã hóa cơng cộng Java kiểm soát chặt chẽ việc truy nhập đến mảng, chuỗi không cho phép sử dụng kỹ thuật tràn Do đó, truy nhập khơng vượt q kích thước mảng, chuỗi Độc lập Một chương trình viết ngơn ngữ Java chạy hệ điều hành khác như: Windows, Unix, Linux… Với điều kiện có cài sẵn máy ảo Java Hỗ trợ ứng dụng Java cung cấp nhiều cơng cụ, thư viện lập trình đa dạng hỗ trợ việc phát triển loại hình ứng dụng khác như: 1) J2SE: hỗ trợ phát triển ứng dụng đơn, ứng dụng client-server 2) J2EE: hỗ trợ phát triển ứng dụng thương mại ngân hàng, phần mềm quản lý bệnh viện, … 3) J2ME: hỗ trợ phát triển app thiết bị di động viết game CHƯƠNG 3: KẾ HOẠCH QUẢN LÝ DỰ ÁN PHẦN MỀN 3.1 Mục đích Chương Kế hoạch quản lý dự án giúp người đọc hiểu cách thức tổ chức dự án xem xét kỹ kế hoạch dự án Tất thành viên phải sử dụng tài liệu để làm rõ trách nhiệm người Nó cung cấp nguyên tắc mà thành viên nhóm cần tuân thủ suốt thời gian phát triển dự án 3.2 Tổ chức dự án 3.2.1 Mơ hình quy trình phần mền Quy trình phát triển phần mềm hợp RUP (Rational Unified Process) Quy trình (tiến trình) hợp mở rộng tiến trình xoắn ốc, hình thức chặt chẽ Quy trình bao gồm bốn giai đoạn đan xen nhiều dòng hoạt động (activity flow) là: Mơ hình hố nghiệp vụ, phân tích u cầu, phân tích thiết kế, cài đặt, thử nghiệm triển khai, …Mỗi giai đoạn hình thành từ bước lặp (iteration) - Khởi tạo (inception): · Thiết lập phạm vi dự án, điều kiện ràng buộc phạm vi, kiến trúc đế xuất hệ thống · Xác định chi phí thời gian dự án · Xác định độ rũi ro môi trường hệ thống · Xác định thay đổi bổ sung, tác động thay đổi này, rũi ro có, … - Tinh chế (elaboration): · Tinh chế kiến trúc hệ thống, yêu cầu hệ thống đảm bảo kế hoạch ổn định kế hoạch · Đánh giá độ rủi ro, thành phần sử dụng · Xây dựng kiến trúc tảng hệ thống, … - Xây dựng (construction): · Quản lý tài nguyên, kiểm sốt thực tối ưu hố · Hồn thành việc phát triển thành phần sản phẩm, thử nghiệm sản phẩm · Đánh giá sản phẩm cài đặt từ tiêu chuẩn thoả thuận, … - Chuyển giao (transition): · Thực cài đặt hệ thống · Thử nghiệm sản phẩm triển khai · Thu thập phản hồi từ phía người dùng Ứng dụng mơ hình quy trình phần mềm RUP dự án GUESSINGGAME Quy trình dự án: Tổng thời gian: 60 ngày Chi tiết giai đoạn: Khởi tạo: Nghiên cứu đề tài, dự án cũ, tìm hiểu dự án cũ, xác định phạm vi dư án, điều kiện ràng buộc, Xác định chi phí, thời gian thực dự án 50 ngày làm việc, 10 ngày họp, bàn giao, thu thập ý kiến Xác định độ rủi ro, tác nhân ảnh hướng đến hệ thống xác định môi trường hệ thống Xác định thay đổi bổ sung, tác động thay đổi, tác động rủi ro tới dự án Tinh chế (thiết kế) dự án: xác định kiến trúc hệ thống, yêu cầu hệ thống Đánh giá rủi ro, thành phần sử dụng môi trường, câu lệnh, cấu trúc liệu, thuật toán cần dùng, giải vấn đề rủi ro Xây dựng kiến trúc nển tảng hệ thống, ngôn ngữ lập trình chương trình, ngơn ngữ lập trình giao diện, … Xây dựng dự án: xác định ngôn ngữ lập trình, tảng lập trình Xây dựng chương trình có thuật tốn chưa có giao diện để tiến hành kiểm thử nội từ tìm lỗi, ngoại lệ tồn Sửa đổi từ dự án tồn từ trước cho phù hợp với ý tưởng nhóm đưa Xây dựng giao diện chương trình, kiểm thử nội để phát lỗi Sau kiểm tra nội đưa người dùng (người không tham gia dự án) dùng thử, ghi nhận đánh giá chỉnh sửa dự án Đánh giá sản phẩm theo yêu cầu thỏa thuận, đặt từ trước Chuyển giao dự án: đóng gói cài đặt dự án hệ thống Thực nghiệm sản phẩm triển khai xem có lỗi xuất mà nhóm nghiên cứu chưa đánh giá đến Thu thập, ghi nhận phản hồi từ người dùng, phần chưa tối ưu, yêu cầu thay đổi dự án từ tiến hành sửa đổi cho phù hợp 5.1.2 Giao diện Chương trình hồn chỉnh: package view; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.net.URL; import java.util.Scanner; // lớp GuessingGameGUI public class GuessingGameGUI implements ActionListener { // Thuộc tính private JFrame frame; private JButton restartButton; private JButton exitButton; private JLabel promptLabel; private JLabel rangeLabel; private JLabel resultLabel; private JTextField inputField; private int dapan; private int doan; private boolean done; private int ghtren; private int ghduoi; private JButton guessButton; // constructor lớp GuessingGameGUI public GuessingGameGUI() { //khai báo biến dapan = (int) (Math.random() * 100); ghtren = 100; ghduoi = 1; // Tạo frame thành phần frame = new JFrame("GuessingGame"); // Tiêu đề frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Nút đóng cửa sổ frame.setSize(400,200); // kích thước frame.setLayout(new GridLayout(5, 2)); // Sắp xếp giao diện // Tạo nút jbutton có tên restart restartButton = new JButton("Restart"); restartButton.addActionListener(this); restartButton.setIcon(new ImageIcon(Toolkit.getDefaultToolkit().createImage(GuessingGame.class.get Resource("")))); // nguồn ảnh frame.add(restartButton); // thêm đối tượng restartButton JButton vào cửa sổ JFrame // Tạo nút jbutton có tên Exit exitButton = new JButton("Exit"); exitButton.addActionListener(this); exitButton.setIcon(new ImageIcon(Toolkit.getDefaultToolkit().createImage(GuessingGame.class.get Resource("")))); // nguồn ảnh frame.add(exitButton); // thêm đối tượng exitJButton vào cửa sổ JFrame // tạo nút guess button guessButton = new JButton("Guess"); guessButton.addActionListener(this); guessButton.setIcon(new ImageIcon(Toolkit.getDefaultToolkit().createImage(GuessingGame.class.get Resource("")))); // nguồn ảnh frame.add(guessButton); // thêm đối tượng guessButton vào cửa sổ JFrame // hiển thị giao diện người dùng promptLabel = new JLabel("Nhap mot so tu den 100 :"); frame.add(promptLabel); // Tạo trường nhập liệu có độ dài 10 kí tự inputField = new JTextField(10); inputField.addActionListener(this); frame.add(inputField); //Tao jlabel rangeLabel = new JLabel("Pham vi: " + ghduoi + " - " + ghtren); frame.add(rangeLabel); //tạo nhãn kết thêm vào jlabel resultLabel = new JLabel(""); frame.add(resultLabel); // thêm nhãn trống frame.add(new JLabel("")); // cài đặt hiển thị cho khung frame.setVisible(true); frame.setLocationRelativeTo(null); // tạo đối tượng URL chứa đường dẫn đến tài nguyên URL urlIcon = GuessingGame.class.getResource(""); Image img = Toolkit.getDefaultToolkit().createImage(urlIcon); frame.setIconImage(img); } // dùng để ẩn/hiện đối tượng private void setVisible(boolean b) {} // phương thức thêm bớt phần tử khỏi đối tượng private Container getContentPane() { return null; } //thiết lập kích thước đối tượng đồ họa private void setSize(int i, int j) {} public void actionPerformed(ActionEvent e) { // lấy chuỗi mô tả hành động String command = e.getActionCommand(); if (command.equals("Restart")) { // xử lý nút khởi động lại done = false; ghtren = 100; ghduoi = 1; rangeLabel.setText("Pham vi: " + ghduoi + " - " + ghtren); resultLabel.setText(""); inputField.setText(""); } if (command.equals("Exit")) { //xử lý nút System.exit(0); // điều kiện để khỏi chương trình chạy } if (command.equals("Guess")) { //xử lý nút đoán if (!done) { String input = inputField.getText(); try { doan = Integer.parseInt(input); if (doan == dapan) { done = true; resultLabel.setText("Chinh xac ! Dap an : " + dapan); //hiển thị nội dung đáp án } else if (doan < dapan) { if (doan > ghduoi) { ghduoi = doan ; } rangeLabel.setText("Pham vi: " + ghduoi + " - " + ghtren); resultLabel.setText("Vui long thu lai."); } else if (doan > dapan) { if(doan < ghtren) { ghtren = doan; } rangeLabel.setText("Pham vi: " + ghduoi + " - " + ghtren); resultLabel.setText("Vui long thu lai."); } } catch (NumberFormatException ex) { // bắt ngoại lệ đầu vào resultLabel.setText("Khong hop le Vui long nhap mot so nguyen!."); } inputField.setText(""); //xóa nội dung văn } } } // phương thức main public static void main(String[] args) { GuessingGameGUI game = new GuessingGameGUI(); } } 5.2 Chơi thử nghiệm - Khi khởi chạy trò chơi hình hiển thị giao diện -Nhập vào đáp án -Nếu đốn sai, trị chơi u cầu nhập lại kết giới hạn khoảng đáp án -Tiếp tục nhập tìm đáp án cuối CHƯƠNG 6: TỔNG KẾT Trên toàn chương trình xây dựng “Game Đốn số”, qua nghiên cứu kiến thức học với hướng dẫn giáo viên môn, đỡ bạn học thành viên nhóm hồn thiện tập Qua đó, nhằm giúp cho giới game ngày đa dạng phong phú Game nhóm dừng lại mức độ đơn giản, nhằm giúp cho bạn chơi có nhìn tổng qt Với trình độ hiểu biết; khả tìm kiếm, đọc hiểu tài liệu; kỹ lập trình cịn hạn chế nên khơng tránh khỏi sai sót mong nhận thơng cảm đóng góp ý kiến bạn để kỹ lập trình kinh nghiệm ngày mở rộng nâng cao Nếu có hội tiếp theo, hi vọng phiên game có thêm đặc tính như: Sửa lổi có Tăng độ lớn vùng tìm kiếm liệu lên cao Thiết kế giao diện phù hợp với xu hướng Một lần nhóm chúng em xin chân thành cảm ơn giúp đỡ, hướng dẫn, bảo tận tình bạn để chúng em hoàn thành chương trình CHƯƠNG 7: TÀI LIỆU THAM KHẢO Bài giảng Nhập môn CNPM_12.2022.pdf