日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Ubuntu >内容正文

Ubuntu

Ubuntu运行坦克大战

發布時間:2024/8/1 Ubuntu 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ubuntu运行坦克大战 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?? stackoverflow看到那個java處處運行的笑話,一點都不好笑。


?? 運行環境ubuntu12。代碼參照馬士兵老師,后面再自己完善的一些小功能。


?? 運行 ubuntu,進行vsftpd,ssh,jdk等等一系列的安裝和配置。


?? 本來是寫實驗報告的,當是對jse的復習把整個大致的流程重新寫了一次。


1.

使用awt這個抽象窗口工具,先畫出基本的邊框,再畫出一個小方塊,對鍵盤進行監聽,上下左右按下時分別更,改了小方塊的坐標,新建一個線程類實現runnable接口,鍵盤一旦敲入便啟動線程,repaint畫布,調用repaint()方法時,系統會自動調用update()方法,update方法為的是將背景和圖片重畫。

?

2.

新建坦克類,用枚舉類型存入八個方向,斜方向還有上下左右。還有停止。主要增加鍵盤按鈕的抬起和按下。

?

3.

新建一個炮彈類,cannon,其實和坦克一個道理 ,按下z鍵之后炮彈沿著下方向發射,就是線程啟動之后不停的repaint。

4.

畫出炮管,只要根據紅色方塊的坐標和方向,將坦克的方向作為一個參數傳入大炮cannon類,這樣發出的大炮的方向就和坦克方向一致了。

5。

如果為了不讓讓炮彈連發,可以在鍵盤抬起的時候再發射,左上角

g.drawString("Cannon Number:"+cannons.size(), 20, 50);

在左上角記錄發射過的炮彈的數目。用個集合arraylist存取new出來的炮彈對象即可,拿到arraylistsize即為坦克發射炮彈數目。

6.

之前的坦克是可以穿過窗口,因為坐標沒有限制,當坦克靠觸碰到窗口后,把坦克的坐標定格在窗口的坐標減去坦克自身的長寬即可。

還有炮彈的數目不是一直計算,當炮彈越界后應當不用計算,所以添加坐標判斷,remove掉炮彈對象。

敵人坦克顏色應該和我方區別,這樣在類中可以加入一個boolean變量,再傳入構造方法中,根據這個變量畫出不同顏色。

炮彈打到坦克消失,當時想了好久,沒想到有個封裝的很好的touch方法,要讓坦克和炮彈同時消失,那就要多一個變量,live,如果變量為false,在paint的時候就將其remove掉。

???

<span style="font-size:18px;">public Rectangle touch(){return new Rectangle(x,y,length,width); }public boolean whetherhit(Tank tank){if(this.touch().intersects(tank.touch())&& tank.isLive()){tank.setLive(false);this.setLive(false);return true;}return false;}</span>

?

7.

添加explore類,爆炸,boom!!!

爆炸效果的模擬,可以用從小到大再變小的圓模擬,就在碰撞的時候,new出explore,畫出不同的圓圈。

?

8.

New出10輛敵方坦克,

新建wall墻類,同樣利用碰撞,敵方不能穿墻,這里有個很美妙的算法,單純寫碰撞后,坦克就貼在墻上不動了,所以我們要記錄撞墻前一刻的坐標,撞上后進行返回,

分配隨機參數,使得坦克隨機發炮。

而邊框的話已經限制了坐標,所以隨機改變坐標之后是不會粘在邊框上的。

而讓坦克間不相互撞上,和撞墻一個道理,只要讓坦克之間進行碰撞的檢測即可,遍歷一下所有的坦克。??

<span style="font-size:18px;">public boolean tanktank(List<Tank> tanks ){for(int i = 0; i<tanks.size();i++){Tank t = tanks.get(i);if(this != t){if(this.touch().intersects(t.touch())&& t.isLive() && this.live){//this.fantan();t.fantan();return true;}} }returnfalse;}</span>

?

9。

還記得小時候紅白機的坦克有很強的炮彈還有不止一條命。我們給自己的坦克添加血條blood這個變量。定義為100,中一彈扣10點血。

絕招的話,因為可以朝八個方向放出炮彈,所以直接讓它一次性發出。



10.

扣血之后,一旦死掉就不好玩了,可以加一個禮物,吃完補血,畫出一個小方塊,利用touch方法,吃到之后blood變回100.

改進:

死掉之后可以F1可以原地復活。

同時增加關數這個變量,一共三關,同時,每加一關,增加一輛坦克,增加難度。

當敵方全消滅時,把所有炮彈去除,進入下一關。

三關結束后出現Victor,按F2退出游戲。

死掉后:


勝利!



11.

最終的圖片版。其實就是在原有圖形的基礎上覆蓋上圖片。

g.drawImage(m.get("ld"), x, y,null);

由于圖片素材大小切得不好,經過細節的一些調整還是可以調節的比較好的。

?

平臺只是取巧罷了,當時主要還是學習jse的很多東西。雖然這不是自己寫的東西,但是確實自己一路敲過來的,改進之后,對編程的喜愛又多了一大截。

之后懂得圖形界面的使用之后便自己寫個俄羅斯方塊了。


最后是失敗了,思路錯了。。。。


?項目結果:







總結

以上是生活随笔為你收集整理的Ubuntu运行坦克大战的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。