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

下載本文檔

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

文檔簡介

1、<p>  《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告</p><p>  坦克大戰(zhàn)游戲設(shè)計(jì)(java版)</p><p>  組長: </p><p>  組員: </p><p>  指導(dǎo)老師: &l

2、t;/p><p>  所在學(xué)院: 電子與信息工程學(xué)院 </p><p>  班級: 軟件工程1001班 </p><p><b>  目錄</b></p><p><b>  目錄1</b></p><p><b> 

3、 1.需求分析2</b></p><p>  1.1選題的意義及背景2</p><p>  1.2本組課程設(shè)計(jì)的目標(biāo)2</p><p><b>  1.3人員組成3</b></p><p><b>  2.設(shè)計(jì)方案3</b></p><p><b&

4、gt;  2.1原始數(shù)據(jù)3</b></p><p><b>  2.2輸出數(shù)據(jù)3</b></p><p>  2.3對數(shù)據(jù)的處理3</p><p>  2.4 程序流程圖4</p><p>  2.5封裝的數(shù)據(jù)元素5</p><p>  2.6游戲的主要組成5</p

5、><p><b>  3.詳細(xì)設(shè)計(jì)5</b></p><p>  3.1構(gòu)建游戲主類5</p><p>  3.2構(gòu)建坦克類Tank6</p><p>  3.3添加炮彈Missile類9</p><p>  3.4實(shí)現(xiàn)坦克的互相攻擊10</p><p>  3.5創(chuàng)

6、建Explode類15</p><p>  3.6添加障礙物16</p><p>  3.7添加血塊類18</p><p>  4設(shè)計(jì)結(jié)果與分析19</p><p><b>  5 設(shè)計(jì)體會22</b></p><p>  坦克大戰(zhàn)游戲的設(shè)計(jì)與實(shí)現(xiàn)</p><p>

7、;  摘 要:通過此次課程設(shè)計(jì),深刻認(rèn)識了單鏈表和順序表的邏輯結(jié)構(gòu)和存儲結(jié)構(gòu),熟練掌握了線性表的存儲方式和一些基本操作,如單鏈表和線性表的建立、求表長操作、取元素操作、按值查找、插入和刪除操作等。通過綜合運(yùn)用課程知識來設(shè)計(jì)一個初具規(guī)模的游戲-坦克大戰(zhàn)。借此熟練了數(shù)據(jù)結(jié)構(gòu)以及復(fù)雜條件語句在游戲中的作用、隨機(jī)函數(shù)在中型游戲中的應(yīng)用、游戲中狀態(tài)的概念和切換方法、游戲中速度的實(shí)現(xiàn)方法、覆蓋和碰撞問題的實(shí)現(xiàn)方法、使用API函數(shù)和Buffer實(shí)現(xiàn)

8、復(fù)雜的游戲圖像顯示以及聲音和輸入的處理。該游戲設(shè)計(jì)已經(jīng)實(shí)現(xiàn)以下功能:坦克能力說明、地圖說明、獎勵物品說明、游戲操作說明、游戲技術(shù)組成、“坦克大戰(zhàn)”游戲的創(chuàng)意、控件參數(shù)和窗體屬性的設(shè)置、游戲代碼設(shè)計(jì)等說明。</p><p>  關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu) java 游戲設(shè)計(jì) 函數(shù)和變量</p><p><b>  1.需求分析</b></p><p>

9、;  1.1選題的意義及背景</p><p>  運(yùn)用數(shù)據(jù)結(jié)構(gòu)知識,開發(fā)一個基于J2SE的游戲-坦克大戰(zhàn)</p><p>  1.2本組課程設(shè)計(jì)的目標(biāo)</p><p>  培養(yǎng)自己綜合利用數(shù)據(jù)結(jié)構(gòu)進(jìn)行程序設(shè)計(jì)的能力,主要是培養(yǎng)自己的綜合編程能力。</p><p>  基本實(shí)現(xiàn)游戲圖形界面,讓玩家能看到游戲給出的反饋,讓玩家能感受到游戲的樂趣&

