Skip to content

Selflocking/DotsAndBoxes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Heap Overflow DotsAndBoxes

使用方法

首先确保你的MinGW使用MSVCRT,gcc版本最好为11.2。如果不确定,请使用这个MinGW-w64或从群文件下载

使用方法:

  1. 将MinGW解压到某个地方,进入/bin目录,复制路径。
  2. 打开设置,进入系统-系统信息-高级系统设置,选择环境变量,在打开的窗口中双击用户变量里的Path,点击新建,把复制的路径粘贴进去,并把它上移到顶部。
  3. win+r输入cmd打开命令行,输入gcc -v,如果输出的信息中COLLECT_LTO_WRAPPER=大致为你复制的路径即为成功。

不使用CMake

VS Code

  1. git clone https://gitee.com/YunShu007/dots-and-boxes.git
  2. 进入项目目录,新建build文件夹,将3rdparty/SFML/bin文件夹中的dll文件复制到刚刚新建的build文件夹中, 将res目录复制进build目录中
  3. 使用VS Code打开项目,请保证VSCode仅打开项目文件夹,而不是打开项目文件夹的父文件夹
  4. 新建.vscode文件夹,在.vscode里新建文件tasks.jsonlaunch.json.

tasks.json:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "g++ src/*.cpp src/AI/*.cpp -o build/game.exe -I ./3rdparty/SFML/include -L./3rdparty/SFML/lib -lsfml-graphics -lsfml-window -lsfml-system"
        }
    ]
}

如果你使用的是官方C++插件,launch.json:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "(gdb) 启动",
      "type": "cppdbg",
      "request": "launch",
      "program": "${workspaceFolder}\\build\\game.exe",
      "cwd": "${workspaceFolder}\\build",
      "externalConsole": false,
      "MIMode": "gdb",
      "miDebuggerPath": "gdb.exe",
      "preLaunchTask": "build"
    }
  ]
}

命令行编译

  1. git clone https://gitee.com/YunShu007/dots-and-boxes.git
  2. 进入项目目录,新建build文件夹,将3rdparty/SFML/bin文件夹中的dll文件复制到刚刚新建的build文件夹中,将res目录复制进build目录中
  3. 回到项目目录,打开命令行执行
g++ src/*.cpp src/AI/*.cpp src/element/*.cpp src/CJSON/*.cpp src/CJSON/*.h src/CJSON/*.c -o build/game.exe -I ./3rdparty/SFML/include -L./3rdparty/SFML/lib -lsfml-graphics -lsfml-window -lsfml-system
  1. 进入build文件夹,即可看到game.exe, 执行即可。

使用CMake (推荐)

首先安装CMake

VS Code

  1. git clone https://gitee.com/YunShu007/dots-and-boxes.git
  2. 安装CMake Tools插件
  3. 重启VS Code
  4. 重新打开会让你选择工具,选择GCC 11.2.0 X86_64-w64-mingw32-make
  5. 如果上一步不小心选错,按Ctrl+Shift+P打开指令栏,输入kit,点击CMake: 选择工具包重新选择
  6. 成功后点击VS Code下方状态栏上的运行按钮即可运行,如需调试请安装官方插件C/C++

tasks.json:

{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "cmake",
			"label": "CMake: build",
			"command": "build",
			"targets": [
				"dots_and_boxes"
			],
			"group": {
				"kind": "build",
				"isDefault": true
			},
			"problemMatcher": [],
			"detail": "CMake template build task"
		}
	]
}

launch.json:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 启动",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/build/dots_and_boxes.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}/build/",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description":  "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "CMake: build"
        },
    ]
}

Clion

  1. 打开Clion,选择从VCS导入,输入https://gitee.com/YunShu007/dots-and-boxes.git
  2. 等待加载,完成后会弹出配置cmake的窗口,直接点确定即可。

Clion自带Cmake和符合要求的MinGW,所以可以开箱即用

开发指南

AI设计

入口函数为void UCT(Board *board, int player),在此函数中更改AI逻辑

棋盘

棋盘是11x11大小,有点(DOT),横线(HENG),竖线(SHU),被占据的线(OCCLINE),格子(BOX),先手黑方格子(BLACK_BOX),后手白方格子(WHITE_BOX).

棋盘使用二位数组int8_t map[11][11]储存,横纵坐标皆为偶数时点,皆为奇数时格子,横偶竖奇是横线,横奇竖偶是竖线。

判定一个坐标是否为未被占据的线可以使用if(map[i][j]!=OCCLINE)或者if(map[i][j]==HENG||map[i][j]==SHU)

判定一个格子是否被占可以使用if(map[i][j]==BOX)

坐标

坐标LOC定义为std::pair<int,int>

About

a dots and boxes game, build with SFML.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published