Tuesday, November 29, 2016

Unity3D Flip Card Game Part 2




Objective: Putting different images on cards

File name: GameScript.js

var cols: int = 4; // the number of columns in the card grid
var rows: int = 4; // the number of rows in the card grid
var totalCards: int = cols * rows; // I think the answer is 16, but I was never good with numbers.
var matchesNeededToWin: int = totalCards * 0.5; // If there are 16  cards, the player needs to find 8 matches to clear the board
var matchesMade: int = 0; // At the outset, the player has not made any  matches
var cardW: int = 100; // Each card's width and height is 100 pixels
var cardH: int = 100;
var aCards: Array; // We'll store all the cards we create in this Array
var aGrid: Array; // This array will keep track of the shuffled, dealt  cards
var aCardsFlipped: ArrayList; // This array will store the two cards that the player flips over
var playerCanClick: boolean; // We'll use this flag to prevent the player from clicking buttons when we don't want him to
var playerHasWon: boolean = false; // Store whether or not the player has won. This should probably start out false :)

function Start() {
    playerCanClick = true; // We should let the player play, don't you think?
    // Initialize the arrays as empty lists:
    aCards = new Array();

    aGrid = new Array();
    aCardsFlipped = new ArrayList();

    BuildDeck();

    for (i = 0; i < rows; i++) {
        aGrid[i] = new Array(); // Create a new, empty array at index i
        for (j = 0; j < cols; j++) {
            var someNum: int = Random.Range(0, aCards.length);
            aGrid[i][j] = aCards[someNum];
            aCards.RemoveAt(someNum);
        }
    }
}

function OnGUI() {
    GUILayout.BeginArea(Rect(0, 0, Screen.width, Screen.height));
    BuildGrid();
    GUILayout.EndArea();
    print("building grid");
}

function BuildGrid() {
    GUILayout.BeginVertical();
    GUILayout.FlexibleSpace();
    for (i = 0; i < rows; i++) {
        GUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        for (j = 0; j < cols; j++) {
            var card: Object = aGrid[i][j];
            if (GUILayout.Button(Resources.Load(card.img),
                    GUILayout.Width(cardW))) {
                Debug.Log(card.img);
            }
        }
        GUILayout.FlexibleSpace();
        GUILayout.EndHorizontal();
    }
    GUILayout.FlexibleSpace();
    GUILayout.EndVertical();
}

class Card extends System.Object {
    var isFaceUp: boolean = false;
    var isMatched: boolean = false;
    var img: String;

    function Card(img: String) {
        this.img = img;
    }
}

function BuildDeck() {
    var totalRobots: int = 4; // we've got four robots to work with
    var card: Object; // this stores a reference to a card

    for (i = 0; i < totalRobots; i++) {
        var aRobotParts: Array = ["Head", "Arm", "Leg"];
        for (j = 0; j < 2; j++) {
            var someNum: int = Random.Range(0, aRobotParts.length);
            var theMissingPart: String = aRobotParts[someNum];
            aRobotParts.RemoveAt(someNum);
            card = new Card("robot" + (i + 1) + "Missing" + theMissingPart);
            aCards.Add(card);
            card = new Card("robot" + (i + 1) + theMissingPart);
            aCards.Add(card);
        }
    }
}


No comments:

Post a Comment