久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

坦克大戰(zhàn)大報告

時間:2019-05-14 07:46:15下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《坦克大戰(zhàn)大報告》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《坦克大戰(zhàn)大報告》。

第一篇:坦克大戰(zhàn)大報告

大作業(yè)題目:坦克大戰(zhàn)程序

一、需求分析

功能需求

坦克大戰(zhàn)其中包括對主戰(zhàn)坦克的編寫、坦克的初始位置的編寫、坦克的移動方向的編寫、坦克的速度的編寫、坦克的子彈速度的編寫、敵軍的子彈速度的編寫、設(shè)置游戲難度的編寫、子彈的編寫、敵軍坦克的編寫、構(gòu)造函數(shù)的編寫,初始化敵軍坦克的位置和狀態(tài)的編寫、鍵盤控制坦克的移動的編寫、發(fā)彈的編寫、判斷是否被擊中的編寫、判斷是否擊中敵軍的編寫等。通過上下左右鍵進(jìn)行對坦克的移動,通過F鍵發(fā)射子彈,其它坦克可以隨機(jī)移動。構(gòu)造主窗口中所需要的類,并將坦克加到窗口中,實(shí)現(xiàn)坦克的四個方向的移動并創(chuàng)建炮彈類,并讓屏幕中的坦克能發(fā)射炮彈,讓坦克可以朝對方信息統(tǒng)計功能,在游戲界面左上角,顯示當(dāng)前屏幕子彈數(shù)。.(1)、我方坦克,形狀為一輛坦克圖片,和坦克的移動方向保持一致。根據(jù)鍵盤的方向鍵,坦克的移動方向分為上、下、左、右。當(dāng)按住F鍵的時候,能夠發(fā)送炮彈,多次按鍵,多次發(fā)送。坦克有血量,滿血為100,每次被擊中,都會掉血10,直到0后,坦克死亡。(2)、敵軍坦克,形狀為一個黃色圓,移動為隨機(jī)移動,血量為當(dāng)被一發(fā)炮彈擊中的時候,立即死亡消失。(3)、補(bǔ)血包,當(dāng)我方坦克碰撞到補(bǔ)血包時,可補(bǔ)血,敵方坦克碰撞到時,穿過補(bǔ)血包,不會補(bǔ)血。補(bǔ)血包隨機(jī)出現(xiàn)。.(4)、碰撞:當(dāng)子彈碰撞坦克時,子彈消失。當(dāng)敵軍坦克碰撞到我方坦克時,相互穿過。當(dāng)子彈碰撞到墻壁時,子彈消失,不可穿透墻壁。當(dāng)坦克碰撞到坦克時,可穿越。當(dāng)坦克碰撞到四周的游戲界面時,不可走出游戲界面。

運(yùn)行需要

(1)數(shù)據(jù)精確性

在進(jìn)行存取款金額時,需求數(shù)據(jù)記錄定位精確,要求輸入數(shù)精確金額。(2)時間特性

系統(tǒng)要求用戶進(jìn)行相應(yīng)操作后系統(tǒng)的響應(yīng)時間應(yīng)盡量短,不能超過一定的時間范圍本設(shè) 計暫規(guī)定為1-2s。(3)適應(yīng)性

要求平臺具有很好的更新能力,平臺應(yīng)該能夠?qū)Σl(fā)事件,對于“不可靠”數(shù)據(jù)具有較強(qiáng)的識別處理能力。(4)可維護(hù)性

為滿足系統(tǒng)在以后運(yùn)行過程中出現(xiàn)問題能夠修正以及系統(tǒng)需要升級等要求,系統(tǒng)應(yīng)該具有可維護(hù)、可擴(kuò)充、可更新的性能。(6)兼容性適合

Windows2003及以上版本的操作系統(tǒng)。(7)安全性

系統(tǒng)運(yùn)行應(yīng)該滿足具有一定能夠避免黑客、病毒等惡意攻擊的安全防范措施。但相對如此簡單的平臺,應(yīng)考慮到這些東西。

二、類的設(shè)計

1、類的設(shè)計:

坦克大戰(zhàn)游戲主要涉及到的對象有地圖、坦克、炮彈、血包。因此,整個系統(tǒng)的功能可以由以下幾個類完成:

TankMap類: 此類主要功能是利用java中AWT包來實(shí)現(xiàn)坦克游戲的主窗口,以及對其他類的調(diào)用和實(shí)例化;游戲地圖的初始化,重繪地圖上的其他元素。

Blood類:此類主要是定義玩家坦克的生命值,有可以控制玩家坦克的加血等操作的方法。

Tank類:此類主要定義的是游戲中的坦克,可以實(shí)例化出玩家坦克,在此類中有坦克的移動,開火等方法。

EnemyTank類:此類主要定義的是游戲中的敵方坦克,可以實(shí)例化出敵方坦克,在此類中有敵方坦克的移動,開火等方法。

Shell類:此類主要定義的是游戲中的炮彈類,其中有炮彈的大小以及移動等因素。Explor類:此類定義的是坦克被攻擊后的爆炸,其中有坦克擊毀后爆炸的圖形變化。

2、方法的設(shè)計: TankMap類的方法:

init():初始化地圖以及地圖上的元素

