2014-09-20 99 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

相關問題