2012-08-02 84 views
3

我是一位經驗有限的新程序員,希望能夠擴展它。這是我在校外嘗試的第一個項目,所以我的資源很波動,因爲我根本不知道我需要知道什麼。但是,對於使用Java的基本GUI,我有一些小的基礎。自我項目:使用GUI創建國際象棋遊戲

我想創建一個象棋遊戲,稍後實現一個AI。但是,現在我只是在構建遊戲本身。現在,我想要一個簡單的GUI框架,它不必看起來漂亮或複雜。只需顯示棋盤,棋子在哪裏,點擊棋子,它會突出顯示你可以走到哪裏,然後點擊廣場,瞧,移動完成。

這是我在GUI界面設計中的主要問題。它是否分開邏輯部分完成?換句話說,如果我創建了一個Piece,我是否需要一個.jpg或其他東西,或者我可以只有一個單獨的類,如果在這個正方形中有一個棋子,在這些座標中顯示一個棋子圖片。我需要知道什麼來構建GUI?我主要使用谷歌瀏覽,但一開始就會被讚賞,同時知道繼續在棋盤上工作,同時以不同的速度進行GUI部分的工作是可以的。

非常感謝,如果我提出的任何問題都是隨時可以找到的信息,我很抱歉。我可能已經觸及了它,但沒有意識到它對我想做的事情的重要性。再次

謝謝:)


我只是有興趣更新此。我有一個更好的形式,我將要做的事情,並在我的腦海中有這種結構,並在紙上翻譯。現在,爲簡單起見,所有的東西都只是在Java中。

無論如何,抱歉,很長的職位。沒有人需要閱讀。 :)

我會嘗試使用MVC格式,儘管它仍然可能會讓我稍微困惑。

模型 - 我將創建一塊板[8] [8]。 Piece將是一個抽象類,由我現在調用的座標和抽象方法canMove(x,y)組成。我原本也有動作(x,y),但我意識到這些作品不會做動作。因此,我堅持使用canMove方法,讓控制器看到Piece是否確實可以做到這一點。

控制器 - 在這裏我將創建電路板並設置所有部分。我認爲這將是最大的一個階級,因爲它幾乎可以控制一切。

查看 - 這基本上是GUI。

這是我認爲控制器/視圖協調應該如何工作的。

  1. 控制器中會有一個變量叫手。當我第一次點擊一個作品時,它會檢查它是否是黑/白,這是作品本身的一個參數。如果它是正確的顏色,它將被分配到手。那麼它會檢查雙數組中的每個方塊。如果canMove()爲true,則在視圖中突出顯示該方塊。然後第二次點擊將檢查canMove()。如果屬實,請檢查它是否被一塊相同顏色佔據,如果不是,則移動到那裏。如果是假的,什麼都不是如果你點擊手,手就變空了。對我而言,問題將是視圖如何與控制器交互。稍後會介紹。

  2. 在每一個動作結束時,檢查每件作品的canMove()以查看國王是否在其中。如果是這樣,請檢查。對於將軍,我想我會有一個標記國王周圍廣場的整體方法,看看他們是否都有標記,包括他所在的那個。

所以我有幾件事我也意識到我沒有解釋我必須弄清楚。典當捕捉和典當運動將非常具體。王車易位。 CanMove申請時,一定要有一些碎片的阻礙。

建築視圖將是一種痛苦,因爲我的班級中沒有人教過我任何關於它的事情。我想,最後會得到它。 Idk我會如何測試而不是觀看,儘管可能不會持續。

+0

看看Oracle的Swing教程。 – 2012-08-02 22:38:57

回答

2

總而言之,是的。業務邏輯和表示應該是分開的。請閱讀MVC。祝你好運。

編輯:讀MVP也是一個好主意。但要注意的主要問題是應用程序邏輯應與顯示器分離。這聽起來像是一個新手編程的雄心勃勃的項目 - 希望這對你來說是一個很好的學習體驗。

+0

謝謝:)我希望能夠學到很多東西,並在我從這一課中學到更多東西后,想出一個更有意義的項目。我剛剛打開這些鏈接,並會很快閱讀它們。感謝您的快速響應。 :) – Soulzityr 2012-08-02 22:59:42

3

這是一個模糊的「問題」,但這裏有一對夫婦的初始指針:

  • 上閱讀了Model-view-controller pattern(是的,業務邏輯將在模型和GUI會的看法)。

  • 嘗試使用GridLayout

  • 使用JLabel S或JButton在你的細胞中

    • ,他們可以很容易地顯示圖像
    • 你可以設置自己的背景爲黑色或白色,並且
    • 您可以輕鬆地聽他們點擊。
+0

謝謝你的建議。對不起,是的,我知道它很模糊,因爲我仍在計劃一切,只編寫一些隨機的東西來感受我想要做的事情。我在這裏問這是因爲在規劃時我意識到我不知道我是如何計劃完成GUI的。但我現在會閱讀所有這些東西。非常感謝:) – Soulzityr 2012-08-02 22:58:37

4

這是我在GUI界面的設計主要問題。它是否分開邏輯部分完成?

當然,是的。

國際象棋引擎和用戶界面實際上是兩個完全不同的程序,在不同的進程中運行是非常普遍的。

國際象棋引擎通常針對速度進行了優化,通常用C或C++編寫(儘管如果您願意,您可以使用Java)。 GUI通常用Java編寫。引擎和圖形用戶界面通常由完全不同的具有不同技能組的程序員團隊編寫。

有通信的標準協議,例如Universal Chess Interface,也被稱爲UCI。如果你採用這個標準,你可以編寫你自己的圖形用戶界面,並與現有的引擎一起使用然後,如果您稍後編寫自己的引擎來實現UCI協議,則只需更改GUI中的設置即可使用您的引擎。

正如在實施UCI標準的評論中提到的,對於您的第一個項目來說可能會有點多。不過,我希望知道如何在現實世界中做到這一點,可以爲您選擇的任何設計提供一些靈感。

+0

對不起,如果我不高興,你是完全正確的,但因爲這是他的第一個項目,我只是給他一些基本的建議,讓他按自己的意願創建自己的遊戲。我認爲實施UCI協議並使用特定語言來完成這項任務並不是真正令人愉快的第一個項目。 – Dalmas 2012-08-02 22:48:53

+0

這確實說明了一個重要的觀點,即業務邏輯和觀點應該是分開的,以至於它們甚至不需要處於相同的過程中,也不需要相同的語言。有一個upvote。 – tronbabylove 2012-08-02 22:53:36

+0

@tronbabylove:謝謝。 :)還要感謝Dalmas提供了有洞察力的評論 - 我已經更新了我的答案,但我同意這個答案可能只會在OP完成他的項目V1並開始使用v2或v3之後纔會有用(如果他曾經獲得那麼遠)。 – 2012-08-02 23:03:10