请问用单片机仿真推箱子游戏导入的C语言程序的算法是什么?
我做的是基于单片机的推箱子游戏设计,但是苦于C语言不精,对于这个的算法不了解,所以想问一下各位这个的算法是什么,如何算出推箱子还有人的一步到下一步的位置,再用C语言写出来...
我做的是基于单片机的推箱子游戏设计,但是苦于C语言不精,对于这个的算法不了解,所以想问一下各位这个的算法是什么,如何算出推箱子还有人的一步到下一步的位置,再用C语言写出来?
那个算法就是指C语言函数还是说是有计算公式的数学函数?
如果好的话,我还会追加分数的。谢谢各位啦。
我的邮箱是zhuzhuzhanghao@126.com
请那位仁兄发发。谢啦。 展开
那个算法就是指C语言函数还是说是有计算公式的数学函数?
如果好的话,我还会追加分数的。谢谢各位啦。
我的邮箱是zhuzhuzhanghao@126.com
请那位仁兄发发。谢啦。 展开
展开全部
主要采用坐标式计算,移动只有4个方向,然后判断移动方向是否有效......
给你一段程序参考吧,完整的代码就算了``` 该函数是关于移动处理的
static void GameMove( char dx, char dy )
{
unsigned char x, y, n ;
if( f_GameDone )
return ;
if( g_GameSteps == 0xFFFF )
return ;
for( y = 1 ; y < 7 ; y ++ )
for( x = 1 ; x < 9 ; x ++ )
if( g_GameBuf[y][x] & 8 )
{
n = g_GameBuf[y+dy][x+dx] ;
if( n & 1 )
return ;
g_GameUndo = 0 ;
if( n & 4 )
{
if( g_GameBuf[y+dy+dy][x+dx+dx] & 5 )
return ;
g_GameBuf[y+dy][x+dx] &= 0xFB ;
g_GameBuf[y+dy+dy][x+dx+dx] |= 4 ;
g_GameUndo = 0x80 ;
}
g_GameBuf[y][x] &= 0xF7 ;
g_GameBuf[y+dy][x+dx] |= 8 ;
g_GameUndo |= ( ((unsigned char)(dx+1)<<2) | (unsigned char)(dy+1) ) ;
g_GameSteps ++ ;
GameDoneCheck() ;
return ;
}
}
给你一段程序参考吧,完整的代码就算了``` 该函数是关于移动处理的
static void GameMove( char dx, char dy )
{
unsigned char x, y, n ;
if( f_GameDone )
return ;
if( g_GameSteps == 0xFFFF )
return ;
for( y = 1 ; y < 7 ; y ++ )
for( x = 1 ; x < 9 ; x ++ )
if( g_GameBuf[y][x] & 8 )
{
n = g_GameBuf[y+dy][x+dx] ;
if( n & 1 )
return ;
g_GameUndo = 0 ;
if( n & 4 )
{
if( g_GameBuf[y+dy+dy][x+dx+dx] & 5 )
return ;
g_GameBuf[y+dy][x+dx] &= 0xFB ;
g_GameBuf[y+dy+dy][x+dx+dx] |= 4 ;
g_GameUndo = 0x80 ;
}
g_GameBuf[y][x] &= 0xF7 ;
g_GameBuf[y+dy][x+dx] |= 8 ;
g_GameUndo |= ( ((unsigned char)(dx+1)<<2) | (unsigned char)(dy+1) ) ;
g_GameSteps ++ ;
GameDoneCheck() ;
return ;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个不需要算法的吧。
除非你的陈程序有自动求解的功能。
就是回溯的思想啊,跟人手工找解法一样。
当一种方法走不通了,就重新找一种方法,直到找到,或者找遍。
除非你的陈程序有自动求解的功能。
就是回溯的思想啊,跟人手工找解法一样。
当一种方法走不通了,就重新找一种方法,直到找到,或者找遍。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
单片机的c语言跟别的不一样????郁闷。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询