10、lt;/p><p>  玩家能操縱特定的游戲元素</p><p>  不同隊(duì)伍的坦克須顯示不同的外觀,以分辨敵我</p><p>  坦克能夠開火攻擊敵方,但不能攻擊隊(duì)友</p><p>  需要有不可被子彈穿透的墻,且墻有可摧毀和不可摧毀兩種</p><p>  能夠模擬爆炸,實(shí)現(xiàn)較美觀的爆炸效果</p>

11、<p>  坦克有生命值,并非被擊中一次就會爆炸</p><p>  游戲中隨機(jī)出現(xiàn)血塊,可以將主戰(zhàn)坦克的血量加滿</p><p><b>  1.3人員組成</b></p><p><b>  組長:</b></p><p><b>  組內(nèi)成員:</b></

12、p><p><b>  2.設(shè)計(jì)方案</b></p><p><b>  2.1原始數(shù)據(jù)</b></p><p>  各種坦克的圖片,各種墻的圖片,基地圖片,爆炸的圖片,草地圖片,河道的圖片,藥劑的圖片。</p><p>  通過鍵盤操作,進(jìn)行游戲。</p><p><b&

13、gt;  2.2輸出數(shù)據(jù)</b></p><p>  玩家需要從游戲輸出數(shù)據(jù)中獲得游戲信息,如坦克往上行駛,坦克發(fā)射了子彈,坦克爆炸等,這些均需要通過游戲數(shù)據(jù)的輸出來告知玩家</p><p><b>  2.3對數(shù)據(jù)的處理</b></p><p>  本次課程設(shè)計(jì)主要運(yùn)用了數(shù)據(jù)結(jié)構(gòu)中的數(shù)組和鏈表以及向量的存儲,</p>

14、<p>  2.4 程序流程圖</p><p>  TankClient類</p><p>  2.5封裝的數(shù)據(jù)元素 </p><p>  窗口:主窗口 TankClient</p><p>  游戲元素:子彈 Missile,坦克tank,墻壁brickWall,爆炸類explode, 敵人坦克enemyTank,血量Bloo

15、d,方向Direction,背景音樂sound.</p><p>  2.6游戲的主要組成</p><p><b>  (1)構(gòu)建游戲主類</b></p><p>  (2)構(gòu)建坦克類Tank</p><p>  (3)添加炮彈Missile類</p><p>  (4)實(shí)現(xiàn)坦克的互相攻擊<

16、/p><p>  (5)創(chuàng)建Explode類</p><p><b>  (6)添加障礙物</b></p><p><b>  (7)添加血塊類</b></p><p><b>  3.詳細(xì)設(shè)計(jì)</b></p><p><b>  3.1構(gòu)建游戲主

17、類</b></p><p>  在主類中構(gòu)建一個主Frame框架,主要代碼如下:</p><p>  this.setLocation(200,100);</p><p>  this.setSize(Game_wide,Game_height);</p><p>  this.setTitle("坦克大戰(zhàn)")

18、;</p><p>  this.addWindowListener(new WindowAdapter(){</p><p>  public void windowClosing(WindowEvent e){</p><p>  System.exit(0);</p><p><b>  }</b></p&g

19、t;<p><b>  });</b></p><p>  3.2構(gòu)建坦克類Tank</p><p>  構(gòu)建主窗口中所需的Tank類,用單鏈表來存儲產(chǎn)生的每一輛坦克并將坦克加到主窗體中,</p><p>  template <class U> //建立結(jié)構(gòu)體 定義結(jié)點(diǎn)</p><p&

