Pong BlueJ, wie mache ich, dass der Ball an den ecken vom Schläger schneller wird?

Ich habe Pong programmiert, und würde gerne wissen, wie ich es mach, dass der Ball an den ecken schneller wird

Racket Klasse:

import java.awt.Graphics;
import java.awt.Rectangle;


public class Racket {
    private static final int WIDTH = 10, HEIGHT = 60;
    private Pong game;
    private int up, down;
    private int x;
    private int x2;
    private int y, ya;


    public Racket(Pong game, int up, int down, int x) {
        this.game = game;
        this.x = x;
        
        y = game.getHeight() / 2;
        this.up = up;
        this.down = down;
    }


    public void update() {
        if (y > 0 && y < game.getHeight() - HEIGHT - 29)
            y += ya;
        else if (y == 0)
            y++;
        else if (y == game.getHeight() - HEIGHT - 29)
            y--;
    }


    public void pressed(int keyCode) {
        if (keyCode == up)
            ya = -2;
        else if (keyCode == down)
            ya = 2;
        
       


    }


    public void released(int keyCode) {
        if (keyCode == up || keyCode == down)
            ya = 0;
    }


    public Rectangle getBounds() {
        return new Rectangle(x, y, WIDTH, HEIGHT);
        
    }




    public void paint(Graphics g) {
        g.fillRect(x, y, WIDTH, HEIGHT);
        //g.fillRect(0, 10, 10, 10000);
        //g.fillRect(935, 10, 10, 10000);
        g.fillRect(480, 15, 2, 20);
        g.fillRect(480, 45, 2, 20);
        g.fillRect(480, 75, 2, 20);
        g.fillRect(480, 105, 2, 20);
        g.fillRect(480, 135, 2, 20);
        g.fillRect(480, 165, 2, 20);
        g.fillRect(480, 195, 2, 20);
        g.fillRect(480, 225, 2, 20);
        g.fillRect(480, 255, 2, 20);
        g.fillRect(480, 285, 2, 20);
        g.fillRect(480, 315, 2, 20);
        g.fillRect(480, 345, 2, 20);
        g.fillRect(480, 375, 2, 20);
        g.fillRect(480, 405, 2, 20);
        g.fillRect(480, 435, 2, 20);
        g.fillRect(480, 465, 2, 20);
        g.fillRect(480, 495, 2, 20);
        g.fillRect(480, 525, 2, 20);
        
        
    }
}

BlueJ, Informatik
0 Antworten
Gloop warum brennen die anderen Kerzen nicht ab?

Hallo, hier ist meine Erste Klasse:

import GLOOP.*;

class Kerzenszene{

  GLKamera kamera;  

  Kerze kerze,k2,k3,k4;

  GLTorus torus;

  Untergrund untergrund;

  GLTastatur tastatur;

  int y;

  Kerzenszene(){

    kamera = new GLKamera(800,600);   

    kamera.setzePosition(0,300,500);  

    kerze = new Kerze(100,100,250,50);

    k2 = new Kerze(100,-100,250,50);

    k3 = new Kerze(-100,100,250,50);

    k4 = new Kerze(-100,-100,250,50);

    torus = new GLTorus (0,0,10,300,65);

    torus.setzeDrehung(90,0,0);

    torus.setzeTextur("gras.jpg");

    untergrund = new Untergrund();

    tastatur = new GLTastatur();

    y=1;

    fuehreAus();

  }

  public void fuehreAus(){

    while (y==1){

      if(tastatur.istGedrueckt('a')){

        kerze.aus();

        k2.aus();

        k3.aus();

        k4.aus();

      }

      if(tastatur.istGedrueckt('q')){

        kerze.an();  

        k2.an();

        k3.an();

        k4.an();

      }

      if(kerze.an){

        kerze.brenneAb();

        k2.brenneAb();

        k3.brenneAb();

        k4.brenneAb();

      }

      if(tastatur.istGedrueckt('1')){

        kerze.aus();

       

      }

      

      Sys.warte();

    }

     

  }

}

