2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  《JAVA程序設(shè)計》</p><p><b>  課程設(shè)計報告</b></p><p>  院 系: 計算機與信息工程學(xué)院 </p><p>  題 目: 吞食蛇 </p><p>  學(xué)生姓名: 張聚營 盧毛毛</p><p>  

2、學(xué)生學(xué)號: 20144499 20144645</p><p>  專業(yè)班級: 軟一 軟二 </p><p>  指導(dǎo)教師: 吳光偉 </p><p>  完成時間: 2016年6月23號  </p><p><b>  目錄</b></p><p

3、><b>  1 需求分析3</b></p><p>  1.1基本功能如下:3</p><p>  1.2擴展功能:3</p><p><b>  2 設(shè)計3</b></p><p>  2.1 設(shè)計思路3</p><p>  2.3系統(tǒng)功能模塊4<

4、/p><p>  2.4程序流程圖4</p><p><b>  圖2.26</b></p><p>  2.5總設(shè)計模塊的劃分6</p><p>  3功能的具體實現(xiàn)7</p><p><b>  3.1重新開始7</b></p><p>&l

5、t;b>  3.2暫停7</b></p><p><b>  3.3保存分數(shù)8</b></p><p><b>  3.4加速減速9</b></p><p><b>  4運行結(jié)果9</b></p><p>  4.1游戲開始界面9</p>

6、;<p>  4.2蛇撞到自身結(jié)束游戲9</p><p>  4.3蛇撞到墻面結(jié)束游戲10</p><p>  4.4游戲暫停10</p><p>  4.5游戲在暫?;蛘哌\行時重新開始11</p><p>  4.6游戲分數(shù)的保存11</p><p><b>  總 結(jié)13<

7、/b></p><p>  參 考 文 獻14</p><p><b>  附錄A源代碼15</b></p><p><b>  評分表:23</b></p><p><b>  1 需求分析</b></p><p>  1.1基本功能如下:

8、</p><p>  1. 能夠使用鍵盤控制吞食蛇的行動。 </p><p>  2. 能夠隨機生成食物,供吞食蛇吞噬。</p><p>  3. 提供游戲的暫停和保存的功能。</p><p><b>  1.2擴展功能:</b></p><p>  4. 提供難度的選擇,如速度、地形。</

9、p><p>  5. 提供服務(wù)器,讓玩家可以比較戰(zhàn)績。</p><p>  其他功能可以按照自己的興趣進行創(chuàng)新添加。</p><p><b>  2 設(shè)計</b></p><p><b>  2.1 設(shè)計思路</b></p><p>  貪吃蛇游戲設(shè)計與實現(xiàn),主要分為以下二個模塊

10、:游戲主界面模塊和游戲控制模塊。在此只實現(xiàn)游戲的游戲主界面模塊、游戲控制模塊。并且只是實現(xiàn)移動速度、暫停、重新開始等功能。</p><p><b>  游戲主界面模塊:</b></p><p>  游戲的主界面是進入游戲后,能夠給玩家第一感官的部分,主要包括游戲圖形區(qū)域界面、游戲的速度選擇更新界面、新生方塊的預(yù)覽、暫停游戲按鈕、重新開始游戲按鈕。從很大程度上決定了玩家

11、對游戲的興趣問題,因此,游戲的主界面應(yīng)該力求美觀,爽心悅目。</p><p><b>  游戲控制模塊:</b></p><p>  這個模塊是游戲的中心環(huán)節(jié),主要完成控制游戲的開始、暫停、重新開始等功能。為了能夠給玩家一個很好的游戲環(huán)境,這部分應(yīng)該做到易懂、易操作。</p><p>  本設(shè)計所開發(fā)的是基于Java的一個貪吃蛇游戲軟件,主要實

12、現(xiàn)游戲的速度控制、游戲的暫停、游戲的退出等功能,分為: 游戲主界面模塊,游戲主界面模塊等兩個模塊。</p><p><b>  圖2.1</b></p><p><b>  2.2設(shè)計目標</b></p><p>  本軟件是針對貪食蛇小游戲的JAVA程序,利用方向鍵來改變蛇的方向;按PageUp加速,PageDown減速

13、;按空格鍵或P鍵暫停或繼續(xù)游戲;按R鍵重新開始。并在隨機的地方產(chǎn)生食物,吃到食物就變成新的蛇體,碰到壁或自身則游戲結(jié)束,否則正常運行</p><p><b>  2.3系統(tǒng)功能模塊</b></p><p>  Java源文件及其功能如表所示:</p><p><b>  2.4程序流程圖</b></p>&l

