打印

【原创】为GD32设计的象棋对弈程序(新增120MHz超频版本)

[复制链接]
楼主: 周立功GD32
手机看帖
扫描二维码
随时随地手机跟帖
41
有机会要试试的。

使用特权

评论回复
42
周立功GD32|  楼主 | 2013-8-27 13:49 | 只看该作者
象棋程序里面确实有不少非常精妙的算法,先看看这张图能否理解?

使用特权

评论回复
43
pmp| | 2013-8-27 13:54 | 只看该作者
周立功GD32 发表于 2013-8-27 13:49
象棋程序里面确实有不少非常精妙的算法,先看看这张图能否理解?

象棋的布局么?

使用特权

评论回复
44
pmp| | 2013-8-27 13:54 | 只看该作者
周立功GD32 发表于 2013-8-27 13:49
象棋程序里面确实有不少非常精妙的算法,先看看这张图能否理解?

红色为士的路径。

使用特权

评论回复
45
pmp| | 2013-8-27 13:54 | 只看该作者
周立功GD32 发表于 2013-8-27 13:49
象棋程序里面确实有不少非常精妙的算法,先看看这张图能否理解?

蓝色的为象的路径。

使用特权

评论回复
46
pmp| | 2013-8-27 13:55 | 只看该作者
周立功GD32 发表于 2013-8-27 13:49
象棋程序里面确实有不少非常精妙的算法,先看看这张图能否理解?

那个马是怎么规划的?

使用特权

评论回复
47
周立功GD32|  楼主 | 2013-8-27 14:11 | 只看该作者
表示一个局面,最简单的想法是定义10行×9列的数组“uint8_t Board[10][9];”,列坐标为x、行坐标为y
元素值表示棋子值,0~15表示红方,16~31表示黑方,空白可以用-1或255表示
但是,二维数组的访问效率较低,我是弃用的,而实际采用的是效率更高的16×16扩展棋盘“uint8_t Board[256];”
这是个一维数组,访问效率非常高!
“x += 0x01;”表示向右、“x -= 0x01;”向左、“y -= 0x10”向上、“y += 0x10”向下
虽然看起来不太直观,但必须保证效率优先!

使用特权

评论回复
48
周立功GD32|  楼主 | 2013-8-27 14:12 | 只看该作者
pmp 发表于 2013-8-27 13:55
那个马是怎么规划的?

车马**可以满棋盘跑,不需要特别限制,只要不超出棋盘即可(进入周边的紫色区域算超出棋盘)

使用特权

评论回复
49
pmp| | 2013-8-27 14:20 | 只看该作者
周立功GD32 发表于 2013-8-27 14:11
表示一个局面,最简单的想法是定义10行×9列的数组“uint8_t Board[10][9];”,列坐标为x、行坐标为y
元素 ...

是,好思路。

使用特权

评论回复
50
pmp| | 2013-8-27 14:21 | 只看该作者
周立功GD32 发表于 2013-8-27 14:11
表示一个局面,最简单的想法是定义10行×9列的数组“uint8_t Board[10][9];”,列坐标为x、行坐标为y
元素 ...

楼主果然算法强人。

使用特权

评论回复
51
wangdezhi| | 2013-8-27 15:03 | 只看该作者
楼主很强大。

使用特权

评论回复
52
1988020566| | 2013-8-28 23:05 | 只看该作者
帮楼主顶一下的。

使用特权

评论回复
53
violit| | 2013-9-5 00:35 | 只看该作者
这个程序我装进不带晶振的板子上竟然也能立即执行,莫非是可以自适应?
不知道能否提供一下这个程序的项目框架?不要象棋的算法部分

使用特权

评论回复
54
周立功GD32|  楼主 | 2013-9-5 08:36 | 只看该作者
/*********************************************************************************************************
    设备初始化
*********************************************************************************************************/
void DeviceInit(void)
{
    //  设置系统时钟(104MHz主频)
    if (sysClockSet(OSC_HSE, FREQ_8M, 13) == FALSE)     //  采用外部8MHz晶振,13倍频
    {
        sysClockSet(OSC_HSI, FREQ_8M, 8);               //  若外部晶振失效,则改用内部振荡器
    }

    //  SysTick(系统节拍定时器)初始化
    sysTickInit();
    ……

使用特权

评论回复
55
avt-deng| | 2013-9-12 16:38 | 只看该作者
一直有一个梦想,就是要做一个能自动下棋的机器人,自动识别棋盘和棋子,也能自动进行移动和吃掉对方棋子.
做一个,摆在街头,打遍天下无敌手!
呵呵.

使用特权

评论回复
56
shenpingbing| | 2013-9-27 20:17 | 只看该作者
GD够牛啊  周公都给GD32推广了  看来GD32必定发家啊

使用特权

评论回复
57
zhouming1820| | 2013-9-27 23:08 | 只看该作者
好厉害   时钟频率都这高了   看来却有进步

使用特权

评论回复
58
周高怀| | 2013-9-27 23:20 | 只看该作者
不错不错  120   是我见过的这个内核的最高的频率了

使用特权

评论回复
59
heshenggui| | 2013-9-28 08:32 | 只看该作者
好强大  膜拜一下   有机会我也试试   能跑郑傲的频率

使用特权

评论回复
60
朱海燕| | 2013-9-29 18:36 | 只看该作者
楼主太牛了  膜拜一下楼主

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则