hier die 2:

import GLOOP.*;

class Kerze{

  GLZylinder koerper,docht;

  GLLicht flamme;

  double dicke;

  double laenge;

  GLTastatur key;

  boolean an=true;

  boolean an2=true;

  boolean an3=true;

  boolean an4=true;

  Kerze(double px,double py,double plaenge,double pdicke){

    //Kerzenkörper erstellen

    laenge = plaenge;

    dicke = pdicke;

    koerper = new GLZylinder (px,plaenge/2,py, pdicke,plaenge);

    koerper.drehe(90,0,0);  

    koerper.setzeFarbe(1,0,0);

    //Docht erstellen

    docht = new GLZylinder (px, plaenge/2, py,5,plaenge+20);

    docht.drehe(90,0,0); 

    docht.setzeFarbe(0,0,0);  

    //Flamme erstellen

    flamme = new GLLicht(px,plaenge+25,py);

    flamme.setzeSichtbarkeit(true);

    flamme.setzeFarbe(1,1,0.5);  

    flamme.skaliere(1,2,1);

  }

  

  public void an(){

    flamme.setzeSichtbarkeit(true); 

    an = true;

  }

  public void aus(){

    flamme.setzeSichtbarkeit(false);  

    an = false;

  }

  public void brenneAb(){

    if (an){

      double g = (70/dicke) /1000;

      koerper.skaliere(1,1,1.0-(g/laenge));

      koerper.verschiebe(0,-g/2,0);

      docht.verschiebe(0,-g,0);

      flamme.verschiebe(0,-g,0);

      laenge=laenge-g;

    }

  }

}

Warum brennen die anderen Kerzen nicht weiter ab wenn ich eine ausschalte? LG

Computer, Schule, Programm, Java, BlueJ
1 Antwort
Frame öffnet sich nicht (Java)?

Hallo alle zusammen,

ich habe es so wie unten gezeigt bis jetzt immer gemacht, aber diesmal klappt es nicht. Findet jemand einen Fehler? Warum öffnet sich nichts?

Danke.

PS.: Ja, ich habe auch eine main-Methode.

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javafx.scene.control.TextField;
import javax.swing.JPanel;
import javax.swing.BoxLayout;
import java.awt.Component;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.io.*;

public class ErweitertesMusikalbum implements ActionListener {
  private int stelle;
  Lied[] lieder = new Lied[100];
  FileWriter writer;
  FileWriter writer2;
  FileReader reader;
  Properties lieder_p;
  JLabel ausgabe;
  JButton eintragen_button;
  JButton löschen_button;
  JButton ausgeben_button;
  JButton laden_button;
  JButton wiederherstellen_button;
  JFrame frame;
  JPanel panel;
  JTextField field1;
  JTextField field2;
  JTextField field3;

  public void ErweiteresMusikalbum() {
    stelle = 0;
    frame = new JFrame("Musikalbum");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS));
    frame.setSize(300, 200);
    frame.setLocationRelativeTo(null);

    ausgabe = new JLabel("Drücke auf die Knöpfe um die darauf beschriebene Aktion auszuführen.");
    frame.getContentPane().add(ausgabe);
    ausgabe.setAlignmentX(Component.CENTER_ALIGNMENT);

    panel = new JPanel();
    eintragen_button = new JButton("Lied eintragen");
    löschen_button = new JButton("Lied löschen");
    ausgeben_button = new JButton("alle Lieder ausgeben");
    laden_button = new JButton("Lieder laden");
    wiederherstellen_button = new JButton("alle Lieder wiederherstellen");

    field1 = new JTextField("");
    field2 = new JTextField("");
    field3 = new JTextField("");
    field1.setSize(200, 24);
    field2.setSize(200, 24);
    field3.setSize(200, 24);
    field1.setColumns(20);
    field2.setColumns(20);
    field3.setColumns(20);

    eintragen_button.addActionListener(this);
    löschen_button.addActionListener(this);
    ausgeben_button.addActionListener(this);
    laden_button.addActionListener(this);
    wiederherstellen_button.addActionListener(this);

    panel.add(field1);
    panel.add(field2);
    panel.add(field3);
    panel.add(eintragen_button);
    panel.add(löschen_button);
    panel.add(ausgeben_button);
    panel.add(laden_button);
    panel.add(wiederherstellen_button);

    frame.add(panel);
    frame.setVisible(true);
  }
}
Computer, IT, programmierer, Programmieren, Java, algemeine fragen, BlueJ, Informatik, java programmieren, Frames, Java Swing
2 Antworten
Array in BlueJ aufrücken lassen?