paint():繪制地圖以及地圖上的元素

update():重繪地圖以及地圖上的元素

Main():程序入口,創(chuàng)建TankMap對象 Tank類的方法:

Move():按照指定的方向,實(shí)現(xiàn)坦克的移動

checkDirection():判斷用戶點(diǎn)擊的方向鍵,更新坦克運(yùn)動方向

Fire():當(dāng)用戶單擊F鍵時,發(fā)射炮彈

getRec():獲取坦克當(dāng)前所處位置的矩形

isLive():判斷坦克的生命值是否為0

setLife(int life):設(shè)定坦克生命值

Draw():在指定的地圖上繪制坦克

Tank():構(gòu)造方法,初始化坦克,指定坦克所在地圖 Shell類的方法:

Move():按照發(fā)射該炮彈的坦克的方向移動

getRec():獲取炮彈當(dāng)前所處位置的矩形

Draw():在指定地圖上繪制炮彈

hitTank():打擊指定坦克

Shell():構(gòu)造方法,初始化炮彈 Blood類的方法:

getRec():獲取血包當(dāng)前所處位置的矩形

Draw():在指定地圖上繪制血包

Blood():構(gòu)造方法,初始化血包

三、編碼實(shí)現(xiàn)及說明

TankMap類:

public class TankMap extends Frame {

public static final int MAPWIDTH=800;public static final int MAPHEIGHT=600;Random r=new Random();public int time=0;int s=1;//城墻數(shù) Tank t=null;public static java.util.Listshells= new ArrayList();static static

java.util.List java.util.List

walls=new enemys=new public

public java.util.ArrayList();ArrayList();public static java.util.List bloods=new ArrayList();public static

java.util.List

explors=new java.util.ArrayList();

} public void paint(Graphics g){

Color c=g.getColor();g.setColor(Color.PINK);g.fillRect(0,0,MAPWIDTH,MAPHEIGHT);g.setColor(Color.RED);g.drawString(“當(dāng)前炮彈數(shù)目:”+shells.size(),20,40);g.drawString(“生命值:”,20,60);g.fillRect(65,55,t.getLife(),5);g.setColor(c);t.draw(g);public int enemyCount=10;

public static void main(String[] args){

} public void drawImage(){ } public void init(){

this.setSize(MAPWIDTH,MAPHEIGHT);this.setTitle(“TankWar”);

this.setVisible(true);

this.addKeyListener(new DirectionHandler());

this.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent arg0){ } System.exit(0);TankMap tv=new TankMap();tv.init();});for(int i=0;i

}

if(r.nextInt(10)==9 && bloods.size()==0)

