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

Classdiagram





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



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:

Tuần 9, 10 - Áp dụng MVC và Observer

1. Phân công công việc
Á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%

2. Hình ảnh nhóm


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

- 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

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%

2. Hình ảnh nhóm

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


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ị:


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
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

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