Xây dựng mô hình dữ liệu

Một phần của tài liệu Nghiên cứu lập trình phản ứng với ngôn ngữ ELM (Trang 62 - 64)

Ở phần này chúng tôi xây dựng các kiểu dữ liệu của chƣơng trình. Để khai báo một kiểu dữ liệu mới ta dùng từ khóa type aliaslà khai báo kiểu bản ghi. Một bản ghi có thể chứa nhiều kiểu giá trị khác nhau. Sau đây là các kiểu dữ liệu trong chƣơng trình.

14 type alias Data = {state: State, ball : Ball, img1 : Player, img2 : Player}

Kiểu Data chứa tất cả các đối tƣợng và trạng thái của chƣơng trình. Các đối tƣợng ở đây là quả bóng và 2 cầu thủ, ngoài ra còn có kiểu trạng thái của trò chơi. 15 type alias Keys = {x: Int, y: Int}

Kiểu Keys khai báo tín hiệu đƣợc nhập vào từ bàn phím của các phím mũi tên và các phím ( w, a, s, d ) dùng để điều khiển hƣớng di chuyển của đối tƣợng. 17 type alias Ball = { x: Float, y: Float, vx: Float, vy: Float, shoot1: Bool, shoot2: Bool }

Kiểu Ball sẽ lƣu các giá trị của quả bóng nhƣ vị trí tọa độ, vận tốc bóng và thuộc tính để xác định xem bóng đang thuộc cầu thủ nào: shoot1, shoot2

18 type alias Player = { x: Float, y: Float, vx: Float, vy: Float,

dir: Direction, score: Int}

63

Kiểu Player lƣu các giá trị thuộc tính của cầu thủ đó là vị trí tọa độ, vận tốc di chuyển, phƣơng hƣớng di chuyển và số điểm của từng đội chơi.

20 type alias Input = { isDown: Bool, space: Bool, enter: Bool, shift: Bool, dir1: Keys, dir2: Keys, delta: Time}

Kiểu Input chứa các tín hiệu đầu vào của chƣơng trình. Tín hiệu space dạng True hoặc False để bắt đầu phát bóng, tín hiệu isDown dạng True hoặc False dùng để khởi động lại trò chơi khi trò chơi kết thúc, chức năng của từ khóa này là có thể nhập bất kỳ phím nào trên bàn phím. Trong chƣơng trình này là phím “N” để khởi động lại trò chơi: Keyboard.isDown (Char.toCode 'N')

Tín hiệu enter là dùng để sút bóng nếu cầu thủ đội A giữ bóng. Tín hiệu shift là cầu thủ đội B sút bóng. Tín hiệu dir1 là tín hiệu từ bàn phím chỉ hƣớng di chuyển của các cầu thủ 1, tín hiệu dir2 là hƣớng di chuyển của cầu thủ 2. Tín hiệu delta là tín hiệu thời gian chức năng làm cho các đối tƣợng trong chƣơng trình di chuyển mƣợt mà và động hơn.

22 type State = Play | Pause

23 type Direction = Left | Right | Down | Up

Kiểu State và Direction là kiểu dữ liệu có giá trị mặc định. Kiểu State có 2 trạng thái ngừng chơi và tiếp tục chơi. Kiểu Direction có 4 trạng thái di chuyển sang trái, phải, lên trên và xuống dƣới.

25 defaultGame : Data 26 defaultGame = { 27 state = Pause,

28 ball = Ball 0 0 200 200 False False,

29 img1 = Player 200 0 0 0 Left 0,

30 img2 = Player -200 0 0 0 Right 0

31 }

Hàm defaultGame dùng để khởi tạo các giá trị ban đầu của các đối tƣợng trong trò chơi và trạng thái ngƣời chơi. Các giá trị này sẽ đƣợc cập nhật liên tục trong quá trình chơi nếu nhƣ có sự kiện xảy ra.

64

Một phần của tài liệu Nghiên cứu lập trình phản ứng với ngôn ngữ ELM (Trang 62 - 64)