TC官方合作论坛

标题: TC简单象棋+源码,界面精美,棋力强悍.欢迎挑战 [打印本页]

作者: seemk    时间: 2015-12-31 15:08
标题: TC简单象棋+源码,界面精美,棋力强悍.欢迎挑战
本帖最后由 seemk 于 2015-12-31 15:10 编辑

首先上图:
[attach]22551[/attach]

之所以敢说界面精美,是因为之前在论坛下载过几个TC象棋程序的源码,发现都是用图片框做的,但是TC的图片框现在有个问题:无法真正意义的显示透明图片.也就是棋子无法透明导致遮挡棋盘影响美观,比如这位同学的作品:[attach]22550[/attach]
虽然棋子使用了和棋盘相同的颜色,但是遇到棋盘斜线时,明显遮挡住了棋盘线条.
鄙人使用的方法是直接调用api函数贴图,并且使用了双缓冲算法,有效的防止了界面闪屏问题(具体实现,可看源码)

之所以敢说棋力强悍,是因为这个软件的思考部分不是用TC写的,而是鄙人前段时间使用C语言写的一个dll文件,然后TC调用这个dll文件进行思考走棋(如果思考部分也用TC来写执行效率应该会很低,毕竟是脚本语言)
虽然棋力不如主流软件(如旋风,名手)那样强悍,但是对于一般人来说还是很难赢它的.

另外在开发过程中遇到来几个问题和建议,向各位高手和TC官方请教:

1.我是使用消息过程里面拦截WM_PAINT消息来重绘棋盘的,如果窗口拖到界面外再拖回来的时候会触发重绘事件,但是这个重绘的过程显得很慢,明显看到刷新的过程,还想请教各位这是TC执行效率太慢的原因,还是我的代码有问题?
2.在win8系统下,程序关闭的时候会报错,不知什么原因,可能和我调用dll文件有关系,还请各位帮忙调试下原因并告知鄙人(为了解决这个问题,目前我是调用ExitProcess强制退出的)
3.建议TC尽快支持透明png图片显示(现在的图片框显示透明pgn只能透出窗口的颜色,透不出其它元素的颜色)
4.我在调用系统api的时候一般使用p开头的类型去传参(也就是地址传参),但是有一个问题:p开头的类型无法传递NULL,只能用int传0来代替,这样的写法还是比较麻烦的,是不是可以建议TC的p开头类型支持传递NULL参数?
5.建议TC增加位运算操作符,很多时候没有位运算非常不方便
6.TC调试功能目前很不方便,只有"步入"没有"步过",有时候想单步跳过一个函数似乎没有办法

下载链接:http://pan.baidu.com/s/1hrf7O92 密码:p2zj


作者: cjxdn    时间: 2015-12-31 15:18
沙发
作者: itcfan    时间: 2015-12-31 15:25

作者: 言术    时间: 2015-12-31 15:35

电脑的这个包真厉害,让它先走,直接把我炮吃了,什么鬼?


作者: itcfan    时间: 2015-12-31 15:37
[attach]22553[/attach]
发现BUG,我上兵,电脑居然动我的“马子”!!!

作者: seemk    时间: 2015-12-31 15:40
言术 发表于 2015-12-31 15:35
电脑的这个包真厉害,让它先走,直接把我炮吃了,什么鬼?

[attach]22554[/attach]

你这是怎么出现的,你改代码了?

作者: seemk    时间: 2015-12-31 15:41
itcfan 发表于 2015-12-31 15:37
发现BUG,我上兵,电脑居然动我的“马子”!!!

呃,我找找bug
作者: cjxdn    时间: 2015-12-31 15:44
seemk 发表于 2015-12-31 15:40
你这是怎么出现的,你改代码了?

我觉得如果不是5.5版本可能会有BUG的问题吧
作者: itcfan    时间: 2015-12-31 15:44
言术 发表于 2015-12-31 15:35
电脑的这个包真厉害,让它先走,直接把我炮吃了,什么鬼?

还很无耻,动人家的“马子”!
作者: 言术    时间: 2015-12-31 15:44
seemk 发表于 2015-12-31 15:40
你这是怎么出现的,你改代码了?

没改代码,代码还没看呢?先体验体验
作者: seemk    时间: 2015-12-31 15:51
cjxdn 发表于 2015-12-31 15:44
我觉得如果不是5.5版本可能会有BUG的问题吧