20、gt;  struct Node</p><p><b>  {</b></p><p><b>  U data;</b></p><p>  Node<U> *next; // <T>也可以省略</p><p><b>  };</b></p

21、><p>  template <class T></p><p>  LinkList<T>::LinkList()</p><p><b>  {</b></p><p>  first=new Node<T>; // 動態(tài)分配內(nèi)存</p><p>  if(f

22、irst==NULL)</p><p><b>  {</b></p><p>  cout<<"out of memory"<<endl;</p><p><b>  exit(0);</b></p><p><b>  }</b>

23、</p><p>  first->next=NULL; // 建立只有頭結(jié)點(diǎn)的空鏈表</p><p><b>  }</b></p><p>  template <class T> //用尾插法建立單鏈表</p><p>  LinkList<T>::LinkList(T a[],i

24、nt n)</p><p>  { // 尾插法</p><p>  first=new Node<T>; // 生成頭結(jié)點(diǎn)</p><p>  Node<T> *p=first; // 尾指針初始化</p><p>  for(int i=0;i<n;i++)</p><p>

25、<b>  {</b></p><p>  Node<T> *s=new Node<T>; // 為每一個數(shù)組元素建立一個結(jié)點(diǎn)</p><p>  s->data=a[i];</p><p>  p->next=s;</p><p>  p=s; // 插入到終端結(jié)點(diǎn)之后</p

26、><p><b>  }</b></p><p>  p->next=NULL;// 單鏈表建立完畢,將終端結(jié)點(diǎn)的指針域置空</p><p><b>  } </b></p><p>  Public void paint(Graphics g){ //調(diào)用paint方法畫坦克<

27、/p><p>  myTank.draw(g);</p><p><b>  }</b></p><p>  讓坦克朝八個方向運(yùn)動起來,在主類TankClient中啟用多線程機(jī)制,讓系統(tǒng)不斷的進(jìn)行重畫。并在Tank類中建立處理按鍵的方法,實(shí)現(xiàn)坦克的手動移動;根據(jù)坦克類修改TankClient主類,在主類中注冊事件監(jiān)聽器,并調(diào)用Tank類中的方法。主

28、類TankClient中使用雙緩沖機(jī)制消除坦克的閃爍現(xiàn)象。在Tank類當(dāng)中添加的按鍵方法,代碼如下:</p><p>  public void keyPressed(KeyEvent e) {</p><p>  int key = e.getKeyCode();</p><p>  switch(key) {</p><p>  case

29、 KeyEvent.VK_LEFT :</p><p>  bL = true;</p><p><b>  break;</b></p><p><b>  ……</b></p><p><b>  }</b></p><p>  locateDire

30、ction();</p><p><b>  }</b></p><p>  public void keyReleased(KeyEvent e) {</p><p>  int key = e.getKeyCode();</p><p>  switch(key) {</p><p>  ca

31、se KeyEvent.VK_LEFT :</p><p>  bL = false;</p><p><b>  break;</b></p><p><b>  ……</b></p><p><b>  }</b></p><p>  locateD

32、irection();</p><p><b>  }</b></p><p>  TankClient類中的多線程機(jī)制的主要代碼如下:</p><p>  new Thread(new PaintThread()).start();</p><p><b>  ……</b></p>

33、<p>  private class PaintThread implements Runnable {</p><p>  public void run() {</p><p>  while(true) {</p><p>  repaint();</p><p><b>  try {</b>&l

34、t;/p><p>  Thread.sleep(100);</p><p>  } catch (InterruptedException e) {</p><p>  e.printStackTrace();</p><p><b>  }</b></p><p><b>  }</

35、b></p><p><b>  }</b></p><p><b>  }</b></p><p>  3.3添加炮彈Missile類</p><p>  在Missile類當(dāng)中添加x,y,dir等屬性以及常量。在Missile類當(dāng)中添加構(gòu)造方法,draw方法等必要方法。根據(jù)不同的方向,子彈

