2014-09-20 118 views
0

我在c#.net窗体窗体应用程序中制作了一个Tic tack tack游戏,我正在计划在框中使用图像而不是剔或交叉。所以我面临一个问题比较这些图像,因为为了赢得该计划必须检查行或列或对角线相同的图像。我已经搜查,但仍然没有找到解决办法。任何帮助将不胜感激。在c#.net窗口窗体应用程序中比较图像

+1

您应该有一个独立于屏幕图像的数据结构来表示电路板状态。 – 2014-09-20 11:09:56

+0

我的水晶球说你正在使用Properties.Resources.SomeImage。不起作用,每次使用它时都会创建一个* new *图像。一个非常顽皮的事情要做的财产顺便说一句。您必须将其复制到一个变量中,以便只使用该属性一次。 – 2014-09-20 12:24:17

回答

2

你走错了路;你不应该比较图像来决定玩家是否赢了。

相反,您应该有游戏板的内部表示形式(例如二维数组),其中包含数字(例如,0表示空单元格,1表示十字形,2表示圆圈),并且工作相反(比数字比图像更容易)。视觉表示可以很容易地从该网格构建。

通常,您应该始终将可视表示与数据的“逻辑”表示区分开来。 UI应该只反映逻辑表示,不应该被实际的程序逻辑使用。

+0

谢谢托马斯,我明白了你的观点。感到生气的是我正在执行的方式。很好谢谢.. – 2014-09-20 12:55:15

+0

对AI的任何建议? – 2014-09-21 08:50:21

+0

@SalmanJaved,不是真的,但它是一个常见问题,我敢肯定,你可以在谷歌上找到吨井字脚趾AI例子) – 2014-09-21 08:52:08

0

比较图像可以通过拍摄图像对和比较每个像素的值来完成,这将是非常昂贵的任务,并且会让您的游戏速度变慢。

正确的方法是您应该声明一个二维数组来表示单元格中的值。你可以操纵这个数组产生滴答声和交叉。并在一个单独的函数中解析数组以创建显示。 这样,检查游戏结束或创建下一步移动将变得更容易。

+0

Nitish by your方法我可以非常容易地检查,如果一个球员赢了或不。我应该做到了。现在我已经实现了这样的方式,它比较文本int每个按钮,这是更复杂的方式.thnx – 2014-09-20 12:52:27

+0

@萨尔曼很高兴我能帮上忙。 – 2014-09-20 14:57:49

+0

Nitish我已经完成了玩家到玩家tic tac脚趾现在我正在执行它对计算机。所以任何提示或建议,因为我觉得有点困难。 – 2014-09-21 08:49:37

相关问题