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. [官方教程] [ES4封装教程]2.使用 Easy Sysprep v4 封装 Windows XP

    (一)备份当前操作系统封装的第一步,其实是备份当前安装好的操作系统.避免我们在之后的步骤中出现问题,以至于还要重新安装操作系统,浪费时间精力.系统备份想必大家都会.对于WinXP而言,建议使用Ghos ...

  2. MySQL 索引详解大全

    什么是索引? 1.索引 索引是表的目录,在查找内容之前可以先在目录中查找索引位置,以此快速定位查询数据.对于索引,会保存在额外的文件中. 2. 索引,是数据库中专门用于帮助用户快速查询数据的一种数据结 ...

  3. Gson @Expose熟悉和@SerializedName属性

    这两个属性一般配套使用. 1.@Expose标签的2个属性.     deserialize (boolean) 反序列化 默认 true        serialize  (boolean) 序列 ...

  4. 轻松架设时时监控工具Cacti

    Cacti是一套基于PHP,MySQL,SNMP及 RRDTool开发的网络流量监测图形分析工具.通过snmpget来获取数据,使用 RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂 ...

  5. coco2dx加载网络图片并保存

    直接上代码 bool HelloWorld::init() { ////////////////////////////// // 1. super init first if ( !Layer::i ...

  6. Android drawable的自动缩放

    今天在写程序时发现,一张图片被自动放大了,后来发现,这张图片放在了drawable-zh文件夹下,这个文件夹没有指定屏幕密度!于是将drawable-zh改为drawable-zh-nodpi,问题解 ...

  7. Java for LeetCode 032 Longest Valid Parentheses

    Given a string containing just the characters '(' and ')', find the length of the longest valid (wel ...

  8. hdu 1160 FatMouse's Speed 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1160 题目意思:给出一堆老鼠,假设有 n 只(输入n条信息后Ctrl+Z).每只老鼠有对应的weigh ...

  9. July 28th, Week 31st Thursday, 2016

    Time is a bird flying into eternity. 时间是一只永远在飞翔的鸟儿. Time waits for nobody. Vitality shows in not onl ...

  10. ytu 1938:首字母变大写(水题)

    首字母变大写 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 110  Solved: 43[Submit][Status][Web Board] Desc ...