Unity 3D游戏开发学习笔记(1) 井字棋

来源:互联网 发布:rpc java 编辑:程序博客网 时间:2024/05/01 20:12

第一次用Unity 3D写游戏,做了个井字棋。
这里写图片描述
由于不熟悉onGUI()和C#,参考了师兄的笔记。

代码实际上很简单,逻辑也简单,主要是通过这个小游戏来熟悉一下Unity 3D的一些基本操作实现,比如OnGUI()的原理,实际上这里面的Button并不是点击触发的效果,而是每一帧都在发生改变,因此这里Button实际上是不断重叠制造的吧。(显然变深色了),我感觉这样的做法不太好,但暂时不知道怎么去更好实现,就先这样了。

using System.Collections;using System.Collections.Generic;using UnityEngine;public class TicTacToe: MonoBehaviour {    int turn = 1;    int [,]state = new int[3,3];    void Start () {        Reset();    }    void Update () { }    void OnGUI() {        if (GUI.Button(new Rect(0,0,150,50), "Start Game")) {            Reset();        }        int current = Check();        if (current == 1) GUI.Label(new Rect(50,55,50,50),"O wins!");        if (current == 2) GUI.Label(new Rect(50,55,50,50),"X wins!");        if (current == 3) GUI.Label(new Rect(50,55,50,50),"Tied!");        for (int i = 0; i < 3; i++) {            for (int j = 0; j < 3; j++) {                if (state[i, j] == 1) {                    GUI.Button(new Rect(0+50*i,80+50*j,50,50), "O");                } else if (state[i, j] == 2) {                    GUI.Button(new Rect(0+50*i,80+50*j,50,50), "X");                }                 if (GUI.Button(new Rect(0+50*i,80+50*j,50,50), "")) {                    if (current == 0) {                        if (turn == 1) state[i, j] = 1;                        if (turn == -1) state[i, j] = 2;                        turn *= -1;                    }                }            }        }    }    int Check() {        for (int i = 0; i < 3; i++) {            if (state[i, 0] == state[i, 1] && state[i, 0] == state[i, 2] && state[i, 0] != 0) {                return state[i, 0];            }        }        for (int j = 0; j < 3; j++) {            if (state[0, j] == state[1, j] && state[2, j] == state[0, j] && state[0, j] != 0) {                return state[0, j];            }        }        if (state[1, 1] != 0 && state[0, 0] == state[1, 1] && state[2, 2] == state[1, 1]) {            return state[1, 1];        }        if (state[1, 1] != 0 && state[0, 2] == state[1, 1] && state[2, 0] == state[1, 1]) {            return state[1, 1];        }        for (int i = 0; i < 3; i++) {            for (int j = 0; j < 3; j++) {                if (state[i, j] == 0) return 0;            }        }        return 3;    }    void Reset() {        turn = 1;        for (int i = 0; i < 3; i++) {            for (int j = 0; j < 3; j++) {                state[i, j] = 0;            }        }    }}
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机丢了将军令怎么办 大军之印放弃了怎么办 联想一体机进入界面就死机怎么办 nmd袜子鞋露脚趾怎么办 生意不顺意志崩溃了怎么办 笔记本突然卡住不动了怎么办 指定货代费用高怎么办 空运舱单上的收货人错了怎么办? 被诚信贷骗了怎么办 原户主不迁户口怎么办 二手房原房主没迁走怎么办 办退工没有就失业证怎么办 消防队教导员插手商场翘柜台怎么办 调动工作原单位领导不放人怎么办 脚碰了一下肿了怎么办 六十岁的犯人身体有病怎么办 比熊肛门周围发炎怎么办 夏天肛门周围皮肤发炎怎么办 直肠息肉手术后便秘怎么办 痔疮手术后肛门洞怎么办 痔手术后肛门有个洞怎么办 直肠上长了瘤怎么办 上嘴唇没有唇峰怎么办 拉屎厕所堵了怎么办啊 小孩一拉屎就哭怎么办 上火裆部有肿块特别疼怎么办 狗狗拉屎拉不出来怎么办 肛裂大便带血怎么办 辣椒不小心弄丁丁上怎么办 小鸡躺着不动还呼吸怎么办 老人身体不舒服不敢去检查怎么办 金毛上火鼻子干怎么办 狗鼻子干裂结壳怎么办 小狗吐了没精神怎么办 狗狗又吐又拉怎么办 孕妇嘴干鼻子干怎么办 狗狗打了针皮肤变硬怎么办 狗狗得了狗瘟怎么办 金毛得了犬瘟怎么办 泰迪身上起皮怎么办 狗狗鼻子干了怎么办