Thread: Classic memory game board (size 4 * 5)

  1. #1
    Registered User
    Join Date
    Feb 2013
    Location
    Sweden
    Posts
    171

    Question Classic memory game board (size 4 * 5)

    Hi! I've made a program where the user inputs a row and a column for two cards turned down. If the cards are the same number, it's a match. Don't misunderstand me, according to the first sentence. It should work like the classic game Memory.

    Example run:

    ----0 1 2 3 4
    --|-------------
    0 | * * * * *
    1 | * * * * *
    2 | * * * * *
    3 | * * * * *

    First card (row, col): 0 0
    Second card (row, col): 1 0
    Match!

    ----0 1 2 3 4
    --|-------------
    0 | 6 * * * *
    1 | 6 * * * *
    2 | * * * * *
    3 | * * * * *

    I have fixed so that I get the correct index for the card in a shuffled array. But I also need to print that card in a different function. In this function I don't know how to reach these variables since they're in the main block (Without using Object Oriented Programming).

    main
    A piece of code of the main-block
    Code:
    		printf("\nFirst card (row, col): "); 
    		scanf("%d %d", &cardRow1, &cardCol1); 
    		printf("\nSecond card (row, col): "); 
    		scanf("%d %d", &cardRow2, &cardCol2); 
    	
    		int getCard1, getCard2;
    		
    		getCard1 = gameBoard[setCardIndex(cardRow1, cardCol1)]; // cardRow1*COLS + cardCol1
    		getCard2 = gameBoard[setCardIndex(cardRow2, cardCol2)]; // cardRow2*COLS + cardCol2
    Code:
    int prtCards(int arr[], int taken[], int sizeOfArr) {
        
        printf("\n\n    0  1  2  3  4");
        printf("\n--|--------------"); 
        
        int i, rows = 0; 
        int j = 0; 
        for (i = 0; i < ROWS; i++) {
                if (taken[i] == 0)
                    printf("\n%d | * ", rows);
                else
                    printf("\n%d | %d ", rows, arr[i*COLS + j]);
    
    
            for (j = 0; j < ROWS; j++) {
                if (taken[i] == 0)
                    printf(" * ");
                else 
                    printf(" %d ", arr[i*COLS + j]); // i*COLS+j
            } 
            rows++;
        }
    
    
    }
    taken[] - if a pair of cards have been found set taken[i] = 1

    printf("\n%d | %d ", rows, arr[i*COLS + j]);
    should be something like this
    printf("\n%d | %d ", rows, arr[userRow*COLS + userCol]);
    Last edited by DecoratorFawn82; 12-02-2017 at 07:29 AM.

  2. #2
    Banned
    Join Date
    Aug 2017
    Posts
    861
    you should post your entire code.
    Last edited by userxbw; 12-02-2017 at 01:31 PM.

  3. #3
    Registered User
    Join Date
    Jun 2017
    Posts
    88
    you should post your entire code.
    I agree
    This is a fun problem though I think. I coudln't resist making my own version with deal and print.
    Code:
    #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>
    #include <string.h>
    
    #define SIZE 10
    
    void dealArea(int playArea[SIZE][SIZE]);
    void printArea(int playArea[SIZE][SIZE], int visibleArea[SIZE][SIZE]);
    
    int main(void) {
        srand((unsigned int)time(NULL));
    
        int playArea[SIZE][SIZE];
        memset(playArea, -1, sizeof(playArea[0][0]) * SIZE * SIZE);
        int visibleArea[SIZE][SIZE] = { 0 };
    
        dealArea(playArea);
        printArea(playArea, visibleArea);
    }
    
    void dealArea(int playArea[SIZE][SIZE]) {
        for (int num = 0; num < SIZE * SIZE / 2; ++num) {
            for (int pair = 0; pair < 2; ++pair) {
                int row = rand() % SIZE;
                int col = rand() % SIZE;
                while (playArea[row][col] != -1) {
                    ++col;
                    if (col == SIZE) {
                        ++row;
                        col = 0;
                        if (row == SIZE) {
                            row = 0;
                        }
                    }
                }
                playArea[row][col] = num;
            }
        }
    }
    
    void printArea(int playArea[SIZE][SIZE], int visibleArea[SIZE][SIZE]) {
        printf("%4s", " ");
        for (int i = 0; i < SIZE; ++i) {
            printf("%3d", i);
        }
        puts("");
        printf("%4s", "|");
        for (int i = 0; i < SIZE; ++i) {
            printf("%3s", "---");
        }
        puts("");
    
        for (int row = 0; row < SIZE; ++row) {
            printf("%3d|", row);
            for (int col = 0; col < SIZE; ++col) {
                if (visibleArea[row][col] == 1) {
                    printf("%3d", playArea[row][col]);
                }
                else {
                    printf("%3s", "*");
                }
            }
            puts("");
        }
    }
    Last edited by jack jordan; 12-02-2017 at 01:37 PM.

  4. #4
    Registered User
    Join Date
    Feb 2013
    Location
    Sweden
    Posts
    171
    Notice that I'm not allowed to use multidimensional arrays since the function printCards have to be declared the way it is, unfortunately.

    The program contains an array with 2 sets of numbers 0-9. The board is 4 x 5.

    My two main questions is:

    1. How do you print the board so that you see the numbers when it is a match (only show numbers if two have matched)
    Not too only print the 4 x 5 board with dots (*).

    2. The user shouldn't be able to enter the same row and column more than once

    Thanks in advance and to previous posts!

    Entire code
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    
    #define SIZE 20
    #define BOARD_SIZE 4
    #define ROWS 4
    #define COLS 5
    
    
    void initArray();
    void printCards(int arr[], int taken[], int arrSize); 
    void shuffle(int arr[], int arrSize); 
    
    
    int linearSearch(const int arr[], int arrSize, int taken); 
    
    
    int setCardIndex(int row, int col); 
    
    
    int main() {
        
        int running = 0;
        int gameBoard[SIZE] = {0};
        int taken[SIZE] = {0}; 
        
        int initStorage; 
        int storage[10];
        for (initStorage = 0; initStorage < 10; initStorage++)
            storage[initStorage] = -1;
        
        printf("\nWelcome to memory!\n");
        
        int cardRow[2], cardCol[2];
        
        initArray(gameBoard);
        
        shuffle(gameBoard, SIZE);
        
        // Put the next taken pair in the next index        
        int pos = 0;
        
        do {
            printf("\n\nFlip two cards!"); 
            printf("\nInput row and column for the first card: "); 
            scanf("%d %d", &cardRow[0], &cardCol[0]); 
            printf("\nInput row and column for the second card: "); 
            scanf("%d %d", &cardRow[1], &cardCol[1]); 
        
            int getCard1, getCard2;
            
            getCard1 = gameBoard[setCardIndex(cardRow[0], cardCol[0])]; 
            getCard2 = gameBoard[setCardIndex(cardRow[1], cardCol[1])]; 
    
    
            //int foundAt = linearSearch(gameBoard, SIZE, storage[0]);
            
            int foundAt[10];
            
            // Logic wrong here?
            int c;
            for (c = 0; c < 10; c++) {
                int j; 
                for (j = 0; j < 10; j++) {
                    foundAt[c] = linearSearch(gameBoard, SIZE, storage[j]);
                }
                printf("\n\nFound at: %d | %d\n\n", foundAt[c], c);
            }
            
            // If the first card is the same as the second card. It is a match. 
            if (getCard1 == getCard2 && 
                /*foundAt == -1 &&*/ // -1 = NOT_FOUND
               (cardRow[0] != cardRow[1] || cardCol[0] != cardCol[1])) {
                printf("\nMatch!\n");
                
                // Only need one card to compare if it exits in the shuffled array
                storage[pos] = getCard1;
                taken[pos] = 1;
                pos++;
            }
            
            /* #### ONLY TO SEE OUTPUT #### REMOVE LATER */
            int x = 0;
            printf("\nTaken: ");
            for (x = 0; x < SIZE; x++)
                printf("%d, ", taken[x]);
                
            int z = 0;
            printf("\nStorage: ");
            for (z = 0; z < 10; z++)
                printf("%d, ", storage[z]);
            /* #### ONLY TO SEE OUTPUT #### REMOVE LATER */
            
            // Check if the user has picked a position outside of the board
            if (cardRow[0] < 0 || cardRow[0] > 3 || cardRow[1] < 0 || cardRow[1] > 3 ||
                cardCol[0] < 0 || cardCol[0] > 4 || cardCol[1] < 0 || cardCol[1] > 4) {
                printf("\nYou have picked a position outside the board!\n");        
            }
        
            // If the user has enetered the same row and column twice
            if (cardRow[0] == cardRow[1] && cardCol[0] == cardCol[1]) {
                printf("\nYou have not choosen two different cards!");
            }
            else {
                printf("\nCard1 is %d and Card2 is %d", getCard1, getCard2);    
            }
            printCards(gameBoard, taken, SIZE); 
                
        } while (running != -1); 
    
    
        return 0;
    }
    
    
    void initArray(int arr[]) {
        // Fill an array with pairs of 1, 2, 3, ..., 9
        int i;
        int fillNumbers = 0; 
        for (i = 0; i < SIZE; i++) {
            arr[i] = i;
            
            if (i >= 10) {
                arr[i] = fillNumbers; 
                fillNumbers++;
            }
            //printf("%d, ", gameBoard[i]);  
        }
    }
    
    
    int linearSearch(const int arr[], int arrSize, int taken) {
        int found = 0; 
        int location = -1; 
        
        int i;
        for (i = 0; i < arrSize && !found; i++) {
            if (taken == arr[i]) {
                found = 1;
                location = i;
            }
        }
        return location;
    }
    
    
    void shuffle(int arr[], int arrSize) {
        srand((unsigned int)time(NULL));
        
        int i;
        for (i = arrSize - 1; i > 0; i--) {
            int randNum = rand() % (i + 1);
            int temp = arr[i]; 
            arr[i] = arr[randNum]; 
            arr[randNum] = temp;
            
            //printf("%d, ", arr[i]);     
        }    
    }
    
    
    void printCards(int arr[], int taken[], int arrSize) {
        
        int p;
        printf("\n");
        for (p = 0; p < arrSize; p++) {
                printf("%d, ", arr[p]);    
        }
        
        printf("\n\n    0  1  2  3  4");
        printf("\n--|--------------"); 
        
        int i, rows = 0; 
        int j = 0; 
        for (i = 0; i < ROWS; i++) {
            if (taken[i] == 0)    
                printf("\n%d | * ", rows);
            else
                printf("\n%d | %d ", rows, arr[i]);
    
    
            for (j = 0; j < ROWS; j++) {
                if (taken[i] == 0)
                    printf(" * ");
                else 
                    printf(" %d ", arr[i*COLS + j]); // this should be something like cardRow[0]*COLS + cardCol[0]
            } 
            rows++;
        }
    }
    
    
    int setCardIndex(int row, int col) {
        int index = row * COLS + col;
        return index;
    }
    Last edited by DecoratorFawn82; 12-02-2017 at 04:36 PM.

  5. #5
    Registered User
    Join Date
    May 2010
    Posts
    4,632
    Notice that I'm not allowed to use multidimensional arrays since the function printCards have to be declared the way it is, unfortunately.
    What makes you say you're not allowed to use multidimensional arrays? Even if you're "required" to use printCards() as it is currently declared it is still possible to have a multidimensional board.

    Perhaps you should post the actual assignment as well, and tell us what parts of the program are provided and can't be modified.

  6. #6
    Registered User
    Join Date
    Feb 2013
    Location
    Sweden
    Posts
    171
    I write IMPLEMENTED = I for the ones that I have fixed and
    NOT FIXED = ? for the ones that I don't know how to do.
    These signs stand over the points.

    Assignment

    I
    The game board should be represented using an array of the type int with 20 places that are filled with
    numbers from 0-9. 10 different pairs of numbers. ( 0, 0; 1, 1; 2, 2).

    ? - keep track of the pairs taken? (have implemented so that when a pair is taken, taken[i] = 1)
    The program will have another int array of the same size to hold value 0 (false) or 1 (true) to keep
    track of the arraypositions of the numbers that have been taken as pairs.

    ? - Print board of pairs and dots (*) as not reveal pairs of numbers
    You should write two functions that must be declared like this.
    printCards(int arr[], int taken[], int arrSize);

    I
    Mix the cards in randomized order
    void shuffle(int arr[], int arrSize);

    ?
    An error message should be printed if the user chooses the same number (row, col) twice that is a pair. It will of course not be counted as a pair!

    I
    An error message should be printed if you pick a position that is outside of the game board.

    I
    This game should be played only one round (My choice)

    I
    It is singleplayer only

    Example run:

    ----0 1 2 3 4
    --|-------------
    0 | * * * * *
    1 | * * * * *
    2 | * * * * *
    3 | * * * * *

    First card (row, col): 0 0
    Second card (row, col): 1 0
    Match!

    Card1 is 6 and Card2 is 6

    ----0 1 2 3 4
    --|-------------
    0 | 6 * * * *
    1 | 6 * * * *
    2 | * * * * *
    3 | * * * * *

    First card (row, col): 2 0
    Second card (row, col): 1 2
    Match!
    Card1 is 4 and Card2 is 4

    ----0 1 2 3 4
    --|-------------
    0 | 6 * * * *
    1 | 6 * 4 * *
    2 | 4 * * * *
    3 | * * * * *

  7. #7
    Registered User
    Join Date
    Jun 2017
    Posts
    88
    I have what I think is some valid criticism for your code beyond what you have asked for. I think it is a little bit better if you could keep the scope of a variable within the area which it is needed and allow it to go out of scope if it is no longer needed. My suggestion applies to such code as this:
    Code:
    int p;
    printf("\n");
    for (p = 0; p < arrSize; p++) {
        printf("%d, ", arr[p]);    
    }
    I think that this should be read as if p is intended to be used in the code beyond the for statement because it is declared outside of the for loop rather than inside of it. As I look through the rest of the function it isn't used again.

    Another criticism I have is that your main could perhaps use a bit more abstraction. It gets pretty loaded with code where you could use functions instead.

    As far as the parts of your exercise you need help with:
    ? - keep track of the pairs taken? (have implemented so that when a pair is taken, taken[i] = 1)
    The program will have another int array of the same size to hold the value 0 (false) or 1 (true) to keep
    track of the array positions of the numbers that have been taken as pairs.
    You are somewhat close. The way you have written the lower portion of your print function seems to say you are not sure if you want to handle your arrays as two dimensional or one dimensional.
    Code:
    int i, rows = 0;
    int j = 0;
    for (i = 0; i < ROWS; i++) {
        if (taken[i] == 0)
            printf("\n%d | * ", rows);
        else
            printf("\n%d | %d ", rows, arr[i]);
    
    
        for (j = 0; j < ROWS; j++) {
            if (taken[i] == 0)
                printf(" * ");
            else
                printf(" %d ", arr[i*COLS + j]); // this should be something like cardRow[0]*COLS + cardCol[0]
        }
        rows++;
    }
    You have i to iterate rows. Then you print the row results. Then you iterate another dimension with j. Then you print again with this other dimension. If you want to use a one-dimensional array, you only need one index value which increments up to the product of your macros ROWS * COLS. You would then use a newline character every time your index counter is divisible by COL. This is my verbiage in code form as a modification of your code:
    Code:
    for (int index = 0; index < ROWS * COLS; ++index) {
        if (index % COLS == 0) {
            printf("\n%d|", index / COLS);
        }
        
        if (taken[index] == 0) {
            printf(" * ");
        }
        else {
            printf(" %d ", arr[index]);
        }
    }
    Of course you might run into trouble if you find you need both double and single digit card numbers. In that case, I would suggest using field width instead of explicit spacing.

    ? - Print board of pairs and dots (*) as not reveal pairs of numbers
    You should write two functions that must be declared like this.
    printCards(int arr[], int taken[], int arrSize);
    Unless I am mistaken, I think you have this part down. Even if your loops in your print function were confused between one and two dimensions, you were still checking to see if the taken cell was true or false.

    I realize this isn't a complete answer, but it gives a few things to consider.
    Last edited by jack jordan; 12-03-2017 at 02:01 AM.

  8. #8
    Registered User
    Join Date
    Feb 2013
    Location
    Sweden
    Posts
    171

    Question

    But this function:


    Code:
    for (int index = 0; index < ROWS * COLS; ++index) {
        if (index % COLS == 0) {
            printf("\n%d|", index / COLS);
        }
         
        if (taken[index] == 0) {
            printf(" * ");
        }
        else {
            printf(" %d ", arr[index]);
        }
    }



    only prints the first element that the shuffled array holds (
    Code:
    arr[0], arr[1], arr[2]
    )
    if that was my task to do it would've been simpler.




    Example:
    Say for example that we have a match that Card1 is 4 and Card2 is 4. Then the for-loop
    will print the first element of the shuffled array (according to the for-loop above),
    and not the actual number that Card1 or Card2 is (
    Code:
    Card1 == Card2
    ).




    The user inputs (row, col): 0 3
    -||- (row, col): 0 4




    --- Shuffled array ---
    0, 3, 2, 4, 4, 5, ... <-- Notice that the position picked is the first [0] when taken[i] = 1, then the second index [1] and so on
    Match!
    Card1 is 4 and Card2 is 4




    But I want to get the INDEX of where the array holds this number (Card1 == Card2)
    If it's a match with two 4's print out two 4's where they are on
    the game board. The position of the number.




    ----0 1 2 3 4
    --|-------------
    0 | * * * 4 4 <-- (0, 3) and (0, 4)
    1 | * * * * *
    2 | * * * * *
    3 | * * * * *




    NOT LIKE THIS:
    ----0 1 2 3 4
    --|-------------
    0 | 0 * * ? ? <-- (0, 3) and (0, 4), the 0 is from the shuffled array arr[0]
    1 | * * * * *
    2 | * * * * *
    3 | * * * * *

  9. #9
    Registered User
    Join Date
    Jun 2017
    Posts
    88
    I may not be quite understanding what you are trying to say, but according to your instructions:
    ? - Print board of pairs and dots (*) as not reveal pairs of numbers
    You should write two functions that must be declared like this.
    printCards(int arr[], int taken[], int arrSize);
    Honestly the two functions part doesn't make sense to me. From what I do understand, your print function doesn't take in any other information other than the game board array which is int arr[] and the revealed card array which is int taken[]. int arrSize is received as well, though it isn't actually necessary as long as you use ROWS and COLS macros.

    Say for example that we have a match that Card1 is 4 and Card2 is 4. Then the for-loop will print the first element of the shuffled array (according to the for-loop above), and not the actual number that Card1 or Card2 is
    When you enter the print function you don't need to know anything about card1 or card2. The only two things you need to know are what card values exist at what index and whether the cards at those indexes are revealed or hidden. If your aim is to decide whether your user's choices are a match, and the taken array values modified, that is not something that would be done in your print function. Your print function only prints.

    I think this memory game is only a matter of five functions:
    Code:
    int main(void) {
        // declare game board array and initialize taken array
    
        // generate game board array values
    
        // while any 0 values exist in taken array:
    
            // print board using printCard function
    
            // Ask user to make a pair of entries and validate them
    
        // congratulate user
    }
    Last edited by jack jordan; 12-03-2017 at 01:31 PM.

  10. #10
    Registered User
    Join Date
    Feb 2013
    Location
    Sweden
    Posts
    171
    Thanks to all replies. They helped me to get the program working .

  11. #11
    Banned
    Join Date
    Aug 2017
    Posts
    861
    for the dots and numbers, I think you'd need two functions, one that just prints out all of your dots, then call the second function that takes care or remembering what numbers where match then when it prints them numbers it over writes the dots. ( somehow ), or works in tandem to over write the dots so they both print out accordingly. that is only mu two cents worth. take it with a grain of salt.
    but this is an impossibility, this entire sentence make to sense.
    Code:
    You should write two functions that must be declared like this. 
    printCards(int arr[], int taken[], int arrSize);
    you should, means it is highly recommend but not a must, then it shifts to a must be declared like this.

    the keyword MUST, in other words you have to do this, no if's and's or but's,
    That teacher is clearly out of his or hers mind, you cannot declare two like functions. C does not even allow overloading of functions.
    Last edited by userxbw; 12-03-2017 at 02:34 PM.

  12. #12
    Registered User
    Join Date
    Feb 2013
    Location
    Sweden
    Posts
    171
    When I wrote "You should write two functions that must be declared like this". I meant both functions.
    Code:
    printCards(int arr[], int taken[], int arrSize);
    shuffle(int arr[], int arrSize);
    And yes, I agree that my main function should
    be divided into more functions since it is very
    heavily loaded right now. And that some modifications
    can make the code easier to read.

    SOLUTION
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    
    #define SIZE 20
    #define ROWS 4
    #define COLS 5
    
    
    void initArray();
    void printCards(int arr[], int taken[], int arrSize); 
    void shuffle(int arr[], int arrSize); 
    
    
    int main() {
        
        int running = 0;
        int gameBoard[SIZE] = {0};
        int taken[SIZE] = {0}; 
        
        printf("\nWelcome to memory!\n");
        
        int cardRow[2], cardCol[2];
        
        initArray(gameBoard);
        shuffle(gameBoard, SIZE);
        
        printCards(gameBoard, taken, SIZE);
        do {
            printf("\n\nFlip two cards!"); 
            printf("\nInput row and column for the first card: "); 
            scanf("%d %d", &cardRow[0], &cardCol[0]); 
            printf("\nInput row and column for the second card: "); 
            scanf("%d %d", &cardRow[1], &cardCol[1]); 
            
            int getCardIndex1 = cardRow[0]*COLS + cardCol[0];
            int getCardIndex2 = cardRow[1]*COLS + cardCol[1];
        
            int getCard1 = gameBoard[getCardIndex1]; 
            int getCard2 = gameBoard[getCardIndex2]; 
            
            if (taken[getCardIndex1] == 1 || 
                taken[getCardIndex2] == 1) {
                printf("\nThis card is already flipped!\n");
            }
            
            // If the first card is the same as the second card. It is a match. 
            if (getCard1 == getCard2 && 
               (cardRow[0] != cardRow[1] || cardCol[0] != cardCol[1])) {
                printf("\nMatch!\n");
                
                taken[cardRow[0]*COLS + cardCol[0]] = 1;
                taken[cardRow[1]*COLS + cardCol[1]] = 1;
            }
            else {
                printf("\nNo match!\n");
            }
            
            // Check if the user has picked a position outside of the board
            if (cardRow[0] < 0 || cardRow[0] > 3 || cardRow[1] < 0 || cardRow[1] > 3 ||
                cardCol[0] < 0 || cardCol[0] > 4 || cardCol[1] < 0 || cardCol[1] > 4) {
                printf("\nYou have picked a position outside the board!\n");        
            }
        
            // If the user has enetered the same row and column twice
            if (cardRow[0] == cardRow[1] && cardCol[0] == cardCol[1]) {
                printf("\nYou have not choosen two different cards!");
            }
            else {
                printf("\nCard1 is %d and Card2 is %d", getCard1, getCard2);    
            }
            
            // Check if all elements in array taken has the value 1 (true)
            int allPairsTaken, hasWon;
            for (allPairsTaken = 0; allPairsTaken < SIZE; allPairsTaken++) {
                if (taken[allPairsTaken] == 1) {
                    hasWon = 1;
                }
                else {
                    hasWon = 0;    
                }
            }
            
            if (hasWon == 1) {
                printf("\nYou have won!");    
                running = -1;
            }
            
            printCards(gameBoard, taken, SIZE); 
    
    
        
        } while (running != -1); 
    
    
        return 0;
    }
    
    
    void initArray(int arr[]) {
        // Fill an array with pairs of 1, 2, 3, ..., 9
        int i;
        int fillNumbers = 0; 
        for (i = 0; i < SIZE; i++) {
            arr[i] = i;
            
            if (i >= 10) {
                arr[i] = fillNumbers; 
                fillNumbers++;
            }
        }
    }
    
    
    void shuffle(int arr[], int arrSize) {
        srand((unsigned int)time(NULL));
        
        int i;
        for (i = arrSize - 1; i > 0; i--) {
            int randNum = rand() % (i + 1);
            int temp = arr[i]; 
            arr[i] = arr[randNum]; 
            arr[randNum] = temp;
        }    
    }
    
    
    void printCards(int arr[], int taken[], int arrSize) {
        
        printf("\n\n    0  1  2  3  4");
        printf("\n--|--------------"); 
        int index;
        for (index = 0; index < arrSize; ++index) {
            if (index % COLS == 0) {
                printf("\n%d|", index / COLS);
            }
         
            if (taken[index] == 0) {
                printf(" * ");
            }
            else {
                printf(" %d ", arr[index]);
            }
        }
    }

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Board Game
    By SenoritaJ in forum C++ Programming
    Replies: 3
    Last Post: 07-30-2015, 08:01 AM
  2. Replies: 5
    Last Post: 05-09-2012, 07:21 AM
  3. Board Game
    By Tiago in forum C Programming
    Replies: 4
    Last Post: 04-10-2010, 09:33 AM
  4. Board Game
    By Govtcheez in forum A Brief History of Cprogramming.com
    Replies: 26
    Last Post: 08-17-2001, 12:29 PM

Tags for this Thread