俄羅斯方塊課程設(shè)計(jì)報(bào)告_第1頁(yè)
已閱讀1頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)報(bào)告</p><p>  項(xiàng)目名稱: 俄羅斯方塊游戲 </p><p><b>  目 錄</b></p><p>  1. 系統(tǒng)概述……………………………………………… 3</p><p>  2. 項(xiàng)目開(kāi)發(fā)計(jì)劃書以及小組人

2、員分工表……………… 4</p><p>  3. 設(shè)計(jì)說(shuō)明書…………………………………………… 5</p><p>  4. 系統(tǒng)操作界面………………………………………… 7</p><p>  5. 源程序編碼…………………………………………… 28</p><p>  6. 測(cè)試計(jì)劃……………………………………………… 29&l

3、t;/p><p>  7. 改進(jìn)意見(jiàn)……………………………………………… 31</p><p>  8.課程設(shè)計(jì)心得體會(huì)……………………………… 32</p><p>  9. 參考書籍、資料……………………………………… 34</p><p><b>  系統(tǒng)概述</b></p><p&g

4、t;<b>  1.1現(xiàn)狀分析</b></p><p>  在個(gè)人電腦日益普及的今天,一些有趣的桌面游戲已經(jīng)成為人們?cè)谑褂糜?jì)算機(jī)進(jìn)行工作或?qū)W習(xí)之余休閑娛樂(lè)的首選,而俄羅斯方塊游戲是人們最熟悉的小游戲之一,它以其趣味性強(qiáng),易上手等諸多特點(diǎn)得到了大眾的認(rèn)可,因此開(kāi)發(fā)此游戲軟件可滿足人們的一些娛樂(lè)的需求。</p><p>  此俄羅斯方塊游戲可以為用戶提供一個(gè)可在普通個(gè)人電

5、腦上運(yùn)行的,界面美觀的,易于控制的俄羅斯方塊游戲。</p><p><b>  1.2項(xiàng)目要求</b></p><p>  俄羅斯方塊游戲是一款適合大眾的游戲軟件,它適合不同年齡的人玩。本軟件要實(shí)現(xiàn)的功能如下:(1)游戲區(qū):玩家可以在游戲區(qū)中堆積方塊,并能夠在游戲過(guò)程中隨時(shí)了解得分情況。</p><p> ?。?)游戲控制:玩家可以通過(guò)游戲控制

6、功能來(lái)選擇開(kāi)始新的一局游戲,暫?;蛲顺鲇螒?。</p><p>  級(jí)別設(shè)置:玩家可以根據(jù)自己的需要自行設(shè)定游戲的開(kāi)始級(jí)別,級(jí)別越高,游戲的速度越快,難度越大。</p><p>  1.3系統(tǒng)功能模塊示意圖</p><p>  項(xiàng)目開(kāi)發(fā)計(jì)劃書以及小組人員分工表</p><p>  1.1 項(xiàng)目開(kāi)發(fā)計(jì)劃書</p><p>

7、  1.2 小組人員分工表</p><p><b>  設(shè)計(jì)說(shuō)明</b></p><p><b>  1.1游戲區(qū)模塊</b></p><p><b>  1.2控制區(qū)模塊</b></p><p><b>  1.3系統(tǒng)流程圖</b></p>

8、<p><b>  1.4模塊簡(jiǎn)介</b></p><p><b>  功能模塊</b></p><p> ?。?)游戲區(qū)模塊(創(chuàng)建游戲區(qū),處理玩家操作,顯示操作結(jié)果)</p><p>  (2)游戲控制模塊(開(kāi)始,暫停繼續(xù),提高等級(jí),降低等級(jí),停止,新游戲,幫助)</p><p>&l

9、t;b>  系統(tǒng)操作界面</b></p><p>  游戲打開(kāi)界面 </p><p><b>  游戲進(jìn)行中界面</b></p><p><b>  源程序編碼</b></p><p>  import javax.swing.*;&l

