unity2018.4.3f1实现五子棋游戏(四)

一、五子连珠

在这里插入图片描述

落子以后,我们只能以下几个方向(及其偏移量)进行遍历
(一)横:
右:(1,0)
左:(-1,0)
(二)竖:
上:(0,1)
下:(0,-1)
(三)正斜(/):
右上:(1,1)
左下:(-1,-1)
(四)反斜(\):
右下:(1,-1)
左上:(-1,1)

按照偏移量可以再细分四类:
{1,0} — (1,0)、(-1,0)
{ 0, 1 } — (0,1)、(0,-1)
{1,1} — (1,1)、(-1,-1)
{1,-1} — (1,-1)、(-1,1)

用两个for循环,一个纯+偏移量,一个纯-偏移量

二、代码书写

在写代码的过程中,可能少打一个空格多打一个空格,看起来不是那么规范得体
我们可以Crtl+A全选,再依次按下K、F键,自动格式化代码

方向检查函数CheckLine

在这里插入图片描述

public bool CheckLine(int[] pos,int[] offsets)
    {
        int count = 1;
        //纯+
        for (int i = pos[0] + offsets[0], j = pos[1] + offsets[1]; (i >= 0 && i <= 14) && (j >= 0 && j <= 14);
            i += offsets[0], j += offsets[1])
        {
            if (grid[i, j] == (int)turn)
            {
                count ++;
            }
            else
            {
                break;
            }
        }

        //纯-
        for (int i = pos[0] - offsets[0], j = pos[1] - offsets[1]; (i >= 0 && i <= 14) && (j >= 0 && j <= 14);
            i -= offsets[0], j -= offsets[1])
        {
            if (grid[i, j] == (int)turn)
            {
                count++;
            }
            else
            {
                break;
            }
        }

        if (count >= 5)
        {
            return true;
        }

        return false;
    }

传入偏移量:

public bool CheckIsWin(int[] pos)
    {
        if (CheckLine(pos, new int[2] { 1, 0 })) return true;
        if (CheckLine(pos, new int[2] { 0, 1 })) return true;
        if (CheckLine(pos, new int[2] { 1, 1 })) return true;
        if (CheckLine(pos, new int[2] { 1, -1 })) return true;
        return false;
    }

游戏结束

 private void GameEnd()
    {
        gameState = false;
        Debug.Log(turn + "胜利!!");
    }

三、总结

演示视频链接:

https://live.csdn.net/v/119546
这样子,双人对战ok了,接下来整一下关卡模式选择和单机五子棋

四、点击在棋盘才有效,其他地方不可以

EventSystem.current.IsPointerOverGameObject()方法,作用:判断鼠标是否点击在UI上
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaoduangg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值