Unity3d学习之路-简单井字棋

Unity3d-简单井字棋


  • 作业目的:熟悉IMGUI的使用,和基础的Unity3d操作
  • 游戏玩法:选择两个模式,1.Player vs Player 2.Computer vs Player,当其中一种棋子连成三个则这个棋子的玩家获胜。
  • 技术限制:仅允许使用IMGUI构成UI

游戏实现

  • 首先搭建游戏菜单界面:

    • 通过GUIStyle设置字体大小和颜色
    • 使用GUI.Label创建文本,GUI.Label的第一个参数是Rect类型的位置,表示标签在屏幕上的矩形位置,Rect中的参数分别是:起点x坐标,起点y坐标,标签宽度,标签高度。第二个参数text类型是String,标签的内容,第三个参数style类型是GUIStyle,标签使用的样式。
      picture

    • 使用GUI.Button来创建按钮,参数列表与GUI.Label类似,用if来判断Button是否被点击,若点击了则进入相应的游戏模式


GUIStyle fontStyle = new GUIStyle()
{
    fontSize = 25
};
fontStyle.normal.textColor = new Color(255, 255, 255);
GUIStyle fontStyle1 = new GUIStyle()
{
    fontSize = 30
};
fontStyle1.normal.textColor = new Color(255, 255, 255);
GUI.Label(new Rect(413, 50, 100, 50), "井字游戏", fontStyle1);

if(gamestate == GameState.end)
{
    if (GUI.Button(new Rect(400, 200, 140, 50), "Player vs Player"))
    {
        gamestate = GameState.mode1;
        isWin = false;
    }
    if (GUI.Button(new Rect(400, 280, 140, 50), "Player vs Computer"))
    {
        gamestate = GameState.mode2;
        isWin = false;
    }
}
  • 不同游戏模式的游戏逻辑
    • Player vs Player
      • 使用循环建立3X3的棋盘,因为这段代码在OnGUI中,每一帧监控空白格子是否被按下,从而实现落子
      • 陷阱:判断棋盘每一格的值从而建立Button的内容是X还是O,应该写在判断空白格子被点击前面,否则会造成看似已经落过子但是可以重新点击。(也可以在空白格子被点击的判断条件中加入判断棋盘board的值)
   if(gamestate == GameState.mode1)
{
    FixedUI(fontStyle);
    bool full = true;
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            if (board[i, j] =&#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值