unity 翻牌游戏(全都是gui)
var cols:int = ;//列数
var rows:int = ;//行数
var totalCards:int = ;//所有卡片的数量
var matchesNeededToWin:int = totalCards*0.5;//最大匹配数,用来判断游戏是否胜利
var matchesMade:int = ;
var cardW:int = ;
var cardH:int = ;
var aCards:Array;//用来保存所有的牌,要洗的时候,所有的东西放到这个里面
var aGrid:Array;
var aCardsFlipped:ArrayList;//翻开的牌的序列
var playerCanClick:boolean;//能否翻拍(开始的时刻木有翻牌,所以开的牌是0
//,翻开第一张的时候,可以翻开第二张,但是翻开第二张的时候,那么不可以再翻牌)
var playerHasWon:boolean = false;//用户是否胜利 //创建一个类
class Card extends System.Object{
var isFaceUp:boolean = false;
var isMatched:boolean = false;
var img:String;
var id:int; function Card(img:String,id:int){
this.img = img;
this.id = id;
//img = "robot";
}
} //洗牌
function BuildDeck(){
var totalRobots:int = ;//一共有四种机器人,红绿蓝黄
var card:Object;
var id:int = ;
for(i=; i<totalRobots; i++)//一共四轮
{
var aRobotParts:Array = ["Head", "Arm", "Leg"];
for(j=; j<; j++)
{
var someNum:int = Random.Range(, aRobotParts.length);//生成一个0到3的随机数
var theMissingPart:String = aRobotParts[someNum];//拼凑一个字符串,用来表示一张图片
aRobotParts.RemoveAt(someNum);//这个已经用过了,就从数组中移除
card = new Card("robot" + (i+) + "Missing" + theMissingPart,id);
aCards.Add(card);
card= new Card("robot" + (i+) + theMissingPart,id);
aCards.Add(card);
id++;
}
}
} function Start(){ //可以翻牌
playerCanClick = true;
aCards = new Array();
aGrid = new Array();
aCardsFlipped = new ArrayList();
BuildDeck();//开始洗牌 //就一直在这里产生,产生一个,移除一个,再产生一个再移除一个。知道为空 for(i=; i<rows; i++)
{
aGrid[i] = new Array();//数组初始化1维
for(j=; j<cols; j++)
{
//aGrid[i][j] = new Card();//数组初始化2维
var someNum:int = Random.Range(,aCards.length);
aGrid[i][j] = aCards[someNum];
aCards.RemoveAt(someNum);
}
}
} //翻牌 function FlipCardFaceUp(card:Object){
card.isFaceUp = true;
if(aCardsFlipped.IndexOf(card)<)
{
aCardsFlipped.Add(card); if(aCardsFlipped.Count == )
{
playerCanClick = false; yield WaitForSeconds();
if(aCardsFlipped[].id == aCardsFlipped[].id)
{
aCardsFlipped[].isMatched = true;
aCardsFlipped[].isMatched = true; matchesMade++; if(matchesMade>=matchesNeededToWin)
{
playerHasWon = true;
}
}
else
{
aCardsFlipped[].isFaceUp = false;
aCardsFlipped[].isFaceUp = false;
}
aCardsFlipped = new ArrayList(); playerCanClick = true;
}
}
} function BuildGrid(){
GUILayout.BeginVertical();
GUILayout.FlexibleSpace(); for(i=; i<rows; i++)
{
GUILayout.BeginHorizontal();
GUILayout.FlexibleSpace();
for(j=; j<cols;j++)
{
var card:Object = aGrid[i][j];
var img:String; //如果图片已经匹配了,那么就做成空白
if(card.isMatched)
{
img = "blank";
}
else
{
if(card.isFaceUp)
{
img = card.img;
}
else
{
img = "wrench";//牌的背面
}
}
GUI.enabled = !card.isMatched; //点击了某一个按钮
if(GUILayout.Button(Resources.Load(img),GUILayout.Width(cardW)))
{
if(playerCanClick)
{
//翻牌
FlipCardFaceUp(card);
}
Debug.Log(card.img);
}
GUI.enabled = true;
}
GUILayout.FlexibleSpace();
GUILayout.EndHorizontal();
}
GUILayout.FlexibleSpace();
GUILayout.EndVertical();
} //创建赢的时候的画面(就是两个正方形,让后让用户看的)
function BulidWinPrompt(){ var winPromptW:int = ;
var winPromptH:int = ; var halfScreenW:float = Screen.width/;
var halfScreenH:float = Screen.height/;
var halfPromptW:int = winPromptW/;
var halfPromptH:int = winPromptH/; GUI.BeginGroup(Rect(halfScreenW-halfPromptW,halfScreenH-halfPromptH, winPromptW, winPromptH));
GUI.Box (Rect (,,winPromptW,winPromptH),"You Win!!"); if(GUI.Button(Rect(,,,),"Play Again"))
{
Application.LoadLevel();
}
GUI.EndGroup();
} //这种布局类似于html function OnGUI(){
GUILayout.BeginArea(Rect(,,Screen.width,Screen.height)); BuildGrid();
if(playerHasWon) BulidWinPrompt(); GUILayout.EndArea();
print("building grid!");
}
unity 翻牌游戏(全都是gui)的更多相关文章
- 自制Unity小游戏TankHero-2D(3)开始玩起来
自制Unity小游戏TankHero-2D(3)开始玩起来 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm)这个游戏制作的.仅 ...
- 自制Unity小游戏TankHero-2D(1)制作主角坦克
自制Unity小游戏TankHero-2D(1)制作主角坦克 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm)这个游戏制作的. ...
- 关于Unity的游戏的运行模式
游戏有个入口main函数,执行完main函数就返回 main函数中的步骤 1.初始化 2.while(true){ a.检查有没有消息,包括鼠标有没有被点击,键盘有没有被点击,自定义事件等等,有消息就 ...
- unity手机游戏应用程序调试控制台Lunar Mobile Console - PRO 1.5.5
unity手机游戏应用程序调试控制台Lunar Mobile Console - PRO 1.5.5 High-performance Unity iOS/Android console built ...
- [生活日记]参与unity非游戏行业开发者大会小结
今天下午花了半天时间公司全体都去人民广场参与了一个unity非游戏行业开发者大会,主要了解到unity这款全球顶尖之一的游戏引擎的一个发展史,从05年三个美国人技术研发开始,一直到12年开始引进中国, ...
- 自制Unity小游戏TankHero-2D(5)声音+爆炸+场景切换+武器弹药
自制Unity小游戏TankHero-2D(5)声音+爆炸+场景切换+武器弹药 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm ...
- 自制Unity小游戏TankHero-2D(4)关卡+小地图图标+碰撞条件分析
自制Unity小游戏TankHero-2D(4)关卡+小地图图标+碰撞条件分析 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm ...
- 自制Unity小游戏TankHero-2D(2)制作敌方坦克
自制Unity小游戏TankHero-2D(2)制作敌方坦克 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm)这个游戏制作的. ...
- Unity制作游戏中的场景
Unity制作游戏中的场景 1.2.3 场景 在Unity中,场景(Scene)就是游戏开发者制作游戏时,所使用的游戏场景.它是一个三维空间,对应的三维坐标轴分别是X轴.Y轴和Z轴本文选自Unity ...
随机推荐
- [OpenJudge 3066]随机序列
[OpenJudge 3066]随机序列 试题描述 Bob喜欢按照如下规则生成随机数: 第一步:令a[0] = S, 当n = 0: 第二步:a[n+1] = (a[n]*A+B)%P: 第三步:如果 ...
- Java数据库ResultSet转json实现
现在有很多json相关的Java工具,如json-lib.gson等,它们可以直接把JavaBean转换成json格式. 在开发中,可能会从数据库中获取数据,希望直接转成json数组,中间不通过bea ...
- 阿里云服务器配置 SVN 服务器与生产站点同步
作为linux的门外汉,一直觊觎svn的方便性,在有台aliyun的情况下,一起来搞搞. 1.环境 阿里云 centos5.5 2.安装svn yum -y install subve ...
- Linux awk命令详解??????????(研究)
http://blog.chinaunix.net/uid-25120309-id-3801250.html 一. AWK 说明 awk是一种编程语言,用于在linux/unix下对文本和数据进行 ...
- 【SpringMVC】SpringMVC系列13之关于 mvc:annotation-driven
13.关于 mvc:annotation-driven 13.1.概述 会自动注册RequestMappingHandlerMapping.RequestMappingHandlerAdap ...
- 交换排序—冒泡排序(Bubble Sort)
基本思想: 在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒. 即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就 ...
- Servlet之Cookie操作
Java对cookie的操作比较简单,主要介绍下建立cookie和读取cookie,以及如何设定cookie的生命周期和cookie的路径问题. 1,建立一个无生命周期的cookie,即随着浏览器的关 ...
- 【2016-07-11】Qt远程部署失败,提示"没有那个文件或目录"的解决方法
首先明确一下,这里的部署失败与网络连接.ssh/scp/sftp等无关. 一般出现在删除了远端上的可执行文件,而本地程序未做明显改动时远程部署执行的时候. Qt应用程序输出中的提示信息如下: 究其原因 ...
- win激活查询及修改
slmgr.vbs -dlv 命令可以查询到Win8.1的激活信息,包括:激活ID.安装ID.激活截止日期! slmgr.vbs -dli 命令可以查询到操作系统版本.部分产品密钥.许可证状态! ...
- 连续自然数和(codevs 1312)
题目描述 Description 对于一个自然数M,求出所有的连续的自然数段,使得这些连续自然数段的全部数字和为M.eg:1998+1999+2000+2001+2002=10000,所以从1998到 ...