Game của nhóm chúng em thực hiện trên ngôn ngữ lậptrình Java Ngôn ngữ lập trình hướng đối tượng được sử dụng rộng rãi trong trangwebsite, phần mền, ứng dụng hay game và có tên là “Game đ
Trang 1TRƯỜ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 AnhNguyễn Văn Hào
Kiều Bắc SơnĐặng Thị Tâm
Người hướng dẫn Phạm Thị Thương
Trang 2Mục lục
LỜI NÓI ĐẦU 2
CHƯƠNG 1: GIỚI THIỆU CHUNG 3
Mục đích 3
Thông tin dự án 3
Thành viên trong dự án 3
Mục tiêu 4
CHƯƠNG 2: TỔNG QUAN VỀ LÝ THUYẾT 4
2.1 Ngôn ngữ lập trình Java là gì? 4
2.2 Đặc điểm 4
CHƯƠNG 3: KẾ HOẠCH QUẢN LÝ DỰ ÁN PHẦN MỀN 6
3.1 Mục đích 6
3.2 Tổ chức dự án 6
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ò và trách nhiệm 8
3.2.4 Vai trò của các thành viên trong dự án 8
3.2.5 Cộng cụ và kỹ thuật 9
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 bản cuộc họp 9
CHƯƠNG 4: THÔNG SỐ KỸ NGHỆ YÊU CẦU 10
4.1 Yêu cầu chức năng 10
4.2 Yêu cầu phi chức năng 11
4.2.1 Khả năng sử dụng 11
4.2.2 Khả năng bảo trì và khả năng mở rộng 11
CHƯƠNG 5 PHÂN TÍCH THIẾT KẾ CHƯƠNG TRÌNH 11
5.1 Code 11
Trang 35.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
Trang 4LỜI NÓI ĐẦU
Game trên máy tính hay thiết bị trên di động là trò chơi giải trí đang được ưachuộng mạnh, nhất là những năm gần đây, khi mà thiết bị di động thông minh pháttriển mạnh Tổng giá trị thị trường game ở Hàn Quốc 9,16 tỷ USD (tương đương 180ngàn tỷ đồng), và ở Nhật Bản ước tính giá trị đó gấp 7 lần Và Việt Nam là nước cóthị trường game khá non trẻ, tuy nhiên Việt Nam cũng bắt đầu hội nhập với một sốhãng game lớn đã xuất khẩu game ra thị trường thế giới như VinaGame là một ví dụ.Ngoài ra, với sự tìm tòi, sáng tạo của các cá nhân cũng đã tự viết một số game từ cơbản đến phức tạp để đáp ứng nhu cầu của bản thân cũng như nhu cầu của xã hội.Hiện nay với cường độ làm việc và học tập ngày càng cao thì nhu cầu giảmstress, thư giản đầu óc cũng như nhu cầu giải trí của con người ngày càng được chútâm và nâng cao hơn Để đáp ứng yêu cầu, mong muốn của xã hội cũng như tạo racông cụ giải trí cho con người Nhóm chúng em đã lập ra một game nhỏ, đơn giảnnhằm đáp ứng yêu cầu đó Game của nhóm chúng em thực hiện trên ngôn ngữ lậptrình Java (Ngôn ngữ lập trình hướng đối tượng được sử dụng rộng rãi trong trangwebsite, phần mền, ứng dụng hay game) và có tên là “Game đoá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 trong quá trình học tập và hoàn thành tốt bài tập lớn này Đây là lần lầnđầu tiên nhóm chúng em thiết kế, lập trình một game và vì sự hiểu biết, kinh nghiệmcòn hạn chế nên chắc chắn chương trình game của chúng em không tránh khỏi nhữngthiếu sót nhất định Rất mong nhận được ý kiến đóng góp của cô và các bạn để gamecủa nhóm chúng tôi được hoàn thiện hơn Chúng em xin chân thành cảm ơn!
Trang 5CHƯƠNG 1: GIỚI THIỆU CHUNG
Mục đích
Chương giới thiệu giới thiệu bối cảnh và ý tưởng ban đầu của Dự ánNumber guesing game Trong chương này, chúng em – nhóm phát triển – sẽcung cấp thông tin về những gì chúng em làm, lý do tại sao và làm những gì
Thông tin dự án
Tên dự án: Number guesing game
Thành viên trong dự án
Trần Thị Lan Anh
Nguyễn Văn Hào
Lường Văn Minh
- Game “Đoán Số” dựa trên luật chơi đơn giản, dễ hiểu đáp ứng nhu cầu về trình
độ và phù hợp với lứa tuổi
Trang 6CHƯƠNG 2: TỔNG QUAN VỀ LÝ THUYẾT
2.1 Ngôn ngữ lập trình Java là gì?
Java là một ngôn ngữ lập trình hiện đại, bậc cao, bảo mật và mạnh mẽ Nóđược sử dụng trong phát triển phần mềm, trang web, game hay các ứng dụng trên thiết bị di động
Java được phát hành năm 1994, đến năm 2010 được Oracle mua lại từSun MicroSystem Ban đầu Java được tạo ra nhằm mục đích viết phần mềmcho các sản phẩm gia dụng, và có tên là Oak
Điều khác biệt nhất giữa Java và các ngôn ngữ lập trình khác chính là Java
có thể thực hiện nhiều tác vụ mà bạn chỉ cần thiết lập chúng chạy một lần duy
nhất Với tiêu chí: “Viết mộ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 bằng Java có thể chạy trên mọi nền tảng (platform) khác nhau thông qua một 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ợ nền tảng đó
2.2 Đặc điểm
Thông dịch
Java là 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 ra một tệp java Khi biên dịch mã nguồn của chương trình sẽ đượcbiên dịch ra mã byte code Máy ảo Java sẽ thông dịch mã bytecode này thànhmachine code (hay native code) khi nhận được yêu cầu chạy chương trình
Hướng đối tượng
Tất cả mọi thứ đề cập đến trong Java đều liên quan đến các đối tượngđược định nghĩa trước giống như ngôn ngữ lập trình C++ Chỉ khác ở chỗ,
Trang 7hướng đối tượng trong java không có tính đa kế thừa như 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ác công việc cùnglúc Đồng thời cũng cung cấp giải pháp đồng bộ giữa các tiến trình Đặcđiểm này thường được sử dụng nhiều trong lập trình game
Tính an toàn và bảo mật cao
Java hỗ trợ bảo mật rất tốt bởi các thuật toán mã hóa được mã hóa theo dạng một chiều hoặc 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 chophép sử dụng các kỹ thuật tràn Do đó, các truy nhập sẽ không vượt quákích thước của mảng, chuỗi
Độc lập nền
Một chương trình viết bằng ngôn ngữ Java có thể chạy trên mọi hệđiều hành khác nhau 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 các loại hình ứng dụng khác nhau như:
1) J2SE: hỗ trợ phát triển các ứng dụng đơn, ứng dụng client-server
2) J2EE: hỗ trợ phát triển các ứng dụng thương mại như ngân hàng, phần mềm quản lý bệnh viện, …
3) J2ME: hỗ trợ phát triển app trên các thiết bị di động và viết game
Trang 8CHƯƠ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
và xem xét kỹ hơn kế hoạch dự án Tất cả các thành viên phải sử dụng tài liệunày để làm rõ trách nhiệm của mỗi người
Nó cũng cung cấp các nguyên tắc mà các thành viên trong nhóm cần tuân thủtrong 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 nhất RUP (Rational Unified Process)
Quy trình (tiến trình) hợp nhất là sự mở rộng của tiến trình xoắn ốc, nhưng hìnhthức hơn và chặt chẽ hơn
Quy trình bao gồm bốn giai đoạn chính và đan xen nhiều dòng hoạt động (activityflow) như là: Mô hình hoá nghiệp vụ, phân tích yêu cầu, phân tích và thiết kế, cài đặt, thửnghiệm triển khai, …Mỗi giai đoạn được hình thành từ những bước lặp (iteration)
Trang 9- Khởi tạo (inception):
· Thiết lập phạm vi dự án, các điều kiện ràng buộc phạm vi, các kiến trúc
đế xuất của hệ thống
· Xác định các thay đổi bổ sung, các tác động của các thay đổi này, các rũi
· Quản lý tài nguyên, kiểm soát và thực hiện tối ưu hoá
· Hoàn thành việc phát triển các thành phần của sản phẩm, thử nghiệm sảnphẩm
· Đánh giá sản phẩm cài đặt từ các tiêu chuẩn đã được thoả thuận, …
- Chuyển giao (transition):
Ứng dụng của mô hình quy trình phần mềm RUP đối với dự án
GUESSINGGAME
Quy trình dự án:
Tổng thời gian: 60 ngày
Chi tiết từng 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, các điều kiện ràng buộc,
Trang 10Xác định chi phí, thời gian thực hiện dự án 50 ngày làm việc, 10ngày họp, bàn giao, thu thập ý kiến
Xác định độ rủi ro, các tác nhân ảnh hướng đến hệ thống và xác định môi trường của hệ thống
Xác định các thay đổi bổ sung, những tác động của sự thay đổi, tác động của những rủi ro tới dự án
Tinh chế (thiết kế) dự án: xác định ra kiến trúc của hệ thống, các yêu cầu hệ
từ trước đó sao cho phù hợp với ý tưởng nhóm đưa ra
Xây dựng giao diện của chương trình, kiểm thử nội bộ để phát hiện cáclỗi Sau khi kiểm tra nội bộ thì đưa người dùng (người không tham gia dự án) dùngthử, ghi nhận các đánh giá và chỉnh sửa dự án
Đánh giá sản phẩm theo các yêu cầu được thỏa thuận, đặt ra từ trước đó
Chuyển giao dự án: đóng gói cài đặt dự án trên hệ thống.
Thực nghiệm sản phẩm đã triển khai xem có những lỗi nào xuất hiện
mà nhóm nghiên cứu chưa đánh giá đến
Thu thập, ghi nhận các phản hồi từ người dùng, các phần chưa tối ưu, các yêu cầu thay đổi đối với dự án từ đó tiến hành sửa đổi sao cho phù hợp
Trang 11biểu đồ thể hiện mô hình quy trình phần mềm RUP đối với dự án GUESSINGGAME
Đề xuất dự án mới, các ý tưởng để 11/1/2023 – 15/1/2023
cải tiến dự án, xác định ngôn ngữ lập
Trang 12trình, thuật toán
Thiết kế kịch bản, các cấu trúc dữ 16/1/2023 – 20/1/2023
liệu cho chương trình
Xây dựng chương trình cho dự án
Chuyển giao cho người dùng dùng
21/1/2023 – 27/1/2023 28/1/2023 – 1/2/2023
thử, thu thập ý kiến
Lặp lại lần 2: tập trung vào xây dựng giao diện cho dự án
Thời gian: 28 ngày từ ngày 2/2/2023 –
3/3/3023 Nội dung:
xây dựng giao diện cho dự án, múc tiêu là đem lại cho người dùng trải nghiệm tốthơn
lập trình giao diện, xác định tính khả thi
Tên
Xác định ý tưởng thiết kế giao
Thời gian thực hiện
2/2/2023 – 5/2/2023diện cho dự án, lập bản demo giao
diện
Thiết kế giao diện game
Đưa cho người dùng dùng thử và
6/2/2023 – 20/2/2023
21/2/2023 – 26/2/2023
ghi nhận ý kiến phản hồi
Nghiên cứu phản hồi của người 27/2/2023 – 3/3/2023
dùng, chỉnh sửa dự án sao cho
phù hợp với yêu cầu
Quản lý rủi ro:
Mô tả
Các thành
Kế hoạch tránh Các thành viên
Kế hoạch dự phòngNgười quản lí có kế
Tác động
Cao
Trang 13viên vắng thông báo cho người hoạch phòng tránh,
hoạch để kịp tiến độ
vấn đề, phân côngnhiệm vụ phù hợp vớinăng lực từng thànhviên
sẽ thảo luận để giải quyết Sau đó người quản lý sẽ giao nhiệm vụ tiếp theo vàước tính thời gian dự án Tất cả những điều nhóm thảo luận sẽ được thư ký ghi vào biên bản họp
Cuộc họp đột xuất: cuộc họp đột xuất thường là cuộc họp trực tuyến Nó được thực hiện khi xảy ra những vấn đề cần được giải quyết ngay lập tức
Trang 15khiến họ tập trung vào mục tiêu cuối cùng.
Trưởng nhóm kỹ thuật có trách nhiệm quyết định những côngTrưởng nhóm nghệ mà dự án sử dụng Anh ấy làm việc với các nhà phân tích
kỹ thuật kinh doanh để thiết kế kiến trúc hệ thống và cơ sở dữ liệu
Ngoài ra, anh ấy giám sát các nhà phát triển khác làm việc.Người lãnh đạo Người lãnh đạo tài liệu có trách nhiệm chuẩn bị tất cả các tài
liệu liên quan đến dự án
Trưởng nhóm kiểm thử có trách nhiệm lập kế hoạch, giám sátTrưởng nhóm và kiểm soát các hoạt động và nhiệm vụ kiểm thử, bao gồmkiểm thử thiết lập kiểm thử, đánh giá quá trình chạy thử và ghi lại kết quả
Trang 163.2.4 Vai trò của các thành viên trong dự án
Đặng Thị Tâm Trưởng nhóm, phân công nhiệm vụ, giám sát, người thử
nghiệm, thành viên nhóm tài liệuNguyễn Văn Trưởng nhóm tài liệu, người kiểm tra, thành viên nhóm tài liệuHào
Lường Văn Kiểm thử , kiểm tra, thành viên nhóm tài liệu
Minh
Kiều Bắc Sơn Kiểm thử , kiểm tra, thành viên nhóm tài liệu
Trần Thị Lan Kiểm thử , kiểm tra, thành viên nhóm tài liệu
Trang 17▪ Xác định lịch trình dự án, tạo cấu trúc phân chia công việc và danh sách các trường hợp sử dụng.
▪ Triển khai thứ tự đăng và thuật toán trợ giúp so khớp
▪ Thực hiện các liên hệ và thao tác liên quan đến đơn hàng giữa khách hàng và nhân viên trợ giúp
3.3.2 Biên bản cuộc họp
Một thư ký mà người quản lý dự án chỉ định sẽ ghi lại tất cả các cuộc họpcủa nhóm Người đó ghi ý kiến, nội dung thảo luận và ghi chú thích theo mẫubiên bản cuộc họp dưới đây:
- Xác định các bước tiếp theo và phân chia nhiệm vụ
Nguyễn Văn Hào
Lường Văn Minh
Kiều Bắc Sơn
Đặng Thị Tâm
Trang 183 Nội dung (Ghi chép)
Stt Hành động Chi tiết Người phụ
trách
Thời gian bắt đầu
Thời gian kết thức
4 Lưu ý
Trang 19CHƯƠNG 4: THÔNG SỐ KỸ NGHỆ YÊU
CẦU 4.1 Yêu cầu chức năng
● Hiển thị đúng kết quả: Kết quả sau khi đoán đúng phải là 1 số đúng trong khoảng xác định
● Sự ngẫu nhiên: Số cần phải đoán là 1 số ngẫu nhiên, không có quy luật trong khoảng xác định
●Chơi lại: Sau khi đoán đúng, người dùng có thể reset lượt chơi để tiếp tục đoán
4.2 Yêu cầu phi chức năng
4.2.1 Khả năng sử dụng
● Giao diện người dùng phải thân thiện, đơn giản, logic và dễ sử dụng
● Bản đồ đủ rộng để người dùng phóng to/thu nhỏ và kéo
4.2.2 Khả năng bảo trì và khả năng mở rộng
● Mã nguồn phải tuân theo quy ước viết mã để giúp các nhà phát triển đọc, hiểu và dễ bảo trì hoặc sửa đổi mã
● Nhật ký hệ thống báo lỗi để theo dõi lỗi mỗi khi ứng dụng xảy ra sự cố
Trang 20CHƯƠNG 5 PHÂN TÍCH THIẾT KẾ CHƯƠNG TRÌNH
5.1 Code
5.1.1Chương trình thuật toán đầy đủ
package suagame;
import java.util.Scanner;
public class main {
public static void main(String[] args) {
/ TODO Auto-generated method stub Scanner key = new Scanner (System.in); int dapan;
Trang 22Khi khởi chạy chưa có giao diện, chương trình sẽ chạy trực tiếp trên console của Eclipse.
Trang 24public class GuessingGameGUI implements ActionListener {
private JButton exitButton;
Trang 25private 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 của lớp GuessingGameGUI public GuessingGameGUI() {
//khai báo biến
dapan = (int) (Math.random() *
Trang 26/ Tạo nút jbutton mới có tên là restart restartButton = new
JButton("Restart"); restartButton.addActionListener(this);
restartButton.setIcon(newImageIcon(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(newImageIcon(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
Trang 27// hiển thị trên giao diện người dùng
promptLabel = new JLabel("Nhap mot so tu 1 den
100 :"); frame.add(promptLabel);
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 quả thêm vào jlabel
resultLabel = new JLabel("");
frame.add(resultLabel);
/ thêm một nhãn trống frame.add(new JLabel(""));
/ cài đặt hiển thị cho khung frame.setVisible(true);
frame.setLocationRelativeTo(null);
Trang 28/ tạo một đố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);
public void actionPerformed(ActionEvent e)
{ // lấy chuỗi mô tả hành độngString command = e.getActionCommand();
Trang 30public static void main(String[] args) { GuessingGameGUI
game = new GuessingGameGUI();
}
}
Trang 325.2 Chơi thử nghiệm
- Khi khởi chạy trò chơi màn hình sẽ hiển thị giao diện
Trang 33-Nhập vào đáp án
Trang 34-Nếu đoán sai, trò chơi sẽ yêu cầu nhập lại kết quả và giới hạn khoảng đáp án
Trang 35-Tiếp tục nhập cho đến khi tìm được đáp án cuối cùng
Trang 36CHƯƠNG 6: TỔNG KẾT
Trên đây là toàn bộ chương trình xây dựng “Game Đoán số”, qua nghiêncứu và kiến thức học được cùng với sự hướng dẫn của giáo viên bộ môn, sự đỡcủa các bạn cùng học và các thành viên trong nhóm hoàn thiện bài tập này Qua
đó, nhằm giúp cho thế giới game ngày càng đa dạng và phong phú
Game nhóm chỉ dừng lại ở mức độ đơn giản, nhằm giúp cho các bạn chơi
có cái nhìn tổng quát về nó Với trình độ hiểu biết; khả năng tìm kiếm, đọc hiểutài liệu; kỹ năng lập trình còn hạn chế nên không tránh khỏi những sai sót rấtmong nhận được sự thông cảm và đóng góp ý kiến của cô và các bạn để kỹnăng lập trình cũng như kinh nghiệm của chúng tôi ngày càng được mở rộng vànâng cao hơn
Nếu có cơ hội tiếp theo, hi vọng rằng phiên bản mới của game sẽ có thêmcác đặc tính mới hơn như:
Sửa các lổi hiện có
Tăng độ lớn của vùng tìm kiếm dữ liệu lên cao hơn
Thiết kế giao diện phù hợp với xu hướng hơn
Một lần nữa nhóm chúng em xin chân thành cảm ơn sự giúp đỡ, hướngdẫn, chỉ bảo tận tình của cô và các bạn để chúng em hoàn thành được chươngtrình này