TC官方合作论坛

 找回密码
 立即注册
查看: 2167|回复: 37
打印 上一主题 下一主题

[游戏] TC简单象棋+源码,界面精美,棋力强悍.欢迎挑战

  [复制链接]
跳转到指定楼层
楼主
发表于 2015-12-31 15:08:52 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 seemk 于 2015-12-31 15:10 编辑

首先上图:


之所以敢说界面精美,是因为之前在论坛下载过几个TC象棋程序的源码,发现都是用图片框做的,但是TC的图片框现在有个问题:无法真正意义的显示透明图片.也就是棋子无法透明导致遮挡棋盘影响美观,比如这位同学的作品:
虽然棋子使用了和棋盘相同的颜色,但是遇到棋盘斜线时,明显遮挡住了棋盘线条.
鄙人使用的方法是直接调用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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 4威望 +40 金币 +40 收起 理由
rainshine + 10 + 10 强悍
itcfan + 10 + 10 很给力!
言术 + 10 + 10 赞一个!
cjxdn + 10 + 10 赞一个!

查看全部评分

回复

使用道具 举报

38#
发表于 2016-9-6 17:25:00 | 只看该作者
seemk 发表于 2016-1-11 10:37
网络问题?程序里根本就没有任何网络功能,TC的bug吧
连线功能快出了,到时候可以连线到任意平台(比如QQ游戏 ...

engine.dll  是不是象棋的着法?
回复 支持 反对

使用道具 举报

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

网络问题?程序里根本就没有任何网络功能,TC的bug吧
连线功能快出了,到时候可以连线到任意平台(比如QQ游戏),所以困难对困难暂时没有什么必要
回复 支持 反对

使用道具 举报

36#
发表于 2016-1-11 08:47:28 | 只看该作者

双开 下棋到另一个时直接提示网络问题  需要重启程序
关闭提示直接关闭另1个程序了 没办法继续了
不知道是不是BUG

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

35#
 楼主| 发表于 2016-1-9 16:39:41 | 只看该作者
cjxdn 发表于 2016-1-8 08:47
作者你什么时候出1.2版本啊

已更新,改了一个似乎很严重的bug,不知道有没有解决不走棋的问题
回复 支持 反对

使用道具 举报

34#
发表于 2016-1-8 08:47:23 | 只看该作者
seemk 发表于 2016-1-7 13:45
因为引擎有个最短时间阿,应该是100毫秒吧,小于100毫秒就默认赋值100毫秒
莫非思考时间长的时候才会出现不 ...

作者你什么时候出1.2版本啊
回复 支持 反对

使用道具 举报

33#
发表于 2016-1-8 08:43:03 | 只看该作者
这个算法是怎么算的呢,自己玩都算不来,
回复 支持 反对

使用道具 举报

32#
 楼主| 发表于 2016-1-7 13:45:06 | 只看该作者
cjxdn 发表于 2016-1-7 08:17
今天无聊 把代码改了一下, 思考时间全部改为0, 还是开2个困难对困难, 竟然能顺利下完棋

功能 思考()

因为引擎有个最短时间阿,应该是100毫秒吧,小于100毫秒就默认赋值100毫秒
莫非思考时间长的时候才会出现不走棋的bug?
回复 支持 反对

使用道具 举报

31#
发表于 2016-1-7 08:17:02 | 只看该作者
seemk 发表于 2016-1-4 08:51
应该不是思考的部分,是界面的问题.麻烦你下次再卡住的时候,观察一下这个进程的cpu占用的情况,是0%还是100% ...

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

功能 思考()
    标签设置文本("标签1","思考中...")
    变量 思考时间=下拉框获取选项("下拉框0")
    如果(思考时间==0)
        思考时间=0
    否则如果(思考时间==1)
        思考时间=0
    否则如果(思考时间==2)
        思考时间=0
    结束
    变量 着法=按时间思考(思考时间)
    如果(假==_结束)
        走一步棋(着法,"电脑")
        如果(假==_结束)
            标签设置文本("标签1","轮到您走")
        结束
    结束
结束
回复 支持 反对

使用道具 举报

30#
发表于 2016-1-4 16:23:03 | 只看该作者
seemk 发表于 2016-1-4 08:51
应该不是思考的部分,是界面的问题.麻烦你下次再卡住的时候,观察一下这个进程的cpu占用的情况,是0%还是100% ...

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

比我开2个程序手动测BUG便捷多了
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18043773号

GMT+8, 2025-9-18 23:15 , Processed in 0.134895 second(s), 25 queries .

Powered by 海安天坑软件科技有限公司

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表