-->

  • Construct 2 Game Development by Example - Chương 3



    Chương 3. Biến và mảng


    Biến và mảng rất cần thiết cho lập trình máy tính và thiết kế game. Nếu không có chúng trò chơi sẽ không hoạt động.

    Trong chương này chúng ta sẽ đề cập đến những vấn đề sau:
    • Biến là gì?
    • Tại sao biến lại quan trọng?
    • Các loại biến khác nhau trong C2?
    • Học về mảng
    Bài 1. Giới thiệu về các biến

    Lập trình máy tính dựa trên các nguyên tắc toán học. sau tất cả, cái máy tính đầu tiên được lập trình để giải các phương trình, và sau đó các ứng dụng được phát triển. bạn có thể đã nghe nói về các biến trong các lớp học toán. Trong máy tính, các biến này rất cần thiết để tạo ứng dụng và chúng rất quan trọng trong các trò chơi. Ngay cả một trò chơi độc lập nhỏ bé cũng có thể chứa hàng trăm biến.

    Biến là nơi bạn có thể lưu trữ một lượng nhỏ dữ liệu. những dữ liệu này có thể là một cái tên, một con số, một ngày, một đối tượng trò chơi hoặc có thể là một thông tin đúng hoặc sai. Các biến cần thiết cho trò chơi vì chúng lưu trữ các mục sau:
    • Điểm
    • Tên người chơi
    • Đối tượng trò chơi
    • Vị trí chuột
    • Đầu vào bàn phím
    Để lưu trữ dữ liệu, bạn phải sử dụng đúng loại biến. chúng ta có thể suy nghĩ về các biến như các hộp và những cái bạn đưa vào hộp này phụ thuộc vào loại hộp mà nó có.

    Trong hầu hết ngôn ngữ lập trình gốc, bạn phải khai báo một biến và kiểu của nó.

    1. Biến số


    Hãy đi qua một vài loại chính của biến. đầu tiên là biến số. biến này chỉ lưu trữ số, ko có chữ cái. Điều này có nghĩa là, nếu bạn cố đặt một cái tên trong nó “John Bura”, nó sẽ không hoạt động.

    2. Các biến số nguyên


    Có rất nhiều loại khác nhau của các biến số. các biến số nguyên, được gọi là bién Int, có thể là số nguyên dương và âm – bạn không thể có số thập phân. Vì vậy, bạn có thể đặt -1 là một biến số nguyên chứ không được đặt là 1,2.

    3. Biến số thực


    Các biến số thực có thể là âm hoặc dương, và chúng cũng có thể là số thập phân. Một biến thực có thể là 1,0; -40,4; 100,1 chẳng hạn.

    Cũng có nhiều loại biến số khác. Chúng được sử dụng trong các tình huống cụ thể hơn. Đối với hầu hết các phần. biến số nguyên và số thực là những gì bạn cần biết – hãy chắc chắn đừng lẫn lộn chúng. Nếu bạn chạy một ứng dụng với một loại không phù hợp, rất có thể nó sẽ không hoạt động.

    4. Biến chuỗi


    Còn một loại biến khác thực sự rất quan trọng. Loại biến này được gọi là biến chuỗi. biến chuỗi bao gồm các chữ cái hoặc các từ. điều này có nghĩa là nếu bạn muốn ghi lại tên các nhân vật, thì bạn phải sử dụng biến chuỗi. trong hầu hết các ngôn ngữ lập trình, biến chuỗi phải ở trong dấu ngoặc kép, ví dụ “John Bura”. Các trích dẫn báo cho máy tính biết rằng các kí tự bên trong thực sự là các chuỗi mà máy tính có thể sử dụng.

    Khi bạn đặt một số 1 vào trong chuỗi, nó là số thực 1 hay chỉ là số giả? Đó chỉ là một số giả vì đây không phải là số - chúng là chuỗi. mặc dù chuỗi hiển thị số 1, nhưng nó không thực sự là số 1. Các chuỗi để hiển thị kí tự, và các số có nghĩa là để làm toán. Chuỗi không có nghĩa là làm toán, chúng chỉ giữ các kí tự. nếu bạn cố gắng làm toán với một chuỗi, nó sẽ không hoạt động (ngoại trừ trong JavaScript).

    Chuỗi không nên được sử dụng cho tính toán – chúng chứa và hiển thị các nhân vật. nếu chúng ta có chuỗi “1”, nó sẽ được ghi lại dưới dạng một kí tự thay vì một số nguyên có thể được sử dụng cho tính toán.

    5. Biến logic


    Kiểu biến cuối cùng mà ta cần nhắc đến đó chính là biến logic. Biến logic là biến đúng hay sai, và chúng rất quan trọng khi làm game. Chúng được sử dụng khi có sự lựa chọn. sau đây là ví dụ:
    • isAlive
    • isShooting
    • isInAppPurchaseCompleted
    • isConnectedToInternet
    Hầu hết các biến đều bắt đầu bằng các từ này. Điều này thường được sử dụng để biểu thị rằng biến mà chúng ta đang sử dụng là một logic. Khi bạn tạo một trò chơi, bạn sẽ có xu hướng tạo rất nhiều biến logic bởi vì có rất nhiều trạng thái mà đối tượng trò chơi có thể có. Thông thường, các trạng thái này chỉ có 2 lựa chọn, và điều tốt nhất đó chính là sử dụng một biến logic.

    Đôi khi bạn phải sử dụng một biến số nguyên thay vì logic. Thông thường thì 0 là sai còn 1 là đúng. Chúng ta sẽ sử dụng chúng trong C2 sau này.

    6. Các biến khác


    Khi nói về sản xuất trò chơi, có rất nhiều các biến cụ thể khác nhau từ môi trường này đến môi trường khác. Đôi khi, có các biến GameObject, và cũng có thể là toàn bộ các biến cụ thể hơn.


    Bài 2. Khai báo biến

    Nếu bạn muốn lưu trữ bất kì dữ liệu nào trong biến, trước tiên bạn phải khai báo chúng. Trong backend của C2, có rất nhiều biến đã được khai báo cho bạn. điều này có nghĩa là C2 đưa ra công việc khai báo biến. các biến được chăm sóc cho bạn bao gồm:
    • bàn phím
    • vị trí chuột
    • góc chuột
    • loại trình duyệt web
    Viết các biến trong đoạn mã

    Khi chúng ta sử dụng C2, có rất nhiều các công đoạn khó khăn đã được thực hiện cho chúng ta. Vì vậy, ta sẽ khai báo biến trong code như thế nào? Thông thường, các biến được khai báo ở đầu tài liệu mã hóa:

    Int score;
    Real timescale = 1.2;
    Bool isDead;
    Bool isShooting = false;
    String name = "John Bura";

    Hãy nhìn vào chúng. Loại biến được liệt kê đầu tiên. Trong trường hợp này, chúng ta có các biến Int, Real, Bool (Boolean), và String. Tiếp theo chúng ta có tên của biến. nếu bạn cẩn thận, bạn có thể thấy các biến nhất định có 1 dấu = và một số thì không có. Khi chúng ta có một biến với dấu bằng, chúng ta khởi tạo nó. Điều này có nghĩa là chúng ta thiết lập thông tin trong nó ngay. Thỉnh thoảng bạn cần làm điều này vào những lúc khác. Ví dụ, một điểm số không cần được khởi tạo bởi vì chúng ta sẽ thay đổi điểm số khi trò chơi phát triển.

    Như bạn đã biết, bạn có thể khởi tạo một biến Boolean thành đúng hoặc sai – đây là 2 trạng thái duy nhất một biến Boolean có thể được nhập. bạn cũng nhận thấy rằng có đầu ngoặc kép ở biến chuỗi.

    Đây là một ví dụ bị lỗi:

    Int score = -1.2;
    Bool isDead = "false";
    String name = John Bura;

    Có một vài thứ sai trong ví dụ này. Đầu tiên, biến Int không được có thập phân. Thứ hai, biến Bool có dấu ngoặc kép. Cuối cùng, biến String không có ngoặc kép. Trong hầu hết các môi trường, điều này sẽ khiến chương trình không làm việc. tuy nhiên, trong HTML5 hoặc JavaScript, biến được thay đổi để phù hợp với tình huống.



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


    Bài 3. Biến trong JavaScript


    C2 xuất game sang HTML5, điều này có nghĩa là rất nhiều chức năng trong C2 được viết bằng JavaScritpt (JS). Trong JS, loại của biến không được xác định cho đến khi bạn khởi tạo nó. Mặc dù điều này làm JS trở nên dễ dàng hơn, nhưng nó cũng có ưu nhược điểm. nhược điểm lớn nhất là đôi khi bạn quên rằng các biến thuộc loại nào, dẫn đến kết quả không mong muốn khi chạy ứng dụng. 

    Kiểm tra mã JS



    JS là một ngôn ngữ web rất phổ biến. nó dễ dàng code hơn hầu hết các ngôn ngữ lập trình khác.

    Chúng ta hãy xem xét một số ví dụ về mã JS.

    var score;
    var timescale = 1.2;
    var name = "John Bura";
    var playerName;

    Bạn sẽ nhận ra rằng tất cả các biến đơn giản được gọi là var thay vì Int, Bool, String Real. Điều này có nghĩa là, đến khi bạn khởi tạo biến, var có thể là bất cứ cái gì bạn muốn.

    Vì vậy trong trường hợp này, score ko phải là một số, nó đơn giản chỉ là 1 biến. tuy nhiên timecase lại là một biến số bởi vì ta khởi tạo nó với dấu =. Tương tự, var name là một chuỗi trong khi đó var playerName chỉ đơn giản là một biến. bản chất của chúng không được thiết lập cho tới khi chúng được khởi tạo. JS trở nên phổ biến vì bạn có thể có ít mã khó nhằn hơn và nó vẫn hoạt động.

    Bây giờ, trong JS, có một vài thứ không xảy ra trong hầu hết các môi trường – bạn có thể trộn và kết hợp các biến. tôi khuyên bạn không nên làm điều này. Là một lập trình viên đã bắt đầu với các giá trị nguyên và chuỗi, tôi đánh giá cao việc bạn giữ nguyên các biến đã tổ chức. nếu bạn trộn lẫn và kết hợp các biến và đơn giản là ko quan tâm, bạn sẽ gặp khó khăn khi xuất bản game – và xuất bản game là việc rất quan trọng đấy.


    Bởi vì C2 được xuất từ JS nên rất quan trọng về việc hiểu một chút căn bản cách hoạt động của nó. Điều quan trọng hơn là biết về các biến hiện tại, bởi vì ngay cả trong JS bạn cũng phải sử dụng các loại biến khác nhau.


    Bài 4. Biến trong Construct 2


    Giống như hầu hết các thứ trong C2, biến rất đơn giản. mặc dù là việc thêm các biến vô cùng khó nhằn với các ngôn ngữ lập trình khác nhưng với C2 nó chỉ là trò trẻ con.

    1. Thêm biến


    Thêm biến vào trong trò chơi thực sự rất quan trọng. nếu không có biến, bạn không thể lưu trữ bất kì dữ liệu nào. Điều này sẽ làm cho trò chơi hầu như không có tính năng gì, và nó sẽ hạn chế game của bạn thành một game nhỏ.

    Để thêm biến, đi tới event sheet và kích chuột phải vào nó. Nó sẽ cho bạn một menu. Kích vào biểu tượng Add event sẽ cho phép bạn thêm biến:




    Có 2 loại biến trong C2: global (toàn cầu) và local (địa phương). Biến có thể được nhìn ở các nơi khác nhau. Biến toàn cầu sẽ được nhìn thấy trong toàn bộ trò chơi. Còn biến địa phương chỉ có thể nhìn bơi một đối tượng game hoặc một tính năng.

    2. Tạo biến toàn cầu


    Kích chuột phải vào event sheet và chọn Add global variable:


    Như bạn thấy ở ảnh chụp màn hình trước, có 4 phần. bạn có thể đặt tên cho biến một cách dễ nhớ. Đặt một cái tên dễ nhớ sẽ khiến quá trình xây dựng trơ nên trơn tru hơn. Có thể đặt như là score, numberOfShoot hay là powerUpLevel. Bạn ko được để dấu cách ở tên biến – máy tính sẽ ko cho phép.

    Như bạn cũng thấy ở đây, bạn có 2 TypeNumberText. Phần intial value là nơi bạn có thể khởi tạo các biến. C2 sẽ tự động khởi tạo phần này cho bạn; tuy nhiên, nếu bạn muốn có 1 con số hay cái tên, bạn có thể đặt nó vào đây. Hãy nhớ rằng, nếu bạn làm một biến văn bản, bạn sẽ không thể tính toán với nó, bạn chỉ có thể tính toán với các biến số.

    Phần Description là phần mô tả, nó sẽ giúp bạn dễ nhận ra biến này là cái gì, phòng khi trò chơi của bạn có hơn 100 biến :’))).

    3. Tạo biến điểm số


    Hãy tạo ra một biến Score để theo dõi điểm số. một lần nữa, biến lưu trữ các dữ liệu. chúng ta cần phải thiết lập một biến Score để lưu trữ dữ liệu điểm số. bất cứ khi nào bạn cần lưu trữ một lượng thông tin nhỏ, bạn cần tạo một biến.


    Tiếp tục và ấn OK.


    Ở ảnh trước, bạn có thể thấy biến Score trông như thế nào trong C2. Bạn có thể thấy nó ở đầu event sheet – nó sẽ ở đầu event sheet, giống như các biến trong ngôn ngữ lập trình khác.

    4. Thêm một biến vào một sprite


    Hãy thêm một biến địa phương. Thêm một sprite vào trò chơi và chọn nó. Bạn sẽ thấy cài này, trong cửa sổ Properties ở bên tay phải có một thứ được gọi là Instance variable (biến thực thể). Đây chính là biến địa phương, nó có nghĩa là đối tượng này chỉ là một đối tượng trò chơi mà sử dụng các biến này. Thông thường, các biến thực thể thường là các biến như sinh mạng, máu, giáp và các chỉ số khác. Mội đối tượng game lại có các biến khác nhau.


    Tiếp tục và kích vào Instance variable.


    Kích vào dấu cộng để thêm biến. cửa sổ New Instance variable sẽ xuất hiện:


    Tại đây bạn sẽ thấy một hộp thoại giống như hộp thoại của biến toàn cầu. sự khác biệt duy nhất là bây giờ bạn có thể thêm loại Boolean. Hầu hết các phần, các tùy chọn đều giống nhau.

    5. Tạo một biến sinh mạng


    Hãy đi tiếp và tạo một biến health và gán cho nó Intial value là 100 trong cửa sổ trước. bạn có thể đặt tên biến là bất cứ thứ gì bạn muốn. bạn có thể đặt là banana nếu bạn thích. Đặt tên cho biến sẽ giúp ta dễ hiểu giá trị mà biến đang giữ. Bằng cách thiết lập biến health, chúng ta hiện tại đang có một hòm chứa các con số sinh mạng. bằng cách này, ta có thêm sự kiện để cộng hoặc trừ giá trị sinh mạng. chúng ta có thể thiết lập game logic để di chuyển tới màn hình game over nếu sinh mạng dưới 0. Game logic đơn giản chỉ là logic cần để tạo game. Nó cũng có thể được gọi là programming. Chú ý health không được viết hoa. Điều này là do biến địa phương thường không được viết hoa. Điều này không có quy ước cụ thể nhưng các lập trình viên thường coi biến toàn cầu viết hoa còn biến địa phương thì ko. Lí do là để khi bạn nhìn vào màn hình, bạn có thể nhận ra ngay đâu là biến toàn cầu, đâu là biến địa phương. Các lập trình viên khác có thể có cách phân biệt khác. Chính vì vậy nếu có làm việc với họ, hãy chắc chắn rằng bạn biết họ nghĩ gì. 


    Nếu bạn có được một màn hình như bên trên, kích OK.


    Bây giờ bạn đã có một biến thực thể rồi đấy.

    6. Giới thiệu về mảng


    Mảng thật sự ảnh hưởng đến thiết kế game. Về cơ bản, mảng là một lưới dữ liệu. chúng ta có thể lấp đầy mạng lưới này với bất kì thông tin nào mà chúng ta muốn. trong quá khứ, mảng được sử dụng rất nhiều vì công nghệ bị hạn chế, thậm chí ngày nay vẫn được sử dụng và rất hữu ích. Đây là một hình đại diện của mảng:


    Một mảng là một bảng dữ liệu. bạn có thể đã thấy điều này trong một chương trình bảng tính. Chúng ta có thể lưu trữ nhiều mục dữ liệu trong các mảng. điều này khác với các biến vì chúng ta thêm số lượng lớn dữ liệu.


    Chúng ta có thể sử dụng mảng trong các trường hợp sau:
    • để lưu đa điểm của dữ liệu
    • để lưu trữ thông tin đối tượng trò chơi
    • để sử dụng một tile map
    • để tạo trạng thái save lưu lại lượng lớn thông tin
    • Tạo dữ liệu giúp ta tiết kiệm thời gian trong suốt sự phát triển
    7. Thêm mảng vào Construct 2



    Làm thế nào để ta có thể thêm mảng vào C2? Điều đầu tiên bạn cần làm là thêm đối tượng Array. Một khi chúng ta làm điều đó, chúng ta có thể truy cập tất cả tính năng của mảng. chúng ta cũng có thể thiết lập rất nhiều các mảng khác nhau mà ta muốn. nháy đúp chuột vào nền của layout, nhấp vào Array:


    Bài 5. Kiểm tra thuộc tính của mảng

    Một khi bạn làm điều này, bạn có thể thấy các loại đối tượng được gọi là một mảng. điều này giống như việc thêm một sprite. Bạn có thể có nhiều sprite trong một trò chơi cũng như có thể có nhiều mảng trong một trò chơi. Nếu bạn muốn thêm nhiều hơn một mảng, đơn giản, nháy đúp chuột vào nền layout và thêm một cái nữa. nếu bạn muốn thay đổi tên của mảng, bạn chỉ cần chọn nó, ấn nút F2 và sau đó đổi tên là được. kích vào mảng ở phía bên phải rồi nhìn sang bên trái để thấy các thuộc tính của mảng:


    Bạn có thể thấy thuộc tính của mảng trong ảnh chụp màn hình trước đó. Nó có chiều rộng, chiều dài, chiều sâu. Điều này có nghĩa là các mảng có thể là một chiều, 2 chiều hay 3 chiều. hiện tại chúng ta có mảng một chiều, tức là nó chỉ có chiều rộng. trong trường hợp này, mảng sẽ là một hàng đơn và trông như sau:


    Nó có chiều rộng là 10 ô, chiều cao và chiều sâu là 1 ô. Đối với hầu hết các phần, bạn nên bắt đầu với mảng dễ dàng. Hầu như các nhà phát triển mới đầu đều bị lẫn lộn vì sự phức tạp.


    Một điều nữa về mảng đó là nó bắt đầu từ số 0. 




    Điều này có vẻ kì lạ, nhưng trong tính toán, bắt đầu một chuỗi số thường là 0 thay vì là 1. Trong trường hợp này, vẫn còn 10 ô hoặc hộp mà ta có thể đặt dữ liệu vào.


    Hãy đi tới event sheet và thêm sự kiện mảng. chúng ta có thể thêm nhiều sự kiện mảng:



    1. Thiết lập dữ liệu và thêm các biến


    Cần lưu ý rằng bạn cũng có thể thêm một biến thực thể vào mảng đó. Phần lớn điều này thường ko được thực hiện, nhưng trong một vài trường hợp nhất định, chẳng hạn như khi gán các mảng khác nhau vào các đối tượng khác nhau, điều này có thể hữu ích.


    Một trong những nhiệm vụ quan trọng nhất bạn cần làm với các mảng là thiết lập và tìm kiếm dữ liệu. hãy tiếp tục và đặt ô đầu tiên là số 9. Kích vào Add action và thiết lập X thành 0 và Value thành 9. 




    Khi làm xong điều này, kích vào Done:


    Điều này có nghĩa là ô đầu tiên được thiết lập giá trị là 9. Hãy nhớ rằng 0 là ô đầu tiên và ô 1 là ô thứ 2:


    Các ô khác là 0 vì chúng chưa được thiết lập.

    2. Kiểm tra mảng dữ liệu


    Bây giờ chúng ta đã biết chách thiết lập một mảng, vầy ta kiểm tra mảng cho dữ liệu như thế nào? Trong trường hợp này, chúng ta sẽ kiểm tra xem ô đầu tiên có bằng 9 hay ko. Nháy đúp chuột vào layout và ấn vào Array. Khi bạn làm xong, bạn có thể kích vào Compare at X. cái này sẽ so sánh giá trị X của mảng:


    Một khi bạn ở trong cửa sổ Add event, bạn có thể kiểm tra bất kì giá trị nào mà bạn muốn. trong trường hợp này, chúng tôi muốn kiểm tra ô đầu tiên và sau đó kiểm tra giá trị, cái mà bằng 9. Chúng ta chỉ thiết lập cái này ở cuối sự kiện, chính vì vậy hãy giữ nó một cách chắc chắn.


    Một khi bạn đã thêm hành động này, bạn có thể thêm bất kì hành động nào mà bạn muốn trong trò chơi.

    Bây giờ bạn đã biết một chút về mảng. khi bạn mới bắt đầu, tôi khuyên bnaj hãy sử dụng biến vì chúng dễ làm việc hơn. Một khi chương trình của bạn trở nên phức tạp, hãy bắt đầu sử dụng mảng. và bạn nên bắt đầu với mảng một chiều, và một khi bạn rất thoải mái khi sử dụng chúng, hãy chuyển sang mảng 2 chiều. bạn sẽ sử dụng cả mảng 3 chiều trong một vài trường hợp.


    Đây là một ví dụ về mảng mà bạn sử dụng trong trò chơi. Bạn có thể dùng chúng để miêu tả thuộc tính của bất kì đối tượng game nào.


    Bạn có thể sử dụng mảng này để miêu tả các đặc tính khác nhau cho nhân vật. trong trường hợp này, mảng được thực hiện cho mỗi nhân vật. rất nhiều game RPG làm như thế. Đây là một ví dụ:


    Tổng kết

    Trong chương này, chúng ta đã học cách thêm biến toàn cầu và biến địa phương. Thêm biến là một tính năng quan trọng trong game. Thông thường bạn sẽ có hàng trăm biến ở các game đơn giản. nếu bạn làm một game, hãy làm quen với việc tạo và thiết lập nhiều biến. điều tốt nhất là C2 đã làm cho các biến được xử lí dễ dàng.


    Trong chương tiếp theo, chúng ta sẽ học về cơ chế game. Cơ chế game chính là xương sống quan trọng cho sự tương tác của người dùng.


    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