JAVA編程實訓課程學期總結(jié)_第1頁
JAVA編程實訓課程學期總結(jié)_第2頁
JAVA編程實訓課程學期總結(jié)_第3頁
JAVA編程實訓課程學期總結(jié)_第4頁
JAVA編程實訓課程學期總結(jié)_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Java編程實訓課程學期總結(jié)姓名:魏永進_學號: _2009022121_班級: _09計算機多媒體技術(shù)_成績: _成績登記表次數(shù)12345678910111213系數(shù)合計總分自評組評課堂安徽中澳科技職業(yè)學院計算機系 指導教師:魏曉東 JAVA學習總結(jié)論文 一 對JAVA的入門認識及了解JAVA總的來說和C+、.NET、DELPHI等語言是同一祖先生出來,所以熟悉這類編程的人學起來特別容易,它們都是面向?qū)ο蠡幊陶Z言。學習任何語言(包括英語),基礎(chǔ)一定要打好,沒有學會走路跑步不可能快吧。所以學習JAVA一定要先把JAVA的幾個基本組成元素學好。以下是我總結(jié)出來的學習順序和注意事項:1、數(shù)據(jù)類型

2、 JAVA是一種強類型語言,各種類型不會自動轉(zhuǎn)換,使用前必須先定義。 2、方 法 方法相當于定義一個"宏"、一個"函數(shù)", 方法的定義格式為:"說明符 修飾符 返回值 方法名(參數(shù))方法體。"在學習方法的時候要注意"說明符、"修飾符"、"返回值"這三樣東西。我們在調(diào)用JAVA的自帶的"類"里面的"方法"的時候,我們一開始是不用看懂這些方法里面寫什么(當然,你能看懂是最好)。我們只要知道,使用了這個方法后,"返回值"的"

3、;類型"說明3、類 在JAVA中最經(jīng)常聽到詞,也是最麻煩的東西,類的定義格式為:說明符 class 類名 extends超類名 implements 接口名主體4、變量常量 JAVA的常量名一般用全大寫字母表示,并且為了節(jié)省內(nèi)存,一般定義為靜態(tài)(JAVA程序中的名字我們經(jīng)常有個默認的規(guī)則,類名所有單詞第一個字母大寫,方法名第二個單詞開始第一個字母大寫,變量名小寫,這樣我們一看程序就非常清楚了,從小養(yǎng)成良好的習慣嘛,呵呵),變量的定義格式為: "修飾符 數(shù)據(jù)類型 變量名"變量在類中定義(不在方法體中的部分稱為域)和在方法體中定義是不同的(在方法體中定義不需要修飾符)

4、。學習變量的時候要注意兩個特殊的東西"this" 和"super"。同時我們就要學習什么叫"覆蓋"、"重載"。5、控制流 所有的編程語言的控制語句無非就是幾個if else for while do switch。6、接口: 一個抽象的東西,接口可以多繼承,解決了類只能單繼承的問題。接口的定義格式為: 說明符 interface 接口名主體,接口內(nèi)的方法都是沒有主體的,只有常量或變量。當類使用接口的時候,一定要"覆蓋"接口的方法。7、線程: 線程是個比較復雜的東西,例如一個賽馬程序有七匹馬賽跑,

5、就有七個線程,看起來好象是同時在跑,其實是計算機分配不同的時間段讓七個線程運行。我們初學者的程序可能還用不上。到這里為語言本身的學習是后繼學習的基礎(chǔ)。任何一門語言都是知識的濃縮,是設(shè)計者智慧的結(jié)晶,更何況是作為高級語言Java。作為初學者,我們確實應(yīng)該腳踏實地的從語言層面開始學起,為進一步學習打好基礎(chǔ)。所以,我計劃利用假期拜讀Thinking in Java。學習Java要充分利用資源。最重要的資源是JDK源碼,其次就是open source。當然,動手寫程序才是硬道理。2、學習面向?qū)ο笳Z言一定要結(jié)合設(shè)計模式。語言本身只是工具,如何利用好工具表達我們的想法,就需要具有專業(yè)思維。設(shè)計模式就是我們

