⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 russia.c

📁 russia linux gcc gtk
💻 C
📖 第 1 页 / 共 3 页
字号:
	    }// 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 + -