36、要進(jìn)行不同的運(yùn)動。在TankClient當(dāng)中new一顆子彈出來,要用到數(shù)據(jù)結(jié)構(gòu)單鏈表的插入方法。</p><p>  template <class T></p><p>  bool LinkList<T>::Insert(T key,int pos)</p><p><b>  {</b></p>&l

37、t;p>  Node<T> *p=first; </p><p><b>  int j=0;</b></p><p>  while(p&&j<pos-1) // 第pos-1個元素 j=1 j<pos</p><p><b>  {</b></p>&l

38、t;p>  p=p->next;</p><p><b>  j++;</b></p><p><b>  }</b></p><p>  if(p==NULL)</p><p><b>  {</b></p><p>  cout<&

39、lt;"erro"<<endl;</p><p>  return false;</p><p><b>  }</b></p><p>  Node<T> *s=new Node<T>;</p><p>  s->data=key;</p>&

40、lt;p>  s->next=p->next; // 向內(nèi)存申請一個結(jié)點(diǎn)s</p><p>  p->next=s; // 將結(jié)點(diǎn)s插入到結(jié)點(diǎn)p之后</p><p>  return true;</p><p><b>  }</b></p><p>  3.4實(shí)現(xiàn)坦克的互相攻擊<

41、/p><p>  (1)讓主戰(zhàn)坦克出炮彈</p><p>  1)在Tank類當(dāng)中增加對ctrl鍵的處理,使每按下ctrl鍵的時(shí)候,坦克打出一發(fā)炮彈。</p><p>  case KeyEvent.VK_CTRL :</p><p><b>  fire();</b></p><p><b&g

42、t;  break;</b></p><p>  2)根據(jù)“坦克打出炮彈”這句話,確定Tank當(dāng)中的fire方法,其返回值為Missile。</p><p>  public Missile fire() {</p><p><b>  ……</b></p><p>  Missile m = new Mis

43、sile(x, y, ptDir);</p><p><b>  return m;</b></p><p><b>  }</b></p><p>  3)為了解決坦克停下來也能開火的問題——給坦克加一炮筒,根據(jù)炮筒方向和 位置設(shè)定子彈的方向和位置并new出來,然后返回,每次move之后根據(jù)Ta

44、nk的新方向確定炮筒的方向。</p><p>  if(this.dir != Direction.STOP) {</p><p>  this.ptDir = this.dir;</p><p><b>  }</b></p><p>  4)為了能夠打出多發(fā)炮彈,使用容器填裝多發(fā)炮彈,每當(dāng)抬起Ctrl鍵的時(shí)候就往容器

45、中加入新的炮彈</p><p>  List<Missile> missiles = new ArrayList<Missile>();</p><p>  5)解決炮彈不消亡的問題,加入控制炮彈生死的量live,當(dāng)炮彈已經(jīng)死去就不需要對其重畫,當(dāng)炮彈飛出邊界就死亡,當(dāng)炮彈死亡就從容器中移去,移除用到了單鏈表的delete方法</p><p>

46、;  template <class T></p><p>  bool LinkList<T>::Delete(int pos)</p><p><b>  {</b></p><p>  Node<T> *p=first;</p><p><b>  int j=0;&l

47、t;/b></p><p>  while(p&&j<pos-1)// 查找第i-1個結(jié)點(diǎn) j=1 j<pos</p><p><b>  {</b></p><p>  p=p->next;</p><p><b>  j++;</b></p>

48、<p><b>  }</b></p><p>  if(!p||!p->next) // 結(jié)點(diǎn)p或結(jié)點(diǎn)p的后繼結(jié)點(diǎn)不存在</p><p><b>  {</b></p><p>  cout<<"error"<<endl;</p><p&

49、gt;  return false;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  Node<T> *q=p->next;</p><p&g

50、t;  T x=q->data; // 暫存被刪結(jié)點(diǎn)</p><p>  p->next=q->next; // 摘鏈</p><p>  delete q; </p><p>  cout<<"被刪結(jié)點(diǎn)元素是:"<<x<<endl;</p><p>  return

