最近学习GTK,顺便就写个小游戏练练手。也是又一个图形界面的小程序啊。不断的学习,才能不断的进步,不知不觉工作之余学习GTK也有几个月了。哈哈。贴上代码,大家共勉啊。
使用方法:
s 左移 f 右移 j 逆时针翻转 l 顺时针翻转 空格加速下降
具体可以参见 response_key_press函数里面的处理过程
图像
#include <gtk/gtk.h>
#include <stdlib.h>
#include <string.h>
typedef struct stCellFlag {
char status;
char style_type;
} CELL_FLAG_ST;
enum {
STYLE_TYPE_L1,
STYLE_TYPE_L2,
STYLE_TYPE_Z1,
STYLE_TYPE_Z2,
STYLE_TYPE_T,
STYLE_TYPE_O,
STYLE_TYPE_I,
STYLE_TYPE_MAX
};
enum {
STYLE_MODE_1,
STYLE_MODE_2,
STYLE_MODE_3,
STYLE_MODE_4,
STYLE_MODE_MAX,
};
#define SQURE_MAX_NUM 4
typedef struct stXYLocationPair {
int x, y;
} XY_LOCATION_PAIR_ST;
typedef struct stStylePointer {
XY_LOCATION_PAIR_ST location[SQURE_MAX_NUM];
} STYLE_POINTER_ST;
typedef struct stStyleMatrix {
STYLE_POINTER_ST style[STYLE_MODE_MAX];
gchar * color_str;
} STYLE_MAXTRIX_ST;
STYLE_MAXTRIX_ST styleL1 = {
{
{
{
{-1, -1}, {-1, 0}, {0, 0}, {1, 0}}
},
{
{
{0, -1}, {-1, -1}, {-1, 0}, {-1, 1}}
},
{
{
{0, 0}, {0, -1}, {-1, -1}, {-2, -1}}
},
{
{
{-1, 0}, {0, 0}, {0, -1}, {0, -2}}
}
},
"green"
};
STYLE_MAXTRIX_ST styleL2 = {
{
{
{
{0, -2}, {0, -1}, {-1, -1}, {-2, -1}}
},
{
{
{1, 0}, {0, 0}, {0, -1}, {0, -2}}
},
{
{
{-1, 1}, {-1, 0}, {0, 0}, {1, 0}}
},
{
{
{-2, -1}, {-1, -1}, {-1, 0}, {-1, 1}}
}
},
"blue"
};
STYLE_MAXTRIX_ST styleT = {
{
{
{
{-1, -1}, {0, -1}, {1, -1}, {0, -2}}
},
{
{
{0, -1}, {0, 0}, {0, 1}, {1, 0}}
},
{
{
{0, 0}, {-1, 0}, {-2, 0}, {-1, 1}}
},
{
{
{-1, 0}, {-1, -1}, {-1, -2}, {-2, -1}}
},
},
"red"
};
STYLE_MAXTRIX_ST styleZ1 = {
{
{
{
{-1, -1}, {-1, 0}, {0, 0}, {0, 1}}
},
{
{
{0, -1}, {-1, -1}, {-1, 0}, {-2, 0}}
},
{
{
{0, 0}, {0, -1}, {-1, -1}, {-1, -2}}
},
{
{
{-1, 0}, {0, 0}, {0, -1}, {1, -1}}
},
},
"yellow"
};
STYLE_MAXTRIX_ST styleZ2 = {
{
{
{
{0, -1}, {0, 0}, {-1, 0}, {-1, 1}}
},
{
{
{0, 0}, {-1, 0}, {-1, -1}, {-2, -1}}
},
{
{
{-1, 0}, {-1, -1}, {0, -1}, {0, -2}}
},
{
{
{-1, -1}, {0, -1}, {0, 0}, {1, 0}}
},
},
"coral"
};
STYLE_MAXTRIX_ST styleI = {
{
{
{
{-2, -1}, {-1, -1}, {0, -1}, {1, -1}}
},
{
{
{0, -2}, {0, -1}, {0, 0}, {0, 1}}
},
{
{
{1, 0}, {0, 0}, {-1, 0}, {-2, 0}}
},
{
{
{-1, 1}, {-1, 0}, {-1, -1}, {-1, -2}}
},
},
"orange"
};
STYLE_MAXTRIX_ST styleO = {
{
{
{<