14、t;p>  本次游戲設(shè)計的處理流程如圖。</p><p><b>  圖2.2</b></p><p>  2.5總設(shè)計模塊的劃分</p><p>  根據(jù)游戲需求中游戲所要實現(xiàn)的功能,整個游戲分為二個模塊進行具體的設(shè)計,如圖2所示。</p><p>  游戲控制模塊的主要框架如圖3所示。</p>&

15、lt;p>  游戲暫??刂疲狐c擊“空格”按鈕或P,游戲暫停;再單擊,游戲繼續(xù)。</p><p>  游戲重新開始控制:點擊“R”鍵后,點擊確定,即游戲重新開始。</p><p>  游戲保存控制:點擊“S”鍵好,點擊確定,退出游戲界面。</p><p>  游戲加速減速控制:點擊“SpeedUp”加速,點擊“SpeedDown”減速。</p>&

16、lt;p><b>  3功能的具體實現(xiàn)</b></p><p><b>  3.1重新開始</b></p><p>  按R鍵使進行中的游戲或者暫停中的游戲重新開始,調(diào)用reset方法,相關(guān)代碼如下:</p><p>  case KeyEvent.VK_R://----按R鍵重新啟動游戲</p>&

17、lt;p>  model.reset();</p><p><b>  break;</b></p><p>  public void reset(){</p><p>  direction = SnakeModel.UP; // 蛇運行的方向</p><p>  timeInterval = 200;

18、 // 時間間隔,毫秒</p><p>  paused = false; // 暫停標志</p><p>  score = 0; // 得分</p><p>  countMove = 0; // 吃到食物前移動的次數(shù)</p><p><b>  3.2暫停</b>&

19、lt;/p><p>  定義一個布爾類型,pause,初始化為false,再在無限循環(huán)運動running類運用if語句,具體代碼如下:</p><p>  boolean paused = false; </p><p>  boolean paused = false; </p><p>  if (!paused) {</p>

20、<p>  if (moveOn()) {</p><p>  setChanged(); // Model通知View數(shù)據(jù)已經(jīng)更新</p><p>  notifyObservers();</p><p><b>  } else {</b></p><p>  JOptionPane.showMessage

21、Dialog(null,</p><p>  "you failed",</p><p>  "Game Over",</p><p>  JOptionPane.INFORMATION_MESSAGE);</p><p><b>  break;</b></p>&

22、lt;p><b>  }</b></p><p><b>  }</b></p><p><b>  3.3保存分數(shù)</b></p><p>  按S鍵保存,在keyPressed類中,調(diào)用keyEvent類,如果是S,則執(zhí)行如下代碼,將分數(shù)保存在score.java中。</p>

23、<p>  case KeyEvent.VK_S: //-----------------------按S鍵保存 FileWriter fileWritter =null;</p><p>  try { </p><p>  fileWritter = new

24、 FileWriter("score",true);//將分數(shù)保存到score文件</p><p>  fileWritter.write(model.score+"\n"); </p><p>  }catch (FileNotFoundException e1) {&l

25、t;/p><p>  e1.printStackTrace(); </p><p>  }catch (IOException e1) {</p><p>  e1.printStackTrace();</p><p>  } finally {</p><p>  try {</p&g

26、t;<p>  if (fileWritter != null)</p><p>  fileWritter.close();</p><p>  } catch (IOException e1) {</p><p>  e1.printStackTrace();</p><p>  }

27、</p><p><b>  } </b></p><p><b>  break;</b></p><p><b>  3.4加速減速</b></p><p>  同樣的,調(diào)用speedUp,speedDown方法:</p><p>  case K

28、eyEvent.VK_PAGE_UP://--------------------按PageUp加速</p><p>  model.speedUp();</p><p><b>  break;</b></p><p>  case KeyEvent.VK_PAGE_DOWN://--------------------按PageDown減速

29、</p><p>  model.speedDown();</p><p><b>  4運行結(jié)果</b></p><p><b>  4.1游戲開始界面</b></p><p><b>  圖4.1</b></p><p>  4.2蛇撞到自身結(jié)束游戲

30、</p><p><b>  圖4.2</b></p><p>  4.3蛇撞到墻面結(jié)束游戲</p><p><b>  圖4.3</b></p><p><b>  4.4游戲暫停</b></p><p><b>  圖4.4</b&g

