| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 910 人关注过本帖
标题:C++语言编写的五子棋小游戏继续求助
只看楼主 加入收藏
单纯的小孩
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-6-3
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
C++语言编写的五子棋小游戏继续求助
  小弟想在下面的五子棋游戏中加入个“重新开始”的按钮,求大神帮忙啊!#include <graphics.h>
#include <conio.h>
#include<mmsystem.h>
#pragma comment(lib,"winmm.lib")
void ShowPlate();
void PlayGame();
bool flag=true;
int arr[16][16];
void main()
{
    mciSendString("play 高山流水.mp3",0,0,0);
    initgraph(680,680);     //划定屏幕大小为680  680
    ShowPlate();
    PlayGame();
    getch();
}
void ShowPlate()
{
    setfillstyle(BROWN);            
    bar(40,40,640,640);              //定义棋盘范围,并且棋盘颜色为棕色
    setfillstyle(LIGHTGRAY);         //定义棋盘边缘,颜色为浅灰色
    bar(0,0,40,640);
    bar(0,0,640,40);
    bar(640,0,680,680);
    bar(0,640,680,680);
    for(int x=40;x<=640;x+=40)       //画纵向棋盘线,间距为40
    {
        line(x,40,x,640);
    }
    for(int y=40;y<=640;y+=40)      //画横向棋盘线,间距为40
    {
        line(40,y,640,y);
    }
}
void PlayGame()
{
    int q=1;
    while(q)
    {        
        MOUSEMSG msg=GetMouseMsg();        //获取鼠标点的信息
         int m,n,x,y;            //定义m,n,x,y确定棋子落得准确位置
        m=msg.x%40;
        n=msg.y%40;
        if(m==20||n==20)
        continue;
         x=msg.x/40+m/20-1;
        y=msg.y/40+n/20-1;
         if(x>=0&&x<=15&&y>=0&&y<=15)
        {
        
        if(msg.mkLButton&&arr[y][x]==0)           //判断要下棋子的位置是否原来有棋子
        {
            
            if(flag==true)
            {   mciSendString("play xq.mp3",0,0,0);
                arr[y][x]=1;                        //若棋子为黑色,则该处数组的值变为1
                if(m<20&&n<20)   
                {
                    setfillstyle(BLACK);
                    fillellipse(msg.x/40*40,msg.y/40*40,10,10);                                       
                }
                else if(m>20&&n>20)
                {
                    setfillstyle(BLACK);
                    fillellipse((msg.x/40+1)*40,(msg.y/40+1)*40,10,10);
                    
                }
                else if(m<20&&n>20)
                {
                    setfillstyle(BLACK);
                    fillellipse(msg.x/40*40,(msg.y/40+1)*40,10,10);
                    
                }
                else if(m>20&&n<20)
                {
                    setfillstyle(BLACK);
                    fillellipse((msg.x/40+1)*40,msg.y/40*40,10,10);
                    
                }
                flag=false;
            }
            
            else
            {  mciSendString("play xq.mp3",0,0,0);
                arr[y][x]=-1;                             //若棋子为白色,则该处数组的值变为-1
                if(m<20&&n<20)   
                {
                    setfillstyle(WHITE);
                    fillellipse(msg.x/40*40,msg.y/40*40,10,10);
                    
                }
                else if(m>20&&n>20)
                {
                    setfillstyle(WHITE);
                    fillellipse((msg.x/40+1)*40,(msg.y/40+1)*40,10,10);
                    
                }
                else if(m<20&&n>20)
                {
                    setfillstyle(WHITE);
                    fillellipse(msg.x/40*40,(msg.y/40+1)*40,10,10);
                    
                }
                else if(m>20&&n<20)
                {
                    setfillstyle(WHITE);
                    fillellipse((msg.x/40+1)*40,msg.y/40*40,10,10);
                    
                }
                flag=true;
            }                        
        }        
        }
        for (int i=0;i<15;i++)      //横向判断输赢
        {
        int num=0;
        for(int j=i;j<i+5;j++)
        {
           num=num+arr[y][j];
           if (num==5)
           {
               outtextxy(100,100,"黑色赢了!");
               mciSendString("play ls.mp3",0,0,0);
               q=0;
               break;
           }
           if (num==-5)
           {
               outtextxy(100,100,"白色赢了!");
               mciSendString("play ls.mp3",0,0,0);
               q=0;
               break;
           }
        }
        }
       for(int M=0;M<i+5;M++)      //纵向判断输赢
       {
            int num=0;
            for(int j=M;j<15;j++)
            {
                num=num+arr[j][x];
                if(num==5)
                {
                    outtextxy(100,100,"黑色赢了!");
                    mciSendString("play ls.mp3",0,0,0);
                    q=0;
                    break;
                }
                if(num==-5)
                {
                    outtextxy(100,100,"白色赢了!");
                    mciSendString("play ls.mp3",0,0,0);
                    q=0;
                    break;
                }
            }
        }   
        for(int p=y-5,q=x-5;p<15;p++,q++)         //左上右下判断输赢
        {
            int num=0;
            for(int i=0;i<5;i++)
            {
                num=num+arr[p+i][q+i];
                if(num==5)
                {
                    outtextxy(100,100,"黑色赢了!");
                    mciSendString("play ls.mp3",0,0,0);
                    q=0;
                    break;
                }
                if(num==-5)
                {
                    outtextxy(100,100,"白色赢了!");
                    mciSendString("play ls.mp3",0,0,0);
                    q=0;
                    break;
                }
            }
        }
        for(int P=y+5,Q=x-5;Q<15;P--,Q++)       //左下右上判断输赢
        {
            int num=0;
            for(int i=0;i<5;i++)
            {
                num=num+arr[P-i][Q+i];
                if(num==5)
                {
                    outtextxy(100,100,"黑色赢了!");
                    mciSendString("play ls.mp3",0,0,0);
                    q=0;
                    break;
                }
                if(num==-5)
                {
                    outtextxy(100,100,"白色赢了!");
                    mciSendString("play ls.mp3",0,0,0);
                    q=0;
                    break;
                }
            }
        }        
    }
}
搜索更多相关主题的帖子: include comment 五子棋游戏 void 
2013-06-03 16:40
单纯的小孩
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-6-3
收藏
得分:0 
  如果有大神懂的话尽快联系我啊,很急用,分什么的能给多少就给多少啊。
2013-06-03 16:53
lonmaor
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:郑州
等 级:版主
威 望:75
帖 子:2637
专家分:6423
注 册:2007-11-27
收藏
得分:20 
tc的程序。图形库什么的现在很少人在用。

从不知道到知道,到知道自己不知道,成长的道路上脚步深深浅浅
2013-06-03 17:15
单纯的小孩
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-6-3
收藏
得分:0 
回复 3楼 lonmaor
我是大一学生,刚刚学习,老师教我们弄的这个。
2013-06-03 17:24
快速回复:C++语言编写的五子棋小游戏继续求助
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.047501 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved