unity 五子棋脚本
时间: 2023-07-12 13:19:20 浏览: 171
Unity 五子棋
五子棋是一种非常经典的游戏,以下是一个简单的Unity五子棋脚本示例,供参考:
```csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Gobang : MonoBehaviour
{
// 棋盘大小
public int size = 15;
// 棋盘格子预制件
public GameObject gridPrefab;
// 棋子预制件
public GameObject chessPrefab;
// 棋盘二维数组
private GameObject[,] grids;
// 当前下棋方
private bool isBlack = true;
// 棋子列表
private List<GameObject> chesses = new List<GameObject>();
void Start()
{
// 初始化棋盘
InitBoard();
}
// 初始化棋盘
void InitBoard()
{
grids = new GameObject[size, size];
for (int x = 0; x < size; x++)
{
for (int y = 0; y < size; y++)
{
// 实例化棋盘格子预制件
GameObject grid = Instantiate(gridPrefab, transform);
// 设置棋盘格子位置
grid.transform.position = new Vector3(x - size / 2, y - size / 2, 0);
// 将棋盘格子添加到数组中
grids[x, y] = grid;
}
}
}
// 下棋
public void PlayChess(int x, int y)
{
// 判断该位置是否已经下过棋
if (grids[x, y].transform.childCount > 0)
{
return;
}
// 实例化棋子预制件
GameObject chess = Instantiate(chessPrefab, transform);
// 设置棋子位置
chess.transform.position = new Vector3(x - size / 2, y - size / 2, 0);
// 设置棋子颜色
chess.GetComponent<MeshRenderer>().material.color = isBlack ? Color.black : Color.white;
// 将棋子添加到列表中
chesses.Add(chess);
// 将棋子添加到棋盘格子中
chess.transform.parent = grids[x, y].transform;
// 判断是否胜利
if (CheckWin(x, y))
{
Debug.Log(isBlack ? "黑方胜利" : "白方胜利");
// 清空棋子列表
chesses.Clear();
}
else
{
// 切换下棋方
isBlack = !isBlack;
}
}
// 检查是否胜利
bool CheckWin(int x, int y)
{
int count = 0;
// 判断横向是否五子连珠
for (int i = x - 4; i <= x + 4; i++)
{
if (i >= 0 && i < size && grids[i, y].transform.childCount > 0 && grids[i, y].transform.GetChild(0).GetComponent<MeshRenderer>().material.color == (isBlack ? Color.black : Color.white))
{
count++;
if (count >= 5)
{
return true;
}
}
else
{
count = 0;
}
}
count = 0;
// 判断纵向是否五子连珠
for (int j = y - 4; j <= y + 4; j++)
{
if (j >= 0 && j < size && grids[x, j].transform.childCount > 0 && grids[x, j].transform.GetChild(0).GetComponent<MeshRenderer>().material.color == (isBlack ? Color.black : Color.white))
{
count++;
if (count >= 5)
{
return true;
}
}
else
{
count = 0;
}
}
count = 0;
// 判断左上-右下是否五子连珠
for (int i = x - 4, j = y - 4; i <= x + 4 && j <= y + 4; i++, j++)
{
if (i >= 0 && i < size && j >= 0 && j < size && grids[i, j].transform.childCount > 0 && grids[i, j].transform.GetChild(0).GetComponent<MeshRenderer>().material.color == (isBlack ? Color.black : Color.white))
{
count++;
if (count >= 5)
{
return true;
}
}
else
{
count = 0;
}
}
count = 0;
// 判断左下-右上是否五子连珠
for (int i = x - 4, j = y + 4; i <= x + 4 && j >= y - 4; i++, j--)
{
if (i >= 0 && i < size && j >= 0 && j < size && grids[i, j].transform.childCount > 0 && grids[i, j].transform.GetChild(0).GetComponent<MeshRenderer>().material.color == (isBlack ? Color.black : Color.white))
{
count++;
if (count >= 5)
{
return true;
}
}
else
{
count = 0;
}
}
return false;
}
}
```
以上代码实现了五子棋游戏的基本功能,包括棋盘的初始化、下棋、判断胜负等。需要注意的是,代码中的棋盘格子和棋子都是使用Unity的基本三维对象实现的,如果需要更加逼真的效果,可以使用3D模型来替代。
阅读全文