6、應(yīng)該具有的專業(yè)思維。3、多態(tài)性是面向?qū)ο蟪绦蛟O(shè)計的核心!在對Java語言和設(shè)計模式有簡單的了解后,我覺得多態(tài)性是OOP核心中的核心,正是因為多態(tài)具有的表示獨立性,才使得程序具有很好的可擴展性和可復用性。止,JAVA的基本概念我們有一定的了解了,我們就開始研究JAVA的類了。二如下是運作坦克大戰(zhàn)的步驟和設(shè)計方法:2.2設(shè)計方法構(gòu)建游戲主類在主類中構(gòu)造一個主Frame框架,設(shè)置它的大小和位置,并將其顯示。在主類中編寫一段代碼,構(gòu)造一個窗口。并添加窗口關(guān)閉的處理事件,將窗口設(shè)置成打小不可變。主要代碼如下:this.addWindowListener(new WindowAdapter() publi

7、c void windowClosing(WindowEvent e) System.exit(0); );this.setResizable(false);構(gòu)建坦克類Tank 構(gòu)造主窗口中所需要的Tank類,并將坦克加到窗口中,實現(xiàn)坦克的四個方向的移動創(chuàng)建一個坦克類,用畫圖工具構(gòu)造出簡單的圖形代表坦克,并將坦克加入到主窗口當中。主要代碼如下:public class Tank public void draw(Graphics g) Color c = g.getColor();g.setColor(Color.RED);g.fillOval(x, y, 30, 30);g.setColor

8、(c);public class TankClient extends Framepublic void paint(Graphics g) myTank.draw(g); 讓坦克朝四個方向運動起來,在主類TankClient中啟用多線程機制,讓系統(tǒng)不斷的進行重畫。并在Tank類中建立處理按鍵的方法,實現(xiàn)坦克的手動移動;根據(jù)坦克類修改TankClient主類,在主類中注冊事件監(jiān)聽器,并調(diào)用Tank類中的方法。主類TankClient中使用雙緩沖機制消除坦克的閃爍現(xiàn)象。在Tank類當中添加的按鍵方法,代碼如下:public void keyPressed(KeyEvent e) int key

9、= e.getKeyCode();switch(key) case KeyEvent.VK_LEFT :bL = true;break;locateDirection();public void keyReleased(KeyEvent e) int key = e.getKeyCode();switch(key) case KeyEvent.VK_LEFT :bL = false;break; locateDirection();TankClient類中的多線程機制的主要代碼如下:new Thread(new PaintThread().start();private class Paint

10、Thread implements Runnable public void run() while(true) repaint();try Thread.sleep(50); catch (InterruptedException e) e.printStackTrace();添加炮彈Missile類在Missile類當中添加x,y,dir等屬性以及常量。在Missile類當中添加構(gòu)造方法,draw方法等必要方法。根據(jù)不同的方向,子彈要進行不同的運動。在TankClient當中new一顆子彈出來。實現(xiàn)坦克的互相攻擊(1)讓主戰(zhàn)坦克打出炮彈1)在Tank類當中增加對J鍵的處理,使每按下J鍵的時

11、候,坦克打出一發(fā)炮彈。case KeyEvent.VK_J :fire();break;2)根據(jù)“坦克打出炮彈”這句話,確定Tank當中的fire方法,其返回值為Missile。public Missile fire() Missile m = new Missile(x, y, ptDir);return m;3)為了解決坦克停下來也能開火的問題給坦克加一炮筒,根據(jù)炮筒方向和 位置設(shè)定子彈的方向和位置并new出來,然后返回。每次move之后根據(jù)Tank的新方向確定炮筒的方向。if(this.dir != Direction.STOP) this.ptDir = this.dir;4)為了能夠

