使用Asp.net的国际象棋引擎

Chess Engine Using Asp.net

本文关键字:国际象棋 引擎 net Asp 使用      更新时间:2023-09-26

我决定在学期间开始一个项目,使用asp.net创建一个国际象棋引擎。我对如何实现引擎本身有一个很好的想法,我的问题是将其绘制到浏览器中的最佳方式是什么?

我计划只使用asp:image控件,并在每次鼠标按下事件时在棋盘图像上重新绘制棋子。我会有一个ChessPiece对象的2D阵列,它有一个抽象的绘制方法来绘制不同的部分,有点像2D瓷砖地图。这将使用.NET中的Drawing类来完成,但我在MSDN网站上读到asp.NET不支持它。

基本上,我的问题是使用asp.net向客户端绘制服务器端图像的最佳方式是什么。我以前从未做过这样的事情,所以如果你能给我指明正确的方向,我将不胜感激。

干杯,戴夫。

如果是我,我会完全用HTML、CSS和JavaScript制作界面。只需使用HTML和CSS就可以轻松地生成电路板。然后,您需要创建一个包含所有棋子的CSS"精灵"。精灵基本上是将一堆图像拼接到一个图像中(然后创建具有不同名称的CSS类,指定精灵的一部分在同一时间显示)。因此,您可以创建类似<div class="rook white"></div>的东西来显示CSS精灵中的白色rook。然后,您将为每个棋子制作一个<div></div>元素,并将它们放入HTML中,以便它们显示在棋盘上的进场方块中。然后,您可以使用JavaScript连接每个片段上的mousedown/mouseup事件。我可能会将棋盘格式以JSON格式存储在内存中,然后当用户试图移动棋子时,我会使用JavaScript验证移动。如果这是一个有效的移动,我会显示一个加载微调器,并通过JavaScript对ASP.NET代码执行Ajax请求。我会使用WebApi托管ASP.NET代码。您的WebApi控制器将接受具有新板状态的POST数据。然后,它可以计算计算机应该进行的移动,并以JSON的形式返回新的板状态。然后,您的JavaScript可以更新其内部JSON,也可以更新HTML接口。实现这样的双向绑定的一个简单方法是使用Angular.js或Knockout.js。如果你使用这两种框架,你可以避免用HTML设置初始板,而是用JSON设置板,并让它相应地创建相应的HTML。在板状态更新后,我会隐藏加载微调器。

如果你想学习,也许有必要弄清楚如何使用画布在客户端绘制这一切-同时更新一些html 5技能。这样你就可以实现漂亮的拖放式动画等…