memory game


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
  #include <iostream>
#include <iomanip>
#include <stdlib.h>
#include <windows.h>
#include <ctime>

int movement();
int turn();
using namespace std;
    char gameBoard[14][37] = {
                              {'\xB2','\xB2','\xB2','\xB2','\xB2','\xB2','\xB2','\xB2','\xB2','\xB2','\xB2','\xB2','\xB2'},
                              {'\xB2','\xDB','\xB1','\xDB','\xB1','\xDB','\xB1','\xDB','\xB1','\xDB','\xB1','\xDB','\xB2'},
                              {'\xB2','\xB1','\xB1','\xB1','\xB1','\xB1','\xB1','\xB1','\xB1','\xB1','\xB1','\xB1','\xB2'},
                              {'\xB2','\xDB','\xB1','\xDB','\xB1','\xDB','\xB1','\xDB','\xB1','\xDB','\xB1','\xDB','\xB2'},
                              {'\xB2','\xB1','\xB1','\xB1','\xB1','\xB1','\xB1','\xB1','\xB1','\xB1','\xB1','\xB1','\xB2'},
                              {'\xB2','\xDB','\xB1','\xDB','\xB1','\xDB','\xB1','\xDB','\xB1','\xDB','\xB1','\xDB','\xB2'},
                              {'\xB2','\xB1','\xB1','\xB1','\xB1','\xB1','\xB1','\xB1','\xB1','\xB1','\xB1','\xB1','\xB2'},
                              {'\xB2','\xDB','\xB1','\xDB','\xB1','\xDB','\xB1','\xDB','\xB1','\xDB','\xB1','\xDB','\xB2'},
                              {'\xB2','\xB1','\xB1','\xB1','\xB1','\xB1','\xB1','\xB1','\xB1','\xB1','\xB1','\xB1','\xB2'},
                              {'\xB2','\xDB','\xB1','\xDB','\xB1','\xDB','\xB1','\xDB','\xB1','\xDB','\xB1','\xDB','\xB2'},
                              {'\xB2','\xB1','\xB1','\xB1','\xB1','\xB1','\xB1','\xB1','\xB1','\xB1','\xB1','\xB1','\xB2'},
                              {'\xB2','\xDB','\xB1','\xDB','\xB1','\xDB','\xB1','\xDB','\xB1','\xDB','\xB1','\xDB','\xB2'},
                              {'\xB2','\xB2','\xB2','\xB2','\xB2','\xB2','\xB2','\xB2','\xB2','\xB2','\xB2','\xB2','\xB2'}};

                              int x = 1;
                              int y = 1;
                              bool game_running = true;

        int main()
        {
            char choice;

            cout << "a. Start Game" << endl;
            cin  >>choice;

            switch(choice)
            {
                case 'a': case 'A':
                movement();
                break;
            }
        }


        int movement()
{

        int random_number;
        int i = 0;

            while(game_running == true)
        {
            system("cls");
            for(int display=0; display<13; display++)
                {
          
                        cout << gameBoard[display] << endl;
                }

        system("pause>nul");

        if(GetAsyncKeyState(VK_DOWN))
        {
            int y2 = y+1;
            if(gameBoard[y2][x] == '\xDB'||gameBoard[y2][x] == '\xB1'||gameBoard[y2][x] == '\xB0')
                {
                gameBoard[y][x] ='\xDB';
                y++;
                gameBoard[y][x] = '\xB1';
                }
            if(gameBoard[y2][x] == '\xB1')
                {
                gameBoard[y][x] ='\xB1';
                y++;
                gameBoard[y][x] = '\xB0';

                }
            if(gameBoard[y2][x] == '\xB2')
                {
                system("pause");
                }

        }

        if(GetAsyncKeyState(VK_UP))
        {
            int y2 = y-1;
            if(gameBoard[y2][x] == '\xDB'||gameBoard[y2][x] == '\xB1'||gameBoard[y2][x] == '\xB0')
                {
                gameBoard[y][x] ='\xDB';
                y--;
                gameBoard[y][x] = '\xB1';

                }
            if(gameBoard[y2][x] == '\xB1')
                {
                gameBoard[y][x] ='\xB1';
                y--;
                gameBoard[y][x] = '\xB0';

                }
            if(gameBoard[y2][x] == '\xB2')
                {
                system("pause");
                }

        }

        if(GetAsyncKeyState(VK_RIGHT))
        {
            int x2 = x+1;
            if(gameBoard[y][x2] == '\xDB'||gameBoard[y][x2] == '\xB1'||gameBoard[y][x2] == '\xB0')
                {
                gameBoard[y][x] ='\xDB';
                x++;
                gameBoard[y][x] = '\xB1';

                }
            if(gameBoard[y][x2] == '\xB1')
                {
                gameBoard[y][x] ='\xB1';
                x++;
                gameBoard[y][x] = '\xB0';

                }
                if(gameBoard[y][x2] == '\xB2')
            {
                system("pause");
            }

        }

        if(GetAsyncKeyState(VK_LEFT))
        {
            int x2 = x-1;
            if(gameBoard[y][x2] == '\xDB'||gameBoard[y][x2] == '\xB1'||gameBoard[y][x2] == '\xB0')
                {
                gameBoard[y][x] ='\xDB';
                x--;
                gameBoard[y][x] = '\xB1';

                }
            if(gameBoard[y][x2] == '\xB1')
                {
                gameBoard[y][x] ='\xB1';
                x--;
                gameBoard[y][x] = '\xB0';
                }
                if(gameBoard[y][x2] == '\xB2')
            {
                system("pause");
            }
        }
        if(GetAsyncKeyState(VK_RETURN))
            {
            srand(time(0));
            random_number = (rand() % 4)+1;
            gameBoard[y][x] = random_number;
            i++;
            }
        if(GetAsyncKeyState(VK_ESCAPE))
        {
            game_running = false;
        }

        }
    system("CLS");
    cout << "GAME OVER" << endl;
    return 0;
    }

If you run this it should display a 6x6 board with "cards" and display random ASCII characters after the enter or return key is clicked. What I please, please need help with is making the board either : clear the two cards when they are equal or replace them if they are not after the enter key is clicked twice. thank you =)
Last edited on
You can use a character to indicate both the conditions, like 'C' for clear and 'E' for exchange. Whenever you encounter any of those characters during your program then you can perform the necessary action. For example if you come across 'C' it is already cleared so you can skip this. If you come across 'E' then you can exchange that number with another character. Now of course this means you can not use random characters, rather you should use characters from your defined set which should exclude the two special characters. Hope I helped.
Could you please show me an example of this?
Last edited on
The algorithm could be something like this:

1) Check if the blocks opened are displaying the same character.
2) If true then replace both of them by a character 'C'.
3) If not then replace them by any other character pair.

And when you are to display the board the algorithm should be something like this:

1) Check if the character in that position in the array equals to 'C'.
2) If true then it should display it as paired or not display at all.
3) If false then it should display the block.

It should be something like this. Hope I helped.
Topic archived. No new replies allowed.