| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1133 人关注过本帖
标题:五子棋遇到的一些问题
只看楼主 加入收藏
ltyjyufo
Rank: 9Rank: 9Rank: 9
来 自:未来
等 级:蜘蛛侠
威 望:2
帖 子:353
专家分:1166
注 册:2009-10-25
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:9 
五子棋遇到的一些问题
   想了很久有些地方不是看得很明白,所以上来问问。。。。。。。。。。
   五子棋棋盘如下面所示:
     
图片附件: 游客没有浏览图片的权限,请 登录注册

问题:
1、当我们下棋时单击左键,由OnLButtonDown函数响应,得到点击位置的坐标(x,y),这个坐标是不是以像素为单
    位?
 2、对应的棋盘的坐标是以什么为单位?是怎么实现的?
 3、单击左键得到的坐标是很精确的,棋盘的坐标(线交叉的地方)也是一个精确的值,这两个值在我们点击棋盘的时候
    相等的机率是很低的,既然这个不等,那在画棋子的时候怎么办?
 4、棋盘上有很多个小的方格,如果我很巧合的点击在了方格的正中间时,那在画棋子时该画在哪里。
 5、这段代码看的不是很明白:
    void CMyDlg::OnLButtonDown(UINT nFlags, CPoint point)
   {
        int x1,y1;
        x1=(int)(point.x-7)/29 ;  //这里减7后在整除29是什么意思????
        y1=(int)(point.y-7)/29 ;
        twzq.downzi(x1,y1);
        if (twzq.twinner.winner==1)
        {
            CMyDlg::MessageBox("白棋获胜!" );
            twzq.draw();
        }
        if (twzq.twinner.winner==2)
        {
            CMyDlg::MessageBox("黑棋获胜!" );
        twzq.draw();
   }
 6、还有这段代码:
    void wzq::DrawQZ(int nx,int ny,bool style)//画棋子
    {
        if (wzq::dcseted==false)return;
        if (nx>15||ny>15) return;
        if (style==false )
        {
            dc->BitBlt(nx*29+7,ny*29+7,28,28,mask,0,0,MERGEPAINT);  //这里乘29在加7世什么意思???
            dc->BitBlt(nx*29+7,ny*29+7,28,28,qzb,0,0,SRCAND);
        }
        else
        {
            dc->BitBlt(nx*29+7,ny*29+7,28,28,mask,0,0,MERGEPAINT);
            dc->BitBlt(nx*29+7,ny*29+7,28,28,qzh,0,0,SRCAND);
        }
    }
  暂时提这几个问题,如果还有问题的话再提出来,刚刚学VC不久,所以有很多问题不明白,希望高手解释一下,先谢
  过了
搜索更多相关主题的帖子: 五子棋 
2010-04-16 21:40
ltyjyufo
Rank: 9Rank: 9Rank: 9
来 自:未来
等 级:蜘蛛侠
威 望:2
帖 子:353
专家分:1166
注 册:2009-10-25
收藏
得分:0 
   恩 29是一个格子的宽度,那乘29或除29又是为什么呢,我实在想不通,还有加7、减7也想不明白。。。。

翱翔天空的雄鹰固然令人羡慕,却容易被禁锢于牢笼之中,只有那夜色中的蝙蝠才是真正自由的飞翔者....
2010-04-17 12:41
ltyjyufo
Rank: 9Rank: 9Rank: 9
来 自:未来
等 级:蜘蛛侠
威 望:2
帖 子:353
专家分:1166
注 册:2009-10-25
收藏
得分:0 
还有就是在画棋子的时候为什么要用到两次BitBlt()函数。。。。。。。。。。。。

翱翔天空的雄鹰固然令人羡慕,却容易被禁锢于牢笼之中,只有那夜色中的蝙蝠才是真正自由的飞翔者....
2010-04-17 17:09
天使梦魔
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:37
帖 子:564
专家分:2754
注 册:2007-8-29
收藏
得分:10 
你应该学学最基本的游戏引擎,可以看看游戏开发中的人工智能
1.坐标可以是自己定义的,但没多少人用真实坐标
2.坐标就是有几个格子做几个坐标,玩过网游没有,玩过的话网游里都有一个坐标提供给玩家找其他玩家位置,这个坐标就好比是棋盘上的坐标.
3.把点移动到方框中间就想通了,不存在绝对的中间位置.每个方框都有自己的像素坐标范围.如果方框是4像素,那点击4就是第一格,5就是第二格,物理像素不存在4.5
2010-04-17 19:08
ltyjyufo
Rank: 9Rank: 9Rank: 9
来 自:未来
等 级:蜘蛛侠
威 望:2
帖 子:353
专家分:1166
注 册:2009-10-25
收藏
得分:0 
回复 6楼 天使梦魔
那这么说来,那个“7”指的是一个格子的像素了?????????

翱翔天空的雄鹰固然令人羡慕,却容易被禁锢于牢笼之中,只有那夜色中的蝙蝠才是真正自由的飞翔者....
2010-04-18 18:05
ltyjyufo
Rank: 9Rank: 9Rank: 9
来 自:未来
等 级:蜘蛛侠
威 望:2
帖 子:353
专家分:1166
注 册:2009-10-25
收藏
得分:0 
回复 8楼 zmh886
  29是棋盘上一格的宽度没错。

       但7如果是棋盘外面的宽度的话,那就该减去14才对啊,棋盘的四边都有剩余啊。

翱翔天空的雄鹰固然令人羡慕,却容易被禁锢于牢笼之中,只有那夜色中的蝙蝠才是真正自由的飞翔者....
2010-04-18 18:31
ltyjyufo
Rank: 9Rank: 9Rank: 9
来 自:未来
等 级:蜘蛛侠
威 望:2
帖 子:353
专家分:1166
注 册:2009-10-25
收藏
得分:0 
  而且我试了一下,棋盘外部那部分的宽度是20

翱翔天空的雄鹰固然令人羡慕,却容易被禁锢于牢笼之中,只有那夜色中的蝙蝠才是真正自由的飞翔者....
2010-04-18 18:32
快速回复:五子棋遇到的一些问题
数据加载中...
 
   



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

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