Java / GLOOP: Kollision bei dem Billardtisch?

Hallo.

Ich habe ein Problem mit dem Billardtisch, den ich erstellen will. Ich habe es so weit geschafft, einen Tisch mit ein paar Bällen zu erstellen, aber ich weiß nicht, was man machen muss, damit der Ball stehen bleibt, wenn er den Rand vom Tisch berührt (oder die Bälle weiter rollen, wenn einer den anderen trifft).

Der ganze Quelltext:

import GLOOP.*;

public class Billiard {
  GLEntwicklerkamera meineKamera;
  GLLicht meinLicht;
  GLTastatur meineTastatur;
  GLQuader seite1, seite2, seite3, seite4, Tisch;
  GLKugel weiss, schwarz, blau, lila, gelb, grün, orange;

  public Billiard() {
    meineKamera = new GLEntwicklerkamera();
    meinLicht = new GLLicht();
    Tisch = new GLQuader(0, 0, -30, 670, 400, 4);
    seite1 = new GLQuader(350, 0, -20, 20, 450, 20);
    seite2 = new GLQuader(-350, 0, -20, 20, 450, 20);
    seite3 = new GLQuader(0, 212, -20, 700, 20, 20);
    seite4 = new GLQuader(0, -212, -20, 700, 20, 20);

    Tisch.setzeTextur("gfx/Grün.png");
    seite1.setzeTextur("gfx/HOLZ.png");
    seite2.setzeTextur("gfx/HOLZ.png");
    seite3.setzeTextur("gfx/HOLZ.png");
    seite4.setzeTextur("gfx/HOLZ.png");

    weiss = new GLKugel(0, 0, 0, 20);
    weiss.setzeTextur("gfx/weiss.png");
    schwarz = new GLKugel(175, -10, 0, 20);
    schwarz.setzeTextur("gfx/schwarz.png");
    blau = new GLKugel(250, -11, 0, 20);
    blau.setzeTextur("gfx/blau.png");
    lila = new GLKugel(250, -49, 0, 20);
    lila.setzeTextur("gfx/lila.png");
    gelb = new GLKugel(250, 26, 0, 20);
    gelb.setzeTextur("gfx/gelb.png");
    grün = new GLKugel(211, 7, 0, 20);
    grün.setzeTextur("gfx/grun.png");
    orange = new GLKugel(211, -30, 0, 20);
    orange.setzeTextur("gfx/orange.png");
    meineTastatur = new GLTastatur();
  }

  public void fuehreAus() {
    while (!meineTastatur.istGedrueckt(' ')) {
      if (meineTastatur.links()) {
        weiss.verschiebe(-2, 0, 0);
        Sys.warte(5);
      }

      if (meineTastatur.rechts()) {
        weiss.verschiebe(2, 0, 0);
        Sys.warte(5);
      }

      if (meineTastatur.oben()) {
        weiss.verschiebe(0, 2, 0);
        Sys.warte(5);
      }

      if (meineTastatur.unten()) {
        weiss.verschiebe(0, -2, 0);
        Sys.warte(5);
      }
    }
  }
}

Bild zu Frage
Ball, Java, Informatik, Kollision, GLOOP
BlueJ/ Java/ GLOOP Hilfe?

Hallo,

ich muss für die Schule ein Würfelspiel programmieren dazu habe ich mit BlueJ und GLOOP 2 Würfel die mit jeweils 6 Quadern zusammengebaut sind modelliert.

Meine Frage ist jetzt: Wie kann ich wenn eine bestimmte Taste gedrückt wird, die Objekte auf eine zufällige Seite drehen (wie beim würfeln) sodass die 6 Quader immer noch ein Würfel ergeben?

Den Code den ich bisher habe:

import GLOOP.*;

class Würfelspiel{
    GLTastatur tastatur;
    GLSchwenkkamera cam;
    GLLicht spot , spotoben;
    
    GLQuader links, rechts, vorne, hinten, oben, unten;
    GLQuader left, right, front, back, up, down;
    
    GLQuader tisch;
    GLQuader eins, zwei, drei, vier;
    
