Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Asp.net的国际象棋引擎_C#_Javascript_Html_Asp.net Mvc - Fatal编程技术网

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

C# 使用Asp.net的国际象棋引擎,c#,javascript,html,asp.net-mvc,C#,Javascript,Html,Asp.net Mvc,我决定在学期休息期间启动一个项目,使用asp.net创建一个国际象棋引擎。我对如何实现引擎本身有一个很好的想法,我的问题是什么是将其绘制到浏览器的最佳方式 我计划只使用asp:image控件,并在每次鼠标按下事件中在棋盘图像上重新绘制棋子。我将有一个棋子对象的2D数组,它有一个抽象的绘制方法来绘制不同的棋子,有点像2D瓷砖地图。这将使用.NET中的绘图类完成,但我在MSDN网站上看到asp.NET不支持它 基本上,我的问题是使用asp.net向客户端绘制服务器端映像的最佳方法是什么。我以前从未做

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

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

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


干杯,戴夫。

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

如果您想学习,可能需要了解如何使用canvas在客户端绘制这一切-同时更新一些html 5技能。这样你就可以实现漂亮的拖放式动画等等