最后是判断五子连心,将以下思路:从落子点开始检测4个方向
1.左右方向相同颜色的子是否达到5个
2.上下方向相同颜色的子是否达到5个
3.左斜方向相同颜色的子是否达到5个
4.右斜方向相同颜色的子是否达到5个
- ///<summary>
- ///判断是否五子连心
- ///</summary>
- ///<paramname="p"></param>
- ///<returns></returns>
- privateboolIsWin(Piecep){
- intx=p.X;
- inty=p.Y;
- boolwin=IsFive(x,y,0,1,p.Color);//纵向
- win|=IsFive(x,y,1,1,p.Color);//右下斜
- win|=IsFive(x,y,1,0,p.Color);//横向
- win|=IsFive(x,y,1,-1,p.Color);//左上斜
- returnwin;
- }
- privateboolIsFive(intx,inty,intoffsetX,intoffsetY,Colorc){
- intcount=1;
- intsearchX=x+offsetX;
- intsearchY=y+offsetY;
- boolstop=false;
- while(searchX>=0&&searchX<ChessBoard.Lines&&
- searchY>=0&&searchY<ChessBoard.Lines&&
- !stop){
- intintColor=c==Color.White?1:2;
- if(pieces[searchX,searchY]==intColor){
- count++;
- searchX+=offsetX;
- searchY+=offsetY;
- }else{
- stop=true;
- }
- }
- stop=false;
- searchX=x-offsetX;
- searchY=y-offsetY;
- while(searchX>=0&&searchX<ChessBoard.Lines&&
- searchY>=0&&searchY<ChessBoard.Lines&&
- !stop){
- intintColor=c==Color.White?1:2;
- if(pieces[searchX,searchY]==intColor){
- count++;
- searchX-=offsetX;
- searchY-=offsetY;
- }else{
- stop=true;
- }
- }
- returncount==5;
- }
视频内容请见http://www.itcast.net/course/detail/1989
总结:通过这个游戏我们关注游戏本身,更重要的是运用C#的知识点。在这个项目中有很多知识点比如:面向对象、GDI+、方法封装等。
在这个项目基础上还能进行很多扩展,比如使用集合、动画效果、人机对战等。在此抛砖引玉,希望多提宝贵意见!
本文介绍了一种基于C#的五子棋胜负判断算法实现,通过检测四个方向(横向、纵向、两个斜向)来判断是否存在五子连珠的情况。此外,还探讨了面向对象、GDI+等技术的应用。
8735

被折叠的 条评论
为什么被折叠?



