江苏大学《设计一个五子棋》课程设计任务书
}
}
j = cp_y ;
i = cp_x ;
count = 1 ;
return false ; }
3.2.3轮流下子的实现程序
void CCk1401View::OnLButtonDown(UINT nFlags, CPoint point) {int x=(point.x-5)/35,y=(point.y-7)/35; if(GameOver==1) return; xx=x; yy=y;
if(x<15&&y<15)
{//点击鼠标的位置在棋盘内
if(wb[x][y]==0&&Blackchess) //且该位置还没有棋子 {wb[x][y]=1; //设置成黑棋
a[x][y]=1; count++; j1[x][y]=count; CDC *pDC;
pDC=this->GetDC();
PutBitmap(pDC,5+x*35,7+y*35,&Black,RGB(255,255,255)); int x=isWin(point);
if(x==1) { AfxMessageBox(\黑棋胜!\OnGameStart();} else if(x==2) {AfxMessageBox(\白棋胜!\
Blackchess=0; }
else if(wb[x][y]==0) //且该位置还没有棋子
//计算坐标
//显示棋子
OnGameStart();}
{wb[x][y]=2; //设置成白棋
21
江苏大学《设计一个五子棋》课程设计任务书
count++; j1[x][y]=count; a[x][y]=2; CDC *pDC;
pDC=this->GetDC();
PutBitmap(pDC,5+x*35,7+y*35,&White,RGB(255,255,255));//显示棋子 int x=isWin(point);
if(x==1) { AfxMessageBox(\黑棋胜!\OnGameStart();} else if(x==2) {AfxMessageBox(\白棋胜!\
OnGameStart();}
Blackchess=1; }
3.2.4悔棋的实现主程序
void CCk1401View::OnGameBack() {if(count!=0)
{ for(inti=0;i<15;i++)
for(int j=0;j<15;j++) if(j1[i][j]==count) { wb[i][j]=0; a[i][j]=0; }
count--;
switch(Blackchess) {case 1: Blackchess=0; break;
case 0: Blackchess=1;
}
}
CView::OnLButtonDown(nFlags, point);
break;
default:break;
22
江苏大学《设计一个五子棋》课程设计任务书
}
OnDraw(GetDC());
} }
3.2.5平局的实现主程序
intCCk1401View::ping(int a[15][15]) { for(inti=0;i<15;i++) for(int j=0;j<15;j++) { if(a[i][j]==0)
//当棋盘全部子都不是0时才能return 1,即棋盘已下满
return 0; }
return 1; }
3.2.6新游戏的实现主程序
void CCk1401View::OnGameStart() {Blackchess=1; count=0;
for(inti=0;i<15;i++) for(int j=0;j<15;j++) wb[i][j]=0;
for(int iii=0;iii<15;iii++)
for(intjjj=0;jjj<15;jjj++)
a[iii][jjj]=0;
for(int ii=0;ii<15;ii++)
for(intjj=0;jj<15;jj++)
j1[ii][jj]=0; OnDraw(GetDC()); }
3.2.7背景音乐的实现主程序
23
江苏大学《设计一个五子棋》课程设计任务书
voidCKView::Onbeijing() {
{ mciSendString(\mciSendString(\ }
3.2.8保存和读取文件
void CCk1401View::OnOnSave() {//设置保存的文件,后缀名wzq
CFileDialogdlg(FALSE,\}
*.WB)|*.wb|All Files|*.*||\
//如果公共类对话框为确定 if(dlg.DoModal()==IDOK) //获取文件名 dlg.GetFileName(); //否则,退出 else
return;
//字符串变量 CStringstr; inti,j;
CStdioFile file; //如果有问题,退出
if(file.Open(dlg.GetFileName(),CFile::modeCreate|CFile::modeWrite|CFil
e::typeText)==0)
{ }
//循环把棋盘数组的值写进文件
24
AfxMessageBox(\return;