五子棋c语言代码百度文库,这个百度文库五子棋的代码的错误在哪?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

point.y=HIWORD(lParam);

//初始化设备DC

Init(hwnd);

//鼠标坐标换为数组坐标

x=(point.x)/(xw/MAX); //定位到小狂格中去

y=(point.y)/(yw/MAX);

if(plays==Stop)

break;

if(x

{

if(iGame[x][y]==Default&&plays==Play)//判断但前位置是否有棋子覆盖 是否是下棋模式

{

leng=1;

paint(play,x,y);

if(Look(x,y,play))

over(hwnd,play);

chagePlayer();

}

}

break;

case WM_PAINT://开始绘制

{

hdc=BeginPaint(hwnd,&ps);

Init(hwnd);

Rectangle(hdc,0,0,xw,yw);

for(x=0;x

for(y=0;y

{

Rectangle(hdc,x*xw/MAX,y*yw/MAX,(x+1)*xw/MAX,(y+1)*yw/MAX) ;

paint(iGame[x][y],x,y);

}

EndPaint(hwnd,&ps);

}

break;

case WM_DESTROY: //当用户关闭游戏

PostQuitMessage (0); // 发送一个消息给message queue

break;

default: //什么都不做

return DefWindowProc (hwnd, message, wParam, lParam);

}

return 0;

}

void Init(HWND hwnd) //初始化方法

{

hdc1=GetDC(hwnd);

hdc2=GetDC(hwnd);

//初始背景 (游戏的界面)

SelectObject(hdc,CreatePen(0,1,RGB(0,0,0))); //小矩形框的边框的颜色

SelectObject(hdc,CreateSolidBrush(RGB(255,218,185))); //填充的颜色

//初始玩家一图形

SelectObject(hdc1,CreatePen(0,1,RGB(255,255,255))); //玩家一的棋子颜色

SelectObject(hdc1,CreateSolidBrush(RGB(255,255,255))); //填充白色

//初始玩家二图形

SelectObject(hdc2,CreatePen(0,1,RGB(255,255,255))); //玩家二的棋子颜色

SelectObject(hdc2,CreateSolidBrush(RGB(0,0,0))); //填充黑色

//该背景分为两层背景,一层为游戏界面(hdc),一层为玩家的棋子(hdc1,hdc2)

//SetBkMode(hdc,0);该方法好像没什么用

//绘制右边操作提示区域

Rectangle(hdc,xw,29,xw+200,30);//从xw开始绘制到xw+200结束(绘制长200宽为30-29的矩形)的线条

TextOut(hdc,xw+45,13,"超简单的五子棋",14); //从坐标(xw+45)(13)开始绘制“超简单的五子棋”宽为14

TextOut(hdc,xw+45,40,"F1 - 开始游戏",13);

TextOut(hdc,xw+45,60,"F2 -重新开始游戏",16);

Rectangle(hdc,xw,80,xw+200,81);

TextOut(hdc,xw+45,150,"白棋为第二玩家",14);

TextOut(hdc,xw+45,250,"黑棋为第二玩家",14);

Rectangle(hdc,xw,330,xw+200,331);

}

void paint(int play,int x,int y) //画棋子

{

switch (play)

{

case Player1:

if(iGame[x][y]!=Default){

//该地方已经有棋子了

}else{

Ellipse(hdc1,x*xw/MAX,y*yw/MAX,(x+1)*xw/MAX,(y+1)*yw/MAX) ;//Ellipse(圆心x坐标,圆心y坐标,起始角度,终止角度,x轴半径,y轴半径)

}//绘制玩家player1的棋子

iGame[x][y]=Player1; //将该地方标准已经有棋子

break;

case Player2:

if(iGame[x][y]!=Default){}else{

Ellipse(hdc2,x*xw/MAX,y*yw/MAX,(x+1)*xw/MAX,(y+1)*yw/MAX) ;

}//绘制玩家player2的棋子

iGame[x][y]=Player2; //将该地方标准已经有棋子

break;

}

}

void chagePlayer() //改变玩家

{

if(play==Player1) play=Player2;

else

play=Player1;

}

int Look(int x,int y,int play) // 检查模块

{

int i,tempx,tempy;

tempx=x;tempy=y;

for(i=0;i<5&&iGame[tempx][tempy]==play;tempy--,i++); if(i>=5) return OK; //向上核对(y轴)

tempx=x;tempy=y;

for(i=0;i<5&&iGame[tempx][tempy]==play;tempy++,i++); if(i>=5) return OK; //向下核对(y轴)

tempx=x;tempy=y;

for(i=0;i<5&&iGame[tempx][tempy]==play;tempx--,i++); if(i>=5) return OK; //向左核对(x轴)

tempx=x;tempy=y;

for(i=0;i<5&&iGame[tempx][tempy]==play;tempx++,i++); if(i>=5) return OK; //向右核对(y轴)

tempx=x;tempy=y;

for(i=0;i<5&&iGame[tempx][tempy]==play;tempx--,tempy--,i++); if(i>=5) return OK; //向左上核对(x,y轴的对角线向上\)

tempx=x;tempy=y;

for(i=0;i<5&&iGame[tempx][tempy]==play;tempx++,tempy--,i++); if(i>=5) return OK; //向右上核对(x,y轴的对角线向下\)

tempx=x;tempy=y;

for(i=0;i<5&&iGame[tempx][tempy]==play;tempx--,tempy++,i++); if(i>=5) return OK; //向左下核对(x,y轴的对角线向上/)

tempx=x;tempy=y;

for(i=0;i<5&&iGame[tempx][tempy]==play;tempx++,tempy++,i++); if(i>=5) return OK; //向右下核对(x,y轴的对角线向上/)

return NO;

}

void over(HWND hwnd,int play) //判断胜负

{

switch(play)

{

case Player1:

MessageBox(hwnd,"恭喜白棋玩家获得胜利","胜利",0);

SendMessage(hwnd,WM_KEYDOWN,VK_F2,NULL); //重新开始游戏

plays=Stop;

break;

case Player2:

MessageBox(hwnd,"恭喜黑棋玩家获得胜利","胜利",0);

SendMessage(hwnd,WM_KEYDOWN,VK_F2,NULL);

plays=Stop;

break;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值