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 ...
随机推荐
- unity3d iPhone文件目录介绍
原地址:http://cl314413.blog.163.com/blog/static/190507976201210259126559/ 如何查看iPhone文件存放目录?首先需要越狱,越狱后打开 ...
- B,B+,B-,B*树
B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right): 2.所有结点存储一个关键字: 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树: 如: B ...
- MySQL Profiling 的使用
MySQL Profiling 的使用 在本章第一节中我们还提到过通过 Query Profiler 来定位一条 Query 的性能瓶颈,这里我们再详细介绍一下 Profiling 的用途及使用方法. ...
- 【Spring】Spring系列3之Spring AOP
3.Spring AOP 3.1.AOP概述 3.2.前置通知 3.3.后置通知 3.4.返回通知.异常通知.环绕通知 3.5.指定切面优先级 3.6.重用切入点表达式 3.7.引入通知 3.8.基于 ...
- 尖刀出鞘的display常用属性及css盒模型深入研究
一:diplay:inline-block 含义:指元素创建了一个行级的块级元素,该元素内部(内容)被格式化成一个块级元素,同时元素本身则被格式化成一个行内元素.更简单的说就是说inline-bloc ...
- Maximum Gap
Given an unsorted array, find the maximum difference between the successive elements in its sorted f ...
- Power of Two & Power of Three & Power of Four
Check Power of 2 Using O(1) time to check whether an integer n is a power of 2. Example For n=4, re ...
- Android Services重点记录
今天阅读了google的官方文档 Services,对重点做下记录. 首先,Services默认运行在主线程中,所以一般情况下,要手动创建一个thread. 系统除了Services,还为我们提供了一 ...
- phpmyadmin 主机名自动补全
2015年2月9日 14:29:25 新安装的phpmyadmin在登录界面中, 主机名的输入框没有自动补全功能, 导致每次都得手动输入ip地址 找到 phpmyadmin/libraries/aut ...
- DisJSet:Wireless Network(POJ 2236)
无线电网络 题目大意:就是地震后,所有的电脑都坏了,现在可以修复,而且要重新连成一个网络,两台电脑之间最大连接距离为D,两台电脑可以有中继电脑,按O修复电脑,按S测试两台电脑是否有链接,如果有就输 ...