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