31、t;</p><p>  4.5游戲在暫?;蛘哌\行時重新開始</p><p><b>  圖4.5</b></p><p>  4.6游戲分數(shù)的保存</p><p><b>  圖4.6</b></p><p><b>  總 結(jié)</b></p&g

32、t;<p>  課程設(shè)計是對學(xué)習(xí)成果的考核和總結(jié),這兩個禮拜通過小組努力和吳光偉老師的耐心指導(dǎo),本著嚴謹誠實,開拓創(chuàng)新的精神,完成了這次設(shè)計。</p><p>  這次設(shè)計是我們第一次從理論構(gòu)思到實際工程論證的設(shè)計,它使我們深刻理解了在所學(xué)到的知識,讓我們把所學(xué)的知識從頭梳理和使用了一遍,鞏固了我們的知識,也接觸到了一些未曾接觸過的東西,受益匪淺。</p><p><b

33、>  參 考 文 獻</b></p><p>  1 葉核亞,陳道蓄. JAVA程序設(shè)計實用教程.(第四版).北京:電子工業(yè)出版社,2013.11</p><p>  2 湯陽光. 智播客貪食蛇游戲項目開發(fā)</p><p>  3 耿祥義.JAVA 大學(xué)實用教程.北京:清華大學(xué)出版社,2009</p><p><b&g

34、t;  附錄A源代碼</b></p><p>  //GreedSnake.java</p><p>  package mvcTest;</p><p>  public class GreedSnake {</p><p>  public static void main(String[] args) {</p>

35、<p>  SnakeModel model = new SnakeModel(20,30);</p><p>  SnakeControl control = new SnakeControl(model);</p><p>  SnakeView view = new SnakeView(model,control);</p><p>  //添加

36、一個觀察者,讓view成為model的觀察者</p><p>  model.addObserver(view);</p><p>  (new Thread(model)).start();</p><p><b>  }</b></p><p><b>  }</b></p>&l

37、t;p>  //SnakeControl.java</p><p>  package mvcTest;</p><p>  import java.awt.event.KeyEvent;</p><p>  import java.awt.event.KeyListener;</p><p>  import java.io.File