51、true;</p><p><b>  }</b></p><p><b>  }</b></p><p>  // 通過邊界條件判定是否移除</p><p>  if(x < 0 || y < 0 || x > TankClient.GAME_WIDTH || y > Ta

52、nkClient.GAME_HEIGHT){</p><p>  live = false;</p><p><b>  }</b></p><p>  public void draw(Graphics g) {</p><p>  if(!live) {</p><p>  tc.missil

53、es.delete(this);</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  ……</b></p><p><b>  }</b></p><p>  (2

54、)實(shí)現(xiàn)坦克的互相開火</p><p>  1)加入?yún)^(qū)分?jǐn)澄业腂oolean量good,根據(jù)敵我設(shè)置不同的坦克</p><p>  2)更新Tank的構(gòu)造函數(shù),加入good</p><p>  3)在TankClient中new出敵人并畫出</p><p>  4)在Missile中加入hitTank(Tank t)方法,返回布爾類型<

55、/p><p>  5)借用碰撞檢測的輔助類Rectangle,為Tank和Missile類都添加getRect()方法。</p><p>  public Rectangle getRect() {</p><p>  return new Rectangle(x, y, WIDTH, HEIGHT);</p><p><b>  }&

56、lt;/b></p><p>  6)增加控制坦克生死的Boolean量live,如果live為false就不畫了。當(dāng)炮彈擊中敵人坦克時(shí),坦克被打死,子彈也死去。 </p><p>  public boolean hitTank(Tank t) { </p><p>  if(this.getRect().intersects(t.getRect())

57、 && t.isLive()) {</p><p>  t.setLive(false);</p><p>  this.live = false;</p><p>  return true;</p><p><b>  }</b></p><p>  return false;

58、</p><p><b>  }</b></p><p>  (3) 添加多輛坦克</p><p>  1)建一容器向里面添加敵人的Tank</p><p>  List<Tank> tanks = new ArrayList<Tank>();</p><p><b&

59、gt;  添加Tank</b></p><p>  for(int i=0; i<10; i++) {</p><p>  tanks.add(new Tank(50 + 40*(i+1), 50, false, this));</p><p><b>  }</b></p><p>  2)在Tank

60、類當(dāng)中添加hitTanks方法,打一系列Tank;在TankClient里面每發(fā)子彈都打tanks</p><p>  Tank類當(dāng)中hitTanks方法</p><p>  public boolean hitTanks(List<Tank> tanks) {</p><p>  for(int i=0; i<tanks.size(); i++)

61、 { </p><p>  if(hitTank(tanks.get(i))) {</p><p>  return true;</p><p><b>  }</b></p><p><b>  }</b></p><p>  return false;<

62、;/p><p><b>  }</b></p><p>  在TankClient里面每發(fā)子彈都打tanks</p><p>  for (int i=0; i<missiles.size(); i++) {</p><p>  Missile m = missiles.get(i);</p><p

63、>  m.hitTanks(tanks);</p><p>  m.draw(g);</p><p><b>  }</b></p><p>  (4) 讓坦克更加智能</p><p>  1)讓敵軍坦克向隨機(jī)方向移動。添加隨機(jī)數(shù)產(chǎn)生器java.util.Random,move完成之后如果是敵軍坦克的,在走完一定的

64、步數(shù)之后隨機(jī)產(chǎn)生一個數(shù),來設(shè)定坦克的下一個方向。</p><p>  if(!good) {</p><p>  Direction[] dirs = Direction.values();</p><p>  if(step == 0) {</p><p>  step = r.nextInt(12) + 3;</p><

65、;p>  int rn = r.nextInt(dirs.length);</p><p>  dir = dirs[rn];</p><p><b>  }</b></p><p><b>  step --;</b></p><p>  if(r.nextInt(40) >

66、38) this.fire();</p><p><b>  }</b></p><p>  2)讓敵方坦克發(fā)射炮彈。本軍坦克不打本軍坦克,向炮彈添加表示好壞的Boolean量good。</p><p>  3)修改炮彈的構(gòu)造方法;修改Tank的fire方法;修改hitTank方法,坦克只能打擊對方。</p><p> 