在我这明明好好的,这可肿么办
作者: seemk    时间: 2015-12-31 15:53
言术 发表于 2015-12-31 15:44
没改代码,代码还没看呢?先体验体验

你是什么系统呀
作者: cjxdn    时间: 2015-12-31 15:54
本帖最后由 cjxdn 于 2015-12-31 15:56 编辑
seemk 发表于 2015-12-31 15:51
在我这明明好好的,这可肿么办

所以我说如果用TC 5.4 5.3..以下的版本可能会出BUG我也是8.1系统 32位

作者: 言术    时间: 2015-12-31 15:54
seemk 发表于 2015-12-31 15:53
你是什么系统呀

windows8.1
作者: seemk    时间: 2015-12-31 15:57
言术 发表于 2015-12-31 15:54
windows8.1

如果你重新下载,只运行,不编译呢,会出错吗
作者: seemk    时间: 2015-12-31 15:57
cjxdn 发表于 2015-12-31 15:54
所以我说如果用TC 5.4 5.3..以下的版本可能会出BUG我也是8.1系统 32位

如果你重新下载,只运行,不编译呢,会出错吗
作者: cjxdn    时间: 2015-12-31 16:00
seemk 发表于 2015-12-31 15:57
如果你重新下载,只运行,不编译呢,会出错吗

我还没玩出BUG

我说有BUG的可能是版本问题
作者: 言术    时间: 2015-12-31 16:00
seemk 发表于 2015-12-31 15:57
如果你重新下载,只运行,不编译呢,会出错吗

那个问题只出现过一次,后来就没出现过了,现在又发现个问题,下了一会就没法移动棋子了


作者: seemk    时间: 2015-12-31 16:03
言术 发表于 2015-12-31 16:00
那个问题只出现过一次,后来就没出现过了,现在又发现个问题,下了一会就没法移动棋子了

...

这不是bug,电脑将军呢,你只能走应将的着法
作者: sam7894604    时间: 2015-12-31 16:37
这有趣,做个标记回家在看。
作者: seemk    时间: 2015-12-31 16:40
sam7894604 发表于 2015-12-31 16:37
这有趣,做个标记回家在看。

欢迎哥哥指教,有几个很诡异的问题需要解决...
作者: cjxdn    时间: 2015-12-31 17:00
本帖最后由 cjxdn 于 2015-12-31 17:53 编辑

[attach]22557[/attach]
困难对困难

左边的陷入思考中好几分钟了啊

半小时都没反应
我觉得是BUG了

作者: 高冷小Q    时间: 2015-12-31 18:47
流弊
作者: sam7894604    时间: 2015-12-31 20:51
本帖最后由 sam7894604 于 2015-12-31 20:53 编辑




