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)的更多相关文章

  1. 自制Unity小游戏TankHero-2D(3)开始玩起来

    自制Unity小游戏TankHero-2D(3)开始玩起来 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm)这个游戏制作的.仅 ...

  2. 自制Unity小游戏TankHero-2D(1)制作主角坦克

    自制Unity小游戏TankHero-2D(1)制作主角坦克 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm)这个游戏制作的. ...

  3. 关于Unity的游戏的运行模式

    游戏有个入口main函数,执行完main函数就返回 main函数中的步骤 1.初始化 2.while(true){ a.检查有没有消息,包括鼠标有没有被点击,键盘有没有被点击,自定义事件等等,有消息就 ...

  4. unity手机游戏应用程序调试控制台Lunar Mobile Console - PRO 1.5.5

    unity手机游戏应用程序调试控制台Lunar Mobile Console - PRO 1.5.5 High-performance Unity iOS/Android console built ...

  5. [生活日记]参与unity非游戏行业开发者大会小结

    今天下午花了半天时间公司全体都去人民广场参与了一个unity非游戏行业开发者大会,主要了解到unity这款全球顶尖之一的游戏引擎的一个发展史,从05年三个美国人技术研发开始,一直到12年开始引进中国, ...

  6. 自制Unity小游戏TankHero-2D(5)声音+爆炸+场景切换+武器弹药

    自制Unity小游戏TankHero-2D(5)声音+爆炸+场景切换+武器弹药 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm ...

  7. 自制Unity小游戏TankHero-2D(4)关卡+小地图图标+碰撞条件分析

    自制Unity小游戏TankHero-2D(4)关卡+小地图图标+碰撞条件分析 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm ...

  8. 自制Unity小游戏TankHero-2D(2)制作敌方坦克

    自制Unity小游戏TankHero-2D(2)制作敌方坦克 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm)这个游戏制作的. ...

  9. Unity制作游戏中的场景

    Unity制作游戏中的场景 1.2.3  场景 在Unity中,场景(Scene)就是游戏开发者制作游戏时,所使用的游戏场景.它是一个三维空间,对应的三维坐标轴分别是X轴.Y轴和Z轴本文选自Unity ...

随机推荐

  1. UCloud可用区的设计理念及功能图文详解

    导读 过去的几个月内,UCloud对自身的云计算基础架构进行了全面升级,于日前宣布基础架构全面支持地域和可用区,并将可用区项目命名为Sixshot.通过这两层的设计架构来组织云服务,可以为用户提供高可 ...

  2. Stanford机器学习---第六讲. 怎样选择机器学习方法、系统

    原文:http://blog.csdn.net/abcjennifer/article/details/7797502 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归 ...

  3. C# 浅谈接口的优势

    总结了一下接口的小优势,可以便于新手理解为什么要用接口,用接口有什么好处. 1.接口的定义: 关键字:interface,接口名一般大写I开头,接口中定义方法,但是不实现方法 interface IB ...

  4. nginx(四)初识nginx日志文件

    nginx 日志相关指令主要有两条,一条是log_format,用来设置日志格式,另外一条是access_log,用来指定日志文件的存放路径.格式和缓存大小,通俗的理解就是先用log_format来定 ...

  5. AMD64与IA64的区别

    其实很多人从字面上,都以为AMD64就是针对AMD CPU的,IA64是针对INTEL CPU,其实是错的,我最初也是这样认为,其实不然: 你在市面上买的到的intel 64位 CPU都属于amd64 ...

  6. AtomicInteger源码分析——基于CAS的乐观锁实现

    AtomicInteger源码分析——基于CAS的乐观锁实现 1. 悲观锁与乐观锁 我们都知道,cpu是时分复用的,也就是把cpu的时间片,分配给不同的thread/process轮流执行,时间片与时 ...

  7. selec2 clone不起作用。

    <table class="table table-bordered"> <thead> <tr> <th width ="16 ...

  8. FastReport for delphi xe 安装步骤

    FastReport for delphi xe 安装步骤 1.先关闭DELPHI:2.下载后解压到一个目录,比如:D:FR:3.打开D:FR,运行recompile.exe ->点击" ...

  9. HDU 5793 A Boring Question (逆元+快速幂+费马小定理) ---2016杭电多校联合第六场

    A Boring Question Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...

  10. Ruby备忘