三消
来源:互联网 发布:已备案的域名转让 编辑:程序博客网 时间:2024/04/29 06:55
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class 三消 : MonoBehaviour
{
GameObject[,] cubeArr = new GameObject[8, 8];//用来存放cube
List<GameObject> list = new List<GameObject>();//用来存放要交换位置的cube
List<GameObject> list_DesCube = new List<GameObject>();//用来存放要销毁的cube
public Text text;
public float Rote;
int num = 0;
bool IsFrist = true;
bool diaoyong = true;
float time;
// Use this for initialization
void Start()
{
text = text.GetComponent<Text>();
for (int i = 0; i < 8; i++)
{
for (int j = 0; j < 8; j++)
{
//克隆对象原始并返回克隆。
GameObject cube = Instantiate(Resources.Load("Cube" + Random.Range(1, 8))) as GameObject;//资源类允许您查找和访问对象,包括资产 //加载存储在 Resources 文件夹中的路径的资产。
cube.transform.position = new Vector3(i, j, 0);
cube.transform.localScale = new Vector3(0.9f, 0.9f, 0.9f);
cubeArr[i, j] = cube;//把生成的cube放入二维数组
}
}
}
// Update is called once per frame
void Update()
{
if (list.Count > 0)
{
list[0].transform.Rotate(0, Rote * Time.deltaTime, 0);
}
time += Time.deltaTime;
if (diaoyong)
{
DesCube();
}
SwopCube();
}
public void AddList(GameObject cube)
{
if (list_DesCube.Count == 0)
{
list_DesCube.Add(cube);
}
else
{
foreach (var item in list_DesCube)
{
if (item == cube)
{
return;
}
}
list_DesCube.Add(cube);
}
}
public bool IsDesCube()
{
for (int i = 0; i < 6; i++)
{
for (int j = 0; j < 8; j++)
{
if (cubeArr[i, j].name == cubeArr[i + 1, j].name && cubeArr[i, j].name == cubeArr[i + 2, j].name)
{
AddList(cubeArr[i, j]);
AddList(cubeArr[i + 1, j]);
AddList(cubeArr[i + 2, j]);
}
}
}
for (int i = 0; i < 8; i++)
{
for (int j = 0; j < 6; j++)
{
if (cubeArr[i, j].name == cubeArr[i, j + 1].name && cubeArr[i, j].name == cubeArr[i, j + 2].name)
{
AddList(cubeArr[i, j]);
AddList(cubeArr[i, j + 1]);
AddList(cubeArr[i, j + 2]);
}
}
}
if (list_DesCube.Count > 0)
{
return true;
}
else
{
return false;
}
}
public void DesCube()
{
if (IsDesCube())
{
for (int i = 0; i < list_DesCube.Count;)
{
Vector3 pos = list_DesCube[0].transform.position;
int a = (int)pos.x;
int b = (int)pos.y;
Destroy(list_DesCube[0]);
list_DesCube.RemoveAt(0);
if (time <= 1)
{
num = 0;
}
text.text = "得分:" + num + "分";
num++;
for (int j = b + 1; j < 8; j++)
{
cubeArr[a, j].transform.position = new Vector3(a, j - 1, 0);
cubeArr[a, j - 1] = cubeArr[a, j];
}
GameObject cube = Instantiate(Resources.Load("Cube" + Random.Range(1, 8))) as GameObject;
cube.transform.position = new Vector3(a, 7, 0);
cube.transform.localScale = new Vector3(0.9f, 0.9f, 0.9f);
cubeArr[a, 7] = cube;
}
//IsOver();
}
}
public void SwopCube()
{
//沿着原点创建一条射线
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); //返回一个从相机到屏幕的射线
RaycastHit hit;
if (Physics.Raycast(ray, out hit))//用ray检测是否存在物理属性
{
if (Input.GetMouseButtonDown(0))
{
if (IsFrist)
{
list.Add(hit.collider.gameObject);//把第一个元素添加进链表
Rote = 90f;//第一个物体进行旋转
IsFrist = false;
}
if (hit.collider.gameObject.transform.tag == "cube" && IsFrist == false && hit.collider.gameObject.name != list[0].name)
{
list.Add(hit.collider.gameObject);//添加第二个元素
}
}
}
if (list.Count == 2)
{
if (Vector3.Distance(list[0].transform.position, list[1].transform.position) < 1.2f)
{
Rote = 0;
list[0].transform.rotation = Quaternion.Euler(new Vector3(0, 0, 0));
IsFrist = true;
Swop();
if (!IsDesCube())
{
Swop();
}
else
{
//IsOver();
}
list.Clear();
}
else
{
Rote = 0;
list[0].transform.rotation = Quaternion.Euler(new Vector3(0, 0, 0));
list.Clear();
IsFrist = true;
}
}
}
public void Swop()
{
//交换坐标
Vector3 pos = list[0].transform.position;
list[0].transform.position = list[1].transform.position;
list[1].transform.position = pos;
//交换索引
int a = (int)list[0].transform.position.x;
int b = (int)list[0].transform.position.y;
cubeArr[a, b] = list[0];
int c = (int)list[1].transform.position.x;
int d = (int)list[1].transform.position.y;
cubeArr[c, d] = list[1];
}
public void IsOver()
{
diaoyong = false;
for (int i = 0; i < 8; i++)
{
for (int j = 0; j < 7; j++)
{
//交换坐标
Vector3 pos = cubeArr[i, j].transform.position;
cubeArr[i, j].transform.position = cubeArr[i, j + 1].transform.position;
cubeArr[i, j + 1].transform.position = pos;
//交换索引
int a = (int)cubeArr[i, j].transform.position.x;
int b = (int)cubeArr[i, j].transform.position.y;
cubeArr[a, b] = cubeArr[i, j];
int c = (int)cubeArr[i, j + 1].transform.position.x;
int d = (int)cubeArr[i, j + 1].transform.position.y;
cubeArr[c, d] = cubeArr[i, j + 1];
if (IsDesCube())
{
cubeArr[i, j].transform.position = cubeArr[i, j + 1].transform.position;
cubeArr[i, j + 1].transform.position = pos;
//交换索引
a = (int)cubeArr[i, j].transform.position.x;
b = (int)cubeArr[i, j].transform.position.y;
cubeArr[a, b] = cubeArr[i, j];
c = (int)cubeArr[i, j + 1].transform.position.x;
d = (int)cubeArr[i, j + 1].transform.position.y;
cubeArr[c, d] = cubeArr[i, j + 1];
diaoyong = true;
return;
}
else
{
cubeArr[i, j].transform.position = cubeArr[i, j + 1].transform.position;
cubeArr[i, j + 1].transform.position = pos;
//交换索引
a = (int)cubeArr[i, j].transform.position.x;
b = (int)cubeArr[i, j].transform.position.y;
cubeArr[a, b] = cubeArr[i, j];
c = (int)cubeArr[i, j + 1].transform.position.x;
d = (int)cubeArr[i, j + 1].transform.position.y;
cubeArr[c, d] = cubeArr[i, j + 1];
}
}
}
for (int i = 0; i < 7; i++)
{
for (int j = 0; j < 8; j++)
{
//交换坐标
Vector3 pos = cubeArr[i, j].transform.position;
cubeArr[i, j].transform.position = cubeArr[i + 1, j].transform.position;
cubeArr[i + 1, j].transform.position = pos;
//交换索引
int a = (int)cubeArr[i, j].transform.position.x;
int b = (int)cubeArr[i, j].transform.position.y;
cubeArr[a, b] = cubeArr[i, j];
int c = (int)cubeArr[i + 1, j].transform.position.x;
int d = (int)cubeArr[i + 1, j].transform.position.y;
cubeArr[c, d] = cubeArr[i + 1, j];
if (IsDesCube())
{
cubeArr[i, j].transform.position = cubeArr[i + 1, j].transform.position;
cubeArr[i + 1, j].transform.position = pos;
//交换索引
a = (int)cubeArr[i, j].transform.position.x;
b = (int)cubeArr[i, j].transform.position.y;
cubeArr[a, b] = cubeArr[i, j];
c = (int)cubeArr[i + 1, j].transform.position.x;
d = (int)cubeArr[i + 1, j].transform.position.y;
cubeArr[c, d] = cubeArr[i + 1, j];
diaoyong = true;
return;
}
else
{
cubeArr[i, j].transform.position = cubeArr[i + 1, j].transform.position;
cubeArr[i + 1, j].transform.position = pos;
//交换索引
a = (int)cubeArr[i, j].transform.position.x;
b = (int)cubeArr[i, j].transform.position.y;
cubeArr[a, b] = cubeArr[i, j];
c = (int)cubeArr[i + 1, j].transform.position.x;
d = (int)cubeArr[i + 1, j].transform.position.y;
cubeArr[c, d] = cubeArr[i + 1, j];
}
}
}
text.text = "游戏结束";
}
}
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class 三消 : MonoBehaviour
{
GameObject[,] cubeArr = new GameObject[8, 8];//用来存放cube
List<GameObject> list = new List<GameObject>();//用来存放要交换位置的cube
List<GameObject> list_DesCube = new List<GameObject>();//用来存放要销毁的cube
public Text text;
public float Rote;
int num = 0;
bool IsFrist = true;
bool diaoyong = true;
float time;
// Use this for initialization
void Start()
{
text = text.GetComponent<Text>();
for (int i = 0; i < 8; i++)
{
for (int j = 0; j < 8; j++)
{
//克隆对象原始并返回克隆。
GameObject cube = Instantiate(Resources.Load("Cube" + Random.Range(1, 8))) as GameObject;//资源类允许您查找和访问对象,包括资产 //加载存储在 Resources 文件夹中的路径的资产。
cube.transform.position = new Vector3(i, j, 0);
cube.transform.localScale = new Vector3(0.9f, 0.9f, 0.9f);
cubeArr[i, j] = cube;//把生成的cube放入二维数组
}
}
}
// Update is called once per frame
void Update()
{
if (list.Count > 0)
{
list[0].transform.Rotate(0, Rote * Time.deltaTime, 0);
}
time += Time.deltaTime;
if (diaoyong)
{
DesCube();
}
SwopCube();
}
public void AddList(GameObject cube)
{
if (list_DesCube.Count == 0)
{
list_DesCube.Add(cube);
}
else
{
foreach (var item in list_DesCube)
{
if (item == cube)
{
return;
}
}
list_DesCube.Add(cube);
}
}
public bool IsDesCube()
{
for (int i = 0; i < 6; i++)
{
for (int j = 0; j < 8; j++)
{
if (cubeArr[i, j].name == cubeArr[i + 1, j].name && cubeArr[i, j].name == cubeArr[i + 2, j].name)
{
AddList(cubeArr[i, j]);
AddList(cubeArr[i + 1, j]);
AddList(cubeArr[i + 2, j]);
}
}
}
for (int i = 0; i < 8; i++)
{
for (int j = 0; j < 6; j++)
{
if (cubeArr[i, j].name == cubeArr[i, j + 1].name && cubeArr[i, j].name == cubeArr[i, j + 2].name)
{
AddList(cubeArr[i, j]);
AddList(cubeArr[i, j + 1]);
AddList(cubeArr[i, j + 2]);
}
}
}
if (list_DesCube.Count > 0)
{
return true;
}
else
{
return false;
}
}
public void DesCube()
{
if (IsDesCube())
{
for (int i = 0; i < list_DesCube.Count;)
{
Vector3 pos = list_DesCube[0].transform.position;
int a = (int)pos.x;
int b = (int)pos.y;
Destroy(list_DesCube[0]);
list_DesCube.RemoveAt(0);
if (time <= 1)
{
num = 0;
}
text.text = "得分:" + num + "分";
num++;
for (int j = b + 1; j < 8; j++)
{
cubeArr[a, j].transform.position = new Vector3(a, j - 1, 0);
cubeArr[a, j - 1] = cubeArr[a, j];
}
GameObject cube = Instantiate(Resources.Load("Cube" + Random.Range(1, 8))) as GameObject;
cube.transform.position = new Vector3(a, 7, 0);
cube.transform.localScale = new Vector3(0.9f, 0.9f, 0.9f);
cubeArr[a, 7] = cube;
}
//IsOver();
}
}
public void SwopCube()
{
//沿着原点创建一条射线
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); //返回一个从相机到屏幕的射线
RaycastHit hit;
if (Physics.Raycast(ray, out hit))//用ray检测是否存在物理属性
{
if (Input.GetMouseButtonDown(0))
{
if (IsFrist)
{
list.Add(hit.collider.gameObject);//把第一个元素添加进链表
Rote = 90f;//第一个物体进行旋转
IsFrist = false;
}
if (hit.collider.gameObject.transform.tag == "cube" && IsFrist == false && hit.collider.gameObject.name != list[0].name)
{
list.Add(hit.collider.gameObject);//添加第二个元素
}
}
}
if (list.Count == 2)
{
if (Vector3.Distance(list[0].transform.position, list[1].transform.position) < 1.2f)
{
Rote = 0;
list[0].transform.rotation = Quaternion.Euler(new Vector3(0, 0, 0));
IsFrist = true;
Swop();
if (!IsDesCube())
{
Swop();
}
else
{
//IsOver();
}
list.Clear();
}
else
{
Rote = 0;
list[0].transform.rotation = Quaternion.Euler(new Vector3(0, 0, 0));
list.Clear();
IsFrist = true;
}
}
}
public void Swop()
{
//交换坐标
Vector3 pos = list[0].transform.position;
list[0].transform.position = list[1].transform.position;
list[1].transform.position = pos;
//交换索引
int a = (int)list[0].transform.position.x;
int b = (int)list[0].transform.position.y;
cubeArr[a, b] = list[0];
int c = (int)list[1].transform.position.x;
int d = (int)list[1].transform.position.y;
cubeArr[c, d] = list[1];
}
public void IsOver()
{
diaoyong = false;
for (int i = 0; i < 8; i++)
{
for (int j = 0; j < 7; j++)
{
//交换坐标
Vector3 pos = cubeArr[i, j].transform.position;
cubeArr[i, j].transform.position = cubeArr[i, j + 1].transform.position;
cubeArr[i, j + 1].transform.position = pos;
//交换索引
int a = (int)cubeArr[i, j].transform.position.x;
int b = (int)cubeArr[i, j].transform.position.y;
cubeArr[a, b] = cubeArr[i, j];
int c = (int)cubeArr[i, j + 1].transform.position.x;
int d = (int)cubeArr[i, j + 1].transform.position.y;
cubeArr[c, d] = cubeArr[i, j + 1];
if (IsDesCube())
{
cubeArr[i, j].transform.position = cubeArr[i, j + 1].transform.position;
cubeArr[i, j + 1].transform.position = pos;
//交换索引
a = (int)cubeArr[i, j].transform.position.x;
b = (int)cubeArr[i, j].transform.position.y;
cubeArr[a, b] = cubeArr[i, j];
c = (int)cubeArr[i, j + 1].transform.position.x;
d = (int)cubeArr[i, j + 1].transform.position.y;
cubeArr[c, d] = cubeArr[i, j + 1];
diaoyong = true;
return;
}
else
{
cubeArr[i, j].transform.position = cubeArr[i, j + 1].transform.position;
cubeArr[i, j + 1].transform.position = pos;
//交换索引
a = (int)cubeArr[i, j].transform.position.x;
b = (int)cubeArr[i, j].transform.position.y;
cubeArr[a, b] = cubeArr[i, j];
c = (int)cubeArr[i, j + 1].transform.position.x;
d = (int)cubeArr[i, j + 1].transform.position.y;
cubeArr[c, d] = cubeArr[i, j + 1];
}
}
}
for (int i = 0; i < 7; i++)
{
for (int j = 0; j < 8; j++)
{
//交换坐标
Vector3 pos = cubeArr[i, j].transform.position;
cubeArr[i, j].transform.position = cubeArr[i + 1, j].transform.position;
cubeArr[i + 1, j].transform.position = pos;
//交换索引
int a = (int)cubeArr[i, j].transform.position.x;
int b = (int)cubeArr[i, j].transform.position.y;
cubeArr[a, b] = cubeArr[i, j];
int c = (int)cubeArr[i + 1, j].transform.position.x;
int d = (int)cubeArr[i + 1, j].transform.position.y;
cubeArr[c, d] = cubeArr[i + 1, j];
if (IsDesCube())
{
cubeArr[i, j].transform.position = cubeArr[i + 1, j].transform.position;
cubeArr[i + 1, j].transform.position = pos;
//交换索引
a = (int)cubeArr[i, j].transform.position.x;
b = (int)cubeArr[i, j].transform.position.y;
cubeArr[a, b] = cubeArr[i, j];
c = (int)cubeArr[i + 1, j].transform.position.x;
d = (int)cubeArr[i + 1, j].transform.position.y;
cubeArr[c, d] = cubeArr[i + 1, j];
diaoyong = true;
return;
}
else
{
cubeArr[i, j].transform.position = cubeArr[i + 1, j].transform.position;
cubeArr[i + 1, j].transform.position = pos;
//交换索引
a = (int)cubeArr[i, j].transform.position.x;
b = (int)cubeArr[i, j].transform.position.y;
cubeArr[a, b] = cubeArr[i, j];
c = (int)cubeArr[i + 1, j].transform.position.x;
d = (int)cubeArr[i + 1, j].transform.position.y;
cubeArr[c, d] = cubeArr[i + 1, j];
}
}
}
text.text = "游戏结束";
}
}
阅读全文
0 0
- 三消
- 三消
- 三消
- 三消
- 三消游戏(三)
- 三消核心代码
- 三消游戏知识点
- 三消游戏思路
- C++ 三消核心
- (三)
- (三)
- 三
- 三
- 三
- 三
- 三
- 三
- 三
- Java对XML实现增删查改经验学习
- 软件工程(C编码实践篇)学习心得
- 四大组件之contentProvider联系人数据库DIY
- canvas 画箭头
- hdu 3336 Count the string
- 三消
- 二分查找算法Python3实现
- EXCEL之对单元格批量填充内容
- getsockopt( )函数详解
- SSM框架-MyBatis进阶篇(二)
- 面对对象
- basicexcel
- IntelliJ Idea中debug悬浮以及output/console消失与悬浮的解决办法
- SDNU——8题——A