标签: chess

如何在D3中画棋盘?

我想在D3中画一个棋盘:

\n\n

初始游戏位置

\n\n

我只要能够绘制初始游戏位置(如上所述)就很满意了。

\n\n

可能出现这样的情况:国王、王后、骑士等(有 12 个不同的部分)不需要图像文件,因为它们都是Unicode代码点 2654-265F 的一部分:

\n\n

Unicode 国际象棋符号

\n\n

Unicode 字符出现在任何现代浏览器中:

\n\n

\xe2\x99\x94 \xe2\x99\x95 \xe2\x99\x96 \xe2\x99\x97 \xe2\x99\x98 \xe2\x99\x99

\n\n

\xe2\x99\x9a \xe2\x99\x9b \xe2\x99\x9c \xe2\x99\x9d \xe2\x99\x9e \xe2\x99\x9f

\n\n

维基百科上的 Unicode 国际象棋符号:此处

\n\n

使用 Unicode 字符在终端中显示棋盘的 Python 脚本:此处。其结果:

\n\n

在此输入图像描述

\n\n

任何指示或帮助将不胜感激。

\n

javascript svg chess d3.js

0
推荐指数
1
解决办法
1万
查看次数

检查骑士在两点之间的移动是否有效

我正在用C++做一个国际象棋项目.我正在尝试检查2D阵列中的有效骑士移动.

我有玩家this->getLocX(),this->getLocY()变量的旧位置(玩家所在的位置)和我有x,y(这是玩家想要将他的骑士移入的地方).

如何以最佳方式检查有效性?这是我的解决方案,但我想知道是否有更好的方法.

if (x == this->getLocX() + 1 && y == this->getLocY() + 2 || x == this->getLocX() - 1 && y == this->getLocY() + 2 || y == this->getLocY() + 1 && x == this->getLocX() + 2 || y == this->getLocY() + 1 && x == this->getLocX() - 2  || x == this->getLocX() - 1 && y == this->getLocY() + 2 || x == this->getLocX() + 1 && y == this->getLocY() - 2 || …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm chess

0
推荐指数
1
解决办法
189
查看次数

在每次 while 循环迭代中等待用户鼠标单击

我正在尝试使用 Java 的 Swing 库构建一个带有 GUI 界面的国际象棋游戏。当我开始游戏时,会打开一个带有棋盘的窗口。

我所坚持的是,每次我都想等待当前玩家采取行动,而不是无限地运行 while 循环,因为这不是很有效。

这是代码和之后的解释:

private void startGame()
{
    while (!board.terminalBoard())
    {
        Move movePlayed = null;

        // whilist making the move returns false, meaning we cant do it...
        while (canMakeMove(movePlayed))
        {
            // TODO: Implement the getting move here
        }
        
        // If move is okay, make it
        board.movePiece(movePlayed.getStart(), movePlayed.getEnd());
    
        // Repaint the chessboard
        chessboard.loadImages(board);
        chessboard.repaintBoard();

        currColor ^= Piece.BLACK;
    }
}
Run Code Online (Sandbox Code Playgroud)

在内部 while 循环中,当用户所下的棋步无效时,它会再次迭代并等待下一个棋步。我不明白的是我如何等待玩家采取行动。

就我而言,玩家可以通过在棋盘上单击两次(源方格和目标方格​​)来进行移动。然后我的函数检查它是否有效。

如何等待用户在 Java Swing 窗口上单击两次?


编辑代码:问题是,如果我像你说的那样删除 thread.sleep,应用程序不会响应我的点击。

private void startGame()
    {
        while …
Run Code Online (Sandbox Code Playgroud)

java swing chess

0
推荐指数
1
解决办法
97
查看次数

将C++ HelloWorld国际象棋引擎代码转换为C代码失败

我正在研究C中的国际象棋编程和UCI命令的基本使用,我试图将Silvestro Fantacci C++ HelloWorld国际象棋引擎转换为C但没有成功.

参见Silvestro Fantacci C++ HelloWorld国际象棋引擎

以下是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <limits.h>

#define BUFFERSIZE 50

int main(int argc, char **argv)
{
char line[BUFFERSIZE];

while(fgets(line, BUFFERSIZE, stdin) != NULL)
    {
    if (line == "uci")
    {
        printf("id name rpdHWchessengineinC\n");
        printf("id author Richard\n");
        printf("uciok\n");
    }
    else if (line == "isready")

         printf("readyok\n");

    else if (line == "ucinewgame")

        ; // nothing to do

    else if (line == "position startpos moves e2e4\n")

        ; // nothing to do

    else if (line …
Run Code Online (Sandbox Code Playgroud)

c c++ chess

-1
推荐指数
1
解决办法
198
查看次数

棋盘 - 仅 HTML(5)

我是 HTML 新手,我参加了练习,在那里我必须只用 HTML 制作国际象棋棋盘。我在谷歌上搜索了很多,我找到了很多使用 Canvas 和 CSS 的解决方案,但我想用 HTML 来做,然后写下行和列的名称(在侧面)。你能给我一些建议吗?

谢谢!

html chess

-4
推荐指数
1
解决办法
1万
查看次数

标签 统计

chess ×5

c++ ×2

algorithm ×1

c ×1

d3.js ×1

html ×1

java ×1

javascript ×1

svg ×1

swing ×1