Ich habe einen Array mit CDs (50 Plätze), die mit Titel, Autor und Erscheinungsjahr gespeichert werden, erstellt. Jetzt wollte ich die Funktion einbauen, dass man auch CDs löschen kann. Das funktioniert auch, nur dass die übrig gebliebenen CDs, die "über" der Gelöschten sind, nicht nach rücken. Also wenn die Erste CD gelöscht wird, soll die Cd auf dem zweiten Platz auf den Ersten rücken.

Habt ihr da eine Idee, wie ich das machen kann?

Vielen Dank schon mal im Voraus. :)

public void cdLoeschen (String pTitel)
   {
       boolean raus = false;
       if(cdanzahl != 0)
       {
           for(int i=0;i<cdanzahl;i++)
           {
               if(cdSammlung[i].gibTitel()== pTitel)
               {
                   cdSammlung[i] = null;
                   raus = true;
               }
               cdanzahl --;
           }
       }
       else
       {
           System.out.println("Das CD-Regal ist leer, Sie koennen nichts loeschen!");
       }
       if(raus = true)
       {
           System.out.println("\"" + pTitel + "\" wurde geloescht!");
       }
       else
       {
           System.out.println("\"" + pTitel + "\" konnte nicht gefunden werden!");
       }
   }
Computer, Schule, Programmieren, Java, BlueJ, Informatik
4 Antworten
In BlueJ Array durchsuchen?

Ich möchte eine Array-Liste mit CDs, die mit Titel, Autor und Erscheinungsjahr gespeichert werden, durchsuchen (mit dem Erscheinungsjahr). Das Programm soll unabhängig vom Inhalt ablaufen. Es soll also nicht ein gespeichertes Erscheinungsjahr im Programm benutz werde. Ich habe schon etwas programmiert und bekomme auch keine Fehlermeldung. Allerdings wird mir in der Konsole dann garnichts mehr angezeigt.

Vielen Dank schon mal im Voraus. :)

public void suchenMitErscheinungsjahr(int pErscheinungsjahr)

   {

       boolean gefunden = false;

       if (cdanzahl !=0)

       {

           for (int i=1; i<cdanzahl; i++)

           {

               if (cdSammlung[i].equals(pErscheinungsjahr))

               {

                   System.out.println(cdSammlung[i].gibTitel());

                   System.out.println(cdSammlung[i].gibInterpret());

                   System.out.println(cdSammlung[i].gibErscheinungsjahr());   

                   gefunden = true;

               }

           }

       }

       else

       {

           System.out.println("Das CD-Regal ist leer!");

       }

       

       if (gefunden = false)

       {

           System.out.println("Eine CD mit diesem Erscheinungsjahr existiert nicht im Regal!");

       }

   }

Computer, Schule, Programmieren, Java, BlueJ, Informatik
1 Antwort
Array-Liste alphabetisch sortieren in BlueJ?

Ich möchte eine Array-Liste mit CDs, die mit Titel, Autor und Erscheinungsjahr gespeichert werden, alphabetisch (nach Titel) sortieren (das Programm soll unabhängig vom Inhalt ablaufen. Es soll also nicht ein gespeicherter Titel im Programm benutz werden). In der if-Anweisung wird mir beim > eine Fehlermeldung angezeigt, was ja sinnvoll ist, da ein String ja nicht > als ein andere sein kann. Ich weiß allerdings nicht, was ich stattdessen schreiben soll.

