C#语言使用Unity实现剪刀石头布游戏

本文实例为大家分享了C#语言使用Unity实现剪刀石头布游戏的具体代码,供大家参考,具体内容如下

游戏:剪刀石头布

实现功能:

1、电脑随机出牌(剪刀石头布)

2、玩家选择出牌(剪刀石头布)

3、玩家没有出牌时,电脑变幻牌面;

玩家出牌后,电脑出牌,并停止变幻牌面3秒,期间玩家无法选择出牌

4、玩家和电脑出牌后,电脑自动计分。

using UnityEngine;
using System.Collections;

public class hw0310a : MonoBehaviour {
 //
 public Rect windows1;
 public Rect windows2;
 public Rect btn1;
 public Rect btn2;
 public Rect btn3;
 public Rect box1;
 public Rect box2;
 public Rect label1;
 public Rect label2;
 public string str1;
 public string str2;
 public int score1;
 public int score2;
 public Texture[] texture;
 public int ComputerCp;
 public int PlayerCp;
 public GUISkin myskin;
 public bool notShowTime;
 public float MaxTime=3;
 void Start () {
 windows1=new Rect(100,240,400,120);
 windows2=new Rect(100,0,400,195);
 btn1=new Rect(40,20,80,80);
 btn2=new Rect(160,20,80,80);
 btn3=new Rect(280,20,80,80);
 box1=new Rect(50,30,100,100);
 box2=new Rect(250,30,100,100);
 label1 = new Rect (95, 150, 50, 50);
 label2 = new Rect (295, 150, 50, 50);
 score1 = 0;
 score2 = 0;
 str1 = score1.ToString ();//将int类型转换为string类型,方便计分
 str2 = score2.ToString ();
 PlayerCp = 4;
 notShowTime = false;
 }

 // Update is called once per frame
 void Update () {
 str1 = score1.ToString ();
 str2 = score2.ToString ();
//控制电脑牌面的变幻条件和时间
 if (notShowTime==false)
 {
 computerShow ();
 }
 else
 {
 MaxTime -= Time.deltaTime;
 if (MaxTime < 0)
 {
 notShowTime = false;
 MaxTime=3;
 }
  }
 }

 void computerShow(){
 if (ComputerCp < 2) {
  ComputerCp++;
 } else {
  ComputerCp = 0;
 }
 }
 void OnGUI()
 {
 windows1=GUI.Window (1, windows1, windowFun1, "Game");
 windows2=GUI.Window (2, windows2, windowFun2, "Computer VS Player");
 }

 void windowFun1(int Id)
 {  //电脑牌面停止变幻时,玩家不能出牌
 if (GUI.Button (btn1, texture [0]))
 {
 if(notShowTime==false)
 {
 PlayerCp=0;
 ComputerOut();//根据玩家的牌,电脑出牌,电脑永远赢
 gameLogic();//判断输赢并计分
 }
 }

 if (GUI.Button (btn2, texture [1]))
 {
 if(notShowTime==false)
 {
 PlayerCp=1;
 ComputerOut();
 gameLogic();
 }
 }

 if (GUI.Button (btn3, texture [2]))
 {
 if(notShowTime==false)
 {
 PlayerCp=2;
 ComputerOut();
 gameLogic();
 }
 }

 GUI.DragWindow (new Rect(0,0,400,120));//括号内的矩形是可界面拖拽范围
 }

 void windowFun2(int Id)
 {
// GUI.Button (b4, t4);
// GUI.Button (b5, t5);
 GUI.DragWindow (new Rect(0,0,400,195));

 GUI.Box (box1,texture[ComputerCp]);
 GUI.Box (box2,texture[PlayerCp]);

 GUI.Label (label1, str1);
 GUI.Label (label2, str2);
 }

 void ComputerOut()
 {
 notShowTime = true;
 int a=PlayerCp;
 int b = PlayerCp - 2;
 int c = PlayerCp + 1;
 if (PlayerCp == 2)
 {  //在确定的两个数中选取随机数的方法
 int[] Cp1 = new int[]{a,b};
 int i = Random.Range (0, 2);
 ComputerCp = Cp1[i];
 }
 else
 {
 int[] Cp2= new int[]{a,c};
 int i = Random.Range (0, 2);
 ComputerCp = Cp2[i];
 }
 // ComputerCp = Random.Range (0, 3);

 }