    Würfelspiel(){
        cam = new GLSchwenkkamera(500, 500);
        spot = new GLLicht();
        spotoben = new GLLicht(0,0,-500);
        tastatur = new GLTastatur();
    
        tisch = new GLQuader(0,0,0,900,10,900);
        
        eins = new GLQuader(430,-250,430,40,500,40);
        zwei = new GLQuader(-430,-250,430,40,500,40);
        drei = new GLQuader(-430,-250,-430,40,500,40);
        vier = new GLQuader(430,-250,-430,40,500,40);
        
        links = new GLQuader(-50, 50, 0, 10, 100, 100);
        vorne = new GLQuader(0, 50, 50, 100, 100, 10);
        rechts = new GLQuader(50, 50, 0, 10, 100, 100);
        hinten = new GLQuader(0, 50, -50, 100, 100, 10);
        oben = new GLQuader(0, 100, 0, 100, 10, 100);
        unten = new GLQuader(0, 0, 0, 100, 10, 100);
        
        left = new GLQuader(150, 50, 150, 10, 100, 100);
        front = new GLQuader(200, 50, 200, 100, 100, 10);
        right = new GLQuader(250, 50, 150, 10, 100, 100);
        back = new GLQuader(200, 50, 100, 100, 100, 10);
        up = new GLQuader(200, 100, 150, 100, 10, 100);
        down = new GLQuader(200, 0, 150, 100, 10, 100);
        
        
        links.setzeTextur("drei.jpg");
        vorne.setzeTextur("fünf.jpg");
        rechts.setzeTextur("vier.png");
        hinten.setzeTextur("zwei.jpg");
        oben.setzeTextur("sechs.jpg");
        unten.setzeTextur("eins.png");
        
        left.setzeTextur("drei.jpg");
        front.setzeTextur("fünf.jpg");
        right.setzeTextur("vier.png");
        back.setzeTextur("zwei.jpg");
        up.setzeTextur("sechs.jpg");
        down.setzeTextur("eins.png");
        
        if(tastatur.istGedrueckt('f')){
            
        }
    }
}

Computer, Schule, programmieren, Java, Würfelspiel, BlueJ, Informatik, GLOOP
Wie soll ich das programmieren?

Ich nutze Bluej bzw. GLOOP und möchte ein Programm mit zwei Schneemännern erstellen, wobei sich beide Schneemänner um einen Punkt drehen.

Habe es wie folgt gemacht, jedoch ist ein Fehler aufgetreten:

Schneemannszene:

import GLOOP.;

public class Schneemannszene 

{

  GLKamera meineKamera;

  GLLicht meinLicht;  

  GLHimmel meinHimmel;

  GLBoden meinBoden;

  GLTastatur meineTastatur;

  Schneemann schneemann0,schneemann1;

  public Schneemannszene()

  {

    meineKamera = new GLEntwicklerkamera();

    meineKamera.setzePosition(0,500,1000);

    meinLicht  = new GLLicht();

    meinBoden  = new GLBoden("Schnee.jpg");

    meinHimmel = new GLHimmel("Himmel.jpg");

    meineTastatur = new GLTastatur();

  

    schneemann0 = new Schneemann(0,0);

    schneemann1 = new Schneemann(-200,0);

     

    while(meineTastatur.istGedrueckt('f'))

    {

     schneemann0.drehe(0,1,0,0,0); <- Hier wird der Fehler angezeigt

     schneemann1.drehe(0,1,0,0,0); <- Hier wird der Fehler angezeigt

     Sys.warte(5);

    }     

  }

}

Schneemann:

import GLOOP.;

public class Schneemann

{

  GLKugel beine,bauch,kopf;

  GLKugel auge1,auge2;

  GLKegelstumpf nase;

  public Schneemann(double pX, double pZ)

  {    

    beine = new GLKugel (pX, 25,pZ,75,"Schnee.jpg");

    bauch = new GLKugel (pX,130,pZ,55,"Schnee.jpg");

    kopf  = new GLKugel (pX,200,pZ,35,"Schnee.jpg"); 

    auge1 = new GLKugel(0,200,35,5);

    auge1.setzeFarbe(1,0,0); 

    auge1.drehe(-15,0,0,0,200,0);

    auge1.drehe(0,-15,0,0,200,0);

    auge1.verschiebe(pX,0,pZ);

    auge2 = new GLKugel(0,200,35, 5);

    auge2.setzeFarbe(1,0,0); 

    auge2.drehe(-15,0,0,0,200,0);

    auge2.drehe( 0,15,0,0,200,0);

    auge2.verschiebe(pX,0,pZ);

    nase = new GLKegelstumpf(0,200,50,0,5,30);

    nase.setzeFarbe(1,0.5,0);

    nase.verschiebe(pX,0,pZ);

  }

}

Der Fehler lautet bei beiden Markierten stellen: cannot find symbol - method setzeDrehung(int,int,int,int,int,int)

Wie soll ich das anders programmieren oder wie behebe ich diesen Fehler?

Computer, Schule, programmieren, Java, BlueJ, GLOOP

Meistgelesene Fragen zum Thema GLOOP