Wie programmiert man eine Spiele-App in Java?
In diesem Beispiel zeige ich, wie eine Spiele-App für Android in Java programmiert wird.
Zunächst erstellen wir ein Layout in der Datei activity_main.xml, bestehend aus zwei Schaltflächen -Buttons- und dem Spielfeld.
Die Buttons sollen nebeneinander über dem Spiefeld erscheinen. Dazu werden sie in ein horizontales LinearLayout gepackt.
Dieses LinearLayout packen wir zusammen mit der Spielfläche in ein übergeordnetes LinearLayout mit vertikaler Ausrichtung.
Das Spielfeld nennen wir zeichenFlaeche.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="8dp">
<Button
android:id="@+id/buttonLinks"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginEnd="4dp"
android:layout_marginTop="20dp"
android:text="New Object" />
<Button
android:id="@+id/buttonRechts"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginStart="4dp"
android:layout_marginTop="20dp"
android:text="Button 2" />
</LinearLayout>
<de.siebenberge.beispiel.ZeichenAnsicht
android:id="@+id/zeichenFlaeche"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>
Wir erstellen eine Klasse ZeichenAnsicht. Diese Klasse verwenden wir, um auf die Zeichefläche zu zeichnen.
Hier stellen wir später unsere Spielobjekte dar. Momentan wird einfach nur eine blaue Kreisfläche in die Mitte gezeichnet. Die Klasse Zeichenansicht verwendet die Datei ZeichenAnsicht.java.
package de.siebenberge.beispiel;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;
public class ZeichenAnsicht extends View {
private Paint pinsel;
// Konstruktoren, die Android Studio benötigt, um die View im Layout anzuzeigen
public ZeichenAnsicht(Context context) {
super(context);
init();
}
public ZeichenAnsicht(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
pinsel = new Paint();
pinsel.setColor(Color.BLUE); // Beispielfarbe für das Zeichnen
pinsel.setAntiAlias(true);
pinsel.setStrokeWidth(5f);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// Hier wird gezeichnet!
// Hintergrundfarbe der Zeichenfläche:
canvas.drawColor(Color.LTGRAY);
// Beispiel: Ein Kreis in der Mitte der Fläche zeichnen
float x = getWidth() / 2f;
float y = getHeight() / 2f;
float radius = 100f;
canvas.drawCircle(x, y, radius, pinsel);
}
}
Nun kommen wir noch zur MainActivity.
Wir definieren meineZeichenflaeche vom Typ ZeichenAnsicht und die Schaltflächen btnLinks und btnRechts vom Typ Button.
In onCreate weisen wir dem ContentView unsere activity-main zu.
Dann folgen die Zuweisungen für meineZeichenflaeche und die Schaltflächen.
Sonst passiert zunächst noch nichts weiter. Dies werden wir in Beispiel 2 ändern, welches demnächst folgt.
package de.siebenberge.beispiel;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private ZeichenAnsicht meineZeichenFlaeche;
private Button btnLinks, btnRechts;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
meineZeichenFlaeche = findViewById(R.id.zeichenFlaeche);
btnLinks = findViewById(R.id.buttonLinks);
btnRechts = findViewById(R.id.buttonRechts);
}
}
So sieht der Bildschirm nun aus.
Oben die zwei Schaltflächen, darunter die Zeichefläche mit einem blauen Punkt.
Im nächsten Beispiel kommt dann Bewegung ins Spiel!