10、t;/p><p>  import java.awt.*;</p><p>  import javax.swing.border.Border;</p><p>  import java.awt.event.*;</p><p>  public class ErsBlocksGame extends JFrame {</p>

11、<p>  public final static int alinescore = 100;</p><p>  public final static int everylevelscore = alinescore * 20;</p><p>  public final static int maxlevel = 10;</p><p>  pub

12、lic final static int initlevel = 5;</p><p>  private GameCanvas canvas;</p><p>  private ErsBlock block;</p><p>  private boolean playing = false;</p><p>  private Cont

13、rolPanel ctrlPanel;</p><p>  private JMenuBar bar = new JMenuBar();</p><p>  private JMenu</p><p>  mGame = new JMenu("游戲"),</p><p>  mControl = new JMenu(&qu

14、ot;控制"),</p><p>  mhelp = new JMenu("幫助");</p><p>  private JMenuItem</p><p>  miNewGame = new JMenuItem("新游戲"),</p><p>  milevelup = new JMenu

15、Item("提高級(jí)數(shù)"),</p><p>  mileveldown = new JMenuItem("降低級(jí)數(shù)"),</p><p>  miExit = new JMenuItem("退出"),</p><p>  miPlay = new JMenuItem("開(kāi)始"),<

16、/p><p>  miPause = new JMenuItem("暫停"),</p><p>  miResume = new JMenuItem("重新開(kāi)始"),</p><p>  miStop = new JMenuItem("停止"),</p><p>  miCtrlBloc

17、k = new JMenuItem("方塊控制鍵");</p><p>  public ErsBlocksGame(String title)</p><p><b>  {</b></p><p>  super(title);</p><p>  setSize(315, 392);</p

18、><p>  Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();</p><p>  setLocation((scrSize.width - getSize().width) / 2,</p><p>  (scrSize.height - getSize().height) / 2);&l

19、t;/p><p>  createMenu();</p><p>  Container container = getContentPane();</p><p>  container.setLayout(new BorderLayout(6, 0));</p><p>  canvas = new GameCanvas(20, 12);&l

20、t;/p><p>  ctrlPanel = new ControlPanel(this);</p><p>  container.add(canvas, BorderLayout.CENTER);</p><p>  container.add(ctrlPanel, BorderLayout.EAST);</p><p>  addWindo

21、wListener(new WindowAdapter() {</p><p>  public void windowClosing(WindowEvent we) {</p><p>  stopGame();</p><p>  System.exit(0);</p><p><b>  }</b></p&g

22、t;<p><b>  });</b></p><p>  addComponentListener(new ComponentAdapter() {</p><p>  public void componentResized(ComponentEvent ce) {</p><p>  canvas.fanning(); &l

23、t;/p><p><b>  }</b></p><p><b>  });</b></p><p><b>  show();</b></p><p>  canvas.fanning();</p><p><b>  }</b>&l

24、t;/p><p>  private void createMenu()</p><p><b>  {</b></p><p>  bar.add(mGame);</p><p>  bar.add(mControl);</p><p>  bar.add(mhelp);</p>&l

25、t;p>  mGame.add(miNewGame);</p><p>  mGame.addSeparator();</p><p>  mGame.add(milevelup);</p><p>  mGame.addSeparator();</p><p>  mGame.add(mileveldown);</p>

26、<p>  mGame.addSeparator();</p><p>  mGame.add(miExit);</p><p>  mControl.add(miPlay);</p><p>  mControl.addSeparator();</p><p>  mControl.add(miPause);</p>

27、<p>  mControl.addSeparator();</p><p>  mControl.add(miResume);</p><p>  mControl.addSeparator();</p><p>  mControl.add(miStop);</p><p>  mhelp.add(miCtrlBlock);&

28、lt;/p><p>  setJMenuBar(bar);</p><p>  miNewGame.addActionListener(new ActionListener() {</p><p>  public void actionPerformed(ActionEvent ae) </p><p><b>  {</b&g

29、t;</p><p>  stopGame();</p><p><b>  reset();</b></p><p>  setLevel(initlevel);</p><p><b>  }</b></p><p><b>  });</b><

30、;/p><p>  mileveldown.addActionListener(new ActionListener() {</p><p>  public void actionPerformed(ActionEvent ae)</p><p><b>  {</b></p><p>  int curLevel = g

31、etLevel();</p><p>  if (curLevel > 1) </p><p>  setLevel(curLevel - 1);</p><p><b>  }</b></p><p><b>  });</b></p><p>  milevelup

32、.addActionListener(new ActionListener() {</p><p>  public void actionPerformed(ActionEvent ae)</p><p><b>  {</b></p><p>  int curLevel = getLevel();</p><p>

33、  if (curLevel > 1) </p><p>  setLevel(curLevel+1);</p><p><b>  }</b></p><p><b>  });</b></p><p>  miExit.addActionListener(new ActionListene

34、r() {</p><p>  public void actionPerformed(ActionEvent ae) </p><p><b>  {</b></p><p>  System.exit(0);</p><p><b>  }</b></p><p><

35、;b>  });</b></p><p>  miPlay.addActionListener(new ActionListener() {</p><p>  public void actionPerformed(ActionEvent ae)</p><p><b>  {</b></p><p>

36、;  playGame();</p><p><b>  }</b></p><p><b>  });</b></p><p>  miPause.addActionListener(new ActionListener() {</p><p>  public void actionPerfor

37、med(ActionEvent ae)</p><p><b>  {</b></p><p>  pauseGame();</p><p><b>  }</b></p><p><b>  });</b></p><p>  miResume.add

38、ActionListener(new ActionListener() {</p><p>  public void actionPerformed(ActionEvent ae)</p><p><b>  {</b></p><p>  resumeGame();</p><p><b>  }</

39、b></p><p><b>  });</b></p><p>  miStop.addActionListener(new ActionListener() {</p><p>  public void actionPerformed(ActionEvent ae)</p><p><b>  {&

40、lt;/b></p><p>  stopGame();</p><p><b>  }</b></p><p><b>  });</b></p><p>  miCtrlBlock.addActionListener(new ActionListener() {</p>&l

41、t;p>  public void actionPerformed(ActionEvent ae) </p><p><b>  { </b></p><p>  reportGameMethod();</p><p><b>  }</b></p><p><b>  });&l

42、t;/b></p><p><b>  }</b></p><p>  public void reset() </p><p><b>  {</b></p><p>  ctrlPanel.reset(); </p><p>  canvas.reset(); &l

43、t;/p><p><b>  }</b></p><p>  public boolean isPlaying() </p><p><b>  {</b></p><p>  return playing;</p><p><b>  }</b></

44、p><p>  public ErsBlock getCurBlock()</p><p><b>  {</b></p><p>  return block;</p><p><b>  }</b></p><p>  public GameCanvas getCanvas(

45、)</p><p><b>  {</b></p><p>  return canvas;</p><p><b>  }</b></p><p>  public void playGame()</p><p><b>  {</b></p&g

46、t;<p><b>  play();</b></p><p>  ctrlPanel.setPlayButtonEnable(false);</p><p>  miPlay.setEnabled(false);</p><p>  ctrlPanel.requestFocus();</p><p>&l

47、t;b>  }</b></p><p>  public void pauseGame() </p><p><b>  {</b></p><p>  if (block != null) </p><p>  block.pauseMove();</p><p>  ctrl

48、Panel.setPauseButtonLabel(false);</p><p>  miPause.setEnabled(false);</p><p>  miResume.setEnabled(true);</p><p><b>  }</b></p><p>  public void resumeGame(

49、) </p><p><b>  {</b></p><p>  if (block != null)</p><p>  block.resumeMove();</p><p>  ctrlPanel.setPauseButtonLabel(true);</p><p>  miPause.se

50、tEnabled(true);</p><p>  miResume.setEnabled(false);</p><p>  ctrlPanel.requestFocus();</p><p><b>  }</b></p><p>  public void stopGame()</p><p&g

51、t;<b>  {</b></p><p>  playing = false;</p><p>  if (block != null)</p><p>  block.stopMove();</p><p>  miPlay.setEnabled(true);</p><p>  miPaus

52、e.setEnabled(true);</p><p>  miResume.setEnabled(false);</p><p>  ctrlPanel.setPlayButtonEnable(true);</p><p>  ctrlPanel.setPauseButtonLabel(true);</p><p><b>  }

53、</b></p><p>  public int getLevel() </p><p><b>  {</b></p><p>  return ctrlPanel.getLevel();</p><p><b>  }</b></p><p>  publi

54、c void setLevel(int level)</p><p><b>  {</b></p><p>  if (level < 11 && level > 0) ctrlPanel.setLevel(level);</p><p><b>  }</b></p><

55、p>  public int getScore() </p><p><b>  {</b></p><p>  if (canvas != null)</p><p>  return canvas.getScore();</p><p><b>  return 0;</b></p&

56、gt;<p><b>  }</b></p><p>  public int getScoreForLevelUpdate()</p><p><b>  {</b></p><p>  if (canvas != null) </p><p>  return canvas.get

57、ScoreForLevelUpdate();</p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  public boolean levelUpdate()</p><p><b>  {</b></p>

58、<p>  int curLevel = getLevel();</p><p>  if (curLevel < maxlevel)</p><p><b>  {</b></p><p>  setLevel(curLevel + 1);</p><p>  canvas.resetScoreFo

59、rLevelUpdate();</p><p>  return true;</p><p><b>  }</b></p><p>  return false;</p><p><b>  }</b></p><p>  private void play() {<

60、/p><p><b>  reset();</b></p><p>  playing = true;</p><p>  Thread thread = new Thread(new Game());</p><p>  thread.start();</p><p><b>  }<

61、;/b></p><p>  private void reportGameMethod() {</p><p>  JOptionPane.showMessageDialog(this, "J為向左移動(dòng),L為向右移動(dòng),K為加速向下,I 為翻轉(zhuǎn)變化");</p><p><b>  }</b></p>&

62、lt;p>  private void reportGameOver() {</p><p>  JOptionPane.showMessageDialog(this, "游戲結(jié)束!");</p><p><b>  } </b></p><p>  private class Game implements Runn

63、able </p><p><b>  {</b></p><p>  public void run() </p><p><b>  {</b></p><p>  int col = (int) (Math.random() * (canvas.getCols() - 3)),</p&g

64、t;<p>  style = ErsBlock.STYLES[(int) (Math.random() * 7)][(int) </p><p>  (Math.random() * 4)];</p><p>  while (playing)</p><p><b>  {</b></p><p>  

65、if (block != null)</p><p><b>  { </b></p><p>  if (block.isAlive()) </p><p><b>  {</b></p><p><b>  try </b></p><p>&

66、lt;b>  {</b></p><p>  Thread.currentThread().sleep(100);</p><p>  } catch (InterruptedException ie) </p><p><b>  {</b></p><p>  ie.printStackTrace(

67、);</p><p><b>  }</b></p><p><b>  continue;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  checkFullLine()

68、; </p><p>  if (isGameOver())</p><p><b>  { </b></p><p>  miPlay.setEnabled(true);</p><p>  miPause.setEnabled(true);</p><p>  miRes

69、ume.setEnabled(false);</p><p>  ctrlPanel.setPlayButtonEnable(true);</p><p>  ctrlPanel.setPauseButtonLabel(true);</p><p>  reportGameOver();</p><p><b>  return;&

70、lt;/b></p><p><b>  }</b></p><p>  block = new ErsBlock(style, -1, col, getLevel(), canvas);</p><p>  block.start();</p><p>  col = (int) (Math.random() *

71、 (canvas.getCols() - 3));</p><p>  style = ErsBlock.STYLES[(int) (Math.random() * 7)][(int) </p><p>  (Math.random() * 4)];</p><p>  ctrlPanel.setShowBeforeStyle(style);</p>

72、<p><b>  }</b></p><p><b>  }</b></p><p>  public void checkFullLine() </p><p>  { int row ;</p><p>  for (int i = 0; i < canvas.getRow

73、s(); i++)</p><p><b>  {</b></p><p>  //int row = 1;</p><p>  boolean fullLineColorBox = true;</p><p>  for (int j = 0; j < canvas.getCols(); j++) </p&

74、gt;<p><b>  {</b></p><p>  if (!canvas.getBox(i, j).isColorBox())</p><p><b>  {</b></p><p>  fullLineColorBox = false;</p><p><b>  

75、break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if (fullLineColorBox)</p><p><b>  {</b></p><p><b> 

76、 row = i;</b></p><p>  canvas.removeLine(row);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  pri

77、vate boolean isGameOver()</p><p><b>  {</b></p><p>  for (int i = 0; i < canvas.getCols(); i++)</p><p><b>  {</b></p><p>  ErsBox box = canva

78、s.getBox(0, i);</p><p>  if (box.isColorBox()) </p><p>  return true;</p><p><b>  }</b></p><p>  return false;</p><p><b>  }</b><

79、;/p><p><b>  }</b></p><p>  public static void main(String[] args)</p><p><b>  {</b></p><p>  new ErsBlocksGame("俄羅斯方塊游戲");</p>&l

80、t;p><b>  }</b></p><p><b>  }</b></p><p>  class ControlPanel extends JPanel</p><p><b>  {</b></p><p>  private JTextField</p&g

81、t;<p>  tfLevel = new JTextField("" + ErsBlocksGame.initlevel),</p><p>  tfScore = new JTextField("0");</p><p>  private JButton</p><p>  btPlay = new JBu

82、tton("開(kāi)始"),</p><p>  btPause = new JButton("暫停"),</p><p>  btStop = new JButton("停止"),</p><p>  btTurnLevelUp = new JButton("提高等級(jí)"),</p>

83、;<p>  btTurnLevelDown = new JButton("降低等級(jí)");</p><p>  private JPanel showbefore = new JPanel(new BorderLayout());</p><p>  private ShowBeforePanel plShowBeforeBlock = new Show

84、BeforePanel();</p><p>  private JPanel plInfo = new JPanel(new GridLayout(4, 1));</p><p>  private JPanel plButton = new JPanel(new GridLayout(5, 1));</p><p>  private Timer timer;&

85、lt;/p><p>  private ErsBlocksGame game;</p><p>  public ControlPanel(final ErsBlocksGame game) {</p><p>  setLayout(new GridLayout(3, 1, 0, 4));</p><p>  this.game = game;

86、</p><p>  showbefore.add(new JLabel("下一個(gè)方塊"), BorderLayout.NORTH);</p><p>  showbefore.add(plShowBeforeBlock);</p><p>  plInfo.add(new JLabel("等級(jí)"));</p>

87、<p>  plInfo.add(tfLevel);</p><p>  plInfo.add(new JLabel("得分"));</p><p>  plInfo.add(tfScore); </p><p>  tfLevel.setEditable(false);</p><p>  tfScore.se

88、tEditable(false);</p><p>  plButton.add(btPlay);</p><p>  plButton.add(btPause);</p><p>  plButton.add(btStop);</p><p>  plButton.add(btTurnLevelUp);</p><p&g

89、t;  plButton.add(btTurnLevelDown);</p><p>  add( showbefore);</p><p>  add(plInfo);</p><p>  add(plButton);</p><p>  addKeyListener(new ControlKeyListener());</p>

90、<p>  btPlay.addActionListener(new ActionListener() {</p><p>  public void actionPerformed(ActionEvent ae) {</p><p>  game.playGame();</p><p><b>  }</b></p>

91、<p><b>  });</b></p><p>  btPause.addActionListener(new ActionListener() {</p><p>  public void actionPerformed(ActionEvent ae) {</p><p>  if (btPause.getText().e

92、quals(new String("暫停"))) {</p><p>  game.pauseGame();</p><p><b>  }</b></p><p><b>  else </b></p><p><b>  {</b></p>

93、<p>  game.resumeGame();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  });</b></p><p>  btStop.addActionListener(new ActionL

94、istener() {</p><p>  public void actionPerformed(ActionEvent ae) </p><p><b>  {</b></p><p>  game.stopGame();</p><p><b>  }</b></p><p

95、><b>  });</b></p><p>  btTurnLevelUp.addActionListener(new ActionListener() {</p><p>  public void actionPerformed(ActionEvent ae) {</p><p><b>  try {</b>

96、</p><p>  int level = Integer.parseInt(tfLevel.getText());</p><p>  if (level < ErsBlocksGame.maxlevel)</p><p>  tfLevel.setText("" + (level + 1));</p><p>

97、  } catch (NumberFormatException e) {}</p><p>  requestFocus();</p><p><b>  }</b></p><p><b>  });</b></p><p>  btTurnLevelDown.addActionListener

98、(new ActionListener() {</p><p>  public void actionPerformed(ActionEvent ae) </p><p><b>  {</b></p><p><b>  try {</b></p><p>  int level = Integ

99、er.parseInt(tfLevel.getText());</p><p>  if (level > 1)</p><p>  tfLevel.setText("" + (level - 1));</p><p>  } catch (NumberFormatException e) {}</p><p>  

100、requestFocus();</p><p><b>  }</b></p><p><b>  });</b></p><p>  addComponentListener(new ComponentAdapter() {</p><p>  public void componentResiz

101、ed(ComponentEvent ce)</p><p><b>  {</b></p><p>  plShowBeforeBlock.fanning();</p><p><b>  }</b></p><p><b>  });</b></p><p

102、>  timer = new Timer(500, new ActionListener() {</p><p>  public void actionPerformed(ActionEvent ae) </p><p><b>  {</b></p><p>  tfScore.setText("" + game.

103、getScore());</p><p>  int scoreForLevelUpdate =</p><p>  game.getScoreForLevelUpdate();</p><p>  if (scoreForLevelUpdate >= ErsBlocksGame.everylevelscore</p><p>  &a

104、mp;& scoreForLevelUpdate > 0)</p><p>  game.levelUpdate();</p><p><b>  }</b></p><p><b>  });</b></p><p>  timer.start();</p><p

105、><b>  }</b></p><p>  public void setShowBeforeStyle(int style)</p><p><b>  {</b></p><p>  plShowBeforeBlock.setStyle(style);</p><p><b>

106、  }</b></p><p>  public int getLevel() </p><p><b>  {</b></p><p>  int level = 0;</p><p><b>  try {</b></p><p>  level = Inte

107、ger.parseInt(tfLevel.getText());</p><p>  } catch (NumberFormatException e) {}</p><p>  return level;</p><p><b>  }</b></p><p>  public void setLevel(int le

108、vel) </p><p><b>  {</b></p><p>  if (level > 0 && level < 11)</p><p>  tfLevel.setText("" + level);</p><p><b>  }</b><

109、;/p><p>  public void setPlayButtonEnable(boolean enable)</p><p><b>  {</b></p><p>  btPlay.setEnabled(enable);</p><p><b>  }</b></p><p&

110、gt;  public void setPauseButtonLabel(boolean pause) </p><p><b>  {</b></p><p>  btPause.setText(pause ? "暫停" : "繼續(xù)");</p><p><b>  }</b>&l

111、t;/p><p>  public void reset() </p><p><b>  {</b></p><p>  tfScore.setText("0");</p><p>  plShowBeforeBlock.setStyle(0);</p><p><b>

112、;  }</b></p><p>  public void fanning()</p><p><b>  {</b></p><p>  plShowBeforeBlock.fanning();</p><p><b>  }</b></p><p>  pr

113、ivate class ShowBeforePanel extends JPanel</p><p><b>  {</b></p><p>  private Color backColor = Color.darkGray, frontColor = Color.red;</p><p>  private ErsBox[][] boxes

114、 =new ErsBox[ErsBlock.boxes_rows][ErsBlock.boxes_cols];</p><p>  private int style, boxWidth, boxHeight;</p><p>  private boolean isTiled = false;</p><p>  public ShowBeforePanel()

115、 </p><p><b>  {</b></p><p>  for (int i = 0; i < boxes.length; i++)</p><p><b>  {</b></p><p>  for (int j = 0; j < boxes[i].length; j++)&l

116、t;/p><p>  boxes[i][j] = new ErsBox(false);</p><p><b>  }</b></p><p><b>  }</b></p><p>  public ShowBeforePanel(Color backColor, Color frontColor)

117、</p><p><b>  {</b></p><p><b>  this();</b></p><p>  this.backColor = backColor;</p><p>  this.frontColor = frontColor;</p><p><b

118、>  }</b></p><p>  public void setStyle(int style) </p><p><b>  {</b></p><p>  this.style = style;</p><p>  repaint();</p><p><b>

119、  }</b></p><p>  public void paintComponent(Graphics g)</p><p><b>  {</b></p><p>  super.paintComponent(g);</p><p>  if (!isTiled) </p><p&g

120、t;  fanning();</p><p>  int key = 0x8000;</p><p>  for (int i = 0; i < boxes.length; i++)</p><p><b>  {</b></p><p>  for (int j = 0; j < boxes[i].leng

121、th; j++)</p><p><b>  {</b></p><p>  Color color = (((key & style) != 0) ? frontColor : backColor);</p><p>  g.setColor(color);</p><p>  g.fill3DRect(j *

122、 boxWidth, i * boxHeight,</p><p>  boxWidth, boxHeight, true);</p><p>  key >>= 1;</p><p><b>  }</b></p><p><b>  }</b></p><p>

123、;<b>  }</b></p><p>  public void fanning() </p><p><b>  {</b></p><p>  boxWidth = getSize().width / ErsBlock.boxes_cols;</p><p>  boxHeight = ge

124、tSize().height / ErsBlock.boxes_rows;</p><p>  isTiled = true;</p><p><b>  }</b></p><p><b>  }</b></p><p>  private class ControlKeyListener ext

125、ends KeyAdapter</p><p><b>  {</b></p><p>  public void keyPressed(KeyEvent ke)</p><p><b>  {</b></p><p>  if (!game.isPlaying()) </p><

126、;p><b>  return;</b></p><p>  ErsBlock block = game.getCurBlock();</p><p>  switch (ke.getKeyCode())</p><p><b>  {</b></p><p>  case KeyEvent.

127、VK_DOWN:</p><p>  block.moveDown();</p><p><b>  break;</b></p><p>  case KeyEvent.VK_LEFT:</p><p>  block.moveLeft();</p><p><b>  break;&

128、lt;/b></p><p>  case KeyEvent.VK_RIGHT:</p><p>  block.moveRight();</p><p><b>  break;</b></p><p>  case KeyEvent.VK_UP:</p><p>  block.turn

129、Next();</p><p><b>  break;</b></p><p><b>  default:</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><

130、;b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  class GameCanvas extends JPanel </p><p><b>  {</b></p><p

131、>  private Color backColor = Color.gray, frontColor = Color.green;</p><p>  private int rows, cols, score = 0, scoreForLevelUpdate = 0;</p><p>  private ErsBox[][] boxes;</p><p>

132、  private int boxWidth, boxHeight;</p><p>  public GameCanvas(int rows, int cols)</p><p><b>  {</b></p><p>  this.rows = rows;</p><p>  this.cols = cols;<

133、;/p><p>  boxes = new ErsBox[rows][cols];</p><p>  for (int i = 0; i < boxes.length; i++) </p><p><b>  {</b></p><p>  for (int j = 0; j < boxes[i].length

134、; j++)</p><p><b>  {</b></p><p>  boxes[i][j] = new ErsBox(false);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>

135、  }</b></p><p>  public GameCanvas(int rows, int cols,</p><p>  Color backColor, Color frontColor) </p><p><b>  {</b></p><p>  this(rows, cols);</p

136、><p>  this.backColor = backColor;</p><p>  this.frontColor = frontColor;</p><p><b>  }</b></p><p>  public void setBackgroundColor(Color backColor)</p>

137、<p><b>  {</b></p><p>  this.backColor = backColor;</p><p><b>  }</b></p><p>  public Color getBackgroundColor()</p><p><b>  {</b

138、></p><p>  return backColor;</p><p><b>  }</b></p><p>  public void setBlockColor(Color frontColor)</p><p><b>  {</b></p><p>  t

139、his.frontColor = frontColor;</p><p><b>  }</b></p><p>  public Color getBlockColor()</p><p><b>  {</b></p><p>  return frontColor;</p>&l

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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)論