for(int i=0;i

} for(int i=0;i

} for(int i=0;i

} for(int i=0;i

} for(int i=0;i

} Shell s=shells.get(i);if(s.isLive && s.isgood){

} s.draw(g);s.hitTanks(enemys);s.hitTank(t);}else if(s.isLive&&!s.isgood){ Wall w=walls.get(i);w.wallb(t);w.draw(g);

Blood b=bloods.get(i);b.bloodb(t);b.draw(g);Explor e=explors.get(i);e.draw(g);EnemyTank et=enemys.get(i);et.draw(g);bloods.add(new Blood());bloods.remove(0);if(r.nextInt(30)==7 && bloods.size()==1)public void update(Graphics g){ } class PaintThread implements Runnable{

public void run(){

while(true){ repaint();time++;paint(g);

}

}

}

} try{

} Thread.sleep(100);e.printStackTrace();}catch(InterruptedException e){ class DirectionHandler extends KeyAdapter{

} public void keyPressed(KeyEvent arg0){ } t.checkDirection(arg0);

Tank類:

public class Tank {

public static final int WIDTH=50,HEIGHT=50,xspeed=10,yspeed=10;public int x=400,y=300;public Direction direction = Direction.STOP;TankMap tm;boolean isLive = true;boolean isgood = true;int life = 100;public int zhuanxiang=1;public boolean isLive(){ } public void setLive(boolean isLive){ } public int getLife(){ } public void setLife(int life){ } public Tank(){} public Tank(TankMap t){ } public void draw(Graphics g){ if(zhuanxiang==1){ tm=t;this.life = life;return life;this.isLive=isLive;return isLive;

}

} ImageIcon icon=new ImageIcon(“tank_shang.gif”);Image tankImage=icon.getImage();g.drawImage(tankImage,x,y,null);else if(zhuanxiang==-2){

} else if(zhuanxiang==2){

} else {

}

/*Color c = g.getColor();g.setColor(Color.RED);g.fillOval(x,y,WIDTH,HEIGHT);g.setColor(c);*/ move(direction);ImageIcon icon=new ImageIcon(“tank_xia.gif”);Image tankImage=icon.getImage();g.drawImage(tankImage,x,y,null);ImageIcon icon=new ImageIcon(“tank_zuo.gif”);Image tankImage=icon.getImage();g.drawImage(tankImage,x,y,null);ImageIcon icon=new ImageIcon(“tank_you.gif”);Image tankImage=icon.getImage();g.drawImage(tankImage,x,y,null);public void move(Direction d){

if(d==Direction.STOP){ }else if(d==Direction.UP){

zhuanxiang=1;y-= yspeed;if(y<=20)y=20;}else if(d==Direction.RIGHT){ zhuanxiang=-2;x+=xspeed;if(x>=800-WIDTH)x=800-WIDTH;}else if(d==Direction.DOWN){ zhuanxiang=-1;y+=yspeed;

}

}

} if(y>=600-HEIGHT)y=600-HEIGHT;}else if(d==Direction.LEFT){ zhuanxiang=2;x-=xspeed;if(x<=0)x=0;public void checkDirection(KeyEvent k){

} public void fire(){ tm.shells.add(new if(k.getKeyCode()==KeyEvent.VK_UP){

} if(k.getKeyCode()==KeyEvent.VK_F){ } fire();direction=Direction.UP;direction=Direction.RIGHT;direction=Direction.DOWN;direction=Direction.LEFT;}else if(k.getKeyCode()==KeyEvent.VK_RIGHT){ }else if(k.getKeyCode()==KeyEvent.VK_DOWN){ }else if(k.getKeyCode()==KeyEvent.VK_LEFT){ Shell(this.x+WIDTH/2,this.y+HEIGHT/2,this.direction,tm,Color.RED,} public Rectangle getRec(){ } return new Rectangle(this.x,this.y,this.WIDTH,this.HEIGHT);true));EnemyTank類:

public class EnemyTank extends Tank {

public static final int WIDTH=20,HEIGHT=20,xspeed=3,yspeed=3;public int x=400,y=300;public Direction direction = Direction.DOWN;public boolean islive = true;Color color = Color.YELLOW;TankMap tm;Random r=new Random();int randomCount = r.nextInt(10)+5;

public EnemyTank(){} public EnemyTank(int wx,int wy,Color c){

} @Override public void draw(Graphics g){

} public void move(){

if(randomCount==0){

} randomCount--;if(r.nextInt(40)>36){ } if(direction==Direction.UP){

ImageIcon icon=new ImageIcon(“tank_shang.gif”);Image enemytankImage=icon.getImage();y-=yspeed;if(y<=HEIGHT)y=HEIGHT;fire();Direction dirs[]=Direction.values();direction = dirs[r.nextInt(dirs.length-1)];randomCount = r.nextInt(10)+5;Color c = g.getColor();g.setColor(color);g.fillOval(x, y, WIDTH, HEIGHT);g.setColor(c);move();x=wx;y=wy;color=c;}else if(direction==Direction.RIGHT){ ImageIcon icon=new ImageIcon(“tank_you.gif”);Image enemytankImage=icon.getImage();x+=xspeed;if(x>=800-WIDTH)x=800-WIDTH;}else if(direction==Direction.DOWN){ ImageIcon icon=new ImageIcon(“tank_xia.gif”);Image enemytankImage=icon.getImage();y+=yspeed;if(y>=600-HEIGHT)y=600-HEIGHT;}else if(direction==Direction.LEFT){ ImageIcon icon=new ImageIcon(“tank_zuo.gif”);

}

}

} Image enemytankImage=icon.getImage();x-=xspeed;if(x<=0)x=0;@Override public void fire(){ tm.shells.add(new

Shell(this.x+WIDTH/2,this.y+HEIGHT/2,this.direction,tm,Color.BLUE} public Rectangle getRec(){ } return new Rectangle(this.x,this.y,this.WIDTH,this.HEIGHT);,false));Blood類:

public class Blood {

public final int WIDTH=30,HEIGHT=30;public int

x=

new

Random().nextInt(770),y=

new Random().nextInt(570);TankMap tm;{

} public boolean bloodb(Tank t){

if(t.isLive&&this.getRec().intersects(t.getRec())){

if(t.getLife()<=60){

} else { System.out.println(“blood up”);t.setLife(100);System.out.println(“恭喜你,補(bǔ)血啦啦啦!”);t.setLife(t.getLife()+40);tm.bloods.remove(this);

ImageIcon icon=new ImageIcon(“blood.JPG”);Image tankImage=icon.getImage();g.drawImage(tankImage,x,y,null);public void draw(Graphics g)

}

}

} } tm.bloods.remove(this);return false;public Rectangle getRec(){ } return new Rectangle(this.x,this.y,this.WIDTH,this.HEIGHT);Shell類:

public class Shell {

public final int WIDTH=5,HEIGHT=5,xspeed=8,yspeed=8;public int x,y;Direction dir = Direction.STOP;public boolean islive=true;TankMap tm=null;Color color=Color.RED;boolean isgood=true;boolean isLive=true;//構(gòu)造方法

public Shell(){} public Shell(int xd,int yd,Direction d,TankMap t){

} public Shell(int xd,int yd,Direction d,TankMap t,Color c,boolean g){

} public void draw(Graphics g){

if(islive){

Color c = g.getColor();g.setColor(color);g.fillOval(x,y,WIDTH,HEIGHT);g.setColor(c);move(dir);x=xd;y=yd;dir=d;tm=t;color=c;isgood=g;x=xd;y=yd;dir=d;tm=t;}else{

} } tm.shells.remove(this);public void move(Direction d){

} public Rectangle getRec(){ } public boolean hitTank(Tank t){ if(this.isLive&&t.isLive&&this.getRec().intersects(t.getRec())){/return new Rectangle(this.x,this.y,this.WIDTH,this.HEIGHT);if(d==Direction.UP){

} y-=yspeed;if(y<=0)islive=false;}else if(d==Direction.RIGHT){ x+=xspeed;if(x>=800)islive=false;}else if(d==Direction.DOWN){ y+=yspeed;if(y>=600)islive=false;}else if(d==Direction.LEFT){ x-=xspeed;if(x<0)islive=false;/用戶坦克生命值減20

t.setLife(t.getLife()-20);

} public boolean hitTanks(List enemyTanks){

} return false;if(t.getLife()<=0){

} this.islive=false;Explor e=new Explor(x-3,y-3,this.tm);tm.explors.add(e);return true;t.setLive(false);t.direction=Direction.STOP;JOptionPane.showMessageDialog(tm, “Game Over!”);System.exit(0);

}

} EnemyTank e;for(int i=0;i

} return false;e = enemyTanks.get(i);if(this.getRec().intersects(e.getRec())){

} System.out.println(“hittanks”);e.setLive(false);tm.enemys.remove(e);this.islive=false;Explor ex=new Explor(x-3,y-3,this.tm);tm.explors.add(ex);return true;過程收獲

這已經(jīng)是本學(xué)期第二個小程序了,有了第一份的基礎(chǔ),做第二次的時候明顯熟練的很多,效率比之前也提高了很多,求助老師與同學(xué)也少了許多,基本可以獨(dú)自完成坦克大戰(zhàn)這一小游戲

可能是收以前學(xué)習(xí)的知識影響吧,在剛剛學(xué)習(xí)的時候總擺脫不了思維定勢的陰影,總是找不到感覺,老師講的都會,可到自己寫的時候卻完全無從下手,“難道我真的一無是處,什么都做不了?”,我已經(jīng)近乎崩潰了,或許是我的性格原因吧,很快我就說服自己,走出了陰霾,我想起曾聽一位說過的話:我的天資愚鈍,也許別人花一天就能做完的事我肯能要話十天,但我知道,我花一天去做一件事永遠(yuǎn)沒有花十天時間做的好,那樣也就永遠(yuǎn)趕不上別人。所以我不停的看老師的代碼,不停的問助教老師,就這樣不厭其煩的,有了長足的進(jìn)步。

java體系知識點(diǎn)很多,很多東西是要記憶的,可能會學(xué)了后面忘了前面,所以,一定要有“一百萬次理論”的實(shí)踐,那樣沒有什么事是做不好的。這又將是我人生的一筆彌足珍貴的財富,我相信這絕不是一筆意外的財富。在java學(xué)習(xí)過程中出現(xiàn)的不足,在學(xué)習(xí)中由于為了追求學(xué)得快,導(dǎo)致敲的代碼很少,所以很多的知識都不牢固,很容易忘記,每當(dāng)提到有關(guān)的問題是只知道但很難解決;需要通過很多時間去查資料。這樣讓我導(dǎo)致出現(xiàn)了不自信和有了不樂意敲代碼想法。所以我們學(xué)編程的要想滿足別人的要求,必須先滿足自己,多敲代碼,讓自己有實(shí)力有信心。

學(xué)生簽名:

日期:2014年4月15日

第二篇:1情境描寫—坦克大戰(zhàn)

坦克大戰(zhàn)

一.教學(xué)目標(biāo):學(xué)習(xí)新的形狀——六邊形,并運(yùn)用六邊形進(jìn)行繪畫。二.教學(xué)準(zhǔn)備:8開素描紙、油性筆、油畫棒。三.教學(xué)重點(diǎn):

重點(diǎn):運(yùn)用六邊形進(jìn)行繪畫。

難點(diǎn):顏色的搭配與填涂。

四.教學(xué)過程:

(一)導(dǎo)言:直接揭開主題并板書。

(二)新課教授:

1、老師先在黑板上畫出六邊形,并向?qū)W生講解六邊形是將長方形的四個角裁掉而得來的。

