D
dankefuereurehilfe
Neues Mitglied
- 0
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 Klasse:
Game-View Klasse
MainActivity Klasse
Tube Klasse
activity_main.xml
Finde leider den Fehler nicht.
Flappy-Bird Klasse:
Code:
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;
}
}
Game-View Klasse
Code:
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);
}
}
}
MainActivity Klasse
Code:
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;
}
});
}
}
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;
}
}
}
activity_main.xml
Code:
<?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>
Zuletzt bearbeitet: