あなたの質問は、スタック オーバーフローには一般的すぎて、誰もあなたのプロジェクトをやってくれません。基本的なプログラミングの経験があると仮定すると、本を入手して最初にそれを学ぶ必要はありません。
タグのために既に Android を選択したと仮定し、2D ゲームの方が簡単であると仮定します。
事前リクエスト: まだインストールしていない場合は、java+eclipse+android sdk をインストールしてください。新しいプロジェクトを作成し、月着陸船の例を使用します。携帯電話またはエミュレーターで実行できることを確認してください。
開始サンプル: 月着陸船にはゲーム ループと別のスレッドがあり、常に画面全体を再描画します。これは、常に doDraw 関数を呼び出すことによって行われます。次に、キャンバスを使用して線、円、ボックス、色、およびビットマップを描画して、ゲームに似せます。(canvas.draw....) Lunar Landar は openGL を使用しないため、速度は遅くなりますが、はるかに簡単に使用できます。
サンプルの剥ぎ取り: おそらくキーイベントや月面宇宙船は必要ありません! onDraw 関数内のすべてを削除する onKeyUp、onKeyDown を削除する 発生したエラーをすべて削除する 新規作成する
@Override
public boolean onTouchEvent(MotionEvent event){
return false;
}
実行すると、空白の画面が表示されます。これがゲームの作成を開始するためのキャンバスです... ボールについて言及しましたが、ボールが何であるかに分解します: 位置と方向、ボール x、y の変数を作成し、タッチ イベントはボールの方向を変更し、ドロー イベントはボールを動かし (x,y 方向をボール x,y に追加)、ボールを描画します (canvas.drawCircle(x,y,radius,new) Paint())) は、より多くのボールを検索して配列について読みたいと考えています。最も重要なことは、簡単に始めて実験することです。
2回の衝突
衝突は dodraw 関数で行うことができ、次のように分類されます: オブジェクトを移動し、そのオブジェクトが移動するはずの場所を通過したかどうかを確認し、通過した場合は誰かが気付く前に元に戻します.... 衝突検出にはさまざまな手法があります。 :
壁がすべて水平および垂直 (最も簡単) である場合、ボックスの衝突はボールの新しい x,y+-radius を壁 x,y,width および height に対してチェックします。これは 1 つの大きな if ステートメントであり、Google には数十億の例があります。
壁が傾いている場合は、線の衝突検出が必要です。基本的には、ボールが向かっている場所の線 (ベクトル) と壁のベクトルがあり、2 つの線が衝突する場所を確認し、その点が両方とも壁にあるかどうかを確認する関数を作成します。そしてあなたのボールの半径内(グーグルライン交差点機能)
または、カラーピッキングを使用できます。たとえば、すべての壁が赤であることを知ってシーンを描画し、新しいボール x、y がある点が赤であるかどうかを確認し、ヒットしたことを認識します。
頑張ってください。これが少し役に立てば幸いです。シンプルにして試行錯誤を続けてください。うまくいけば、これで始められ、次の質問がより具体的になる可能性があります。