Android Studio飛機大戰遊戲部分詳解

2021-08-20 09:57:26 字數 2636 閱讀 5800

##●整體設計思路:

用android studio製作遊戲;先做遊戲的背景,我方的飛機是一直向前走的所以背景也需要一直迴圈,只要用兩張就行了,當一張列印結束另一張也緊隨而來,如此反覆的迴圈,便達到了背景一直在動的迴圈。第二個就是列印我方的戰機了,定義乙個繪製圖形,新建乙個myplane的我方戰機類,在飛機類中定義飛機的初始位置,做乙個觸碰的方法讓戰機跟著手指的移動而移動,然後在mysu***ceview呼叫列印就行了;接著新建乙個bossplane的boss飛機類,和myplane一樣設定初始位置,但是boss需要有其他的動作,這個就是自己手動新增了,比如加乙個衝撞的方法。接著就是我方戰機和boss的子彈了,然後設計我方子彈擊打在boss身上和boss子彈擊打我方戰機以及boss衝撞等技能對我方戰機的後果;最後還要加上子彈的聲音以及遊戲的背景**。大致思路就是這樣,還有許多細節需要完善。

定義乙個背景類;定義物件和兩個y和y1的物件;因為要實現背景的迴圈滾動嘴上需要兩張,當一張開始滾動之後,另一張隨之而來,所以第二張的y1位置要等於第一張y的位置減去一張的高度。在mysu***ceview呼叫。

public backgroud(bitmap bitmap)
接著定義乙個方法來列印它們的初始位置;接著定義乙個邏輯方法,讓迴圈滾動,上述當第一張開始滾動的時候,第二張也要跟著滾動,便如下圖

public void logic()

if(y2>=bitmap.getheight())

}

這樣便實現了的迴圈滾動。

##●如何繪製飛機

定義乙個飛機類;還是和背景類一樣,定義物件和x,y橫座標,縱座標,還有高度和寬度物件;列印構造方法。設定飛機的初始位置,定義乙個touchevent的方法,當手指觸碰飛機的時候,是指移動讓飛機也跟著移動。如果是boss飛機,需要設定boss的行動方式,還需要新增boss的一些技能。在mysu***ceview呼叫即可。

public void touchevent(motionevent event) 

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

}

##●如何繪製子彈

定義乙個子彈類,**物件,新增x,y橫座標,還有子彈的飛行速度;定義方法列印子彈的初始位置;定義乙個logic邏輯類,使用swicth來區分boss子彈和戰機子彈,以及boss子彈的飛行方向和戰機子彈的飛行方向,它們是相反的。最後在mysu***ceview呼叫。

public void logic() 

break;

//boos子彈

case 1:

y += speed;

if (y < 0)

break;

}}

##●如何判斷碰撞

我做得此遊戲當前碰撞有3種:戰機被boss碰撞;戰機子彈碰撞boss;boss子彈碰撞到戰機。

它們原理都是一樣的:1.當戰機的y座標小於boss的y+boss的高度,並且戰機y+戰機高度大於boss的y左標時,便開始判斷: 1.戰機x座標小於bossx座標並且戰機x+戰機寬度大於boss 的x座標,便得出戰機與boss左側碰撞;2.當戰機x大於boss的x並且戰機x+寬度小於boss的x+boss的寬度,便得出戰機與bosss 中間碰撞;3.當戰機大於boss的x座標並且戰機x+寬度大於boss的x+boss的寬度,便得出右邊碰撞;這是戰機與boss碰撞。

if(ybossplane.gety() )

return true;

}if (x > bossplane.getx() && x+width < bossplane.getx() + bossplane.getframew())

return true;

}if (x > bossplane.getx() && x+width > bossplane.getx()+bossplane.getframew())

return true;

}}

戰機子彈碰撞boss:當戰機子彈x大於boss的x座標,並且戰機子彈的x+子彈的寬度小於boss的x+boss的寬度並且戰機子彈y大於boss的y座標,並且戰機子彈y小於boss的y+boss的高度。便判斷出戰機子彈與boss碰撞,boss掉血。

//我方戰機子彈與boss飛機碰撞

public boolean iscolision (bullet bullet)

return true;

}

for(int i=0;i##●如何新增音效:

建立乙個gamesoundpool類;新增物件,匯入**用於呼叫;switch來判斷使用哪乙個**。在需要音效的後面呼叫即可。

public class gamesoundpool

public void playsound(int s)

}}

##●哪些地方用到封裝、繼承、多型、方法過載、介面等:

主程式的mysu***ceview使用了繼承su***ceview和實現了 su***ceholder.callback,runnable介面;

每個類中需要在自己類使用的物件都需要使用封裝,比如:每個的x,y的座標和一些需要使用的標誌位;

飛機大戰 3

今天主要是敵方飛機的建立,下落 前面已建飛機的父類call 2 敵方飛機 function enemyplane hp,x,y,sizex,sizey,score,dietime,sudu,bombplane,srcimage 敵方的飛機型別分為大中小,要隨機下落 飛機的隨機下落,大中小飛機出現頻率...

飛機加油問題

已知 每個飛機只有乙個油箱,飛機之間可以相互加油 注意是相互,沒有加油機 一箱油可供一架飛機繞地球飛半圈,問題 為使至少一架飛機繞地球一圈回到起飛時的飛機場,至少需要出動幾架飛機?所有飛機從同一機場起飛,而且必須安全返回機場,不允許中途降落,中間沒有飛機場 答案 最小需要5架飛機。思路 a 起飛點 ...

飛機大戰 一

圖1 遊戲開始 圖2 英雄機,子彈,敵機和小蜜蜂 圖4 遊戲結束 圖5 遊戲暫停 由圖2可以看出遊戲中至少有4個類,hero 英雄機 airplane 敵機 bee 小蜜蜂 bullet 子彈 圖6注 圖6中,英雄機,子彈,敵機和小蜜蜂均為矩形,所以會有x座標和y座標 會在程式中有體現 1.建立4個...