JAVA小白的第二個專案 飛機大戰分步驟理解流程

2021-08-20 09:57:26 字數 4101 閱讀 3170

飛機大戰是整合這乙個月實訓以來的成果,其中包括了所學的封裝,繼承,多型,方法的過載等多個知識點構成的一款簡單的小遊戲。經過乙個禮拜的時間將此專案完成,由多個模組組成。
這個**我們一共需要建立7個類

import android.graphics.bitmap;

import android.graphics.canvas;

import android.graphics.paint;

public

class

background

public

void

draw(canvas canvas,paint paint)

public

void

logic()

if (y2>=mysu***ceview.height)

}}我們需要建立乙隻畫筆,鎖定畫布

並在mysu***ceview中建立run方法

public void run() 

public

bullet()

public

void

draw(canvas canvas, paint paint)

public

void

logic()

break;

//boss子彈

case

1: y += speed+8;

if (y < 0)

break;

default:

break;}}

public

boolean

isdead()

public bitmap getbitmap()

public

intgetx()

public

intgety()

public

void

setdead(boolean dead)

}**片

這是在mysu***cview中如何呼叫bullet類,並且進行例項化,用迴圈語句實現執行

這一段**是在開始建立子彈的陣列

private vectorbulletvector = new vector <>();

private vectorbossbulletvector = new vector <>();

private vectorboomvector = new vector <>();

public void run() 

for (int i = 0

;i if (bulletvector.elementat(i).isdead())

}for (int i = 0

;i bulletvector.elementat(i).draw(canvas,paint);

if (bossplane.iscollision(bulletvector.elementat(i)))

}for (int i=0

;i if (boomvector.elementat(i).isdead())else

}if(count%40==0)

for (int i = 0

;i < bossbulletvector.size(); i++)

}for (int i = 0

;i < bossbulletvector.size(); i++)

plane.iscollision(bossplane);

break

; case 1:

rectf rectf1 = new rectf(0,0,getwidth(),getheight());

canvas.drawbitmap(bitmapfactory.decoderesource(getresources(),r.mipmap

.gamewin),null,rectf1,paint);

break

; case 2:

rectf rectf = new rectf(0,0,getwidth(),getheight());

canvas.drawbitmap(bitmapfactory.decoderesource(getresources(),r.mipmap

.gamelost),null,rectf,paint);

break

; }

} catch (exception e) finally

}

以上這一段是完整的一段run方法,裡面有子彈的繪製,還有如何執行程式,下面這一小段**就是如何在mysu***ceview裡如何繪製子彈

bullet bullet = new bullet(bitmapfactory.decoderesource(getresources(), r.mipmap

.bossbullet),bossplane.getx()+bossplane.getframew()/2,bossplane.gety()+bossplane.getframeh(),1);

//bullet bullet1 = new bullet(bitmapfactory.decoderesource(getresources(), r.mipmap

.bossbullet),bossplane.getx()+bossplane.getframew(),bossplane.gety()+bossplane.getframeh(),1);

bossbulletvector.add(bullet);

// bossbulletvector.add(bullet1);

例項化,然後將子彈繪製出來

如何判斷碰撞

在飛機大戰中碰撞分為兩種,飛機與飛機的碰撞,能夠子彈與飛機的碰撞,而這一段也是非常重要的,我們需要知道飛機的位置,get到飛機的位置,當我方飛機碰撞到敵方飛機的頂部,或子彈打到時,敵方飛機有**效果(**效果如何實現,下文會寫),左右時,我方飛機進行閃爍,同樣,當敵方子彈闖入我方飛機的範圍內,我方飛機閃爍,並且減少血量

在myplane中建立兩個方法 nocollision(boss),iscollision(myplane)

並用if語句進行條件判斷如果碰到血量就–

public

void

draw(canvas canvas,paint paint)

if (nocollision)

if (nocollisioncount>100)

}else

for (int i = 0; ipublic

void

touchevent(motionevent event)

if(y+height>mysu***ceview.height)}}

```` public boolean iscollision(bullet bullet)else

return

true;}}

return

false;

}上面的這兩段**實現的判斷碰撞,然後不同的飛機的不同反應

"se-preview-section-delimiter">

####如何繪製**效果

當飛機子彈打到敵方飛機時會有**效果,我們需要新建乙個bomm類

"se-preview-section-delimiter">

import android.graphics.bitmap;

import android.graphics.canvas;

import android.graphics.paint;

public class boom extends bullet

public void draw(canvas canvas, paint paint)

public void logic()

public

void

playsound(int s) }}

第二個專案總結

這個專案是製作乙個學院的簡單新聞 使用了html 5 css 3,以及相關的jquery外掛程式 輪播圖 進行搭建。布局方面因為不考慮響應式布局,因此沒有使用float屬性,而是利用display inline block屬性進行布局。1 webkit 對應chrome safari瀏覽器 2 mo...

第二個專案 多執行緒

建立執行緒 handle hthread1,hthread2 hthread1 createthread null,0,func1pro,this,0,null hthread2 createthread null,0,func2pro,this,0,null static dword winapi...

第二個作業!

作業要求 從鍵盤輸入乙個四位正整數。首先分離出該正整數中的每一位數字,並按逆序顯示輸出各位數字 然後用分離出的每位數字組成乙個最大數和乙個最小數,並顯示輸出。例如,若輸入的四位正整數為3175。按逆序顯示輸出分離出的各位數字為5713 組成的最大數為7531,組成的最小數為1357。具體要求 1 輸...