Lehrer Nussbaumer - JAVA (eine kleine Einführung ;)

Grundlagen

GUI

Eingabe

Ausgabe

Applikationen

Applets

Servlets

Beispiele

Spiele

  1. Invert
  2. Tic-Tac-Toe
  3. Miner
  4. Wurm

IDEs

Skriptum

JAVA-DOCS


-----------------
letzte Änderung:
09 December 2021
-----------------
Lehrer Nussbaumers Seite

... in Arbeit ...

Einfache Spiele als Applets implementieren...

In diesem Abschnitt sollen einfache Spiele in Form von Applets zur Verfügung stehen. Notwendige Grundlagen dazu sind:

  • Applets verwenden können
  • Die Methode paint() verwenden können
  • Tastatur-Ereignisse ("KeyEvents") abfragen und auswerten können
  • Spielstatus speichern können (z.B. 2-dimensionale Arrays einsetzen können)

Beispiel: move

In einem einfachen Beispiel soll lediglich ein Cursor über den Bildschirm bewegt werden:

Code

import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.util.Random;

public class move extends Applet {
    
    private int k [][] = new int[50][30];   // Spielfeld, 50 x 30 Positionen
    private int counter;                    // Zähler für Cursorbewegungen
    private int xpos;                       // Cursorposition x-Koordinate
    private int ypos;                       // Cursorposition y-Koordinate
    private String mitteilung;              // Ausgabe von Meldungen
    private int spielstand;                 // Spielstand
    
    // Konstruktor
    
    public move() {                    
        
        // Spielfeld-Array initialisieren
        
        for (int i=0; i<50; i++) 
            for (int j=0; j<30; j++)
                k[i][j] = 0;
        
        // Alle anderen Klassenvariablen initialisieren
        
        counter = 0;
        xpos = 25;
        ypos = 15;
        mitteilung = "have a lot of fun";
        spielstand = 0;          
    }
    
    // Initialisierung des Applets
    
    public void init() {
        zufallszahl();
        this.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(KeyEvent e) {
                taste(e);
            }
        }); 
    }

    // Zufallszahl positionieren
    
    public void zufallszahl() {
        Random r = new Random();    
        int xposr;
        int yposr;
        xposr = r.nextInt(48)+1;
        yposr = r.nextInt(28)+1;
        k[xposr][yposr]=(r.nextInt(9)+1);         
    }
    
    // KeyEvent abfragen
    
    public void taste(KeyEvent e) {
        switch (e.getKeyCode()) {
            case 37:                // Pfeiltaste nach links
                xpos--;
                break;
            case 38:                // Pfeiltaste nach oben
                ypos--;
                break;
            case 39:                // Pfeiltaste nach rechts
                xpos++;
                break;
            case 40:                // Pfreiltaste nach unten
                ypos++;
                break;
            default:
        }
        counter++;                  // Zähler für Cursorbewegungen erhöhen
        check();                    // Spielgeschehen überorüfen
        repaint();                  // Spielfeld neu ausgeben
    }
    
    // Was ist beim Spielen passiert ?
    
    public void check() {
        if ((xpos < 0) || (ypos < 0) || (xpos >= 50) || (ypos >= 30)) ende();
        else if (k[xpos][ypos] > 0) {
            spielstand += k[xpos][ypos];
            k[xpos][ypos] = 0;
            zufallszahl();
        }
    }
    
    // Spielende erreicht
    
    public void ende() {
        mitteilung = "und aus!";
        for (int i=0; i<50; i++) 
            for (int j=0; j<30; j++) 
                k[i][j]=-1;
    }
    
    // Ausgabe 
    
    public void paint (Graphics bs) {
        Color ly = new Color(255,255,245);
        bs.setColor(ly);
        bs.fillRect(0,0, 500, 300);
        for (int i=0; i<50; i++) {
            for (int j=0; j<30; j++) {
                if (k[i][j]==-1) {
                    bs.setColor(Color.red);
                    bs.fillRect(i*10,j*10, 8,8);
                }
                if ((k[i][j]>0) && (k[i][j]<10)) {
                    bs.setColor(Color.blue);
                    bs.drawString(" " + k[i][j], i*10-4, j*10+9);
                }
            }
        } 
        bs.setColor(Color.green);
        bs.fillRect(xpos*10, ypos*10, 8,8);
        bs.setColor(Color.black);
        bs.drawString(mitteilung, 10, 330);
        bs.drawString(counter + " Züge", 10,345);
        bs.drawString("Spielstand: " + spielstand, 100, 345);
    }
}

  • Invert

    9 Quadrate können "umgedreht" werden - zufällig viele liegen schon verkehrt. Das Ziel ist es, alle 9 Quadrate umgekehrt zu haben - allerdings dreht man mit jeder Zifferntaste immer gleich mehrere, benachbarte Objekte um... jetzt spielen

  • Miner

    Steuere mit den Pfeiltasten deinen Cursor auf eine Zahl - du bekommst ihren Wert als Guthaben. Aber Vorsicht: Stoße an keine Barrieren (die übrigens im Verlauf des Spieles immer mehr werden); außerdem knabbert die Zahl der Spielzüge an deinem Spielstand... Barrieren kannst du mit der <SPACE>-Taste wegbomben - aber das kostet natürlich; nämlich gleich 10 Punkte. Vermutlich ist das Spiel ein gutes Beispiel dazu, dass "Bäume nicht in den Himmel wachsen" ;-) jetzt spielen

  • Wurm

    Wurm ist ähnlich dem bekannten "SnakeRace", aber doch ein bisschen anders ;-) jetzt spielen

  • Tic-Tac-Toe

    Das alte Spiel in einer einfachen Spielstärke... jetzt spielen

Und nun: Have a lot of fun ;-)


© Alfred Nussbaumer, Weblog "MiniNuss"