程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> 跟我學Java Swing之游戲設計(3)

跟我學Java Swing之游戲設計(3)

編輯:JAVA編程入門知識

  上一節:跟我學Java Swing之游戲設計(2)

  誰說編寫程序不是一項藝術?那些命令與符號正像一幅工筆畫,一筆一畫產生出多少變幻莫測的結果。不過,光有骨架的工筆畫恐怕也無法成為絕世佳作,那麼,今天就讓我們來為自己的作品添上最初的絢麗色彩吧。

<!-- frame contents --> <!-- /frame contents -->

    前言

  今天我們會為游戲添加動畫效果,這將會涉及到圖形處理,還有線程的基本概念,這可是一項非常有意思的工作哦。本期源程序下載(點擊下載, 2KB, WinZip壓縮)。

  上一期我們完成了游戲界面的設計,可是游戲的功能卻還十分單薄,比如說幾個人同時玩一個游戲,我們怎麼比較誰玩得比較好呢,就算是自己一個人在玩,也得知道自己每次的成績啊。競技是游戲的主要動力之一,為了提高游戲的可玩性,我們得加入計時和計分的功能才行。

  關於游戲的計時和計分功能,因為與我們Swing的主題關系不大,這部分功能的實現我就不說了,假如大家感愛好的話可以參考一下我的源程序,裡面有具體的說明,在這裡我們就只討論一下如何將顯示界面做得漂亮。

  JLabel和Font

  還記得最開始的主界面是如何設計的嗎?我們將界面分成了三個部分:系統菜單、游戲區、用戶交互區。用戶交互區的作用就是放置用戶的操作及反饋信息,計時和計分功能自然就是放在這裡。

  首先我們可以放置一個文本控件,然後將這個控件的背景設置為界面的背景色或透明色。那麼這個控件應該是哪個呢?這個控件就是JLabel!JLabel的用法並不難,假如你能夠熟練使用JButton的話,那麼JLabel控件也會是小case了,讓我們一起來試試吧:

JLabel score = new JLabel("307"); // 假設用戶當前的分數為307分
  actionPanel.add(score);

  看看程序運行的結果,感覺如何?你也許會說:字太小了,而且顏色也太暗了,看不太清楚。沒關系,這很輕易解決:

JLabel score = new JLabel("307");
  Font font = new Font("宋體", Font.BOLD, 48);
  score.setForeground(Color.yellow);
  score.setFont(font);
  actionPanel.add(score);

  在上面的代碼中,我們首先創建了一個字體對象font,Font構造函數中3個參數的意義依次為:使用字體的名稱、字體的樣式(普通、粗體、斜體等)以及字體的大小等;然後,我們使用setForeground來設計JLabel的前景色;最後,我們將JLabel的字體改為我們創建的字體。現在我們再來看看程序運行的結果,是不是效果好多了(見圖1)?

  在游戲的過程中,只要時間或者分數發生變化,我們就可以使用JLabel.setText(String s)來更新顯示。

  細心的朋友可能會發現,在我們顯示時間和分數的過程中,假如將字體設置得很大,顯示內容雖然更輕易看清,但視覺效果卻變得很差。這是因為字體越大,字體上的鋸齒就會越明顯,這是Swing控件顯示文字的通病,遺憾的是暫時還沒有很有效的解決方法(見圖2)。

  善用Graphics繪制圖形

  在前面所有的章節中,我們都是使用現成的控件來滿足自己的需要,現成的控件雖然使用方便,卻不能完全滿足我們的要求。這時我們就需要了解一下如何不使用控件來繪制圖形。

<!-- frame contents --> <!-- /frame contents -->

  
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved