-->

  • Learning Construct 2 - Chương 6 - Phần 2



    Bài 2. Lưu trữ dữ liệu trong Construct 2

    Như ở mấy chương trước thì tôi sẽ chỉ cho bạn cách phá hủy kẻ địch và thêm điểm vào trò chơi. Tuy nhiên, trọng tâm của chương này là lưu trữ dữ liệu trò chơi nên tôi sẽ trình bày phần này trước. Có 4 đối tượng ta có thể sử dụng để lưu trữ dữ liệu trong C2: array (mảng), dictionary (từ điển), WebStorage và XML. Chúng ta sẽ ko đề cập đến XML trong cuốn sách này vì nó khá khó khăn cho người mới lập trình, nhưng chỉ cần 3 cái đầu tiên là đủ rồi.

    1. Làm quen với mảng

    Một mảng, trong ngôn ngữ lập trình, là một danh sách các thứ đã được ra lệnh. Một mảng có thể là tất cả giá trị văn bản, tất cả giá trị chữ số, hoặc là một kết hợp giữa văn bản và số. Trong ngôn ngữ lập trình, các mảng được viết như là một danh sách dữ liệu trong dấu ngoặc vuông. Ví dụ, một mảng về các đất nước sẽ là [“ Canada”, “ USA “, “ Viet Nam “, “ Japan “, “ China”, “Laos”], trong khi bảng của giá trị chữ số là [100, 250, 23, 12, 1998].

    Một điều cần nhớ khi xử lí các mảng là không dựa trên những danh sách đã liệt kê, nghĩa là chúng bắt đầu với 0 thay vì 1. Chính vì vậy, trong danh sách các quốc gia, Canada sẽ là số 0, Việt Nam sẽ là số 2. Hãy nhớ vì đây là một lỗi mà mọi người hay mắc phải.

    2. Tìm hiểu về các yếu tố của một mảng

    Theo mặc định, mảng của C2 chưa 10 thành viên rỗng. Thành viên là các yếu tố giá trị được lưu trữ trong một mảng. Lấy mảng về các quốc gia làm ví dụ, chúng ta có thể đánh số các thành viên như sau:

    Countries [0] = “ Canada “
    Countries [1] = ” USA “
    Countries [2] = “ Viet Nam “
    Countries [3] = “Japan “
    Countries [4] = “ China “
    Countries [5] = “ Laos “
    Countries [6] = empty
    Countries [7] = empty
    Countries [8] = empty
    Countries [9] = empty
      
    Khi bạn muốn thêm một thành viên khác vào mảng, bạn phải thêm nó vào giữa phạm vi tổng của các phần tử (tôi sẽ giải thích điều này trong phần Sử dụng mảng trong khi làm game). Chính vì vậy, bạn có thể thêm countries [6] qua countries [9]; hãy thử thêm 1 phần tử cho countries [11], sẽ ko có gì xảy ra cả. Nó sẽ không thay đổi mảng nào cả. Nếu bạn muốn thêm nhiều thành viên hơn tổng số phần tử của mảng, bạn phải thay đổi độ dài của nó trước tiên.

    Độ dài là tổng số phần tử mà mảng có thể chứa. Một mảng có 10 thành viên tức là độ dài của nó là 10. Để thêm 15 hay 20 thành viên, bạn phải thay đổi độ dài của nó.

    Để thay đổi độ dài của mảng, ta chỉ cần thay đổi giá trị của nó trong thanh Properties. Trong ảnh chụp màn hình sau đây, Width là chiều dài trục x của mảng, Height là chiều dài trục y, và Depth là chiều dài trục z. Thông tin về những trục này sẽ được giải thích ở phần tiếp theo.


    3. Mảng một chiều và mảng đa chiều

    Những gì tôi sắp giới thiệu ở sẽ sẽ có chút khó khăn cho người mới, nhưng đây là một tính năng của mảng và đối tượng mảng mà C2 hỗ trợ, nên tôi phải nói về nó. Có 2 loại mảng:
    • Mảng một chiều: đây là các mảng chỉ chứa dữ liệu một chiều trên trục x. Một ví dụ về mảng mộ chiều là dữ liều về các quốc gia va con số mà tôi đã đề cập ở trên.
    • Mảng đa chiều:  đây là những mảng chứa dữ liệu nhiều hơn mảng một chiều. Một mảng 2 chiều được coi như là một bảng nơi dữ liệu được lưu trữ ở trục x và y của nó. Ví dụ về cái này là một bảng mà chứa các chỉ số của mỗi kẻ thù như sau:


    Mảng đa chiều khác là một mảng 3 chiều nơi dữ liệu được lưu trữ ở trục x,y và z. Điều này có thể được nhìn thấy khi bạn lưu trữ dữ liệu trong một kho lưu trữ hình khối lập phương. Nói chung, bạn có thể ko cần mảng đa chiều trong trò chơi của mình. Đối với một trò chơi đơn giản, mảng một chiều là đủ để lưu trữ dữ liệu.



    WAITING FOR LUV
    Bạn có muốn cải thiện khả năng thiết kế đồ họa của mình? Chắc hẳn các bạn cũng biết, nếu các dòng code là linh hồn của một trò chơi, thì đồ họa chính là bộ mặt của trò chơi đó. Đồ họa đẹp, dễ nhìn sẽ khiến trò chơi của bạn tăng tỉ lệ hấp dẫn người xem đến 90%. Hiện tại có hai công cụ hỗ trợ thiết kế đồ họa game tiện nhất mà mình biết, đó là Photoshop và Illustrator. Mình sẽ cố gắng tìm kiếm và chia sẻ các đồ họa game miễn phí cho các bạn tại blog này; tuy nhiên, một trò chơi mà 100% do chính mình tạo ra vẫn hơn là đi cóp nhặt hình ảnh từ nơi khác đúng không nào. Tiện đây, mình có chia sẻ một khóa học thiết kế đồ họa Game 2D cho Mobile. Các bạn có thể tham khảo dưới đây để được giảm 40% học phí nhé.


    4. Lưu trữ dữ liệu trong một từ điển (Dictionary)

    Một từ điển khá giống với một mảng, nó có nghĩa là cũng lưu trữ giá trị văn bản và số. Tuy nhiên, có 2 sự khác biệt trong từ điển: nó không sắp đặt các thành viên và giá trị lưu trữ của nó kết hợp với các khóa. Một mảng có thành viên đầu tiên trong mục lục là số 0, trong từ điển thì ko có thứ tự như thế này.

    Một từ điển lưu trữ các giá trị của nó liên kết với các khóa. Các khóa là chuỗi văn bản được sử dụng để truy cập giá trị. Chính vì vậy, ví dụ, chính ta lưu trữ giá trị của Joe với khóa username, và giá trị 250 với khóa scores. Khôi phục khóa username sẽ cho chúng ta Joe, và khôi phục khóa scores sẽ cho chúng ta 250. Hãy nhớ rằng các phím được phân biệt chữ hoa và chữ thường, chính vì vậy username và Username là 2 giá trị lưu trữ khác nhau.

    5. So sánh giữa mảng (array) và từ điển

    Bây giờ, bạn đã biết mảng và từ điển khá giống nhau, nhưng có một vài sự khác biệt:


    Ghi nhớ sự khác biệt, những tình huống ta sử dụng mảng và những tình huống ta sử dụng từ điển. Ta sẽ sử dụng mảng khi:
    • Bạn muốn sắp xếp dữ liệu, dù là tăng hay giảm.
    • Muốn lấy lại giá trị bằng một số quy tắc toán học; ví dụ, chúng ta có thể chỉ muốn xem thành viên 1 đến 5.
    • Lưu trữ dữ liệu phức tạp bằng mảng đa chiều.
    Chúng ta sẽ sử dụng từ điển khi:
    • Muốn tạo các danh sách giá trị chúng ta muốn liên kết với một cái tên.
    • Muốn khôi phục dữ liệu dựa vào văn bản; ví dụ, chúng ta có thể tạo ra 1 từ điển upgradePoint và lưu trữ giá trị với khóa hero1. Khi chúng ta muốn thêm nâng cấp cho hero1, chúng ta phải gọi từ điển với khóa hero1.

    6. Sử dụng những mảng trong trò chơi của bạn

    Được rồi, tôi đã giải thích rất nhiều về mảng và từ điển; bây giờ là lúc đưa chúng vào sử dụng. Trước hết, ta hãy tạo một biến toàn cầu tên là Scores với loại là Number; chúng ta sẽ sử dụng cái này để lưu trữ điểm của chúng ta. Sau đó, hãy thêm một đối tượng mảng tới game project; những đối tượng mảng sẽ được thêm vào toàn bộ dự án. Đặt tên đối tượng này là scoreArray.

    Chúng ta sẽ tăng giá trị điểm số lên 10 mỗi khi tàu của kẻ đich bị phá hủy. Chúng ta sẽ phá hủy tàu địch mỗi lần nó trúng laze của người chơi. Thông thường, ở các game bắn máy bay khác, kẻ địch sẽ có máu và giảm dần xuống đến khi bị phá hủy; những trong game này, kẻ địch của chúng ta sẽ bị phá hủy trong một phát bắn. Chính vì vậy, chỉnh sửa sự kiện nơi playerBullet trúng kẻ địch, sau đó chúng ta sẽ thêm sự kiện khi kẻ địch bị tiêu diệt.


    Chúng ta đã thêm một giá trị cho biến toàn cầu, nhưng chúng ta chưa thêm nó tới mảng của chúng ta. Có 2 cách để thêm một phần tử vào 1 mảng:
    • Đẩy nó: Push là một lệnh thông thường trong ngôn ngữ lập trình truyền thống khi bạn muốn chèn một phần tử vào một mảng. Có 2 cách đẩy: đẩy trước và đẩy sau. Đẩy sau là chèn một phần tử tới cuối mục lục của mảng; ví dụ, nếu một mảng của 10 phần tử rỗng là đẩy ngược, thì thành viên mới là mục lục 9. Nếu nó đẩy ngược lại lần nữa, thì phần tử đầu tiên là mục lục 8, phần từ mới là mục lục 9, vân vân. Đẩy trước cũng như đẩy ngược, nhưng phần tử mới đước đẩy tới mục lục đầu tiên của một mảng.
    • Thiết lập giá trị tại một vị trí: thiết lập giá trị tại một vị trí rất dễ hiểu, vì nó ko thay đổi vị trí của thành viên khác của mảng trừ khi nó cùng một vị trí. Vì vậy, sử dụng các mảng quốc gia chúng ta thấy từ trước, chúng ta biết mục lục 6 đến 9 là trống rỗng, thêm Cuba vào mục lục số 7 sẽ không làm thay đổi vị trí của các phần tử khác; nó đơn giản là thêm một giá trị mới. Điều quan trọng nhất để nhớ ở đây là nó sẽ xóa vị trí cũ nếu vị trí mục lục chỉ định đã có một giá trị. Vì vậy, ví dụ, nếu chúng ta chèn Mexico vào mục lục 2, nó sẽ xóa USA và thay bằng Mexico.

    Chúng tôi cho phép người chơi thu thập càng nhiều điểm số càng tốt trước khi chúng tôi lưu điểm vào mảng của chúng tôi. Chúng tôi sẽ làm điều này khi người chơi bị tiêu diệt, chính vì vậy hãy chỉnh sửa sự kiện nơi viên đạn của kẻ địch trúng người chơi và thêm một sự kiện khác khi người chơi bị tiêu diệt:

    Code cho On destroyed như sau:

    Điều này sẽ thiết lập giá trị của scoresArray ở mục lục 0 tới biến scores. Khi thiết lập giá trị, bạn có thể thấy hành động set at XY và set at XYZ. Chúng ta sẽ sử dụng set at X. 2 cái kia được sử dụng khi bạn chèn giá trị vào mảng đa chiều mà tôi đã giải thích bên trên.


    Bản dịch do construct2vn.ga thực hiện
    Ai sao chép hay chia sẻ hãy ghi nguồn và đưa link www.construct2vn.ga vào đầu bài chia sẻ nhé

  • DONATE TINH THẦN CHO BLOG TẠI ĐÂY

    Nếu các bạn thấy blog có ích hãy ủng hộ blog hàng ngày tại đây. Chỉ cần thi thoảng chơi game và tìm bug cho tụi mình là được. Đây là ủng hộ tinh thần, không phải tiền mặt, vật chất và không bắt buộc. Xin chân thành cảm ơn ahihi. Chúc các bạn một ngày zui zẻ.

    TELEPHONE

    02273 7x2 xxx
    02273 xxx 27x

    MOBILE

    0162 x15 xx33