67、 3.5創(chuàng)建Explode類</p><p>  (1)加入位置屬性x,,y,加入Boolean變量live</p><p>  (2)加入draw方法,用一系列的爆炸圖片來模擬爆炸</p><p>  (3)在TankClient當(dāng)中創(chuàng)建容器,將爆炸存放與容器當(dāng)中,擊斃一輛坦克就產(chǎn)生 爆炸,將爆炸逐一畫出(如果死去就去除),delete方法在前面已寫。 <

68、/p><p>  Missile類當(dāng)中的hitTank()方法</p><p>  public boolean hitTank(Tank t) {</p><p>  if(this.getRect().intersects(t.getRect()) && t.isLive()) {</p><p>  t.setLive(f

69、alse);</p><p>  this.live = false;</p><p>  Explode e = new Explode(x, y, tc);</p><p>  tc.explodes.add(e);</p><p>  return true;</p><p><b>  }</b

70、></p><p>  return false;</p><p><b>  }</b></p><p><b>  爆炸死后去除</b></p><p>  if(!live) {</p><p>  tc.explodes.remove(this); //死后去

71、除</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  3.6添加障礙物</b></p><p><b>  (1)添加金屬墻</b></p><p>  1)建立

72、Wall類,建立Wall對象,用繪圖工具畫出來</p><p>  2)讓每一顆子彈打擊每一堵墻,添加hitMetalWall()方法。當(dāng)子彈接觸到墻時(shí)子彈消失。</p><p>  public boolean hitMetalWall(MetalWall w) {</p><p>  if(this.live && this.getRect().

73、intersects(w.getRect())) {</p><p>  this.live = false;</p><p>  return true;</p><p><b>  }</b></p><p>  return false;</p><p><b>  }</b

74、></p><p>  3)讓坦克不能穿過墻。添加記錄上一次位置的oldX,oldY;修改構(gòu)造函數(shù) 每次move之前記錄上一次的位置。添加stay方法記錄移動之前的位置,當(dāng)坦克撞到檣時(shí)回到移動前的位置,即當(dāng)碰到墻時(shí)stay。</p><p>  public boolean collidesWithMetalWall (MetalWall w) {</p>&

75、lt;p>  if(this.live && this.getRect().intersects(w.getRect())) {</p><p>  this.stay();</p><p>  return true;</p><p><b>  }</b></p><p>  return fa

76、lse;</p><p><b>  }</b></p><p><b>  (2)添加普通墻</b></p><p>  建立brickWall類,往里添加相應(yīng)屬性以及相應(yīng)方法。具體步驟參考2.7.1中添加金屬墻。不同之處在于Missile類當(dāng)中的hitbrickWall()方法,擋子彈接觸到墻壁時(shí),墻壁消失。</

77、p><p>  (3)加入圖片替換主窗口中的各對象</p><p>  再將圖片加入時(shí),運(yùn)用了系統(tǒng)提供的工具包ToolKit,用工具包拿到所需圖片后再將它放入容器中。然后再做相應(yīng)的替換。</p><p>  下面是Missle類當(dāng)中的圖片加入</p><p>  private static Toolkit tk = Toolkit.getDe

78、faultToolkit();</p><p>  private static Image[] missileImages = null;</p><p>  private static Map<String, Image> imgs = new HashMap<String, Image>();</p><p><b>  s

79、tatic {</b></p><p>  missileImages =new Image[] { </p><p>  tk.getImage(Missile.class.getClassLoader().getResource("images/missileL.gif")),tk.getImage(Missile.class.getClass

80、Loader().getResource("images/missileU.gif")),</p><p>  tk.getImage(Missile.class.getClassLoader().getResource("images/missileR.gif")),tk.getImage(Missile.class.getClassLoader().getReso

81、urce("images/missileD.gif")),</p><p><b>  };</b></p><p>  imgs.put("L", missileImages[0]);</p><p>  imgs.put("U", missileImages[1]);</p&

82、gt;<p>  imgs.put("R", missileImages[2]);</p><p>  imgs.put("D", missileImages[3]);</p><p><b>  }</b></p><p>  其他類的圖片載入類似Missile類。</p>

