Вы, безусловно, можете объявить статический 2-мерный массив целых чисел.Например:
static int animations[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
Поскольку это объявлено как "статическое", animations
не будет видимо вне области исходного файла, который его объявляет, и будет только одна копия массива.
Хитрость в том, что массивы C должны быть прямоугольными, а в вашем примере показаны строки различной ширины.
Для этого вы можете использовать массив указателей:
static int walk[] = {1,2,3};
static int run[] = {4,5,6};
static int wiz[] = {1,2,3,4,5,6};
static int *animations[3] = {walk,run,wiz};
(В этом случае, конечно, вам понадобятся другие средства, чтобы узнать, когда вы дойдете до конца строки, поскольку они не все одинаковой длины. Например, может быть, конецстрока помечена значением '0' или '-1'.)