2、示范:

①用油性筆的左邊畫上一個扁扁的六邊形。在這個六邊形上面畫一個小一點(diǎn)的六邊

形,坦克的樣子就出來了。接著再給坦克加上一個蓋子,還有炮筒。最后再在大的六邊形 里面畫出一些圖形,作為輪子,將坦克的履帶部分畫完整。用同樣的方法再在右邊畫出另 一輛坦克。

②上色。用油畫棒將坦克和背景都涂上顏色。顏色要涂均勻些。

(三)作業(yè)布置:完成一幅以坦克為主題的圖畫。

五、小結(jié):作品展示,相互欣賞,教師引導(dǎo)評價。

第三篇:計算機(jī)實(shí)習(xí)報告(坦克大戰(zhàn)C++開發(fā))

實(shí)習(xí)報告

學(xué)

校:學(xué)院:專業(yè)班級:學(xué)號:姓名:

中南大學(xué)

信息科學(xué)與工程信息安全0801 0909080910 李亨

實(shí)習(xí)單位:湖南省軟件評測中心

實(shí)習(xí)內(nèi)容:C++游戲開發(fā)

實(shí)習(xí)時間:2011.9.21-2011.9.9

實(shí)習(xí)心得體會:

一轉(zhuǎn)眼為期3個星期的實(shí)習(xí)生活過去了,現(xiàn)在又開始了緊張的學(xué)校生活。回想自己的實(shí)習(xí)經(jīng)歷,感覺自己真的收獲不少。明年這個時候,我們就已經(jīng)離開校園,去社會上去打拼了。最大的心愿就是好好把握校園里的生活,盡量多的學(xué)習(xí)知識本領(lǐng),為以后的工作做足夠的儲備。而學(xué)校為我們組織安排的實(shí)習(xí),恰恰滿足了我們的需求,為我們提供了很好的鍛煉機(jī)會,使我們能充分有效的利用時間去時間鍛煉。真心感謝學(xué)校??!

實(shí)習(xí)的過程雖然有些辛苦,學(xué)校跟實(shí)習(xí)單位的距離還算是蠻遠(yuǎn)的,每天花在公交車上的時間大概有2個小時,而且每天都要一直呆在機(jī)房里面編程序和聽課。但是,令人欣慰的是,我們從短短3個星期的實(shí)習(xí)中,發(fā)現(xiàn)了很多自身的問題和不足,特別是專業(yè)知識上的匱乏,以及遇到編程問題時候的解決思路與方法。只有通過不斷的實(shí)踐才能知道自己水平的高低。有付出才會有收獲!實(shí)習(xí)單位的老師給人的印象非常好,他們總是不厭其煩的為我們答疑,細(xì)心的向我們傳授各種專業(yè)知識,耐心的給我們做專業(yè)的指導(dǎo)。更為重要的是,他們還為告訴我們一些從業(yè)經(jīng)驗(yàn)和做人的道理。

記得有位老師“咬文嚼字”的為我們分析了“贏”字的含義,上面的“亡”代表死亡,告誡我們要有死亡來臨的危機(jī)感;“口”代表口才,一個人必須要有一定的口才,這樣才能立于不敗之地;“月”代表時間,一寸光陰一寸金,寸金難買寸光陰,這讓我們懂得時間的寶貴性,不要蹉跎歲月,浪費(fèi)寶貴的青春;“貝”代表金錢,金錢不是萬能的,但沒有金錢是萬萬不能的,人必須駕馭于金錢之上,學(xué)會理財,懂得掙錢和花錢;“凡”表示著一顆平凡的心,高調(diào)做事,低調(diào)做人,時刻保持的謙卑平凡的態(tài)度,此所謂“滿招損,謙受益”也。

實(shí)習(xí)期間,我們的主要內(nèi)容就是C++的游戲開發(fā),以前從未做過游戲開發(fā),對游戲的引擎知識從未有過了解,老師認(rèn)真細(xì)致的向我們講解了引擎的知識,從簡到難,逐步帶領(lǐng)我們進(jìn)入游戲開發(fā)的領(lǐng)域。由于時間有限,我們只能做那種簡單的單機(jī)游戲,互聯(lián)網(wǎng)的游戲由于涉及到網(wǎng)絡(luò)模塊,需要花費(fèi)更多的時間跟精力,所以我們主要的研究方向就是2D單機(jī)游戲。游戲開發(fā)都是分組完成,每個小組都是4到6個人,我們這組是6個成員。我們選擇的項(xiàng)目是《坦克大戰(zhàn)》?!短箍舜髴?zhàn)》(Battle City)是一款經(jīng)典的老游戲了。是1985年日本南夢宮Namco游戲公司任天堂FC平臺上,推出的一款多方位平面射擊游戲。游戲以坦克戰(zhàn)斗及保衛(wèi)基地為主題,屬于策略型聯(lián)機(jī)類。同時也是FC平臺上少有的內(nèi)建關(guān)卡編輯器的幾個游戲之一,玩家可自己創(chuàng)建獨(dú)特的關(guān)卡,并通過獲取一些道具使坦克和基地得到強(qiáng)化。

? 開發(fā)組長管理編程、代碼審查、單元測試、集成測試、缺陷管理

與改錯等活動。

? 開發(fā)人員依據(jù)計劃編寫代碼,并對自己的代碼進(jìn)行必要的審查和

測試。

? 開發(fā)人員依據(jù)計劃審查、測試同伴的代碼。

我們分工明細(xì)之后,開始了各自模塊的工作。我要完成的任務(wù)是地圖的設(shè)計和障礙物的設(shè)計。其中涉及到圖片的加載,類的一些繼承知識,總體來說算是簡單。完成自己的內(nèi)容之后,我還協(xié)助組長完成總體框架的設(shè)計。