83、<p><b>  3.7添加血塊類</b></p><p>  創(chuàng)建Blood類,添加血塊,假如必要的屬性和方法,使血塊沿著固定的軌跡運(yùn)動,</p><p>  private int[][] pos={</p><p>  {350,300}, {360,300}, {375,310},{385,290},{400,260},{

84、380,300},{350,300}</p><p><b>  };</b></p><p>  private void move(){</p><p><b>  step++;</b></p><p>  if(step>=pos.length) step=0;</p>

85、<p>  x=pos[step][0];</p><p>  y=pos[step][1];</p><p><b>  }</b></p><p>  當(dāng)主戰(zhàn)坦克與血塊接觸的時(shí)候,主戰(zhàn)坦克的血量自動加滿</p><p>  public boolean eat(Blood b){</p>&

86、lt;p>  if(this.Live && b.isLive()&&this.getRect().intersects(b.getRect())){</p><p>  this.life=100;</p><p>  b.setLive(false);</p><p>  return true;</p>&l

87、t;p><b>  }</b></p><p>  return false;</p><p><b>  }</b></p><p><b>  4設(shè)計(jì)結(jié)果與分析</b></p><p><b>  主戰(zhàn)坦克的方向鍵:</b></p>

88、<p>  上移:鍵盤方向鍵向上 下移: 方向鍵向下</p><p>  左移:鍵盤方向鍵向下 右移: 方向鍵向右</p><p>  左上:鍵盤方向鍵上和左 右上:鍵盤方向鍵上和右</p><p>  左下:鍵盤方向鍵下和左 右上:鍵盤方向鍵下和右</p><p>  普通開火鍵:

89、ctrl</p><p><b>  超級開火鍵: A</b></p><p>  主戰(zhàn)坦克重生鍵: F2</p><p><b>  運(yùn)行結(jié)果:</b></p><p><b>  5 設(shè)計(jì)體會</b></p><p>  通過這次課程設(shè)計(jì),初步了

90、解了高級編程語言面向?qū)ο蟮奶攸c(diǎn),掌握了數(shù)據(jù)結(jié)構(gòu)及Java編程的許多基本知識,提升了自己的動手能力。使我對數(shù)據(jù)結(jié)構(gòu)這門課又做了一次系統(tǒng)的復(fù)習(xí),對各個知識點(diǎn)也都有了更深刻的理解,讓我掌握的更扎實(shí),掌握了JAVA的應(yīng)用、編寫、上機(jī)調(diào)試的基本方法,同時(shí)也增強(qiáng)了實(shí)際操作能力,了解了程序開發(fā)過程中涉及到的相關(guān)知識,使我對數(shù)據(jù)結(jié)構(gòu)的使用也更加的熟練,另一方面對編程語言有了新的認(rèn)識,為以后的學(xué)習(xí)打下了基礎(chǔ)。本項(xiàng)目要學(xué)會圖形化用戶界面的構(gòu)建,并且本項(xiàng)目用

91、到了多線程Thread的知識。通過啟用多線程機(jī)制,不斷調(diào)用java.awt.*中的paint(Graphics g)方法,將畫面構(gòu)造出來。其中要使用雙緩沖消除閃爍現(xiàn)象。程序中還使用了鍵盤監(jiān)聽器接口KeyActionListener實(shí)現(xiàn)坦克的控制操作。碰撞檢測的輔助類Rectangle可以完成坦克之間,以及坦克與障礙物之間的碰撞檢測。初步了解反射,知道對于classloader每一個.class實(shí)際就是一個Class對象。學(xué)會使用Tool

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論