Vielen Dank schonmal im Voraus.

public void sortiernNachTitel()

   {

       cd temp;

       for(int i=1; i<cdanzahl; i++)

       {

           for(int j=0; j<cdanzahl-i; j++)

           {

               if(cdSammlung[j].gibTitel()>cdSammlung[j+1].gibTitel())

               {

                   temp=cdSammlung[j];

                   cdSammlung[j]=cdSammlung[j+1];

                   cdSammlung[j+1]=temp;

               }

           }

       }

       for( int a=0; a<cdanzahl; a++)

       {

           System.out.println(cdSammlung[a].gibTitel());

           System.out.println(cdSammlung[a].gibInterpret());

           System.out.println(cdSammlung[a].gibErscheinungsjahr());

       }

   }

Computer, Schule, Programmieren, Java, Array, BlueJ, Informatik
2 Antworten
Java / BlueJ-Problem bei einem Projekt?

Hey,

ich habe folgendes Problem: Bei mir tauchen zwei Fehler auf und ich komme da leider nicht weiter.

import SGE.*;

public class Anwendung {
  private SGLeinwand meineLeinwand;
  private SGTastatur tasti;
  private Spieler spieler;
  private Hindernis hindernisse[];
  private SGRechteck ziel;

  public Anwendung() {
    meineLeinwand = new SGLeinwand(300, 600);
    meineLeinwand.setzeHintergrundfarbe(1, 1, 1);
    tasti = new SGTastatur();
    spieler = new Spieler(150, 550);
    erstelleHindernisse();
    ziel = new SGRechteck(5, 5, 30, 30);
    ziel.setzeFuellung(true);
    ziel.setzeFarbe(0, 1, 0);
  }

  public void fuehreAus() {
    boolean spielBeendet = false;

    {
      while (spielBeendet == false) {
        spieler.bewege();
      }

      for (int i = 0; i < hindernisse.length; i++) {
        hindernisse[i].bewege();

        if (hindernisse[i].beruehrtSpieler()) {
          spieler.geheZuStart();
        }
      }

      if (ziel.beinhaltetObjekt(spieler)) {
        spielBeendet = true;
      }

      SGSystem.warte();
    }
  }

  private void erstelleHindernisse() {
    hindernisse = new Hindernis[7];
    hindernisse[0] = new Hindernis(0, 350, 80, 160, spieler);
    hindernisse[1] = new Hindernis(80, 350, 170, 40, spieler);
    hindernisse[2] = new Hindernis(80, 350, 10, 160, spieler);
    hindernisse[3] = new Hindernis(100, 175, 200, 100, spieler);
    hindernisse[4] = new Hindernis(0, 75, 175, 30, spieler);
    hindernisse[5] = new Hindernis(170, 450, 130, 50, spieler);
    hindernisse[6] = new BewegtesHindernis(80, 450, 40, 20, spieler, 0.5, -0.5);
  }
}
Programmieren, Java, JavaScript, BlueJ, Informatik
1 Antwort
Wie kann man die NullPointerException lösen?

Hallo, ich habe eine Frage zu meinem Programm, genauer gesagt zu der Methode gibListeCds(). Ich hab alles in BlueJ programmiert. Meine Aufgabe ist es, ein Cd-Regal zu programmieren, indem die CDs mit Titel, Interpret und Erscheinungsjahr verwalten werden. Das hab ich auch soweit hinbekommen, aber wenn ich mir jetzt die Liste der CDs ausgeben lassen möchte, also nur die Plätz, wo auch CDs sind, bekomme ich immer eine NullPointerException. Das wollte ich dann mit der if-Anweisung beheben. Ich komme an dem Punkt nur nicht weiter, also ich weiß nicht genau, wie ich das machen kann, weil

if (cd != null)

hat leider nicht funktioniert. Ich hoffe ihr könnt da weiter helfen. Es gibt übrigens noch eine weitere Klasse (cd), die ich hier jetzt nicht aufgeschrieben habe.

