哪位高手能给小弟我讲讲这两段程序,关于五子棋的,多谢了

谁能给我讲讲这两段程序,关于五子棋的,谢谢了
这是一本书上讲的一个五子棋程序中的一段代码,其中有一段代码不太明白,向高手请教。
这是电脑下棋的函数,返回落子点,函数接收一个当前棋子颜色信息,其中变量g_nSkill是全局变量,代表电脑等级的高低
//电脑下棋,返回值为落棋点
CPoint   CFiveDlg::UrgentPoint(BYTE)
{
int   i,i0,j,j0;
//将鼠标设置为等待状态
BeginWaitCursor();
CPoint   ptUrgent[2025],ptInit(-1,-1);
for(i=0;i <2025;++i)
ptUrgent[i]=ptInit;

//初始化随机数种子
srand((unsigned)time(NULL));
CPoint   ptCurrent;
i0=(rand()%2)   ?   0:BOARD_LINE_NUMBER-1;
int   nGrade1,nGrade2;
int   nUrgent1,nUrgent2,nUrgent;

for(i=i0;!i0   ?   i <BOARD_LINE_NUMBER:i> =0;!i0   ?   ++i:--i)
{
srand((unsigned)time(NULL));
j0=(rand()%2)   ?   0:BOARD_LINE_NUMBER-1;
for(j=j0;!j0   ?   j <BOARD_LINE_NUMBER:j> =0;!j0   ?   ++j:--j)
{
if(m_Board[i][j]==0)
{
ptCurrent.x=i;
ptCurrent.y=j;
//对当前前棋局进行评分
nGrade1=Judge(i,j,(char)(m_byColor+1));
nGrade2=Judge(i,j,(char)(!m_byColor+1));
//高级难度
if(g_nSkill==3)
{
switch(nGrade1)
{
case   0:nUrgent1=0;
break;
case   1:nUrgent1=2;
break;
case   2:nUrgent1=4;
break;
case   3:nUrgent1=5;
break;
case   4:nUrgent1=8;
break;
case   5:nUrgent1=10;
break;
case   6:nUrgent1=11;
break;
case   7:nUrgent1=12;
break;
case   8:nUrgent1=13;
break;
case   9:nUrgent1=14;
break;
case   10:nUrgent1=15;
break;
case   11:nUrgent1=16;
break;
case   12:nUrgent1=17;
break;
case   13:nUrgent1=18;
break;
case   14:nUrgent1=19;
break;
case   15:nUrgent1=20;
break;
case   16:nUrgent1=32;
break;
case   17:nUrgent1=34;
break;
case   18:nUrgent1=36;
break;
case   19:nUrgent1=38;
break;
case   20:nUrgent1=40;
break;
default:nUrgent1=40;
break;
}
switch(nGrade2)
{
case   0:nUrgent2=1;
break;
case   1:nUrgent2=3;
break;
case   2:nUrgent2=6;
break;
case   3:nUrgent2=7;
break;
case   4:nUrgent2=9;
break;
case   5:nUrgent2=21;
break;
case   6:nUrgent2=22;
break;
case   7:nUrgent2=23;
break;
case   8:nUrgent2=24;
break;
case   9:nUrgent2=25;
break;
case   10:nUrgent2=26;
break;
case   11:nUrgent2=27;
break;
case   12:nUrgent2=28;
break;
case   13:nUrgent2=29;
break;
case   14:nUrgent2=30;
break;
case   15:nUrgent2=31;
break;
case   16:nUrgent2=33;
break;
case   17:nUrgent2=35;
break;
case   18:nUrgent2=37;
break;
case   19:nUrgent2=39;
break;
case   20:nUrgent2=41;
break;
default:nUrgent2=41;
break;
}
}

//中级难度
if(g_nSkill==2)
{
switch(nGrade1)
{
case   0:nUrgent1=0;