字符游戏——智障蛇

继会吃的蛇之后我又写了会自动寻路的智障蛇

void AIMove() {
    int CanMove[4] = {1,1,1,1};//判断哪个方向能走
    if(map[AIsnake.y[0]][AIsnake.x[0]+1] != blank_char && map[AIsnake.y[0]][AIsnake.x[0]+1] != snake_food) CanMove[3] = 0;//right
    if(map[AIsnake.y[0]][AIsnake.x[0]-1] != blank_char && map[AIsnake.y[0]][AIsnake.x[0]-1] != snake_food) CanMove[1] = 0;//left
    if(map[AIsnake.y[0]-1][AIsnake.x[0]] != blank_char && map[AIsnake.y[0]-1][AIsnake.x[0]] != snake_food) CanMove[0] = 0;//up
    if(map[AIsnake.y[0]+1][AIsnake.x[0]] != blank_char && map[AIsnake.y[0]+1][AIsnake.x[0]] != snake_food) CanMove[2] = 0;//down

    if(food.x<=AIsnake.x[0] && food.y<AIsnake.y[0]) AIconstruct=0;
    if(food.x<AIsnake.x[0] && food.y>=AIsnake.y[0]) AIconstruct=1;
    if(food.x>=AIsnake.x[0] && food.y>AIsnake.y[0]) AIconstruct=2;
    if(food.x>AIsnake.x[0] && food.y<=AIsnake.y[0]) AIconstruct=3;
    /*判断食物在哪个方位*/
    while(!CanMove[AIconstruct]) AIconstruct = AIconstruct % 4 + 1;//最终确定走的方向
/*后面的部分与人工控制的蛇相同*/
    map[AIsnake.y[AIsnake.lenth-1]][AIsnake.x[AIsnake.lenth-1]] = blank_char;
    map[AIsnake.y[0]][AIsnake.x[0]] = AIsnake_body;
    int i = 0;
    for( i=AIsnake.lenth-1; i; i-- ) {
        AIsnake.x[i] = AIsnake.x[i-1];
        AIsnake.y[i] = AIsnake.y[i-1];
    } 
    switch(AIconstruct) {
        case 0: AIsnake.y[0]--; break;
        case 1: AIsnake.x[0]--; break;
        case 2: AIsnake.y[0]++; break;
        case 3: AIsnake.x[0]++; break;
    }
    if(map[AIsnake.y[0]][AIsnake.x[0]] != blank_char && map[AIsnake.y[0]][AIsnake.x[0]] != snake_food ) {
        GameWin();
    }
    if(map[AIsnake.y[0]][AIsnake.x[0]] == snake_food ) {
        map[AIsnake.y[0]][AIsnake.x[0]] = AIsnake_head;
        HaveFood = 0;
        AIsnake.lenth++;
    }
    else map[AIsnake.y[0]][AIsnake.x[0]] = AIsnake_head;
} 

这样的蛇还是可以自己走一会儿的(虽然写的真的不好)Orz·~·

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值