Vielen Dank schonmal im Voraus :)

PS: Das Programm ist auch auf Hastebin.com ( https://hastebin.com/yaxonurico.cs ). Das Problem liegt in Zeile 38-49.

public class cd_Regal

{

   private cd[] cdSammlung;

   private int cdanzahl;

   private String cdEinfügen;

   public cd_Regal()

   {

       cdSammlung = new cd[50];

       cdanzahl = 0;

   }

   public void cdEinfuegen(String pTitel, String pInterpret, int pErscheinungsjahr)

   {

       if (cdanzahl == 50)

       {  

           System.out.println("Das Cd Regal ist voll!");

       }

       else if (pErscheinungsjahr > 0 && pErscheinungsjahr < 2021)

       {

           cdSammlung[cdanzahl] = new cd(pTitel, pInterpret, pErscheinungsjahr);

           cdanzahl ++;

       }

       else

       {

           System.out.println("Kein gültiges Erscheinungsjahr");

       }

   }

   public int gibAnzahlCds()

   {

       return cdanzahl;

   }

   public void gibListeCds()

   {

       if (cd != null)

       {

           for (cd c:cdSammlung)

           {

               System.out.println(c.titel);

               System.out.println(c.interpret);

               System.out.println(c.erscheinungsjahr);

               System.out.println(" ");

           }

       }

       else

       {

           System.out.println("Das Cd Regal ist leer!");

       }

   }

}

Computer, Schule, Programmieren, Java, BlueJ, Informatik
2 Antworten
Wie kann ich mir eine Array-Liste ausgeben lassen?

Ich soll ein CD-Regal mit 50 Plätzen erstellen (BlueJ; Java). Bei meiner Programmierung funktioniert soweit auch alles, nur dass ich eine seltsame Rückgabe bekomme, wenn ich mir die Liste ausgeben lasse.

Ich habe das Programm (siehe unten) durchgetestet und alles, außer die Rückgabe der Liste, funktioniert. Es wird sowohl die richtige Anzahl CDs gespeichert (also 0, 1... 50), als auch die richtigen Daten, die ich eingebe. Einzig und allein die Ausgabe der Liste funktioniert nicht.

Ich würde mich freuen, wenn mir jemand weiterhelfen könnte.

Vielen lieben Dank schon mal im Vorfeld. <3

public class CD_Regal {
  public int cdanzahl;
  private CD[] cDSammlung;
  private String cdEintragen;

  public CD_Regal() {
    cDSammlumg = new CD[50];
    cdanzahl = 0;
  }

  public void cdEintragen(String pTitel; String pInterpret; int   Erscheinungsjahr) {
    if (cdanzahl == 50) {
      System.out.println("Das Regal ist voll! Entferne CDs um neue hinzuzufügen!")
    }
    else if (pErscheinungsjahr > 0 && pErscheinungsjahr < 2021) {
      cDSammlung[cdanzahl] = new CD(pTitel, pInterpret, pErscheinungsjahr);
      cdanzahl ++;
    }
    else {
      System.out.println("Die Eintragung is fehlgeschlagen! Überprüfen Sie die Daten!");
    }
  }

  public void gibListe() {
    If (cdanzahl > 0) {
      System.out.println(cDSammlung.length);
    }
    Else {
      System.out.println("Keine CD!")
    }
  }
}
Computer, Technik, Programmieren, Java, BlueJ, Informatik, java programmieren, Technologie
2 Antworten
Lineare Datenstrukturen Element löschen?

Wir haben momentan ein Projekt was wir jetzt über die Schulfreie Zeit beenden sollen und zwar geht es um lineare Datenstrukturen. Ich muss jetzt eine Methode oder auch mehrere, weiß ich leider nicht um ein beliebiges Element im Array zu löschen.

Ich komme leider mit meiner Methode nicht weiter, ich weiß man muss irgendwie if Methoden schreiben und irgendwas mit getContent().equals und so weiter aber ich komme nicht weiter. Ich verstehe vom inhaltlichen auch was gemacht werden muss, allerdings fällt mir das programmieren an sich also die Sprache dahinter noch schwer. Deswegen wäre es ganz hilfreich wenn mir jemand einen Beispielquelltext geben könnte vlt auch nur ausschnitte aber auch mit passender Erklärung damit ich das verstehe oder zumindest Verbesserungsvorschläge mit meiner aktuellen Methode.

public void delete(String s) {
        Node dummy = first;
        Node last = getLast();
        Node nach = getNext();
        int counter = 0;
        if(s.equals(first.getContent())) {
            delete();
        }
        else if(getLast().getContent().equals(s))) {
            while(!(dummy.getNext().getContent().equals(s))) {
                dummy=dummy.getNext();
            }
            dummy.setNext(dummy.getNext().getNext());
          
        }
    }
