java編寫俄羅斯方塊源代碼一_第1頁
java編寫俄羅斯方塊源代碼一_第2頁
java編寫俄羅斯方塊源代碼一_第3頁
java編寫俄羅斯方塊源代碼一_第4頁
java編寫俄羅斯方塊源代碼一_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、import javax.swing.*;import javax.swing.border.Border;import javax.swing.border.EtchedBorder;import java.awt.*;import java.awt.event.*;/*控制面板類, 繼承自 JPanel.上邊安放預(yù)顯窗口、等級(jí)、得分、控制按鈕主要用來控制游戲進(jìn)程。/class ControlPanel extends JPanel private JTextFieldtfLevel = new JTextField( + ErsblocksGame.DEFAULT_LEVEL), tfSc

2、ore = new JTextField(0);private JButtonbtPlay = new JButton(Play),btPause = new JButton(Pause),btStop = new JButton(Stop),btTurnLevelUp = new JButton(Turn hard),btTurnLevelDown = new JButton(Turn easy);private JPanel plTip = new JPanel(new BorderLayout();private TipPanel plTipblock = new TipPanel();

3、private JPanel plInfo = new JPanel(new GridLayout(4, 1);private JPanel plButton = new JPanel(new GridLayout(5, 1);private Timer timer;private ErsBlocksGame game;private Border border = new EtchedBorder(EtchedBorder.RAISED, Color.white, new Color(148, 145, 140);/*控制面板類的構(gòu)造函數(shù)param game ErsBlocksGame, E

4、rsBoxesGame 類的一個(gè)實(shí)例弓 I 用方便直接控制ErsBoxesGam聯(lián)的行為。/setLayout(new GridLayout(3, 1, 0, 4);this.game = game;plTip.add(new JLabel(Next block), BorderLayout.NORTH);plTip.add(plTipblock);plTip.setBorder(border);plInfo.add(new JLabel(Level);plInfo.add(tfLevel);plInfo.add(new JLabel(Score);plInfo.add(tfScore);pl

5、Info.setBorder(border);tfLevel.setEditable(false);tfScore.setEditable(false);plButton.add(btPlay);plButton.add(btPause);plButton.add(btStop);plButton.add(btTurnLevelUp);plButton.add(btTurnLevelDown);plButton.setBorder(border);add(plTip);add(plInfo);add(plButton);addKeyListener(new ControlKeyListener

6、();btPlay.addActionListener(new ActionListener() public void actionPerformed(ActionEvent ae) game.playGame(););btPause.addActionListener(new ActionListener() public void actionPerformed(ActionEvent ae) if (btPause.getText().equals(new String(Pause) game.pauseGame(); else game.resumeGame(););btStop.a

7、ddActionListener(new ActionListener() public void actionPerformed(ActionEvent ae) game.stopGame(););btTurnLevelUp.addActionListener(new ActionListener() public void actionPerformed(ActionEvent ae) try int level = Integer.parseInt(tfLevel.getText();if (level 1)tfLevel.setText( + (level - 1); catch (N

8、umberFormatException e) requestFocus(););addComponentListener(new ComponentAdapter() public void componentResized(ComponentEvent ce) plTipblock.fanning(); );timer = new Timer(500, new ActionListener() public void actionPerformed(ActionEvent ae) tfScore.setText( + game.getScore();int scoreForLevelUpd

9、ate =game.getScoreForLevelUpdate();if (scoreForLevelUpdate = ErsBlocksGame.PER_LEVEL_SCORE& scoreForLevelUpdate 0)game.levelUpdate(););timer.start();/*設(shè)置預(yù)顯窗口的樣式,param style int, 對(duì)應(yīng) Ersblock 類的 STYLES的 28 個(gè)值/ public void setTipStyle(int style) plTipblock.setStyle(style);/* 取得用戶設(shè)置的游戲等級(jí)。return int, 難度等

10、級(jí) ,1 -ErsBlocksGame.MAX_LEVEL */ public int getLevel() int level = 0;try level = Integer.parseInt(tfLevel.getText(); catch (NumberFormatException e) return level;/* 讓用戶修改游戲難度等級(jí)。param level 修改后的游戲難度等級(jí)*/ public void setLevel(int level) if (level 0 & level 11) tfLevel.setText( + level); /*設(shè)置 開始 按鈕的狀態(tài)。/

11、public void setPlayButtonEnable(boolean enable) btPlay.setEnabled(enable);public void setPauseButtonLabel(boolean pause) btPause.setText(pause ? Pause : Continue);/*重置控制面板/public void reset() tfScore.setText(0);plTipblock.setStyle(0);/* 重新計(jì)算 TipPanel 里的 boxes 里的小框的大小*/ public void fanning() plTipblo

12、ck.fanning();/* 預(yù)顯窗口的實(shí)現(xiàn)細(xì)節(jié)類*/ private class TipPanel extends JPanel private Color backColor = Color.darkGray, frontColor =Color.lightGray;private ErsBox boxes = new ErsBoxErsBlock.BOXES_ROWSErsBlock.BOXES_COLS;private int style, boxWidth, boxHeight;private boolean isTiled = false;/* 預(yù)顯窗口類構(gòu)造函數(shù)*/public

13、 TipPanel() for (int i = 0; i boxes.length; i+) for (int j = 0; j boxesi.length; j+) boxesij = new ErsBox(false);/*預(yù)顯窗口類構(gòu)造函數(shù)param backColor Color, 窗口的背景色param frontColor Color, 窗口的前景色/ public TipPanel(Color backColor, Color frontColor) this();this.backColor = backColor;this.frontColor = frontColor;/

14、* 設(shè)置預(yù)顯窗口的方塊樣式param style int, 對(duì)應(yīng) Ersblock 類的 STYLES的 28 個(gè)值*/ public void setStyle(int style) this.style = style;repaint();/*覆蓋JComponent類的函數(shù),畫組件。param g 圖形設(shè)備環(huán)境*/ public void paintComponent(Graphics g) super.paintComponent(g);if (!isTiled) fanning();int key = 0 x8000;for (int i = 0; i boxes.length; i

15、+) for (int j = 0; j = 1;/*根據(jù)窗口的大小 , 自動(dòng)調(diào)整方格的尺寸/public void fanning() boxWidth = getSize().width / ErsBlock.BOXES_COLS;boxHeight = getSize().height / ErsBlock.BOXES_ROWS;isTiled = true;private class ControlKeyListener extends KeyAdapter public void keyPressed(KeyEvent ke) if (!game.isPlaying() return;ErsBlock block = g

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論