Hallo, habe eine App erstellt, aber ich kann die nicht beim Emulator finden? Habe 4 Klassen erstellt und dann noch im res Ordner einfach einen layout ordner und in der eine XML-Datei, die ich noch weiter verwendet habe. Alle Klassen + die XML-Datei habe ich eingefügt.
Finde leider den Fehler nicht.
Flappy-Bird Klass
Java
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import java.util.List;
public class FlappyBird {
// Initialisieren Sie das Flappy Bird-Spielobjekt private Bitmap bitmap; private int x, y; private int velocity; private int screenHeight, screenWidth; private int gravity;
public FlappyBird() { // Setzen Sie die Anfangsposition und Geschwindigkeit des Flappy Bird-Spielobjekts x = 50; y = 250; velocity = 0;
// Setzen Sie die Schwerkraft des Flappy Bird-Spielobjekts gravity = 3; }
// Zeichnen Sie das Flappy Bird-Spielobjekt public void draw(Canvas canvas) { Paint paint = new Paint(); canvas.drawBitmap(bitmap, x, y, paint); }
// Aktualisieren Sie das Flappy Bird-Spiel public void update() { // Ändern Sie die Höhe des Flappy Bird-Spielobjekts basierend auf der Geschwindigkeit und der Schwerkraft y += velocity; velocity += gravity;
// Verhindern Sie, dass das Flappy Bird-Spielobjekt den Bildschirm verlässt if (y < 0) { y = 0; } else if (y > screenHeight - bitmap.getHeight()) { y = screenHeight - bitmap.getHeight(); } }
// Verarbeiten Sie den Flappy Bird-Sprung public void jump() { // Verringern Sie die Geschwindigkeit des Flappy Bird-Spielobjekts, um es in die Höhe zu befördern velocity = -30; }
// Setzen Sie die Bildschirmgröße für das Flappy Bird-Spiel public void setScreenSize(int width, int height) { screenWidth = width; screenHeight = height; }
}
Alles anzeigen
Game-View Klasse
Java
package com.example.flappybird;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.View;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class GameView extends View {
// Initialisieren Sie das Flappy Bird-Spiel und die Röhren
private FlappyBird flappyBird;
private List<Tube> tubes = new ArrayList<>();
// Initialisieren Sie den Zufallszahlengenerator
private Random random = new Random();
public GameView(Context context) {
super(context);
}
// Zeichnen Sie das Flappy Bird-Spiel
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// Zeichnen Sie das Flappy Bird-Spielobjekt
flappyBird.draw(canvas);
// Zeichnen Sie die Röhren
for (Tube tube : tubes) {
tube.draw(canvas);
}
}
}
Alles anzeigen
MainActivity Klasse:
Java
package com.example.flappybird;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
import java.util.Timer;
import java.util.TimerTask;
public class MainActivity extends AppCompatActivity {
// Initialisieren Sie das Spielfeld und das Flappy Bird-Spiel
private GameView gameView;
private FlappyBird flappyBird;
// Initialisieren Sie den Timer
private Timer timer = new Timer();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Initialisieren Sie das Spielfeld
gameView = findViewById(R.id.game_view);
// Erstellen Sie ein neues Flappy Bird-Spiel
flappyBird = new FlappyBird();
// Setzen Sie den Timer auf eine feste Rate von 30 FPS
timer.schedule(new TimerTask() {
@Override
public void run() {
flappyBird.update();
gameView.invalidate();
}
}, 0, 33);
// Setzen Sie den OnTouchListener für das Spielfeld, um die Flappy Bird-Sprünge zu verarbeiten
gameView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
flappyBird.jump();
return false;
}
});
}
}
Alles anzeigen
Tube-Klasse
Code
package com.example.flappybird;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
public class Tube {
// Initialisieren Sie die Röhre
private Bitmap bitmap;
private int x, y;
private int screenWidth;
public Tube(int screenWidth) {
// Setzen Sie die Anfangsposition der Röhre
x = screenWidth;
y = 0;
// Setzen Sie die Bildschirmgröße für die Röhre
this.screenWidth = screenWidth;
}
// Zeichnen Sie die Röhre
public void draw(Canvas canvas) {
Paint paint = new Paint();
canvas.drawBitmap(bitmap, x, y, paint);
}
// Aktualisieren Sie die Röhre
public void update() {
// Verschieben Sie die Röhre nach links
x -= 10;
// Wenn die Röhre den Bildschirm verlässt, setzen Sie sie wieder auf die rechte Seite
if (x < -bitmap.getWidth()) {
x = screenWidth;
}
}
}
Alles anzeigen
activity_main.xml
XML
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.example.flappybird.GameView
android:id="@+id/game_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
Alles anzeigen