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

[复制链接]
9471|73
chenci2013 发表于 2013-8-27 10:38 | 显示全部楼层
有机会要试试的。
 楼主| 周立功GD32 发表于 2013-8-27 13:49 | 显示全部楼层
象棋程序里面确实有不少非常精妙的算法,先看看这张图能否理解?
采用16×16扩展棋盘.jpg
pmp 发表于 2013-8-27 13:54 | 显示全部楼层
周立功GD32 发表于 2013-8-27 13:49
象棋程序里面确实有不少非常精妙的算法,先看看这张图能否理解?

象棋的布局么?
pmp 发表于 2013-8-27 13:54 | 显示全部楼层
周立功GD32 发表于 2013-8-27 13:49
象棋程序里面确实有不少非常精妙的算法,先看看这张图能否理解?

红色为士的路径。
pmp 发表于 2013-8-27 13:54 | 显示全部楼层
周立功GD32 发表于 2013-8-27 13:49
象棋程序里面确实有不少非常精妙的算法,先看看这张图能否理解?

蓝色的为象的路径。
pmp 发表于 2013-8-27 13:55 | 显示全部楼层
周立功GD32 发表于 2013-8-27 13:49
象棋程序里面确实有不少非常精妙的算法,先看看这张图能否理解?

那个马是怎么规划的?
 楼主| 周立功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”向下
虽然看起来不太直观,但必须保证效率优先!
 楼主| 周立功GD32 发表于 2013-8-27 14:12 | 显示全部楼层
pmp 发表于 2013-8-27 13:55
那个马是怎么规划的?

车马**可以满棋盘跑,不需要特别限制,只要不超出棋盘即可(进入周边的紫色区域算超出棋盘)
pmp 发表于 2013-8-27 14:20 | 显示全部楼层
周立功GD32 发表于 2013-8-27 14:11
表示一个局面,最简单的想法是定义10行×9列的数组“uint8_t Board[10][9];”,列坐标为x、行坐标为y
元素 ...

是,好思路。
pmp 发表于 2013-8-27 14:21 | 显示全部楼层
周立功GD32 发表于 2013-8-27 14:11
表示一个局面,最简单的想法是定义10行×9列的数组“uint8_t Board[10][9];”,列坐标为x、行坐标为y
元素 ...

楼主果然算法强人。
wangdezhi 发表于 2013-8-27 15:03 | 显示全部楼层
楼主很强大。
1988020566 发表于 2013-8-28 23:05 | 显示全部楼层
帮楼主顶一下的。
violit 发表于 2013-9-5 00:35 | 显示全部楼层
这个程序我装进不带晶振的板子上竟然也能立即执行,莫非是可以自适应?
不知道能否提供一下这个程序的项目框架?不要象棋的算法部分
 楼主| 周立功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();
    ……
avt-deng 发表于 2013-9-12 16:38 | 显示全部楼层
一直有一个梦想,就是要做一个能自动下棋的机器人,自动识别棋盘和棋子,也能自动进行移动和吃掉对方棋子.
做一个,摆在街头,打遍天下无敌手!
呵呵.
shenpingbing 发表于 2013-9-27 20:17 | 显示全部楼层
GD够牛啊  周公都给GD32推广了  看来GD32必定发家啊
zhouming1820 发表于 2013-9-27 23:08 | 显示全部楼层
好厉害   时钟频率都这高了   看来却有进步
周高怀 发表于 2013-9-27 23:20 | 显示全部楼层
不错不错  120   是我见过的这个内核的最高的频率了
heshenggui 发表于 2013-9-28 08:32 | 显示全部楼层
好强大  膜拜一下   有机会我也试试   能跑郑傲的频率
朱海燕 发表于 2013-9-29 18:36 | 显示全部楼层
楼主太牛了  膜拜一下楼主
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部