 void gameLogic()
 {
 int a = ComputerCp - PlayerCp;
 switch (a)
 {
 case 0:Debug.Log ("pingju");break;
 case 1:
 case -2:
 {
 Debug.Log ("Player Lose");
 score1=score1+1;
 break;
 }
 case 2:
 case -1:
 {
 Debug.Log ("Player Win");
 score2=score2+1;
 break;
 }
 default:break;
 }

 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 利用unity代码C#封装为dll的步骤分享

    前言 本文主要介绍了关于unity代码C#封装为dll的相关内容,分享出来供需要的朋友们学习,下面话不多说了,来一起学习学习吧. 方法如下 1 Visual studio软件打开后创建一个项目 2并选择类库类型 3编写简单的代码看看效果(发现会报错),主要是没有添加类库,以及using UnityEngine;引用空间 4添加类库,引用空间 发现依然会报错,这就需要添加应用库unityengine.dll,方法如下 找到安装unity目录下的UnityEngine.dll,添加后你就会发现,报红

  • Unity C#打包AssetBundle与场景详解

    Unity2018已经把打包过程简化很多了 我们只需要关心两个API: 1.BuildPipline.BuildAssetBundles() 打包AssetBundle 2.BuildPipline.BuildPlayer() 打包场景 1.打包AssetBundle 先在资源的Inspector面板最下方 填写资源所属的AssetBundle名称和后缀(后缀可以不填) 再利用BuildPipeline.BuildAssetBundles()进行打包 2.打包Scene 利用BuildPipel

  • C#实现JSON解析器MojoUnityJson功能(简单且高效)

    MojoUnityJson 是使用C#实现的JSON解析器 ,算法思路来自于游戏引擎Mojoc的C语言实现 Json.h .借助C#的类库,可以比C的实现更加的简单和全面,尤其是处理Unicode Code(\u开头)字符的解析,C#的StringBuilder本身就支持了UnicodeCodePoint. MojoUnityJson使用递归下降的解析模式,核心解析代码只有450行(去掉空行可能只有300多行),支持标准的JSON格式.算法实现力求简洁明了,用最直接最快速的方法达到目的,没有复杂

  • C#使用Protocol Buffer(ProtoBuf)进行Unity中的Socket通信

    首先来说一下本文中例子所要实现的功能: 基于ProtoBuf序列化对象 使用Socket实现时时通信 数据包的编码和解码 下面来看具体的步骤: 一.Unity中使用ProtoBuf 导入DLL到Unity中, 创建网络传输的模型类: using System; using ProtoBuf; //添加特性,表示可以被ProtoBuf工具序列化 [ProtoContract] public class NetModel { //添加特性,表示该字段可以被序列化,1可以理解为下标 [ProtoMem

  • C#编程中常见数据结构的比较(Unity3D游戏开发)

    一.前言 Unity3D是如今最火爆的游戏开发引擎,它可以让我们能轻松创建诸如三维视频游戏.建筑可视化.实时三维动画等类型的互动内容.它支持2D/3D游戏开发,据不完全统计,目前国内80%的手机游戏都是用Unity3D开发. 由于Unity3D在开发过程中使用最多的是C# 语言,所以就要合理的使用C#提供的一些数据结构是非常有必要的,合理的选择数据结构可以加快开发速度,提高游戏运行性能,不合理的使用数据结构则会导致游戏运行性能降低,加大开发复杂程度! 先通过表格看看常用的数据结构: C#常用数据

  • C#在Unity游戏开发中进行多线程编程的方法

    在这之前,有很多人在质疑Unity支不支持多线程,事实上Unity是支持多线程的.而提到多线程就要提到Unity非常常用的协程,然而协程并非真正的多线程.协程其实是等某个操作完成之后再执行后面的代码,或者说是控制代码在特定的时机执行.而多线程在Unity渲染和复杂逻辑运算时可以高效的使用多核CPU,帮助程序可以更高效的运行.本篇主要介绍在Unity中如何使用多线程. 首先引入C#中使用多线程的类库 using System.Threading; 创建线程实例的四种方式 一.线程执行无参方法 构造

  • C#中Socket与Unity相结合示例代码

    前言 初步接触了Socket,现使其与Unity相结合,做成一个简单的客户端之间可以互相发送消息的一个Test.下面话不多说了,来一起看看详细的介绍吧. 方法如下: 首先,是服务端的代码. 创建一个连接池,用于存储客户端的数量. using System; using System.Net; using System.Net.Sockets; using System.Collections; using System.Collections.Generic; namespace Server

  • Unity中C#和Java的相互调用实例代码

    1.通过C#调用Java的方法: 在C#中添加调用的一些代码,利用Unity提供的一些接口实现调用Java! private const string JAVA_CLASS_Name = "com.unity3d.player.UnityPlayer"; private void CallJavaFunc(string javaFuncName, params object[] args) { try { //获取到AndroidJavaClass,至于这里为什么调用这个类,我也不是很

  • 关于Unity C# Mathf.Abs()取绝对值性能测试详解

    前言 之前有人提到过取绝对值时 直接写三目运算符比用Mathf.Abs()效率高 没觉得能高太多 今天测了一下 真是不测不知道 一测吓一跳 直接写三目运算符比Mathf.Abs()效率高2-3倍 这性能差距有点不太合理啊! 看下源码发现 很多Mathf的方法就是多封装了一层Math里的方法 把double型转成float型了 即便很简单得方法也没有重新实现 官方有点偷懒了 所以性能差距才会这么大 以后要求性能高的地方要注意 老老实实写一遍 能提升不少性能 测试代码: using UnityEng

  • C#语言使用Unity实现剪刀石头布游戏

    本文实例为大家分享了C#语言使用Unity实现剪刀石头布游戏的具体代码,供大家参考,具体内容如下 游戏:剪刀石头布 实现功能: 1.电脑随机出牌(剪刀石头布) 2.玩家选择出牌(剪刀石头布) 3.玩家没有出牌时,电脑变幻牌面: 玩家出牌后,电脑出牌,并停止变幻牌面3秒,期间玩家无法选择出牌 4.玩家和电脑出牌后,电脑自动计分. using UnityEngine; using System.Collections; public class hw0310a : MonoBehaviour { /

  • C#使用Unity实现剪刀石头布游戏

    本文实例为大家分享了C#语言使用Unity实现剪刀石头布游戏的具体代码,供大家参考,具体内容如下 游戏:剪刀石头布 实现功能: 1.电脑随机出牌(剪刀石头布) 2.玩家选择出牌(剪刀石头布) 3.玩家没有出牌时,电脑变幻牌面: 玩家出牌后,电脑出牌,并停止变幻牌面3秒,期间玩家无法选择出牌 4.玩家和电脑出牌后,电脑自动计分. using UnityEngine; using System.Collections; public class hw0310a : MonoBehaviour { /

  • C语言实现与电脑玩剪刀石头布游戏

    目录 1.导入头文件 2.游戏菜单 3.开始游戏并对电脑输入数据 4.判断输赢并输出结果 5.全代码 C语言实现与电脑进行剪刀石头布 游戏解析: 1.导入头文件 2.游戏菜单 3.开始游戏并对电脑输入数据 4.为电脑随机生成一个数据 5.判断输赢并输出结果 1.导入头文件 #include<stdio.h> #include<stdlib.h> #include<time.h> 2.游戏菜单 void menu()//游戏菜单 { printf(" 1.pla

  • c#语言使用Unity粒子系统制作手雷爆炸

    目录 一.创建地形 二.应用资源包 三.制作手雷 一.创建地形 1.GameObject ->3D Object-> Terrain,创建带有地形属性的平面 2.Terrain-〉最后一个工具(Terrain Settings)->Set Resolution-〉SetHeightmap resolution ,把地形设置为500*500 3.调整视图 Hierarchy->Camera,选择默认的摄像机 Hierarchy->Camera->Inspector->

  • php实现的网页版剪刀石头布游戏示例

    本文实例讲述了php实现的网页版剪刀石头布游戏.分享给大家供大家参考,具体如下: <?php /* * Created on 2016-11-25 * */ if (isset($_POST['sub'])) { $what = $_POST['what']; //需要输入的数组 $my_array = array("剪刀","石头","布"); //获胜规则 $guize = array(array("剪刀",&quo

  • go语言实现猜数字小游戏的方法

    本文实例讲述了go语言实现猜数字小游戏的方法.分享给大家供大家参考.具体分析如下: 随机生成一个数字,输入一个数字看是否匹对,匹配则结速,反之提示是大了还是小了 复制代码 代码如下: package main import (     "bufio"     "fmt"     "math/rand"     "os"     "strconv"     "time" ) var (  

  • 基于C语言实现的贪吃蛇游戏完整实例代码

    本文以实例的形式讲述了基于C语言实现的贪吃蛇游戏代码,这是一个比较常见的游戏,代码备有比较详细的注释,对于读者理解有一定的帮助. 贪吃蛇完整实现代码如下: #include <graphics.h> #include <conio.h> #include <stdlib.h> #include <dos.h> #define NULL 0 #define UP 18432 #define DOWN 20480 #define LEFT 19200 #defi

  • Java实现的剪刀石头布游戏示例

    本文实例讲述了Java实现的剪刀石头布游戏.分享给大家供大家参考,具体如下: ChoiceAnswer.java public class ChoiceAnswer { String texts[] = { "石头", "剪刀", "布" }; int value; // [1]石头\t[2]剪刀\t[3]布 String getText() { return texts[value - 1]; } ChoiceAnswer(int value)

  • C语言贪吃蛇经典小游戏

    一.贪吃蛇小游戏简介: 用上下左右控制蛇的方向,寻找吃的东西,每吃一口就能得到一定的积分,而且蛇的身子会越吃越长,身子越长玩的难度就越大,不能碰墙,也不能咬到自己的身体,等到了一定的分数,就能过关. 二.函数框架 三.数据结构 typedef struct Snake { size_t x; //行 size_t y; //列 struct Snake* next; }Snake, *pSnake; 定义蛇的结构体,利用单链表来表示蛇,每个结点为蛇身体的一部分. 四.代码实现(vs2010  c

  • C语言实现三子棋小游戏

    在这里我们要写出一个三子棋的小游戏,能够实现所需要的三字连珠的功能,并且可以使得游戏让玩家进行选择是否继续的功能. 代码: #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<time.h> #define ROW 3 #define COL 3 void init_board(char arr[ROW][COL]) { int i=0; int j=0; for

随机推荐