draw an array to screen

so i am using allegro 5 to make a game and have my maps layed out in 2d arrays. i was testing the transition between levels by manually changing the values. and it looks to me like it should work but it doesn't anyone know what im doing wrong?

when i change Levelx to 1 and keep LevelY as 0
it should go from 1 on the LevelSelectArray to 2. but it draws the same map to the screen as 1 in the array

but if i change nothing and remove the else of where it says if LevelSelectArray = 2 then it works but all of a sudden wont go and draw 1

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
void LevelSelect()
{

    int LevelSelectArray[10][10] = {
    {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}
    };
    
    int LevelX;
    int LevelY;
    
    bool FirstTime = true;
    
    if(FirstTime)
    {
         LevelX = 0;
         LevelY = 0;
         FirstTime = false;
    }
    
    if(ArrayLevelSelect[LevelX][LevelY] = 1)
    {
         Level1();
    }
    else if(ArrayLevelSelect[LevelX][LevelY] = 2)
    {
         Level2();
    }
}
//for the example the only difference is the 5 and the 10
void Level1()
{
    int Level[5][5] = {
    {1, 1, 1, 1, 1},
    {1, 0, 0, 0, 1},
    {1, 0, 0, 0, 1},
    {1, 0, 0, 5, 1},
    {1, 1, 1, 1, 1}
    };
    memcpy(Map, Level, sizeof(Level));
}
void Level2()
{
    int Level[5][5] = {
    {1, 1, 1, 1, 1},
    {1, 0, 0, 0, 1},
    {1, 0, 0, 0, 1},
    {1, 0, 0, 10, 1},
    {1, 1, 1, 1, 1}
    };
    memcpy(Map, Level, sizeof(Level));
}
Last edited on
Well, lines 39 and 50 are both named as void Level1().
And it seems to be that you aren't increasing your LevelX or LevelY so they be always 0 as set in lines 24-25 so its always true at line 29 and load void Level1() which you have duplicated as mentioned earlier.
the void level1() twice was just me not copying my code down correctly.

and i know that i am not changing Level X and Y in the code. but when i change the values by hand from

LevelX = 0;
LevelY = 0;

to

LevelX = 1;
LevelY = 0;

nothing changes.
Last edited on
On lines 29 and 33 you are assigning the array and not comparing, should be == instead of = also you are comparing to ArrayLevelSelect[LevelX][LevelY] but your array is named as int LevelSelectArray[10][10].

And to get the Level 2 load, increase the LevelY and not LevelX,
Since values of [0][0] is 1, [0][1] is 2 and [1][0] is 11 in your array.
Topic archived. No new replies allowed.