📄 russia.c
字号:
}// should copy
/* move src upward */
tt_src--;
/* can dest move upward? depends on whether the row are all 1 */
gint tt_sumrow=0;
for( tt_loopi=0;tt_loopi<BRICKXSIZE;tt_loopi++){// sum row
tt_sumrow=tt_sumrow+g_RBrick[tt_loopi][tt_dst];
}// end of sum row
if(tt_sumrow<BRICKXSIZE) tt_dst--;// not all 1
}// end of adjust g_RBrick matrix
/* Clear the empty matrix */
for(t_loopi=0;t_loopi<=tt_dst;t_loopi++){// clear the upper row
for(t_tempx=0;t_tempx<BRICKXSIZE;t_tempx++){
g_RBrick[t_tempx][t_loopi]=0;
}
}// clear the upper row
/* Set the matrix new value */
for(t_loopi=0;t_loopi<4;t_loopi++){
gint tt_tempindex;
tt_tempindex=g_candidateblock[g_currentbrickblockindex].m_index;
t_tempx=g_candidateblock[g_currentbrickblockindex].m_brickblock[tt_tempindex].m_brickpos[t_loopi].m_x+g_currentbrickx;
t_tempy=g_candidateblock[g_currentbrickblockindex].m_brickblock[tt_tempindex].m_brickpos[t_loopi].m_y+g_currentbricky;
g_RBrick[t_tempx][t_tempy]=1;
}// end of set new matrix value
/* Reset the redraw area to all area */
t_oldstart.m_x=0;t_oldstart.m_y=0;
t_oldend.m_x=BRICKXSIZE-1;t_oldend.m_y=BRICKYSIZE-1;
}// end of new brick
}
break;
case GDK_Right:
{
t_tempindex=g_candidateblock[g_currentbrickblockindex].m_index;
t_retv=BrickPositionCorrect(g_currentbrickblockindex,t_tempindex,g_currentbrickx+1, g_currentbricky);
if(t_retv==1){
/* Clear the old value */
for(t_loopi=0;t_loopi<4;t_loopi++){
gint tt_tempindex;
tt_tempindex=g_candidateblock[g_currentbrickblockindex].m_index;
t_tempx=g_candidateblock[g_currentbrickblockindex].m_brickblock[tt_tempindex].m_brickpos[t_loopi].m_x+g_currentbrickx;
t_tempy=g_candidateblock[g_currentbrickblockindex].m_brickblock[tt_tempindex].m_brickpos[t_loopi].m_y+g_currentbricky;
g_RBrick[t_tempx][t_tempy]=0;
}
/* action */
g_currentbrickx++;
/* Set the new value */
for(t_loopi=0;t_loopi<4;t_loopi++){
gint tt_tempindex;
tt_tempindex=g_candidateblock[g_currentbrickblockindex].m_index;
t_tempx=g_candidateblock[g_currentbrickblockindex].m_brickblock[tt_tempindex].m_brickpos[t_loopi].m_x+g_currentbrickx;
t_tempy=g_candidateblock[g_currentbrickblockindex].m_brickblock[tt_tempindex].m_brickpos[t_loopi].m_y+g_currentbricky;
g_RBrick[t_tempx][t_tempy]=1;
}// end of set new value
}// end of brick changed
}
break;
case GDK_Left:
{
t_tempindex=g_candidateblock[g_currentbrickblockindex].m_index;
t_retv=BrickPositionCorrect(g_currentbrickblockindex,t_tempindex,g_currentbrickx-1, g_currentbricky);
if(t_retv==1){
/* Clear the old value */
for(t_loopi=0;t_loopi<4;t_loopi++){
gint tt_tempindex;
tt_tempindex=g_candidateblock[g_currentbrickblockindex].m_index;
t_tempx=g_candidateblock[g_currentbrickblockindex].m_brickblock[tt_tempindex].m_brickpos[t_loopi].m_x+g_currentbrickx;
t_tempy=g_candidateblock[g_currentbrickblockindex].m_brickblock[tt_tempindex].m_brickpos[t_loopi].m_y+g_currentbricky;
g_RBrick[t_tempx][t_tempy]=0;
}
/* action */
g_currentbrickx--;
/* Set the new value */
for(t_loopi=0;t_loopi<4;t_loopi++){
gint tt_tempindex;
tt_tempindex=g_candidateblock[g_currentbrickblockindex].m_index;
t_tempx=g_candidateblock[g_currentbrickblockindex].m_brickblock[tt_tempindex].m_brickpos[t_loopi].m_x+g_currentbrickx;
t_tempy=g_candidateblock[g_currentbrickblockindex].m_brickblock[tt_tempindex].m_brickpos[t_loopi].m_y+g_currentbricky;
g_RBrick[t_tempx][t_tempy]=1;
}// end of set new value
}// end of brick changed
}
break;
}
if(t_retv==1){// redraw the related area
t_newstart.m_x=g_currentbrickx;
t_newstart.m_y=g_currentbricky;
t_tempindex=g_candidateblock[g_currentbrickblockindex].m_index;
t_newend=g_candidateblock[g_currentbrickblockindex].m_brickblock[t_tempindex].m_areaendpos;
t_newend.m_x=t_newend.m_x+t_newstart.m_x;
t_newend.m_y=t_newend.m_y+t_newstart.m_y;
if(t_newstart.m_x>t_oldstart.m_x)t_newstart.m_x=t_oldstart.m_x;
if(t_newstart.m_y>t_oldstart.m_y)t_newstart.m_y=t_oldstart.m_y;
if(t_newend.m_x<t_oldend.m_x)t_newend.m_x=t_oldend.m_x;
if(t_newend.m_y<t_oldend.m_y)t_newend.m_y=t_oldend.m_y;
/* active the area redraw */
t_event.type=GDK_EXPOSE;
((GdkEventExpose*)&t_event)->window=((GtkWidget* )arg)->window;
((GdkEventExpose*)&t_event)->send_event=TRUE;
((GdkEventExpose*)&t_event)->area.x=t_newstart.m_x*BRICKWIDTH;
((GdkEventExpose*)&t_event)->area.y=t_newstart.m_y*BRICKHEIGHT;
((GdkEventExpose*)&t_event)->area.width=(t_newend.m_x-t_newstart.m_x+1)*BRICKWIDTH;
((GdkEventExpose*)&t_event)->area.height=(t_newend.m_y-t_newstart.m_y+1)*BRICKHEIGHT;
((GdkEventExpose*)&t_event)->region=gdk_region_rectangle(&((GdkEventExpose*)&t_event)->area);
((GdkEventExpose*)&t_event)->count=0;
gdk_event_put(&t_event);
}
}
/* timer handle. Send a down arrow key event every 500ms */
void HandleTimer(int arg)
{
GdkEvent t_event;
t_event.type=GDK_KEY_PRESS;
((GdkEventKey*)&t_event)->window=((GtkWidget* )window)->window;
((GdkEventKey*)&t_event)->send_event=TRUE;
((GdkEventKey*)&t_event)->time=0;
((GdkEventKey*)&t_event)->state=0;
((GdkEventKey*)&t_event)->keyval=GDK_Down;
((GdkEventKey*)&t_event)->length=4;
((GdkEventKey*)&t_event)->string="Down";
((GdkEventKey*)&t_event)->hardware_keycode=0;
((GdkEventKey*)&t_event)->group=0;
gdk_event_put(&t_event);
}
int
main(int argc, char*argv[])
{
GtkWidget *gameclient, *box,*boxh, *button,*toolbar,*tempwin;
GdkWindowHints geo_mask;
GdkGeometry geometry;
static char times[4][26]=
{ "Unset\n","Unset\n","Unset\n","Unset\n"};
/* init the global matrix for game client */
// g_RBrick[0][0]=1;g_RBrick[1][1]=1;g_RBrick[8][10]=1;
/* init the global brick candidate*/
g_candidateblock[0].m_index=0;
g_candidateblock[0].m_brickblock[0].m_brickpos[0].m_x=0;
g_candidateblock[0].m_brickblock[0].m_brickpos[0].m_y=1;
g_candidateblock[0].m_brickblock[0].m_brickpos[1].m_x=1;
g_candidateblock[0].m_brickblock[0].m_brickpos[1].m_y=1;
g_candidateblock[0].m_brickblock[0].m_brickpos[2].m_x=2;
g_candidateblock[0].m_brickblock[0].m_brickpos[2].m_y=1;
g_candidateblock[0].m_brickblock[0].m_brickpos[3].m_x=1;
g_candidateblock[0].m_brickblock[0].m_brickpos[3].m_y=0;
g_candidateblock[0].m_brickblock[0].m_areastartpos.m_x=0;
g_candidateblock[0].m_brickblock[0].m_areastartpos.m_y=0;
g_candidateblock[0].m_brickblock[0].m_areaendpos.m_x=2;
g_candidateblock[0].m_brickblock[0].m_areaendpos.m_y=1;
g_candidateblock[0].m_brickblock[1].m_brickpos[0].m_x=0;
g_candidateblock[0].m_brickblock[1].m_brickpos[0].m_y=0;
g_candidateblock[0].m_brickblock[1].m_brickpos[1].m_x=0;
g_candidateblock[0].m_brickblock[1].m_brickpos[1].m_y=1;
g_candidateblock[0].m_brickblock[1].m_brickpos[2].m_x=0;
g_candidateblock[0].m_brickblock[1].m_brickpos[2].m_y=2;
g_candidateblock[0].m_brickblock[1].m_brickpos[3].m_x=1;
g_candidateblock[0].m_brickblock[1].m_brickpos[3].m_y=1;
g_candidateblock[0].m_brickblock[1].m_areastartpos.m_x=0;
g_candidateblock[0].m_brickblock[1].m_areastartpos.m_y=0;
g_candidateblock[0].m_brickblock[1].m_areaendpos.m_x=1;
g_candidateblock[0].m_brickblock[1].m_areaendpos.m_y=2;
g_candidateblock[0].m_brickblock[2].m_brickpos[0].m_x=0;
g_candidateblock[0].m_brickblock[2].m_brickpos[0].m_y=0;
g_candidateblock[0].m_brickblock[2].m_brickpos[1].m_x=1;
g_candidateblock[0].m_brickblock[2].m_brickpos[1].m_y=0;
g_candidateblock[0].m_brickblock[2].m_brickpos[2].m_x=2;
g_candidateblock[0].m_brickblock[2].m_brickpos[2].m_y=0;
g_candidateblock[0].m_brickblock[2].m_brickpos[3].m_x=1;
g_candidateblock[0].m_brickblock[2].m_brickpos[3].m_y=1;
g_candidateblock[0].m_brickblock[2].m_areastartpos.m_x=0;
g_candidateblock[0].m_brickblock[2].m_areastartpos.m_y=0;
g_candidateblock[0].m_brickblock[2].m_areaendpos.m_x=2;
g_candidateblock[0].m_brickblock[2].m_areaendpos.m_y=1;
g_candidateblock[0].m_brickblock[3].m_brickpos[0].m_x=1;
g_candidateblock[0].m_brickblock[3].m_brickpos[0].m_y=0;
g_candidateblock[0].m_brickblock[3].m_brickpos[1].m_x=1;
g_candidateblock[0].m_brickblock[3].m_brickpos[1].m_y=1;
g_candidateblock[0].m_brickblock[3].m_brickpos[2].m_x=1;
g_candidateblock[0].m_brickblock[3].m_brickpos[2].m_y=2;
g_candidateblock[0].m_brickblock[3].m_brickpos[3].m_x=0;
g_candidateblock[0].m_brickblock[3].m_brickpos[3].m_y=1;
g_candidateblock[0].m_brickblock[3].m_areastartpos.m_x=0;
g_candidateblock[0].m_brickblock[3].m_areastartpos.m_y=0;
g_candidateblock[0].m_brickblock[3].m_areaendpos.m_x=1;
g_candidateblock[0].m_brickblock[3].m_areaendpos.m_y=2;
/* brick block 2 */
g_candidateblock[1].m_index=0;
g_candidateblock[1].m_brickblock[0].m_brickpos[0].m_x=0;
g_candidateblock[1].m_brickblock[0].m_brickpos[0].m_y=0;
g_candidateblock[1].m_brickblock[0].m_brickpos[1].m_x=1;
g_candidateblock[1].m_brickblock[0].m_brickpos[1].m_y=0;
g_candidateblock[1].m_brickblock[0].m_brickpos[2].m_x=2;
g_candidateblock[1].m_brickblock[0].m_brickpos[2].m_y=0;
g_candidateblock[1].m_brickblock[0].m_brickpos[3].m_x=3;
g_candidateblock[1].m_brickblock[0].m_brickpos[3].m_y=0;
g_candidateblock[1].m_brickblock[0].m_areastartpos.m_x=0;
g_candidateblock[1].m_brickblock[0].m_areastartpos.m_y=0;
g_candidateblock[1].m_brickblock[0].m_areaendpos.m_x=3;
g_candidateblock[1].m_brickblock[0].m_areaendpos.m_y=0;
g_candidateblock[1].m_brickblock[1].m_brickpos[0].m_x=0;
g_candidateblock[1].m_brickblock[1].m_brickpos[0].m_y=0;
g_candidateblock[1].m_brickblock[1].m_brickpos[1].m_x=0;
g_candidateblock[1].m_brickblock[1].m_brickpos[1].m_y=1;
g_candidateblock[1].m_brickblock[1].m_brickpos[2].m_x=0;
g_candidateblock[1].m_brickblock[1].m_brickpos[2].m_y=2;
g_candidateblock[1].m_brickblock[1].m_brickpos[3].m_x=0;
g_candidateblock[1].m_brickblock[1].m_brickpos[3].m_y=3;
g_candidateblock[1].m_brickblock[1].m_areastartpos.m_x=0;
g_candidateblock[1].m_brickblock[1].m_areastartpos.m_y=0;
g_candidateblock[1].m_brickblock[1].m_areaendpos.m_x=0;
g_candidateblock[1].m_brickblock[1].m_areaendpos.m_y=3;
g_candidateblock[1].m_brickblock[2].m_brickpos[0].m_x=0;
g_candidateblock[1].m_brickblock[2].m_brickpos[0].m_y=0;
g_candidateblock[1].m_brickblock[2].m_brickpos[1].m_x=1;
g_candidateblock[1].m_brickblock[2].m_brickpos[1].m_y=0;
g_candidateblock[1].m_brickblock[2].m_brickpos[2].m_x=2;
g_candidateblock[1].m_brickblock[2].m_brickpos[2].m_y=0;
g_candidateblock[1].m_brickblock[2].m_brickpos[3].m_x=3;
g_candidateblock[1].m_brickblock[2].m_brickpos[3].m_y=0;
g_candidateblock[1].m_brickblock[2].m_areastartpos.m_x=0;
g_candidateblock[1].m_brickblock[2].m_areastartpos.m_y=0;
g_candidateblock[1].m_brickblock[2].m_areaendpos.m_x=3;
g_candidateblock[1].m_brickblock[2].m_areaendpos.m_y=0;
g_candidateblock[1].m_brickblock[3].m_brickpos[0].m_x=0;
g_candidateblock[1].m_brickblock[3].m_brickpos[0].m_y=0;
g_candidateblock[1].m_brickblock[3].m_brickpos[1].m_x=0;
g_candidateblock[1].m_brickblock[3].m_brickpos[1].m_y=1;
g_candidateblock[1].m_brickblock[3].m_brickpos[2].m_x=0;
g_candidateblock[1].m_brickblock[3].m_brickpos[2].m_y=2;
g_candidateblock[1].m_brickblock[3].m_brickpos[3].m_x=0;
g_candidateblock[1].m_brickblock[3].m_brickpos[3].m_y=3;
g_candidateblock[1].m_brickblock[3].m_areastartpos.m_x=0;
g_candidateblock[1].m_brickblock[3].m_areastartpos.m_y=0;
g_candidateblock[1].m_brickblock[3].m_areaendpos.m_x=0;
g_candidateblock[1].m_brickblock[3].m_areaendpos.m_y=3;
/* brick block 3 */
g_candidateblock[2].m_index=0;
g_candidateblock[2].m_brickblock[0].m_brickpos[0].m_x=0;
g_candidateblock[2].m_brickblock[0].m_brickpos[0].m_y=1;
g_candidateblock[2].m_brickblock[0].m_brickpos[1].m_x=1;
g_candidateblock[2].m_brickblock[0].m_brickpos[1].m_y=1;
g_candidateblock[2].m_brickblock[0].m_brickpos[2].m_x=2;
g_candidateblock[2].m_brickblock[0].m_brickpos[2].m_y=1;
g_candidateblock[2].m_brickblock[0].m_brickpos[3].m_x=2;
g_candidateblock[2].m_brickblock[0].m_brickpos[3].m_y=0;
g_candidateblock[2].m_brickblock[0].m_areastartpos.m_x=0;
g_candidateblock[2].m_brickblock[0].m_areastartpos.m_y=0;
g_candidateblock[2].m_brickblock[0].m_areaendpos.m_x=2;
g_candidateblock[2].m_brickblock[0].m_areaendpos.m_y=1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -