Java – die besten Beiträge

Gibt es eine Methode in Java, mit der Tastendruck abgefragt werden kann?

Guten Abend,

ich arbeite momentan an einem Projekt für die Schule, nämlich Pong (https://de.wikipedia.org/wiki/Pong), für welches ich die sogenannte Shapes and Sprites Bibliothek verwende, welche für zweidimensionale Projekte im Rahmen des schulischen Unterrichtes gedacht ist.

Soo, nun habe ich das grundlegende Spiel fertig programmiert und bin gerade dabei, einige neue Features zu implementieren, zu denen unter Anderem ein Computergegner gehört. Um das zu realisieren habe ich mir gedacht, dass wenn der Benutzer die Taste c drückt, der rechte Schläger nicht mehr über die Pfeiltasten (Über diese wird der Schläger nämlich bedient) erreichbar ist. Nun besteht die Möglichkeit, mittels der Methode tastaturobjekt.isPressed('c') abzufragen, ob die Taste c gedrückt wird.

Nun habe ich sowohl mit einem Integer computer = 0, dessen Wert einfach um 1 erhöht wird, wenn c gedrückt wird, als auch mit einem Boolean, über eine If-Verzweigung mit der Bedingung, dass der Integer-Wert = 0 bzw der Boolean istGedrueckt = false ist, den Schläger angewiesen, bei Druck der Pfeiltaste gedrückt zu werden, also quasi wie folgt:

 if(tastatur.down() && schläger2.getShapeY()<495 && (istGedrueckt == false)){
        schläger2.move(0,10);
    }

(getShapeY gibt hierbei die Y-Koordinate des Objekts an)

Nur leider besteht hierbei das Problem, dass der Schläger nur dann nicht mehr manuell bewegt werden kann, wenn C tatsächlich gedrückt gehalten wird und nicht nach einmaligem Druck. Deshalb lautet meine Frage, ob das JDK vielleicht eine Möglichkeit mit sich bringt, nach Möglichkeit ohne zehntausend andere Bibliotheken, einen Tastendruck zu überprüfen.

Das soll keine Bitte sein, meine Hausaufgaben zu erledigen, ich will keinen konkreten Quelltext für mein Projekt, sondern bitte einfach nur eine Antwort auf diese mehr oder weniger (ich hoffe) simple Frage, da Google mir dabei leider keine besonders hilfreichen Ergebnisse geliefert hat.

Liebe Grüße, Adrian.

Schule, programmieren, Java, Informatik

BlueJ - illegal start of expression. Wo liegt der Fehler?

Hallöchen, wir habe in der Schule vor kurzem mit dem Programmieren angefangen und dazu benutzen wir "BlueJ" und die Klassenbibliothek "Stifte und Mäuse".

Nun habe ich allerdings ein Problem und weiß nicht mehr weiter: In der Klasse Polygon bekomme ich in der Zeile mit "public void zeichne()" eine Fehlermeldung und zwar "illegal start of expression".

import sum.kern.*;

public class Polygon
{
    // Referenzen
    Stift meinStift;
    Polygon meinPolygon;
    Polygon meinPolygon1,meinPolygon2;

    // Konstruktor
    public Polygon(int pN,int pLaenge,int pHPosition,int pVPosition,int pWinkel)
    {
        // Objekte
        meinStift = new Stift();
        this.zeichne(pN, pLaenge, pHPosition, pVPosition, pWinkel);

        // Methoden
        public void zeichne() 

        meinStift.bewegeBis(pHPosition,pVPosition);
        meinStift.dreheUm(pWinkel);
        meinStift.runter();
        meinStift.bewegeUm(pLaenge);
        meinStift.dreheUm(-120);
        meinStift.bewegeUm(pLaenge);
        meinStift.dreheUm(-120);
        meinStift.bewegeUm(pLaenge);

        meinStift.bewegeBis(pHPosition,pVPosition);
        meinStift.dreheUm(pWinkel);
        meinStift.runter();
        meinStift.bewegeUm(pLaenge);
        meinStift.dreheUm(-120);
        meinStift.bewegeUm(pLaenge);
        meinStift.dreheUm(-120);
        meinStift.bewegeUm(pLaenge);
    }
}

Und die oben genannte Klasse Polygon soll auf die Klasse Steuerung "basieren". Liegt vielleicht hier der Fehler?

import sum.kern.*;

public class Steuerung
{
    // Referenzen
    Bildschirm meinBildschirm;

    // Konstruktor
    public Steuerung()
    {
        // Instanzvariable initialisieren
        meinBildschirm = new Bildschirm(800, 800);

        //methoden

        meinStift.bewegeBis(pHPosition,pVPosition);
        meinStift.dreheUm(pWinkel);
        meinStift.runter();
        meinStift.bewegeUm(pLaenge);
        meinStift.dreheUm(-120);
        meinStift.bewegeUm(pLaenge);
        meinStift.dreheUm(-120);
        meinStift.bewegeUm(pLaenge);

        meinStift.bewegeBis(pHPosition,pVPosition);
        meinStift.dreheUm(pWinkel);
        meinStift.runter();
        meinStift.bewegeUm(pLaenge);
        meinStift.dreheUm(-120);
        meinStift.bewegeUm(pLaenge);
        meinStift.dreheUm(-120);
        meinStift.bewegeUm(pLaenge);
    }
}

Ich würde mich sehr freuen, wenn mir jemand helfen würde.

Schule, programmieren, Java, BlueJ, Fehlermeldung

Java-Ausgabe rechtsbündig machen?

Hallo,

ist es möglich die Ausgabe rechtsbündig zu machen (siehe Screenshot) Code:

import java.text.DecimalFormat;

public class Aufgabe1 {

public static void main(String[] args) {
    DecimalFormat myFormat = new DecimalFormat("##,000.00");



    final double zinsenProzent = 0.04; 
    final double lottogewinn = 90000; 
    final double rateMonat = 1000; 
    final double rateJahr = rateMonat * 12; 
    double zinsenEUR = 0;
    double zinsenMonat = 0;
    double lottogewinnReduziert = lottogewinn;
    double aktuellesVermoegen = lottogewinn;


    int monatsZaehler = 0;
    int jahresZaehler = 0;
    double zinsenNormal = zinsenProzent * 100;


    System.out.println("Auszahlungsplan fuer Anlagekapital " + myFormat.format(lottogewinn)
            + " EUR und Zinssatz von " + zinsenNormal + "%");
    System.out.println("Monatlicher Entnahmebetrag: " + myFormat.format(rateMonat) + " EUR \n");
    System.out.println("Jahr \t \t Rate pro Jahr \t Zins pro Jahr \t Aktuelles Vermoegen");
    while (aktuellesVermoegen > 0 && jahresZaehler < 100) {

        monatsZaehler = monatsZaehler + 1;           
        if (monatsZaehler <= 12) {
            zinsenEUR = lottogewinnReduziert * zinsenProzent / 12;
            zinsenMonat = zinsenEUR + zinsenMonat;
            lottogewinnReduziert = lottogewinnReduziert - rateMonat;
            aktuellesVermoegen = lottogewinnReduziert + zinsenMonat;
        }


        if (monatsZaehler == 12) {
            monatsZaehler = 0;
            jahresZaehler = jahresZaehler + 1;
            lottogewinnReduziert = aktuellesVermoegen; 


            System.out.println(+jahresZaehler + ". Jahr \t " + myFormat.format(rateJahr) + " \t "
                    + myFormat.format(zinsenMonat) + " \t " + myFormat.format(aktuellesVermoegen) + "");
            zinsenMonat = 0;

        }
    }

    System.out.println("Kapitalverzehr nach " + jahresZaehler + " Jahren " + monatsZaehler + " Monat(en)");
}}

Geht wohl irgendwie mit %F oder so...kriege das aber nicht hin. Bitte um Hilfe. LG

Bild zum Beitrag
programmieren, Java

Meistgelesene Beiträge zum Thema Java