Yêu cầu cho game xếp hình Khám phá các yêu cầu bằng việc phỏng vấn.lập kế hoạch cho buổi phỏng vấn Interviews: Kế hoạch phỏng vấn: Game: Xếp Hình Project reference : XH/01 Người tham
Trang 1Nhóm 5:
Lê Minh Quang
Nguyễn Huy Thành
Nguyễn Đức Tuấn
Game xếp hình trên điện thoại android
1 Yêu cầu cho game xếp hình
Khám phá các yêu cầu bằng việc phỏng vấn.lập kế hoạch cho buổi phỏng vấn
Interviews:
Kế hoạch phỏng vấn:
Game: Xếp Hình Project reference : XH/01
Người tham dự: Huy Thành (người chơi game)
Quang(developer) Ngày
5/9/2011
Thời gian bắt đầu 15h.00
Thời gian hỏi
30 p
Địa điểm cafe
Mục đích của buổi phỏng vấn:
Thảo luận về trò chơi xếp hình và những vấn đề gặp phải khi chơi
Agenda:
- Trò chơi hiện tại
- Vấn đề gây khó khan, bất tiện khi chơi
- Ý kiến của người chơi
Tài Liệu:
Bản đặc tả: mục đích phân loại, sắp xếp và ghi lại các thông tin có được từ việc phỏng vấn
Bản đặc tả:
1 Các vấn đề của phiên bản hiện tại
- Không lưu được số điểm và thời gian chơi của người chơi
- Không thể đưa bức ảnh yêu thích vào để xếp hình
- Thiếu sự sinh động về hình ảnh và âm thanh
- Không thể trở lại bước đi trước khi chọn sai
- Không lưu được màn chơi
2 Mục tiêu của phiên bản mới
Trang 2- Giao diện đẹp hơn
- Có thể lưu được thông tin người chơi và màn chơi
- Có chức năng back step
Sau khi phỏng vấn có thể tóm tắt 1 bản thông tin yêu cầu từ người chơi Mục đích là để xác nhận những yêu cầu của người chơi, đảm bảo rằng người phát triển đã nắm được những yêu cầu mà người chơi cung cấp
Interviews summary:
Tóm tắt phỏng vấn:
Game: Xếp Hình Project reference:XH/01
Người tham dự: Huy Thành (người chơi)
Quang (developer) Mục đích:
Thảo luận về trò chơi xếp hình và những vấn đề gặp phải khi chơi
Số
1
2
3
4
5
Mục thông tin Không lưu được thông tin người chơi
Không thể trở lại các bước đã đi
Không thể xếp hình với bức hình tùy ý
Khó khan trong việc lưu màn chơi để
thời gian sau chơi tiếp
Giao diện dễ sử dụng và đẹp mắt
Hành động yêu cầu
Có thể lưu thông tin người chơi như tên, tuổi,số điểm, level dễ dàng
Có thể quay về bước trước nếu cảm thấy mình đi sai
Có thêm chức năng đưa hình vào
Thêm chức năng lưu màn chơi cho người dung
Thiết kế giao diện đẹp và dễ sử dụng
Danh sách các yêu cầu cho trò chơi xếp hình
Đây là các yêu cầu được lấy từ cuộc phỏng vấn với người chơi Nó chỉ là danh sách cơ sở cho việc phát triển trò chơi theo cách hướng đối tượng
Game xếp hình phải:
- R1: Dễ dàng lưu thông tin người chơi như tên, tuổi, thời gian và level
- R2: Dễ dàng thay đổi hình ảnh xếp hình
Trang 3- R3: Lưu màn chơi khi người chơi bận
- R4: Có thể back lại các bước đã đi
- R5: Cần có âm thanh nền hoặc theo phím bấm
- R6: Cần đếm thời gian mà người chơi mất
Chương 3: Use case
1 Mục đích
Mô hình use case sẽ giúp trực quan hóa những ý tưởng và các hoạt động trong hệ thống cần xấy dựng Do đó sẽ dễ dàng chia sẻ ý tưởng và giao tiếp với người sử dụng, và có thể kiểm chứng tốt hơn
Các bước xây dựng use case
Xác định actor
Actor hay còn gọi là tác nhân Để xác định được tác nhân cho hệ thống thì cần phải trả lời được những câu hỏi sau:
- Ai là người kích hoạt hệ thống?
- Ai là người duy trì hệ thống?
- Ai là người được hệ thống giúp đỡ?
- Ai là người lấy thông tin từ hệ thống?
- Ai là người cung cấp thông tin cho hệ thống?
- Hệ thống nào sử dụng hệ thống này không?
Với những câu hỏi ở trên ta xác minh được tác nhân duy nhất sử dụng game xếp hình và duy trì game hay trao đổi thông tin với game chính là người chơi (player)
Xác định use case
Nếu actor là một diễn viên thì use case chính là những cảnh mà diễn viên đó phải đóng
Use case chính là 1 chức năng của hệ thống đem lại một ý nghĩa nào đó cho người dùng
Diagram:
Trang 4Các use case gồm:
Use case cấu hình
Use case: cấu hình
Actor: player
Goal: thiết lập các thông số
Overview: người chơi muốn thiết lập các thông số cho trò chơi tìm đến mục cấu hình và lựa
chọn điền các thông số vào, sau đó hệ thống sẽ đáp ứng các âm thanh, màu sắc, hình ảnh theo như người chơi đã chọn
Cross-reference :
R2, R5
Player
Game Xếp Hình trên Android
Cấu hình
Chơi
Lưu trò chơi
Chọn level
Đếm giờ
Tính điểm
<<include>>
<<include>>
Back step
<<extend
>>
Map
<<inc lude>
>
Trang 5Typical course of event:
Actor
1 Điều chỉnh các thông số kỹ thuật về
mức âm thanh, ánh sang màu sắc,
giới hạn thời gian, level
System response
2 Lấy tưng thông số và áp dụng vào với trình chơi nhạc, màu sắc của máy Load màn chơi với thời gian và level
mà người chơi mong muốn
Use case Chơi xếp hình
Use case:Chơi xếp hình
Actor : player
Goal: xếp hình
Overview: đây chình là phần chính của trò chơi, người chơi sẽ thực hiện việc ghép các tấm hình
nhỏ với nhau để tạo ra hình đúng
Cross-reference :
R3, R4
Typical course of event:
Actor
1 Di chuyển ô ghép theo ý muốn
System response
2 Kiểm tra xem từ ô ban đầu tới ô đích
có đương đi hay không?
3 Nếu có thì di chuyển ô ghép , nếu không thì không cho phép di chuyển ô ghép
4 Nếu ô ghép được di chuyển thì kiểm tra xem bức hình đã được ghép hoàn chỉnh chưa?
5 Nếu hoàn chỉnh rồi thì kết thúc trò chơi và lưu lại thời gian và chuyển lên level cao hơn Nếu bức hình chưa hoàn chỉnh thì ko làm gì cả để người chơi tiếp tục
Use case Map
Trang 6Use case: Map
Actor: player
Goal: load màn chơi
Overview: use case này sẽ hiển thị bàn chơi bao gồm hình ảnh, âm thanh, màu sắc, thời gian và
các menu cho người chơi
Cross-reference :
Typical course of event:
Actor
1 Người chơi bắt đầu start game
System response
2 Phân chia bức hình và sắp xếp 1 cách ngẫu nhiên các ô ghép
3 Load màn chơi
Use case Back step
Use case: Back step
Actor: player
Goal: trở lại bước đi trước
Overview: use case này được gọi khi mà người chơi muốn thực hiện lại cá bước đi trước đó Cross-reference :
R4
Typical course of event:
Actor
1 Người chơi yêu cầu được đi lại
System response
2 Quay trở lại trạng thái trước đó cho người chơi
Use case đếm giờ:
Use case : đếm giờ
Actor: player
Goal: đo thời gian chơi
Overview: use case này sẽ tự động được gọi khi người chơi bắt đầu xếp hình và se tính thời
gian mà người chơi tiêu tốn
Cross-reference :
R1,R6
Typical course of event:
Actor
1 Bắt đầu trò chơi
System response
2 Thời gian sẽ được đếm theo đơn vị giây
3 Sẽ thông báo nếu như thời gian giới
Trang 7hạn đã hết
Use case Lưu trò chơi
Use case : Lưu trò chơi
Actor: player
Goal: lưu lại trạng thái
Overview: use case này sẽ thực hiện công việc lưu lại thông tin người chơi hoặc màn chơi khi
người chơi bận
Cross-reference :
R1
Typical course of event:
Actor
1 Người chơi yêu cầu lưu lại màn chơi
để tiếp tục chơi vào thời gian khác,
hoặc các thông tin về lần chơi này
System response
2 Sẽ lưu lại màn chơi hiện thời, và các thông tin như số điểm, thời gian và thông tin người chơi
Usecase chọn level
Use case : Chọn level
Actor: player
Goal: chọn mức chơi cho người chơi
Overview: use case này sẽ thực hiện công việc chọn mức độ của trò chơi cho người chơi Cross-reference :
R1
Typical course of event:
Actor
1 Người chơi yêu cầu chọn mức độ khó
của trò chơi
2 Người chơi sẽ chọn level theo ý muốn
System response
3 Hiển thị các level mà trò chơi cho phép chơi
4 Load màn chơi với độ khó theo level
mà người chơi chọn
Trang 8Chương 4,5:Class và object
UML class diagram.ở mức phân tích này thì chưa cần phải đưa các phương thức vào
Xác định các đối tượng
Ta gạch chân các danh từ có mặt trong các bản đặc tả sẽ được : player, tên, tuổi, thời gian hoàn thành, level đã chơi, cấu hình, bàn chơi, ô ghép, level, thời gian, mức độ âm thanh, âm thanh, hình ảnh, đường dẫn, địa chỉ ô ghép, trạng thái ô ghép, trạng thái bức hình
- Tiếp theo ta xem xét những danh từ nào để trở thành đối tượng dựa vào cách xác định đối tượng ở chương 5 ta xét từng danh từ và thấy rằng các danh từ sau có thể trở thành đối tượng vì chúng có những hành vi xác định : player, config, piece, map
class diagram:
Player
Name: char
Age: integer
time: integer
level: integer
Operations
Config SoundLevel : integer TimeLimit: integer soundPath: string imagePath: string level: integer Operations
piece
pos: point
state: bolean
Operations
Map pieces: piece[][]
state: bolean config: config
Operations
1
*
1 1
Trang 9Viết từ điển:
Player = name + Age +time + level;
name = title + [initial | firstName] + surname
Config = soundlevel + timeLimit + soundPath + imagePath + level; Piece = pos + state;
Map = pieces + state + config;
Pieces = {piece};
Trang 10Chương 6 : CRC card và lược đồ tương tác
Kỹ thuật dùng CRC
- Xét use case cấu hình
Config responsibility collbaration
Điều chỉnh thông số về
mức độ âm thanh, hình
ảnh, thời gian
Chúng ta cần phải hiển thị các thông tin cấu hình (âm thanh, thời gian, level ) lên các ô text cho
người chơi thấy, nên ta cần có hàm getConfig()
Tương tự như vậy khi người chơi điền các thông tin vào cấu hình thì ta cần nhận các thông tin
đó từ ô text nên ta cần có hàm setConfig() với tham số là
- Xét use case chơi
Map responsibility collbaration
Load bàn chơi
Kiểm tra thời gian
Kiểm tra trạng thái bức
hình
Config
Piece
Piece responsibility collbaration
Lấy địa chỉ ô ghép
Đưa địa chỉ ô ghép
Kiểm tra đường đi
Kiểm tra trạng thái ô
map
Trang 11ghép
Dựa vào bản mô tả chi tiết của use case chơi:
Use case:Chơi xếp hình
Actor : player
Goal: xếp hình
Overview: đây chình là phần chính của trò chơi, người chơi sẽ thực hiện việc ghép các tấm hình
nhỏ với nhau để tạo ra hình đúng
Cross-reference :
R3, R4
Typical course of event:
Actor
1 Di chuyển ô ghép theo ý muốn
System response
2 Kiểm tra xem từ ô ban đầu tới ô đích
có đương đi hay không?
3 Nếu có thì di chuyển ô ghép , nếu không thì không cho phép di chuyển ô ghép
4 Nếu ô ghép được di chuyển thì kiểm tra xem bức hình đã được ghép hoàn chỉnh chưa?
5 Nếu hoàn chỉnh rồi thì kết thúc trò chơi và lưu lại thời gian và chuyển lên level cao hơn Nếu bức hình chưa hoàn chỉnh thì ko làm gì cả để người chơi tiếp tục
Khi người chơi dịch chuyển ô ghép thì đối tượng piece sẽ nhận đại chỉ của ô ghép đó và địa chỉ
ô đích mà người chơi muốn chuyển đến, nên ta có hàm setPos(point) với tham số là 1 point Tiếp theo là đối tượng piece này sẽ kiểm tra đường đi nên ta có hàm CheckPath() với 2 tham số kiểu point Nếu có đường đi thì ta sẽ cho phép di chuyển với hàm movePiece() với tham số là 1
point địa chỉ ô đích Sau đó t tiếp tục kiểm tra trạng thái để biết ô ghép đó đã vào đúng vị trí
chưa với hàm checkState().Với tham số là địa chỉ point Sau cùng hệ thống phải kiểm tra bức
hình đã được ghép hoàn chỉnh chưa sau mỗi lần ô ghép được di chuyển vì thế ta có hàm
checkStateImage() để xem bức hình đã finish chưa Vậy ta có:
Trang 12Piece: setPos(point)
CheckPath(), movePiece(), checkState()
Map: checkStateImage()
- Xét use case map:
Use case: Map
Actor: player
Goal: load màn chơi
Overview: use case này sẽ hiển thị bàn chơi bao gồm hình ảnh, âm thanh, màu sắc, thời gian và
các menu cho người chơi
Cross-reference :
Typical course of event:
Actor
1 Người chơi bắt đầu start game
System response
2 Phân chia bức hình và sắp xếp 1 cách ngẫu nhiên các ô ghép
3 Load màn chơi
Khi người chơi bắt đầu chơi thì đối tượng map phải phân chia bức ảnh nên ta phải có hàm
divImage() với tham số là số hàng và số cột.sau đó thì mới laod màn chơi lên cho người chơi
bằng hàm LoadMap() với tham số là 1 config
Map:divImage(), LoadMap(config )
- Xét use case backstep
Use case: Back step
Actor: player
Goal: trở lại bước đi trước
Overview: use case này được gọi khi mà người chơi muốn thực hiện lại cá bước đi trước đó Cross-reference :
R4
Typical course of event:
Actor
1 Người chơi yêu cầu được đi lại
System response
2 Quay trở lại trạng thái trước đó cho người chơi
Khi người chơi yêu cầu đi lại 1 bước thì hệ thống phải quay trở lại trạng thái trước đó, để đáp ứng được như thế thì ta phải có cơ chế lưu trữ sự thay đổi trên đối tượng pieceTemp thuôc
Trang 13class piece, sẽ là bản sao của ô ghép lúc trước khi di chuyển nên ta có hàm savePiece() tham số
là địa chỉ và trạng thái của piece
Piece: savePiece(point, state)
- Xét use case đếm giờ
Use case : đếm giờ
Actor: player
Goal: đo thời gian chơi
Overview: use case này sẽ tự động được gọi khi người chơi bắt đầu xếp hình và se tính thời
gian mà người chơi tiêu tốn
Cross-reference :
R1,R6
Typical course of event:
Actor
1 Bắt đầu trò chơi
System response
2 Thời gian sẽ được đếm theo đơn vị giây
3 Sẽ thông báo nếu như thời gian giới hạn đã hết
Luôn có 1 tiến trình chạy ngầm để đếm thời gian và thông báo nếu như hết hạn nên ta có hàm
checkTime() cho đối tượng map
Map: checkTime()
- Xét use case lưu trò chơi
Use case : Lưu trò chơi
Actor: player
Goal: lưu lại trạng thái
Overview: use case này sẽ thực hiện công việc lưu lại thông tin người chơi hoặc màn chơi khi
người chơi bận
Cross-reference :
R1
Typical course of event:
Actor
1 Người chơi yêu cầu lưu lại màn chơi
để tiếp tục chơi vào thời gian khác,
hoặc các thông tin về lần chơi này
System response
2 Sẽ lưu lại màn chơi hiện thời, và các thông tin như số điểm, thời gian và thông tin người chơi
Trang 14Để có thể lưu trữ map thì ta cần có hàm saveMap() với tham số là 1 map Còn để lưu thông tin người chơi thì cần có hàm savePlayer() tham số là 1 player
Map: saveMap(map)
Player: savePlayer(player)
- Xét use case chọn level
Use case : Chọn level
Actor: player
Goal: chọn mức chơi cho người chơi
Overview: use case này sẽ thực hiện công việc chọn mức độ của trò chơi cho người chơi Cross-reference :
R1
Typical course of event:
Actor
1 Người chơi yêu cầu chọn mức độ khó
của trò chơi
2 Người chơi sẽ chọn level theo ý muốn
System response
3 Hiển thị các level mà trò chơi cho phép chơi
4 Load màn chơi với độ khó theo level
mà người chơi chọn
Để có thể chọn riêng level thì đối tượng config cần phải có phương thức setlevel() tham số là
giá trị level muốn chọn
Config :setlevel(level)
Vậy ta có được diagram sau:
Trang 15Lược đồ tương tác
Vẽ với use case chơi xếp hình
1 Lược đồ tuần tự
Lược đồ tuần tự nhấn mạnh đến thứ tự và thời gian các tiến trình được thực hiện
Player Name: char Age: integer time: integer level: integer savePlayer(player)
Config SoundLevel : integer TimeLimit: integer soundPath: string imagePath: string level: integer getConfig() setConfig(config) setLevel(level)
piece indicate: point
state: bolean
setPos(point)
checkPath(point1,point2)
movePiece(point)
checkState(point)
savePiece(point,state)
Map pieces: piece[][]
state: bolean config: config
checkImageState() divImage(h,c) Load(config) checkTime() saveMap(map)
1
*
1 1
Trang 162 Lược đồ cộng tác
Lược đồ cộng tác nhấn mạnh đến việc biểu diễn mô hình hóa các mối quan hệ giữa các đối tượng với nhau
Player
1 kiểm tra đường đi:
=checkPath
(point1,point2)
1.1 checkState (point)
1.2 movePiece
return return
Trang 171.
ch
P at
1.1.chec
kState()
1.2.mov ePiece()
1.3 checkIm ageStat e()