作者: seemk    时间: 2016-1-1 17:13
sam7894604 发表于 2015-12-31 20:51
  • 动态库调用 支持 rc: 不需要经过一次 获取资源路径
  • 格子的目标 X、Y 运算量过大,这其实位置是固定 ...

  • 嗯嗯,按照您的意见改了一些代码并上传了
    1.记得TC4.0时代总有几个函数不支持rc路径,懒得记到底哪些支持哪些不支持,于是干脆每次都用获取资源路径来调用
    2.已经改成数组保存了,提前生成.不过对于界面刷新速度没什么效果
    3.在我印象中只有设备DC需要选回去,而内存DC不用.保险起见还是都选回去吧,但是win8下关闭时崩溃的问题似乎与这无关
    4.
    5.谢谢提供支持库
    作者: cjxdn    时间: 2016-1-2 21:11
    seemk 发表于 2016-1-1 17:13
    嗯嗯,按照您的意见改了一些代码并上传了
    1.记得TC4.0时代总有几个函数不支持rc路径,懒得记到底哪些支持哪 ...

    1.1也是有思考中BUG
    [attach]22561[/attach]

    作者: seemk    时间: 2016-1-3 16:29
    cjxdn 发表于 2016-1-2 21:11
    1.1也是有思考中BUG

    我也是醉了,不知道为啥会有这个bug,找了很久没找到
    作者: cjxdn    时间: 2016-1-3 18:34
    seemk 发表于 2016-1-3 16:29
    我也是醉了,不知道为啥会有这个bug,找了很久没找到

    会不会是电脑算法思路被卡住了吧
    电脑认为"无棋子"可走,走哪个棋子都赢不了了
    也就是"弃权"

    这是我小白的想法
    作者: seemk    时间: 2016-1-4 08:51
    cjxdn 发表于 2016-1-3 18:34
    会不会是电脑算法思路被卡住了吧
    电脑认为"无棋子"可走,走哪个棋子都赢不了了
    也就是"弃权"

    应该不是思考的部分,是界面的问题.麻烦你下次再卡住的时候,观察一下这个进程的cpu占用的情况,是0%还是100%
    (如果你是双核电脑就是50%四核的话百分25%)
    作者: cjxdn    时间: 2016-1-4 16:23
    seemk 发表于 2016-1-4 08:51
    应该不是思考的部分,是界面的问题.麻烦你下次再卡住的时候,观察一下这个进程的cpu占用的情况,是0%还是100% ...

    我觉得你把代码改成
    困难电脑VS困难电脑
    让程序自己对战自己下棋
    这样更容易弄清楚哪里的BUG问题

    比我开2个程序手动测BUG便捷多了
    作者: cjxdn    时间: 2016-1-7 08:17
    seemk 发表于 2016-1-4 08:51
    应该不是思考的部分,是界面的问题.麻烦你下次再卡住的时候,观察一下这个进程的cpu占用的情况,是0%还是100% ...

    今天无聊 把代码改了一下, 思考时间全部改为0, 还是开2个困难对困难, 竟然能顺利下完棋

    功能 思考()
        标签设置文本("标签1","思考中...")
        变量 思考时间=下拉框获取选项("下拉框0")
        如果(思考时间==0)
            思考时间=0
        否则如果(思考时间==1)
            思考时间=0
        否则如果(思考时间==2)
            思考时间=0
        结束
        变量 着法=按时间思考(思考时间)
        如果(假==_结束)
            走一步棋(着法,"电脑")
            如果(假==_结束)
                标签设置文本("标签1","轮到您走")
            结束
        结束
    结束
    作者: seemk    时间: 2016-1-7 13:45
    cjxdn 发表于 2016-1-7 08:17
    今天无聊 把代码改了一下, 思考时间全部改为0, 还是开2个困难对困难, 竟然能顺利下完棋

    功能 思考()

    因为引擎有个最短时间阿,应该是100毫秒吧,小于100毫秒就默认赋值100毫秒
    莫非思考时间长的时候才会出现不走棋的bug?
    作者: 地狱骑士    时间: 2016-1-8 08:43
    这个算法是怎么算的呢,自己玩都算不来,
    作者: cjxdn    时间: 2016-1-8 08:47
    seemk 发表于 2016-1-7 13:45
    因为引擎有个最短时间阿,应该是100毫秒吧,小于100毫秒就默认赋值100毫秒
    莫非思考时间长的时候才会出现不 ...

    作者你什么时候出1.2版本啊
    作者: seemk    时间: 2016-1-9 16:39
    cjxdn 发表于 2016-1-8 08:47
    作者你什么时候出1.2版本啊

    已更新,改了一个似乎很严重的bug,不知道有没有解决不走棋的问题
    作者: cjxdn    时间: 2016-1-11 08:47
    [attach]22644[/attach]
    双开 下棋到另一个时直接提示网络问题  需要重启程序
    关闭提示直接关闭另1个程序了 没办法继续了
    不知道是不是BUG

    楼主你不能弄个 困难电脑对困难电脑模式吗

    作者: seemk    时间: 2016-1-11 10:37
    cjxdn 发表于 2016-1-11 08:47
    双开 下棋到另一个时直接提示网络问题  需要重启程序
    关闭提示直接关闭另1个程序了 没办法继续了
    不知道 ...

    网络问题?程序里根本就没有任何网络功能,TC的bug吧
    连线功能快出了,到时候可以连线到任意平台(比如QQ游戏),所以困难对困难暂时没有什么必要
    作者: dongxc25    时间: 2016-9-6 17:25
    seemk 发表于 2016-1-11 10:37
    网络问题?程序里根本就没有任何网络功能,TC的bug吧
    连线功能快出了,到时候可以连线到任意平台(比如QQ游戏 ...

    engine.dll  是不是象棋的着法?




    欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1