日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

php 井字棋,Unity3D 井字棋

發布時間:2023/12/20 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 井字棋,Unity3D 井字棋 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Unity3D 井字棋

今天第一次Unity實戰,先用GUI寫個井字棋的小游戲。先上成品圖:

首先創建c#腳本,添加GUI方法。此時考慮到要記錄九宮格每個位置的狀態以及此時是誰在點擊,所以創建兩個私有變量。

private int count = 0;

private int[,] map = new int[3, 3];

OnGUI函數在每幀被調用,每次調用OnGUI函數時,先調用Check()函數判斷是否有勝利者,如果有就顯示出勝利者的名稱。然后再判斷游戲是否和棋,如果前兩種情況均未發生,再繪出主要游戲界面。

void OnGUI()

{

int winner = Check();

if (winner == 1)

{

GUI.Label(new Rect(300, 350, 90, 50), "X wins!");

}

else if (winner == 2)

{

GUI.Label(new Rect(300, 350, 90, 50), "O wins!");

}

else if (count == 9)

{

GUI.Label(new Rect(280, 350, 100, 50), "Dead Game! Please Restart!");

}

else

{

for (int i = 0; i < 3; i += 1)

{

for (int j = 0; j < 3; j += 1)

{

if (map[i, j] == 0)

{

if (GUI.Button(new Rect(250 + i * 50, 250 + j * 50, 50, 50), ""))

{

if (count%2 == 0) map[i, j] = 1;

else map[i, j] = 2;

count = count + 1;

}

}

if (map[i, j] == 1)

{

GUI.Button(new Rect(250 + i * 50, 250 + j * 50, 50, 50), "X");

}

if (map[i, j] == 2)

{

GUI.Button(new Rect(250 + i * 50, 250 + j * 50, 50, 50), "O");

}

}

}

}

if (GUI.Button(new Rect(275, 400, 100, 50), "Restart"))

{

reset();

}

}

Check()函數用于判斷是否有勝利者,并返回代指勝利者的數字。

private int Check()

{

//橫向連線

for (int i = 0; i < 3; ++i)

{

if (map[i, 0] != 0 && map[i, 0] == map[i, 1] && map[i, 1] == map[i, 2])

{

return map[i, 0];

}

}

//縱向連線

for (int j = 0; j < 3; ++j)

{

if (map[0, j] != 0 && map[0, j] == map[1, j] && map[1, j] == map[2, j])

{

return map[0, j];

}

}

//斜向連線

if (map[1, 1] != 0 &&map[0, 0] == map[1, 1] && map[1, 1] == map[2, 2] ||map[0, 2] == map[1, 1] && map[1, 1] == map[2, 0])

{

return map[1, 1];

}

return 0;

}

游戲開始時start()函數調用reset()函數進行初始化,以下是完整代碼:

using System;

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class NewBehaviourScript : MonoBehaviour

{

private int count = 0;

private int[,] map = new int[3, 3];

private void Start()

{

reset();

}

void OnGUI()

{

int winner = Check();

if (winner == 1)

{

GUI.Label(new Rect(300, 350, 90, 50), "X wins!");

}

else if (winner == 2)

{

GUI.Label(new Rect(300, 350, 90, 50), "O wins!");

}

else if (count == 9)

{

GUI.Label(new Rect(280, 350, 100, 50), "Dead Game! Please Restart!");

}

else

{

for (int i = 0; i < 3; i += 1)

{

for (int j = 0; j < 3; j += 1)

{

if (map[i, j] == 0)

{

if (GUI.Button(new Rect(250 + i * 50, 250 + j * 50, 50, 50), ""))

{

if (count%2 == 0) map[i, j] = 1;

else map[i, j] = 2;

count = count + 1;

}

}

if (map[i, j] == 1)

{

GUI.Button(new Rect(250 + i * 50, 250 + j * 50, 50, 50), "X");

}

if (map[i, j] == 2)

{

GUI.Button(new Rect(250 + i * 50, 250 + j * 50, 50, 50), "O");

}

}

}

}

if (GUI.Button(new Rect(275, 400, 100, 50), "Restart"))

{

reset();

}

}

private void reset()

{

for (int i = 0; i < 3; i += 1)

{

for (int j = 0; j < 3; j += 1)

{

map[i, j] = 0;

}

}

count = 0;

}

private int Check()

{

//橫向連線

for (int i = 0; i < 3; ++i)

{

if (map[i, 0] != 0 && map[i, 0] == map[i, 1] && map[i, 1] == map[i, 2])

{

return map[i, 0];

}

}

//縱向連線

for (int j = 0; j < 3; ++j)

{

if (map[0, j] != 0 && map[0, j] == map[1, j] && map[1, j] == map[2, j])

{

return map[0, j];

}

}

//斜向連線

if (map[1, 1] != 0 &&map[0, 0] == map[1, 1] && map[1, 1] == map[2, 2] ||map[0, 2] == map[1, 1] && map[1, 1] == map[2, 0])

{

return map[1, 1];

}

return 0;

}

}

總結

以上是生活随笔為你收集整理的php 井字棋,Unity3D 井字棋的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。