资源下载地址:https://download.csdn.net/download/sheziqiong/86871335
资源下载地址:https://download.csdn.net/download/sheziqiong/86871335
编程实践,小游戏
井字棋,有ESC的概念,展示逻辑与业务逻辑要分开
3D作业评分指标:ECS的基本理念要在实验报告中体现。一个具体指标就是OnGUI代码少
这是一个在Unity3D上,使用IMGUI做的一个井字棋小游戏,界面上参照网站 https://playtictactoe.org/。
游戏具备双人模式和人机模式,通过点击右下角的小人图标即可转换模式,通过点击右下角的刷新图标可以重新开启一盘棋,先后手会随着游戏的进行而来回转变,战绩显示在右中间一栏,为"O胜局:平局:X胜局"。
实体: 唯一的游戏对象Tictactoe。
组件: Prefabs文件夹里的图标文件和声明样式的GUISkin文件。
系统: Scripts文件夹里的四个C#文件 TheGame、ChessBoard、Player、Robot,负责处理游戏逻辑。
UML类图如下所示,游戏有四个类组成,其中TheGame
是主类。
游戏搭建过程:
创建一个Unity 2D项目 Tictactoe
右键创建一个空的游戏对象 Tictactoe
在资源区(Assets)创建一个文件夹 Prefabs,并将所有图片资源拖进去(备注:所有资源已打包到Gitee仓库)
创建一个GUISkin,配置TheSkin,配置内容如下:(背景:资源文件Black,文字颜色:白, 字体大小:20+)
Box | Button | Label |
---|
注意不要忘记配置GUIStyle White Background,展开White Background并将GreyWhite拖入即可,如下所示
void OnGUI(){
GUI.skin = customSkin;
// Generate GamePad
GUI.Box(new Rect(0, 0, Screen.width, Screen.height), ""); // Full Screen Game Pad
GUI.BeginGroup(new Rect(Screen.width * 0.5f - 300, Screen.height * 0.5f - 200, gamePadWidth, gamePadHeight));
GUI.Box(new Rect(padding + 2, padding + 2, 3 * chessSideLength - 4, 3 * chessSideLength - 4), "", whiteBackground); // 棋盘
robotAction(); // 机器人回合:机器人下棋
chessBoardUpdate(); // 显示棋子 + 玩家回合:玩家下棋
gameCheck(); // 判定胜负
GUI.Label(new Rect (2 * padding + 3 * chessSideLength, padding, 150, 100), "The Game"); // 游戏Title
gradeLabelUpdate(); // 更新比分表
GUI.BeginGroup(new Rect(2 * padding + 3 * chessSideLength, padding + 200, 150, 100));
setResetButton(); // Reset Button: 重新开启一盘棋
setGameModeButton(); // Game Mode Button: 更改游戏模式 - 人机/双人
GUI.EndGroup ();
GUI.EndGroup ();
}
众所周知,井字棋是一个先手必不输,后手必不赢的游戏,下面算法纯属是我脑洞,机器人也有可能会输(不然谁还愿意玩呢)。
举例:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XvhQjh5i-1662706285215)(image/Robot.png)]
O是玩家,X是机器人,下棋顺序是 O[1,1] -> X[2,0] -> O[2,1],现在第四回合,轮到机器人下棋:
权值矩阵是:[[0,0,0],[0,-50,0],[60,-50,0]]
赢法矩阵是:[0,50,10,60,100,0,50,10] (横,横,横,(从左到右)竖,竖,竖,(从上到下)捺,撇)
优先级矩阵是:[[60,100,10],[60,0,50],[0,0,60]]
故选择位置[0,1]作为下一步棋。
资源下载地址:https://download.csdn.net/download/sheziqiong/86871335
资源下载地址:https://download.csdn.net/download/sheziqiong/86871335