將游戲畫面底部作為一條數(shù)軸,劃分為22個部分。玩家輸入射擊仰角N,根據(jù)仰角N的不同,出現(xiàn)不同的爆炸效果(包括擊中對方獲勝)。程序給出一個隨機(jī)數(shù)M,作為敵對坦克的設(shè)計仰角,根據(jù)仰角M,出現(xiàn)不同的爆炸效果(包括擊中玩家致使玩家失?。?。

功能函數(shù)設(shè)計:

1.不同的效果畫面,包括背景顏色的輸出。

2.請玩家輸入設(shè)計仰角。

3.爆炸效果的判斷以及調(diào)用相應(yīng)的子函數(shù)。

4.判斷勝負(fù),并輸出相對應(yīng)的效果畫面。

5.游戲未分勝負(fù)時進(jìn)行循環(huán)。

函數(shù)調(diào)用流程

1.調(diào)用開頭畫面子函數(shù)

2.調(diào)用主要背景畫面函數(shù)

3.根據(jù)玩家射擊仰角調(diào)用對應(yīng)的爆炸畫面子函數(shù)

4.根據(jù)隨機(jī)給出的射擊仰角調(diào)用對應(yīng)的敵對的爆炸畫面的子函數(shù)

這次實(shí)習(xí)讓我受益匪淺。

剛開始做這個坦克設(shè)計游戲程序的時候,不知道從何入手,后來經(jīng)過仔細(xì)考慮后,畫了程序設(shè)計分析圖,把游戲的功能、流程和要求等羅列出來,程序才漸漸明晰起來,導(dǎo)致經(jīng)常漏了一些必要的步驟沒有編寫出來。重新安排好位置,使分配合理之后,整個程序需的結(jié)構(gòu)一目了然。使得編寫也變得很輕松。在最后的調(diào)試中,由于鑲嵌了一些小功能的程序語句,使得編寫出現(xiàn)了錯誤,個別功能沒有實(shí)現(xiàn),但是由于程序結(jié)構(gòu)的清晰,錯誤很快就找了出來,并給予更改。所以我認(rèn)為一個清晰明了的程序結(jié)構(gòu)很重要。這也為我以后自己做程序項(xiàng)目打下了基礎(chǔ),而其積累了不少程序設(shè)計的經(jīng)驗(yàn)。以后還要繼續(xù)加強(qiáng)專業(yè)知識的積累??!

第四篇:坦克大戰(zhàn)迭代式需求分析

坦克大戰(zhàn)

動手寫一個練習(xí)項(xiàng)目:

一.系統(tǒng)分析:

需求分析:

啟動游戲后:

1.展現(xiàn)出一個800*600的游戲界面,游戲界面不可調(diào)整大小,游戲界面點(diǎn)擊右上角的紅叉后關(guān)閉。

2.信息統(tǒng)計功能,在游戲界面左上角,當(dāng)前屏幕子彈數(shù),當(dāng)前敵軍坦克數(shù)。

3.我方坦克,顏色為紅色,形狀為原型,具有一個炮筒,和坦克的移動方向保持一致。

根據(jù)鍵盤的方向鍵,坦克的移動方向分為左、左上、上、右上、右、右下、下、左下。

當(dāng)按住Ctrl鍵的時候,能夠發(fā)送炮彈,多次按鍵,多次發(fā)送。

坦克有血量,滿血為100,每次被擊中,都會掉血10,直到0后,坦克死亡,游戲結(jié)束。

4.敵軍坦克

形狀:原型

顏色:藍(lán)色

移動:隨機(jī)移動

血量:當(dāng)被一發(fā)炮彈擊中的時候,立即死亡消失。

5.碰撞

當(dāng)子彈碰撞坦克時,子彈消失。

當(dāng)敵軍坦克碰撞到我方坦克時,敵軍坦克消失。

當(dāng)子彈碰撞到墻壁時,子彈消失,不可穿透墻壁。

當(dāng)坦克碰撞到坦克時,不可穿越。

當(dāng)坦克碰撞到四周的游戲界面時,不可走出游戲界面。

二.系統(tǒng)設(shè)計

1.目錄規(guī)范:

src/com/neusoft 下存放實(shí)體類。

涉及的類有:

TankClient:游戲的主類,其中包含了坦克,子彈,墻壁 Tank:坦克類 Missile:炮彈類

2.命名規(guī)范:

類名:首字母大寫,駝峰標(biāo)識。表示動作,要采用動詞。方法名:首字母小寫,駝峰標(biāo)識。靜態(tài)變量:全部大寫

以上,命名簡單含義明確,要做到見名知意。

3.工具及其環(huán)境

采用MyEclipse6.5進(jìn)行開發(fā),JDK1.6,windows2003操作系統(tǒng)。

三.開發(fā)計劃

1.采用迭代式開發(fā)

v1.完成游戲界面開發(fā),添加響應(yīng)事件,能夠關(guān)閉窗口。完成 完成 v2.我方坦克開發(fā),展現(xiàn)、移動。完成

v3.炮彈開發(fā),一枚炮彈從我方坦克發(fā)出,向屏幕下方飛去。完成 v4.按鍵發(fā)送炮彈,當(dāng)按住ctrl鍵的時候,炮彈才會發(fā)出去。完成 v5.炮筒開發(fā),隨著坦克的移動方向不同,炮筒的方向不同。完成

v6.基數(shù)統(tǒng)計,在主屏幕的左上角統(tǒng)計當(dāng)前游戲屏幕內(nèi)的炮彈數(shù)。完成

敵軍坦克開發(fā),敵軍坦克隨機(jī)移動,能夠發(fā)送炮彈。添加十輛坦克到游戲界面。v7.碰撞開發(fā),子彈碰到敵軍坦克時,坦克爆炸,消失,子彈消失。

v8.墻壁開發(fā),子彈遇到墻壁,消失,不可穿透,坦克遇到墻壁停止,調(diào)轉(zhuǎn)方向。v9.游戲細(xì)節(jié)限制,坦克之間不可穿越。我方坦克血條。游戲結(jié)束時候提示。

版本:

MyProject_001_TankWar版本:完成v1、v2、v3、v4、v5功能。MyProject_002_TankWar版本: 1.修改子彈畫圖方法,由原來的Tank類中移動到TankClient類中,降低耦合度。

2.解決“java.util.ConcurrentModificationException”bug,使用Iterator迭代器對子彈的容器進(jìn)行迭代,并調(diào)用Iterator自身的remove方法,取代容器自身的方法。3.滿足v6、v7 MyProject_003_TankWar版本:

添加十輛坦克到游戲界面。敵軍坦克隨機(jī)移動,能夠發(fā)送炮彈。解決敵軍炮彈自殘的問題。解決邊界問題,坦克無法走出游戲邊界。MyProject_004_TankWar版本:

1.使我方坦克可以被攻擊,被攻擊后掉血,每次掉 十分之一,直到死亡。2.增加血條,初始狀態(tài)滿血,每被攻擊一次,就會掉十分之一的血。MyProject_004_TankWar版本:

計劃完成,一鍵重新開始游戲。游戲結(jié)束提示。坦克大招,隨機(jī)血包。

項(xiàng)目筆記:

雖然工作了幾年,沒有仔細(xì)學(xué)過JAVASE,所以總是感覺自己基礎(chǔ)薄弱,其中的原因有自身的因素,也有外界因素,在大公司沒辦法,可能一個方向就夠你干很多年,機(jī)會少。這是我第一個認(rèn)認(rèn)真真自己寫的項(xiàng)目。

得到的收獲:

1.面向?qū)ο笏枷?,分析問題域,定義對象、方法。

