16130638_Đỗ Văn Tường Tứ_Observer Chiến thắng
Ở tuần trước ta đã áp dụng mẫu MVC vào game, tuần này ta sẽ sử dụng 1 pattern thường xuất hiện trong mẫu MVC là Observer
In Cotroller
Khi con gấu đụng vào hũ mật đồng nghĩa với việc chiến thắng game Controller sẽ báo trạng thái cho Model là đã chiến thằng
In Model
Cập nhập model khi đó đã chiến thắng hay chưa , sau đó thông báo cho Observer map đã thay đổi, sau khi thông báo set lại trạng thái cũ
In View
Sau khi nhận thông báo từ model, view kiểm tra xem model đã thay đổi những gì bằng cách kiểm tra các trạng thái của model, nếu đúng là đã thắng thì tắt chức năng nút Tạm dừng, dừng đồng hồ và hiện ra của sổ nhập tên cũng như bảng điểm trong extensionPanel
Classdiagram
Khi con gấu đụng vào hũ mật đồng nghĩa với việc chiến thắng game Controller sẽ báo trạng thái cho Model là đã chiến thằng
In Model
Cập nhập model khi đó đã chiến thắng hay chưa , sau đó thông báo cho Observer map đã thay đổi, sau khi thông báo set lại trạng thái cũ
In View
Sau khi nhận thông báo từ model, view kiểm tra xem model đã thay đổi những gì bằng cách kiểm tra các trạng thái của model, nếu đúng là đã thắng thì tắt chức năng nút Tạm dừng, dừng đồng hồ và hiện ra của sổ nhập tên cũng như bảng điểm trong extensionPanel
16130674 - Võ Văn Vũ - Áp dụng observer vào sự kiện câu hỏi
Thêm observer view vào model
- controller/MainController.java 1. Cập nhật câu hỏi mới khi đi lên ô câu hỏi
- Controller nhận tương tác của những dùng từ view và cập nhật Model
- controller/MainController.java - Thay đổi trong Model: cập nhật index câu hỏi, set trạng thái đã thay đổi (true) sau đó thông báo cho observer câu hỏi đã thay đổi, sau khi thông báo set lại trạng thái cũ (false).
- model/MainModel
- View nhận được thông báo, sau đó kiểm tra trạng thái của model. Nhận thấy model đã thay đổi thạng thái (isUpdatedIndex = true). Thực hiện cập nhật tương ứng.
- view/MainView.java - view/QuestionPanel.java - Trên ô cỏ
- Trên ô câu hỏi
- Class diagram:
2/ Xử lý trả lời đúng sai
- controller/MainController.java
- model/MainModel.java
- model/GameMap.java
- View nhận được thông báo, sau đó kiểm tra trạng thái của model. Nhận thấy model đã thay đổi thạng thái (hasAnswerTrue/hasAnswerFalse = true). Thực hiện cập nhật tương ứng.
- view/MainView.java - Class Diagram:
- controller/MainController.java 1. Cập nhật câu hỏi mới khi đi lên ô câu hỏi
- Controller nhận tương tác của những dùng từ view và cập nhật Model
- controller/MainController.java - Thay đổi trong Model: cập nhật index câu hỏi, set trạng thái đã thay đổi (true) sau đó thông báo cho observer câu hỏi đã thay đổi, sau khi thông báo set lại trạng thái cũ (false).
- model/MainModel
- View nhận được thông báo, sau đó kiểm tra trạng thái của model. Nhận thấy model đã thay đổi thạng thái (isUpdatedIndex = true). Thực hiện cập nhật tương ứng.
- view/MainView.java - view/QuestionPanel.java - Trên ô cỏ
- Trên ô câu hỏi
- Class diagram:
2/ Xử lý trả lời đúng sai
- controller/MainController.java
- model/MainModel.java
- model/GameMap.java
- View nhận được thông báo, sau đó kiểm tra trạng thái của model. Nhận thấy model đã thay đổi thạng thái (hasAnswerTrue/hasAnswerFalse = true). Thực hiện cập nhật tương ứng.
- view/MainView.java - Class Diagram:
Tuần 9, 10 - Áp dụng MVC và Observer
1. Phân công công việc
2. Hình ảnh nhóm
Áp dụng mẫu MVC và Observer vào code tại các chức năng sau:
Tên
|
Công việc
|
Tiến độ
|
Nguyễn Minh Tuyễn
|
Menu, âm thanh
|
100%
|
Đỗ Văn Tường Tứ
|
Chiến thắng, tính điểm
|
100%
|
Đỗ Quang Thịnh
|
Chơi lại, tạm dừng - tiếp tục
|
100%
|
Võ Văn Vũ
|
Trả lời câu hỏi
|
100%
|
2. Hình ảnh nhóm
16130638_Đỗ Văn Tường Tứ_Controller Class Diagram
Tuần này ta sẽ áp dụng mẫu MVC vào game.
Đây là phần classdiagram Controller dùng để xứ lí tất cả các sự kiện trong game từ lúc bắt đầu đến khi kêt thúc game.
Nhật kí tuần 8 - MVC class diagram
1. Phân công công việc
Tên
|
Công việc
|
Tiến độ
|
Nguyễn Minh Tuyễn
|
View
|
100%
|
Đỗ Văn Tường Tứ
|
Controller
|
100%
|
Đỗ Quang Thịnh
|
Model
|
100%
|
Võ Văn Vũ
|
Tổng hợp
|
100%
|
16130674 - Võ Văn Vũ - Xử lý di chuyển, áp dụng Observer vào di chuyển
- Thêm listener cho các nút điều khiển WASD
- Trước khi di chuyển sẽ cần phải lưu lại vị trí ô cũ để khi trả lời sai sẽ lùi lại ô cũ.
- Để di chuyển được, cần phải kiểm tra ô ở hướng di chuyển tiếp theo có phải là đá hay không, nếu là đá không di chuyển được. Nếu là câu hỏi hoặc hủ mật thì thực hiện chức năng tương ứng.
- controller/MainController.java
- model/MainModel.java
-model/Bear.java
-view/MainView.java: MainView nhận thông báo -view/BoardPanel.java: BoardPanel được cập nhật với toạ độ của gấu
-model/Bear.java
-view/MainView.java: MainView nhận thông báo -view/BoardPanel.java: BoardPanel được cập nhật với toạ độ của gấu
- Class Diagram:
16130638-Đỗ Văn Tường Tứ - Xử lỗi xuất hiện ở dòng đầu tiên trong file txt
Trong bài viết ở tuần trước, ta đã xử dụng 1 phương thức để lấy điểm của từng người chơi bằng hàm subtring() của Java trong phương thức getInfoPlayer()
tuy nhiên sau khi khởi động lại game, ta thêm 1 người chơi mới thì xuất hiện lỗi
tuy nhiên sau khi khởi động lại game, ta thêm 1 người chơi mới thì xuất hiện lỗi
Lỗi này xuât hiện khi hàm subtring không thể lấy được vị trí, đồng thời ta sẽ thấy xuất hiện trong file txt dòng đầu tiên hoàn toàn trống không và đây là lí do
Nhóm đã đề ra giải pháp là sau khi tắt các cửa sổ sẽ đồng thời xóa luôn dòng đầu tiên
Nhật kí tuần 7 - Hoàn thiện code, thêm chức năng
1. Phân công công việc
Tên
|
Công việc
|
Tiến độ
|
Nguyễn Minh Tuyễn
|
Hoàn thiện menu chính, thực hiện
chức năng âm thanh
|
100%
|
Đỗ Văn Tường Tứ
|
Hoàn thiện tính năng tính điểm
|
100%
|
Đỗ Quang Thịnh
| Thực hiện chức năng trợ giúp, thực hiện chức năng chơi lại, tạm dừng - tiếp tục |
100%
|
Võ Văn Vũ
| Xử lý di chuyển, áp dụng mẫu observer vào di chuyển |
100%
|
16130638- Đỗ Văn Tường Tứ - Xử lí lưu điểm
Để tránh việc mất dữ liệu điểm của người chơi mỗi khi khởi động lại game, ta cần lưu lại điểm đó trong 1 file txt.
Mỗi khi có dữ liệu của người chơi mới ta chỉ cần lưu lại vào file txt đó hoặc hiển thị bảng điểm , đảm bảo không bị mất dữ liệu khi khởi động lại game
ClassDiagram
ClassDiagram
Ta viết một phương thức lưu điểm :
Một phương thức hiện thị bảng điểm:
2 phương thức này dẽ được sử dụng khi nhấn nút OK
Tuy nhiên dù đã có 2 phương thức writeToFile() và readFromFile() ta vẫn chưa luu điểm được.
Lúc này nhóm đã đề ra ý tưởng :
File txt lúc này đang lá kiểu String nên khi nhập thêm một người chơi mới nó không thể so sánh 1 người chơi với một dãy String mà ta phải làm sao để nó so sánh với những người khác hay nói cách khác là so sánh với từng người chơi trong 1 danh sách.
Ta sẽ tiến hành theo từng bước:
Khi đóng tất cả cửa sổ ta file txt sẽ ta sẽ chuyển file txt thành 1 ArrayList
Rồi ta lấy thông tin của từng người chơi từ danh sách ConvertFile
16130674 - Võ Văn Vũ - Hiển thị câu hỏi và sự kiện trả lời câu hỏi
1. Hiển thị câu hỏi và các đáp án
- Câu hỏi hiển thị và đáp án được hiển trị trên QuestionPanel nằm trong ExtensionPanel. Khi khởi tạo ExtensionPanel ta cũng khởi tạo luôn QuestionPanel.
- Thư viện câu hỏi (QuestionLibray) được khởi tạo trong MainModel.
- ExtensionPanel được khởi tạo trong MainView, khi khởi tạo ta sẽ set thư viện câu hỏi (QuestionLibray) cho QuestionPanel.
- view/MainView.java
- Hình ảnh hiển thị:
- Câu hỏi hiển thị và đáp án được hiển trị trên QuestionPanel nằm trong ExtensionPanel. Khi khởi tạo ExtensionPanel ta cũng khởi tạo luôn QuestionPanel.
- Thư viện câu hỏi (QuestionLibray) được khởi tạo trong MainModel.
- ExtensionPanel được khởi tạo trong MainView, khi khởi tạo ta sẽ set thư viện câu hỏi (QuestionLibray) cho QuestionPanel.
- view/MainView.java
- Hình ảnh hiển thị:
2. Bắt sự kiện khi click trả lời câu hỏi
- CustomButton là button có thêm thuộc tínnh btnID, dùng để so sánh với đáp án đúng.
- model/CustomButton.java
- Listener cho các button được thêm trong MainController. (chỉ demo một CustomButton A, nhìn đỡ rối). Khi người chơi click chọn đáp án, listener sẽ kích hoạt. Đầu tiên ta lấy thông tin câu hỏi đang hiện tại (đang hiển thị) trong MainModel ra rồi gọi hàm isTrueAnswer của câu hỏi để so sánh với btnID của Button đáp án mà người dùng vừa bấm. Sau đó căn cứ vào kết quả đúng sai của đáp án người chơi mà ta cập nhật trạnng thái của MainModel.
- controller/MainController.java
- model/MainModel.java
- model/GameMap.java
- CustomButton là button có thêm thuộc tínnh btnID, dùng để so sánh với đáp án đúng.
- model/CustomButton.java
- Listener cho các button được thêm trong MainController. (chỉ demo một CustomButton A, nhìn đỡ rối). Khi người chơi click chọn đáp án, listener sẽ kích hoạt. Đầu tiên ta lấy thông tin câu hỏi đang hiện tại (đang hiển thị) trong MainModel ra rồi gọi hàm isTrueAnswer của câu hỏi để so sánh với btnID của Button đáp án mà người dùng vừa bấm. Sau đó căn cứ vào kết quả đúng sai của đáp án người chơi mà ta cập nhật trạnng thái của MainModel.
- controller/MainController.java
- model/MainModel.java
- model/GameMap.java
Khi đi lên ô câu hỏi |
Trả lời đúng, câu hỏi biến mất, trở thành ô cỏ |
Trả lời sai, ô câu hỏi biến thành đá, lùi lại ô cũ |
Nhật kí tuần 6
1. Phân công công việc
2. Hình ảnh nhóm
Tên
|
Công việc
|
Tiến độ
|
Nguyễn Minh Tuyễn
|
Thiết kế giao diện menu chính và menu trong game
|
Hoàn thành
|
Đỗ Văn Tường Tứ
| Thực hiện tính năng đếm thời gian, bảng điểm |
Hoàn thành
|
Đỗ Quang Thịnh
| Vẽ bản đồ lên màn hình chơi |
Hoàn thành
|
Võ Văn Vũ
|
Hiển thị câu hỏi, bắt sự kiện trả lời câu hỏi
|
Hoàn thành
|
2. Hình ảnh nhóm
Đăng ký:
Bài đăng (Atom)