Ý tƣởng chƣơng trình đƣợc dựa trên trò chơi Hockey mà mọi ngƣời thƣờng hay chơi trong các trung tâm thƣơng mại hoặc các điểm chơi game. Trò chơi sẽ gồm một sân bóng có 2 khung thành, một bảng ghi điểm, một bảng hƣớng dẫn ngƣời chơi. Các đối tƣợng trong chƣơng trình gồm: 2 cầu thủ chơi và một quả bóng. Khi bóng di chuyển nếu đập vào các biên của sân thì sẽ nẩy lại, đập vào ngƣời chơi của đội A thì sẽ lẩy về phía cầu môn bên kia của đội B. Trong lúc chơi cầu thủ có thể dắt bóng khống chế và đánh bóng. Với việc 2 cầu thủ va chạm nhau thì sẽ không cho đối phƣơng đi tiếp bắt buộc họ phải đổi hƣớng di chuyển.
Khi bóng vào cầu môn thì sẽ đƣợc tính điểm cho đội ghi bàn. Nếu đội nào đạt đƣợc 5 điểm trƣớc sẽ thắng và muốn chơi lại phải khởi động lại trò chơi.
Trong chƣơng trình sẽ có 2 tác nhân thứ nhất là ngƣời chơi là tác nhân chủ động có thể tác động vào các đối tƣợng khác, tác nhân thứ 2 là sân bóng là tác nhân bị động có nghĩa là đối tƣợng khác tác động vào. Ta bắt đầu xét các ca sử dụng của chƣơng trình để phân tích các chức năng hệ thống.
Chức năng phát bóng: Ngƣời chơi đƣợc phát bóng khi trò chơi bắt đầu, đƣợc phát bóng khi bóng vào lƣới.
Chức năng di chuyển: Ngƣời chơi có thể di chuyển lên xuống và trái phải toàn bộ sân bóng.
Chức năng di chuyển bóng: Ngƣời chơi có thể di chuyển bóng bóng chung quanh sân.
Chức năng đánh bóng: Khi di chuyển đến thời điểm thuận lợi ngƣời chơi có thể đánh bóng vào lƣới đối phƣơng.
Chức năng cản đối phƣơng: Ngƣời chơi có thể cản đối phƣơng bên kia không cho di chuyển tiếp.
Ta xét tiếp ca sử dụng sân bóng có các chức năng sau:
Chức năng đổi hƣớng bóng: Khi bóng va vào các thành biên của sân lập tức sẽ thay đổi hƣớng và vận tốc.
Chức năng cản bỏng: Không cho phép bóng bay ra ngoài sân chỉ đƣợc phép đập vào các thành biên sẽ nẩy lại.
Chức năng cản ngƣời chơi: Không cho phép ngƣời chơi di chuyển khỏi sân bóng.
Chức năng tính điểm: Khi bóng bay vào khung thành thì sẽ đƣợc tính điểm cho ngƣời chơi.
Vậy bài toán đặt ra là xây dựng một ứng dụng trò chơi Hockey phải đáp ứng đƣợc đầy đủ các quá trình phản ứng giữa các đối tƣợng trong trò chơi nhƣ: Bóng đƣợc phát đi, bóng va vào biên đổi vận tốc, bóng vào khung thành sẽ tính điểm. Ngƣời chơi bắt bóng, dắt bóng, đánh bóng và cản đối phƣơng.
Để thấy rõ đƣợc các quá trình phản ứng trên tôi sử dụng kiến trúc mô hình lập trình trong ngôn ngữ Elm để xây dựng trò chơi. Mô hình có dạng Model – Update – View – Signal, trong đó phần Model là phần chứa dữ liệu, phần Update là để cập nhậ dữ liệu, phần View thể hiện quá trình tƣơng tác với ngƣời sử dụng đồng thời biểu diễn đƣợc sự kết nối dữ liệu bên trong với các tín hiệu từ bên ngoài thông qua các sự kiện. Phần Signal là phần xử lý các tín hiệu đầu vào từ bên ngoài. Tiếp theo chúng ta cùng phân tích dữ liệu trò chơi.