2.開發(fā)的階段性,之前我的做法一般都是瀑布式,說實(shí)在的卻是如書上所說郁悶,干的滿頭大汗,都三而竭了,還沒看到成績,難免垂頭喪氣,影響士氣。感覺到了原型法的好處,寫項(xiàng)目分版本,快速建立原型,在此基礎(chǔ)上逐漸豐富,很好的開發(fā)方式,值得使用。3.了解到了持有對方引用,這種模式,很好,降低了耦合,增強(qiáng)了內(nèi)聚。

心中迷惑:

1.低耦合、高內(nèi)聚,這個概念還是模糊,不知道合適的力度,類與類之間,耦合度多低算低呢?除了持有對方引用,還有其他的辦法降低耦合度么?

2.總是感覺面向?qū)ο筮^程中,對象的確定和方法的確定很靈活、可以說不同的人有不同的看法,那么什么樣的設(shè)計才是完美,最優(yōu)的方案呢?

第五篇:拓展項(xiàng)目——坦克大戰(zhàn)

坦克大戰(zhàn)

明陽天下拓展

項(xiàng)目簡介

團(tuán)隊(duì)的所有成員在規(guī)定的時間和規(guī)則的約束下,進(jìn)行角色分配后,蒙上雙眼依次進(jìn)入模擬戰(zhàn)場,在躲避地雷的同時用炮彈盡可能的擊中對手,最終戰(zhàn)場剩余人數(shù)最多的小組獲勝。

項(xiàng)目規(guī)則

1、每隊(duì)隊(duì)員同時蒙眼進(jìn)入雷區(qū),聽由場外隊(duì)員指揮撿炮彈,中途如有觸碰地雷,該隊(duì)員視為中彈身亡,由下一名隊(duì)員頂替;

2、場內(nèi)隊(duì)員蒙眼聽從場外隊(duì)員的指揮,撿起炮彈,擊中對方隊(duì)員身體任意部位,即可淘汰對方隊(duì)員繼續(xù)存活;

3、場外隊(duì)員只能在限定的區(qū)域內(nèi)活動,不可觸發(fā)到其他組的區(qū)域;

4、最后場外留有人數(shù)最多組獲勝。

項(xiàng)目目標(biāo)

有效溝通,戰(zhàn)略與決策,在特殊的情況下如何和其他學(xué)員進(jìn)行有效溝通; 團(tuán)隊(duì)的力量如何發(fā)揮才能體現(xiàn)最大的力量; 怎樣才能是更合理的指揮方式; 默契程度和信任度的考驗(yàn)。

北京明陽天下拓展培訓(xùn)機(jī)構(gòu)是國內(nèi)體驗(yàn)培訓(xùn)領(lǐng)域的“黃埔軍?!?。在體驗(yàn)式培訓(xùn)、戶外教育理論、專項(xiàng)主題研究、軟件實(shí)操開發(fā)等軟件設(shè)施方面已走在行業(yè)前列;而硬件拓展設(shè)備、拓展器材、拓展設(shè)施設(shè)計建造和大型獨(dú)資實(shí)操基地等硬件設(shè)施方面同樣領(lǐng)先全國。強(qiáng)大的課程研發(fā)隊(duì)伍,與國際接軌的先進(jìn)培訓(xùn)理念,完善的硬件設(shè)備,優(yōu)越的服務(wù)意識,明陽天下拓展始終秉承“專業(yè)致勝,效果為王”的理念,為成千上萬的客戶打造專業(yè)化、高標(biāo)準(zhǔn)的拓展培訓(xùn)方案。