38、NotFoundException;</p><p>  import java.io.FileWriter;</p><p>  import java.io.IOException;</p><p>  public class SnakeControl implements KeyListener{</p><p>  SnakeMod

39、el model;</p><p>  public SnakeControl(SnakeModel model){</p><p>  this.model = model;</p><p><b>  }</b></p><p>  public void keyPressed(KeyEvent e) {</p

40、><p>  int keyCode = e.getKeyCode();</p><p>  switch (keyCode) {</p><p>  //------------------------------按上下左右鍵控制蛇的方向</p><p>  case KeyEvent.VK_UP: </p><p

41、>  model.changeDirection(SnakeModel.UP);</p><p><b>  break;</b></p><p>  case KeyEvent.VK_DOWN:</p><p>  model.changeDirection(SnakeModel.DOWN);</p><p>&

42、lt;b>  break;</b></p><p>  case KeyEvent.VK_LEFT:</p><p>  model.changeDirection(SnakeModel.LEFT);</p><p><b>  break;</b></p><p>  case KeyEvent.VK

43、_RIGHT:</p><p>  model.changeDirection(SnakeModel.RIGHT);</p><p><b>  break;</b></p><p>  case KeyEvent.VK_PAGE_UP://--------------------按pageup加速</p><p>  

44、model.speedUp();</p><p><b>  break;</b></p><p>  case KeyEvent.VK_PAGE_DOWN://--------------------按pagedown減速</p><p>  model.speedDown();</p><p><b>  

45、break;</b></p><p>  case KeyEvent.VK_SPACE://--------------------按空格鍵或P鍵暫停游戲</p><p>  case KeyEvent.VK_P:</p><p>  model.changePauseState();</p><p><b>  bre

46、ak;</b></p><p>  case KeyEvent.VK_R://-----------------------按R鍵重新啟動游戲</p><p>  model.reset();</p><p>  break; </p><p>  case KeyEvent.VK_S: //-------------

47、----------按S鍵保存分數(shù)</p><p>  FileWriter fileWritter =null;</p><p>  try { </p><p>  fileWritter = new FileWriter("score",true);/

48、/將分數(shù)保存到score文件</p><p>  fileWritter.write(model.score+"\n"); </p><p>  }catch (FileNotFoundException e1) {</p><p>  e1.printStackTrace();

49、 </p><p>  }catch (IOException e1) {</p><p>  e1.printStackTrace();</p><p>  } finally {</p><p>  try {</p><p>  if (fileWritter != null)</p&

50、gt;<p>  fileWritter.close();</p><p>  } catch (IOException e1) {</p><p>  e1.printStackTrace();</p><p>  } </p><p><b>  } </b>&

51、lt;/p><p><b>  break;</b></p><p><b>  default:</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  public void ke

52、yReleased(KeyEvent e) {</p><p><b>  }</b></p><p>  public void keyTyped(KeyEvent e) {</p><p><b>  }</b></p><p><b>  }</b></p>

53、;<p>  //SnakeModel.java</p><p>  package mvcTest;</p><p>  import javax.swing.*;</p><p>  import java.util.Arrays;</p><p>  import java.util.LinkedList;</p&g

54、t;<p>  import java.util.Observable;</p><p>  import java.util.Random;</p><p>  public class SnakeModel extends Observable implements Runnable {</p><p>  boolean[][] matrix;

55、 // 指示位置上有沒蛇體或食物</p><p>  LinkedList<Node> nodeArray = new LinkedList<Node>(); // 蛇體</p><p>  Node food;</p><p><b>  int maxX;</b>&

56、lt;/p><p><b>  int maxY;</b></p><p>  int direction = 2; // 蛇運行的方向</p><p>  boolean running = false; // 運行狀態(tài)</p><p>

57、;  int timeInterval = 200; // 時間間隔,毫秒</p><p>  double speedChangeRate = 0.75; // 每次得速度變化率</p><p>  boolean paused = false; // 暫停標志</p>

58、<p>  int score = 0; // 得分</p><p>  int countMove = 0; // 吃到食物前移動的次數(shù)</p><p>  public static final int UP = 2;</p><p>  pu

59、blic static final int DOWN = 4;</p><p>  public static final int LEFT = 1;</p><p>  public static final int RIGHT = 3;</p><p>  public SnakeModel( int maxX, int maxY) {</p>&

60、lt;p>  this.maxX = maxX;</p><p>  this.maxY = maxY;</p><p><b>  reset();</b></p><p><b>  }</b></p><p>  public void reset(){</p><p

61、>  direction = SnakeModel.UP; // 蛇運行的方向</p><p>  timeInterval = 200; // 時間間隔,毫秒</p><p>  paused = false; // 暫停標志</p><p> 

62、 score = 0; // 得分</p><p>  countMove = 0; // 吃到食物前移動的次數(shù)</p><p>  // 初始化matirx</p><p>  matrix = new boolean[maxX][];</p>

63、<p>  for (int i = 0; i < maxX; ++i) {</p><p>  matrix[i] = new boolean[maxY];</p><p>  Arrays.fill(matrix[i], false);</p><p><b>  }</b></p><p>  /

64、/ 初始化蛇體,如果橫向位置超過20個,長度為10,否則為橫向位置的一半</p><p>  int initArrayLength = maxX > 20 ? 10 : maxX / 2;</p><p>  nodeArray.clear();</p><p>  for (int i = 0; i < initArrayLength; ++i) {

65、</p><p>  int x = maxX / 2 + i;//maxX被初始化為20</p><p>  int y = maxY / 2; //maxY被初始化為30</p><p>  //nodeArray[x,y]: [10,15]-[11,15]-[12,15]~~[20,15]</p><p>  //默認的運行方向向

66、上,所以游戲一開始nodeArray就變?yōu)椋?lt;/p><p>  // [10,14]-[10,15]-[11,15]-[12,15]~~[19,15]</p><p>  nodeArray.addLast(new Node(x, y));</p><p>  matrix[x][y] = true;</p><p><b

67、>  }</b></p><p><b>  // 創(chuàng)建食物</b></p><p>  food = createFood();</p><p>  matrix[food.x][food.y] = true;</p><p><b>  }</b></p><

68、;p>  public void changeDirection(int newDirection) {</p><p>  // 改變的方向不能與原來方向同向或反向</p><p>  if (direction % 2 != newDirection % 2) {</p><p>  direction = newDirection;</p>

69、<p><b>  }</b></p><p><b>  }</b></p><p>  public boolean moveOn() {</p><p>  Node n = (Node) nodeArray.getFirst();</p><p>  int x = n.x;&l

70、t;/p><p>  int y = n.y;</p><p>  // 根據(jù)方向增減坐標值</p><p>  switch (direction) {</p><p><b>  case UP:</b></p><p><b>  y--;</b></p>&

71、lt;p><b>  break;</b></p><p>  case DOWN:</p><p><b>  y++;</b></p><p><b>  break;</b></p><p>  case LEFT:</p><p><

72、b>  x--;</b></p><p><b>  break;</b></p><p>  case RIGHT:</p><p><b>  x++;</b></p><p><b>  break;</b></p><p>&l

73、t;b>  }</b></p><p>  // 如果新坐標落在有效范圍內(nèi),則進行處理</p><p>  if ((0 <= x && x < maxX) && (0 <= y && y < maxY)) { </p><p>  if (matrix[x][y])

74、{ // 如果新坐標的點上有東西(蛇體或者食物)</p><p>  if (x == food.x && y == food.y) { // 吃到食物,成功</p><p>  nodeArray.addFirst(food); // 從蛇頭贈長</p><p>  // 分數(shù)規(guī)則,與移動改變方向的次數(shù)

75、和速度兩個元素有關(guān)</p><p>  int scoreGet = (10000 - 200 * countMove) / timeInterval;</p><p>  score += scoreGet > 0 ? scoreGet : 10;</p><p>  countMove = 0;</p><p>  food = c

76、reateFood(); // 創(chuàng)建新的食物</p><p>  matrix[food.x][food.y] = true; // 設(shè)置食物所在位置</p><p>  return true;</p><p>  } else // 吃到蛇體自身,失敗<

77、;/p><p>  return false;</p><p>  } else { // 如果新坐標的點上沒有東西(蛇體),移動蛇體</p><p>  nodeArray.addFirst(new Node(x, y));</p><p>  matrix[x][y] = true;</p>&l

78、t;p>  n = (Node) nodeArray.removeLast();</p><p>  matrix[n.x][n.y] = false;</p><p>  countMove++;</p><p>  return true;</p><p><b>  }</b></p><

79、p><b>  }</b></p><p>  return false; // 觸到邊線,失敗</p><p><b>  }</b></p><p>  public void run() {</p><p>  runn

80、ing = true;</p><p>  while (running) {</p><p><b>  try {</b></p><p>  Thread.sleep(timeInterval);</p><p>  } catch (Exception e) {</p><p><b

81、>  break;</b></p><p><b>  }</b></p><p>  if (!paused) {</p><p>  if (moveOn()) {</p><p>  setChanged(); // Model通知View數(shù)據(jù)已經(jīng)更新</p>&

82、lt;p>  notifyObservers();</p><p><b>  } else {</b></p><p>  JOptionPane.showMessageDialog(null,</p><p>  "you failed",</p><p>  "Game Over

83、",</p><p>  JOptionPane.INFORMATION_MESSAGE);</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>&l

84、t;b>  }</b></p><p>  running = false;</p><p><b>  }</b></p><p>  private Node createFood() {</p><p>  int x = 0;</p><p>  int y = 0;&l

85、t;/p><p>  // 隨機獲取一個有效區(qū)域內(nèi)的與蛇體和食物不重疊的位置</p><p><b>  do {</b></p><p>  Random r = new Random();</p><p>  x = r.nextInt(maxX);</p><p>  y = r.nextInt

86、(maxY);</p><p>  } while (matrix[x][y]);</p><p>  return new Node(x, y);</p><p><b>  }</b></p><p>  public void speedUp() {</p><p>  timeInterv

87、al *= speedChangeRate;</p><p><b>  }</b></p><p>  public void speedDown() {</p><p>  timeInterval /= speedChangeRate;</p><p><b>  }</b></p>

88、;<p>  public void changePauseState() {</p><p>  paused = !paused;</p><p><b>  }</b></p><p>  public String toString() {</p><p>  String result = &qu

89、ot;";</p><p>  for (int i = 0; i < nodeArray.size(); ++i) {</p><p>  Node n = (Node) nodeArray.get(i);</p><p>  result += "[" + n.x + "," + n.y + "]

90、";</p><p><b>  }</b></p><p>  return result;</p><p><b>  }</b></p><p><b>  }</b></p><p>  class Node {</p>

91、<p><b>  int x;</b></p><p><b>  int y;</b></p><p>  Node(int x, int y) {</p><p>  this.x = x;</p><p>  this.y = y;</p><p><

92、b>  }</b></p><p><b>  }</b></p><p>  //SnakeView.java</p><p>  package mvcTest;</p><p>  import javax.swing.*;</p><p>  import java.a

93、wt.*;</p><p>  import java.util.Iterator;</p><p>  import java.util.LinkedList;</p><p>  import java.util.Observable;</p><p>  import java.util.Observer;</p><

94、;p>  public class SnakeView implements Observer{</p><p>  SnakeControl control = null;</p><p>  SnakeModel model = null;</p><p>  JFrame mainFrame;</p><p>  Canvas p

95、aintCanvas;</p><p>  JLabel labelScore;</p><p>  public static final int canvasWidth = 200;</p><p>  public static final int canvasHeight = 300;</p><p>  public static

96、final int nodeWidth = 10;</p><p>  public static final int nodeHeight = 10;</p><p>  public SnakeView(SnakeModel model, SnakeControl control) {</p><p>  this.model = model;</p>

97、;<p>  this.control = control;</p><p>  mainFrame = new JFrame("GreedSnake");</p><p>  Container cp = mainFrame.getContentPane();</p><p>  // 創(chuàng)建頂部的分數(shù)顯示</p>&

98、lt;p>  labelScore = new JLabel("Score:");</p><p>  cp.add(labelScore, BorderLayout.NORTH);</p><p>  // 創(chuàng)建中間的游戲顯示區(qū)域</p><p>  paintCanvas = new Canvas();</p><p

99、>  paintCanvas.setSize(canvasWidth + 1, canvasHeight + 1);</p><p>  paintCanvas.addKeyListener(control);</p><p>  cp.add(paintCanvas, BorderLayout.CENTER);</p><p>  // 創(chuàng)建底下的幫助欄&l

100、t;/p><p>  JPanel panelButtom = new JPanel();</p><p>  panelButtom.setLayout(new BorderLayout());</p><p>  JLabel labelHelp;</p><p>  labelHelp = new JLabel("按PageUp加

101、速, 按PageDown減速;", JLabel.CENTER);</p><p>  panelButtom.add(labelHelp, BorderLayout.NORTH);</p><p>  labelHelp = new JLabel("按R重新開始;", JLabel.CENTER);</p><p>  panelBu

102、ttom.add(labelHelp, BorderLayout.CENTER);</p><p>  labelHelp = new JLabel("按SPACE鍵 或P鍵暫停游戲", JLabel.CENTER);</p><p>  panelButtom.add(labelHelp, BorderLayout.SOUTH);</p><p&g

103、t;  cp.add(panelButtom, BorderLayout.SOUTH);</p><p>  mainFrame.addKeyListener(control);</p><p>  mainFrame.pack();</p><p>  mainFrame.setResizable(false); mainFrame.setDefaultClo

104、seOperation(JFrame.EXIT_ON_CLOSE);</p><p>  mainFrame.setVisible(true);</p><p><b>  }</b></p><p>  void repaint() {</p><p>  Graphics g = paintCanvas.getGra

105、phics();</p><p>  //draw background</p><p>  g.setColor(Color.WHITE);</p><p>  g.fillRect(0, 0, canvasWidth, canvasHeight);</p><p>  // draw the snake</p><p&

106、gt;  g.setColor(Color.BLACK);</p><p>  LinkedList<Node> na = model.nodeArray;</p><p>  Iterator<Node> it = na.iterator();</p><p>  while (it.hasNext()) {</p><

107、p>  Node n = (Node) it.next();</p><p>  drawNode(g, n);</p><p><b>  }</b></p><p>  // draw the food</p><p>  g.setColor(Color.RED);</p><p> 

108、 Node n = model.food;</p><p>  drawNode(g, n);</p><p>  updateScore();</p><p><b>  }</b></p><p>  private void drawNode(Graphics g, Node n) {</p><

109、;p>  g.fillRect(n.x * nodeWidth,</p><p>  n.y * nodeHeight,</p><p>  nodeWidth - 1,</p><p>  nodeHeight - 1);</p><p><b>  }</b></p><p>  pub

110、lic void updateScore() {</p><p>  String s = "Score: " + model.score;</p><p>  labelScore.setText(s);</p><p><b>  }</b></p><p>  public void updat

溫馨提示

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

評論

0/150

提交評論