Computer, Schule, Programm, Programmieren, Java, Daten, Array, BlueJ, Datenstrukturen, Informatik
2 Antworten
Informatik Bruchrechner Addition?


public class Bruch
{
    private int zaehler , nenner;
    public Bruch(int pz , int pn)
    {
        zaehler = pz ;
        nenner = pn ;
    }
     
    public Bruch add(Bruch pb) {
        int z2=pb.getZaehler();
        int n2=pb.getNenner();
        //zaehler , nenner gibt es schon im aufrufenden Bruch!
        //Bruch summe = new Bruch (zaehler+pb.getZaehler(),nenner+pb.getNenner());
        return new Bruch (z2,n2);
    }
    
    public int getZaehler() {
        return zaehler;
    
}
public int getNenner() {
    return nenner;
}
}

1.Klasse

import java.awt.; import java.awt.event.;
import javax.swing.*;
public class GUI extends JFrame implements ActionListener {
    private JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6;
    private JButton jb;
    private Bruch b1,b2;
    public GUI() {
        super ("Bruchrechner");
        setLayout(null);
        setBounds(100,100,600,600);
        jtf1 = new JTextField();
        jtf1.setBounds(50,50,70,40);
        add(jtf1);
    
        jtf2 = new JTextField();
        jtf2.setBounds(50,120,70,40);
        add(jtf2);
        jtf3 = new JTextField();
        jtf3.setBounds(150,50,70,40);
        add(jtf3);
        jtf4 = new JTextField();
        jtf4.setBounds(150,120,70,40);
        add(jtf4);
        jtf5 = new JTextField();
        jtf5.setBounds(250,50,70,40);
        add(jtf5);
        jtf6 = new JTextField();
        jtf6.setBounds(250,120,70,40);
        add(jtf6);
        jb = new JButton("+");
        jb.setBounds(350,85,50,50);
        add(jb);
        jb.addActionListener(this);
        setVisible(true);
    }
    public void actionPerformed(ActionEvent e) {
        b1 = new Bruch(new Integer (jtf1.getText()),new Integer (jtf2.getText()));
        b2 = new Bruch(new Integer (jtf3.getText()),new Integer (jtf4.getText()));
        jtf5.setText(""+b1.add(b2).getZaehler());
        jtf6.setText(""+b1.add(b2).getNenner());
    }
}

2.Klasse

Die Aufgabe ist den bereits vorhandenen Quelltext so zu vollenden, das man am Ende die 2 Brüche miteinander addieren kann. Die Oberfläche habe ich schon erstellt und in den beiden Ausgabefelder am Ende (Zähler,Nenner) wird bisher nur das angezeigt, was man in den letzten Bruch schreibt. Sind ja insgesamt 6 TextFields, 4 für die Brüche, welche man addieren will und 2 für das Ergebnis. Kann mir jemand weiterhelfen, ich komme überhaupt nicht weiter. Danke

PC, Computer, Schule, Programmieren, Java, BlueJ, Informatik, gui, Objektorientierte Programmierung
1 Antwort

Meistgelesene Fragen zum Thema BlueJ