12、打出多發(fā)炮彈,使用容器填裝多發(fā)炮彈,每當抬起J鍵的時候就往 容器中加入新的炮彈List<Missile> missiles = new ArrayList<Missile>();5)解決炮彈不消亡的問題,加入控制炮彈生死的量live(Missle),當炮彈已經(jīng)死去就不需要對其重畫,當炮彈飛出邊界就死亡,當炮彈死亡就從容器中移去。if(x < 0 | y < 0 | x > TankClient.GAME_WIDTH | y > TankClient.GAME_HEIGHT) live = false; public void draw(Graph

13、ics g) if(!live) return; (2)實現(xiàn)坦克的互相開火1)加入?yún)^(qū)分敵我的Boolean量good,根據(jù)敵我設(shè)置不同的坦克2)更新Tank的構(gòu)造函數(shù),加入good3)在TankClient中new出敵人并畫出4)在Missile中加入hitTank(Tank t)方法,返回布爾類型5)借用碰撞檢測的輔助類Rectangle,為Tank和Missile類都添加getRect()方法。public Rectangle getRect() return new Rectangle(x, y, WIDTH, HEIGHT); 6)增加控制坦克生死的Boolean量live,如果liv

14、e為false就不畫了。當炮彈擊中敵人坦克時,坦克被打死,子彈也死去。 public boolean hitTank(Tank t) if(this.getRect().intersects(t.getRect() && t.isLive() t.setLive(false); this.live = false; return true; return false; (3) 添加多輛坦克建一容器向里面添加敵人的Tank List<Tank> tanks = new ArrayList<Tank>();添加Tank for(int i=0; i<1

15、0; i+) tanks.add(new Tank(50 + 40*(i+1), 50, false, this); (4) 讓坦克更加智能if(!good) Direction dirs = Direction.values(); if(step = 0) step = r.nextInt(12) + 3;int rn = r.nextInt(dirs.length);dir = dirsrn; step -;if(r.nextInt(40) > 38) this.fire(); 2)讓敵方坦克發(fā)射炮彈。本軍坦克不打本軍坦克,向炮彈添加表示好壞的Boolean量good。3)修改炮彈的

16、構(gòu)造方法;修改Tank的fire方法;修改hitTank方法,坦克只能打擊對方。創(chuàng)建Explode類(1)加入位置屬性x,y,加入Boolean變量live炸(3)在TankClient當中創(chuàng)建容器,將爆炸存放與容器當中,擊斃一輛坦克就產(chǎn)生 爆炸,將爆炸逐一畫出(如果死去就去除) Missile類當中的hitTank()方法添加藥箱BloodBox創(chuàng)建BloodBox類添加血藥箱,加入必要的屬性和方法,讓藥箱沿著固定的軌跡運動。private static Random r = new Random();int step = 0;private int pos = 100, 120 , 200

17、, 300 , 760, 570 , 280, 570 , 600, 40 , 700, 60 , 680, 225 ;public BloodBox() x = pos00;y = pos01; private void move() step+; if (step = pos.length) step = 0; x = posstep0; y = posstep1; 當主戰(zhàn)Tank與藥箱接觸的時候,血自動加滿。public boolean eat(BloodBox b) if (this.live && b.isLive() && this.getRect(

18、).intersects(b.getRect() this.life = 100; b.setLive(false); return true; return false; 添加Home建立Home類,在Home類中為家添加普通墻壁,當墻壁中的home被打掉后游戲結(jié)束。添加障礙物(1)添加金屬墻1)建立MetalWall類,建立MetalWall對象,用繪圖工具畫出來2)讓每一顆子彈打擊每一堵墻,添加hitMetalWall()方法。當子彈接觸到墻時子彈消失。public boolean hitMetalWall(MetalWall w) if(this.live && thi

19、s.getRect().intersects(w.getRect() this.live = false;return true;return false;3)讓坦克不能穿過墻。添加記錄上一次位置的oldX,oldY;修改構(gòu)造函數(shù) 每次move之前記錄上一次的位置。添加stay方法記錄移動之前的位置,當坦克撞到檣時回到移動前的位置,即當碰到墻時stay。public boolean collidesWithMetalWall (MetalWall w) if(this.live && this.getRect().intersects(w.getRect() this.stay

20、(); return true; return false; (2)添加普通墻建立OrdinaryWall類,往里添加相應(yīng)屬性以及相應(yīng)方法。具體步驟參考中添加金屬墻。不同之處在于Missile類當中的hitOrdinaryWall()方法,擋子彈接觸到墻壁時,墻壁消失。(3)添加河水River(4)添加樹林創(chuàng)建Tree類,用畫圖工具畫出代表森林的模塊,加入主窗口當中。(5)加入圖片替換主窗口中的各對象再將圖片加入時,運用了系統(tǒng)提供的工具包ToolKit,用工具包拿到所需圖片后再將它放入容器中。然后再做相應(yīng)的替換。三: JAVA的學習心得經(jīng)過一年的學習,Java的課程已經(jīng)結(jié)束了??墒俏抑?,學習

21、java的路上,我們才剛剛起步。學Java之前我聽許多人說Java很難,學了之后我感覺Java確實不容易,想學好它并非易事。我覺得學Java必須做到三步走:1.課前認真預(yù)習。2.課上認真聽講。3.課下認真復習。 我想只有做好這三步,自己才能跟上老師的步子。 回想一下學習Java時的情景,我仍然興奮不已。其實在剛接觸Java時,自己確實有點暈,但經(jīng)過一段時間學習,逐漸走出了迷霧。剛開始學習循環(huán)時,我覺得那一塊很不熟悉,做題時,思路半天才理出來。經(jīng)過一段時間的練習,我漸漸的走出了第一個迷霧。但是到了第六章,我徹底暈了,看書看得也一知半解暈暈乎乎的。類與對象是在學了第七、八章后弄清的。到了最后一章,

22、學到字符串時,傳遞參數(shù)真讓我暈啊,然后我又是練習,最后略微弄明白了點。經(jīng)過三起三落,經(jīng)過幾個迷霧之后,我對Java也有了更為深入的了解,就學會了Java。 Java學起來很有趣,通過學習Java可以提高自己的邏輯能力。在學習Java期間我們做了一些程序,我們班的同學也都積極準備,完成的還不錯!在做程序時,我遇到了一些難題,有時也會出現(xiàn)錯誤,時間長了弄得我心煩意亂,但是我知道只有堅持下去才會成功。 因為Java是一種面向?qū)ο蟮木幊陶Z言,剛接觸Java的人可能會感覺比較抽象,不過沒關(guān)系不用著急,上課的時候認真聽老師講解,一些概念知識慢慢去理解,課后多做練習,熟能生巧,哪怕是你的記性再好,課后不去強

23、化練習也沒用,只有多練了,當你在做項目時你才能很熟練的寫出你想要代碼。 我覺得把Java學會的關(guān)鍵一點就是堅持練習。學習Java時每天必須保證一定量的練習,我們老師也說學習編程語言沒有捷徑可走。真的,只有每天反復操作了,經(jīng)常寫代碼了,我們在遇到問題時才有一定的思路。欲速則不達,學習編程語言需要一個比較漫長的階段,不能一步登天,這需要一個過程,在這個過程中慢慢積累經(jīng)驗,扎實基礎(chǔ)。不要滿足于現(xiàn)狀,要不斷完善自己的知識體系,善于總結(jié)實踐經(jīng)驗。要端正自己的學習態(tài)度,是主動去學,而不是被動!提高自學能力。學習編程的秘訣是:編程、編程、再編程。不僅要多實踐,而且要快實踐。 我們在看書的時候,不要等到你完全理解了才動手敲代

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論