c语言实现推箱子游戏,求详细思路,谢谢

游戏说明:玩家通过键盘录入 w,s,a,d控制小人向不同方向移动,
其中w代表向上移动,s代表向下移动,a代表向左移动,d 代表向右移动,
当小人在箱子后面的时候可以推着箱子向前移动,当箱子移动到出口的位置,玩家胜利

 地图如下:

    ##########
    #O ####  #
    # X####  #
    #        #
    ######   #
    #  ####  #
    #        #
    #   ######
    #
    ##########

    说明: # 代表墙, O代表小人 ,' ' 代表路, X代表箱子

推箱子游戏代码
http://blog.csdn.net/hgj125073/article/details/8278243

http://wenku.baidu.com/link?url=_E-dNAlcB9pdhCjrPoEb3paCnyqJckIppX0RIiLdUZmP67N6kKBj2wbUhnUtQ_kAMVn8GbFmB5FhOUHFqtJnZdXyXhXt2C5n-jrG7wYDizO

二维数组描述游戏网格, 每个网格对应四种状态.

= 2 , O = 1 ,' ' = 0 , X = 3 , 出口 = 4

w,s,a,d 当前小人位置为a[i][j],
以w键为例:
判断a[i+1][j]的值
如果是2,return;
如果是0or4, [i][j] = 0, a[++i][j] = 1, 刷新显示;
如果是3, a[i][j] = 0, 判断a[i+2][j]的值,
如果是4, a[++i][j] = 1, a[i+1][j] = 3, 胜利
如果是0, a[++i][j] = 1, a[i+1][j] = 3 , 刷新显示

推箱子其实关键就是碰撞判断,楼上的代码啊都不错

Word文档,非常牛逼详细的教程http://pan.baidu.com/s/1boWDYWJ