下載坦克大戰(zhàn)大報告word格式文檔
下載坦克大戰(zhàn)大報告.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點(diǎn)此處下載文檔

文檔為doc格式


聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報,并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

相關(guān)范文推薦

    坦克論文12

    陸戰(zhàn)之王—坦克 坦克之所以有“陸戰(zhàn)之王”的稱號是由于1916年6月24日英軍與法軍發(fā)起了索姆河戰(zhàn)役,在于9月3日發(fā)起的第三次進(jìn)攻中,英軍于9月15日第一次使用新式兵器——坦克.這......

    植物大戰(zhàn)僵尸分析報告

    植物大戰(zhàn)僵尸分析報告 一、市場空間 《植物大戰(zhàn)僵尸》以植物和僵尸之間的戰(zhàn)斗為主線,游戲簡單卻極富策略性,結(jié)合不同的游戲模式使整個游戲樂趣永無止境。并且,這款A(yù)PP對手機(jī)硬......

    大班健康活動《坦克》

    大班健康活動《坦克》(優(yōu)化教案) 設(shè)計意圖: 原教案選自幼兒園課程指導(dǎo)《坦克》。這個活動涉及到科學(xué)、健康兩個領(lǐng)域,但我們將重點(diǎn)放在健康領(lǐng)域,而健康活動的學(xué)習(xí)是通過體育活動提......

    坦克世界地圖戰(zhàn)術(shù)分析

    戰(zhàn)役地圖高階指南!坦克世界地圖攻略 第1頁:海岸爭霸 【地圖標(biāo)示地區(qū)戰(zhàn)術(shù)要領(lǐng)】 如圖所示,紅方主流開局是以少量精銳重坦和TD(加起來3個比較合適)在E點(diǎn)貼山布防,狙擊對手,主力中......

    《大戰(zhàn)火星人》讀后感

    《大戰(zhàn)火星人》讀后感 小時候,我一直認(rèn)為地球就是整個家鄉(xiāng)。后來上了小學(xué)才知道宇宙中的星球不計其數(shù),而我們生存的地球是千萬個星球中小小的一個,猶如空氣中微小的顆粒。例如......

    金字塔大戰(zhàn)(5篇范文)

    金字塔大戰(zhàn) “報告”。“金字塔以受威脅,囂張的僵尸們妄想統(tǒng)治整個人類部署,我們該怎么辦”。“馬上通知全體隊(duì)員立刻拿上生化武器去跟我一起消滅所有僵尸”。 我們每人拿了3......

    3Q大戰(zhàn)演講稿

    “3Q”大戰(zhàn)全程回顧: 第一回合:首次沖突;360警告QQ醫(yī)生打補(bǔ)?。?月,在用QQ醫(yī)生查詢時,360會彈出對話框,提示該補(bǔ)丁會造成系統(tǒng)異常,建議用戶不安裝。QQ醫(yī)生升級為電腦管家應(yīng)對:6月,騰......

    【熱門】大戰(zhàn)作文300字范文合集

    【熱門】大戰(zhàn)作文300字3篇在日常的學(xué)習(xí)、工作、生活中,大家都有寫作文的經(jīng)歷,對作文很是熟悉吧,通過作文可以把我們那些零零散散的思想,聚集在一塊。如何寫一篇有思想、有文采的......

主站蜘蛛池模板: 久久久无码精品亚洲日韩电影| 久久久国产精品无码免费专区| 亚洲色精品88色婷婷七月丁香| 国产xxxx做受视频| 午夜福利伦伦电影理论片在线观看| 久久精品国产成人av| 免费天堂无码人妻成人av电影| 无遮挡又黄又刺激又爽的视频| 动漫h无码播放私人影院| 无码av无码天堂资源网影音先锋| 国产人妻一区二区三区久| 内射精品无码中文字幕| 亚洲精品天天影视综合网| 久久亚洲日韩av一区二区三区| 超碰人人模人人爽人人喊手机版| 国精品人妻无码一区二区三区喝尿| 国产盗摄xxxx视频xxxx| 日韩v亚洲v欧美v精品综合| 久久综合亚洲色一区二区三区| 最新精品国偷自产在线老年人| 成人国产精品一区二区免费看| 亚洲男人av天堂男人社区| 亚洲欧美vr色区| 中文字幕日产乱码一区| 亚洲日韩性欧美中文字幕| 国产又黄又潮娇喘视频在线观看| 亚洲aⅴ在线无码天堂777| 日本大乳高潮视频在线观看| 狠狠色综合网站久久久久久久高清| 国产精品无码专区| 超碰国产天天做天天爽| 亚洲欧美精品午睡沙发| 中国凸偷窥xxxx自由视频妇科| 久久经精品久久精品免费观看| 中文字幕人妻偷伦在线视频| 亚洲中文无码成人手机版| 亚洲国产av一区二区三区四区| 中国杭州少妇xxxx做受| 欧美又黄又嫩大片a级| 四虎国产精品免费永久在线| 人妻 日韩精品 中文字幕|