In einem Kasten springende Bälle programmieren...Hilfe

Status
Nicht offen für weitere Antworten.

Nickolaus

Mitglied
Hi,
ich muss eine auswählbare Anzahl von Bällen in einem Kasten hin und her springen lassen, jetzt hab ich volgende Probleme, erstens weiß ich nicht wie ich eine unendlich Schleife erzeugen soll, in der sich die bälle bewegen und ich dann trotzdem noch mehrere bälle erzeugt krieg;
2. wie kann ich das ganze passend abrechen lassen mit nem Knopf oder so, so dass man das nich mitm debugger zerstören muss;
und 3. der eine ball den ich erzeugt krieg springt öfters über die Ränder des Kastens raus und übermalt diese.
Ich hoffe das mir jemand dabei helfen kann.

Hier der source code:

java.BallDemo

[highlight=Java]
import java.awt.*;
import java.awt.geom.*;
import java.awt.Component;
import java.awt.event.*;
import java.util.*;

public class BallDemo
{
private Canvas myCanvas;

public BallDemo()
{
myCanvas = new Canvas("Ball Demo", 600, 500);
myCanvas.setVisible(true);
}


public void bounceBox(int numberBalls)
{
drawFrame();
bounceInTheBox current = new bounceInTheBox(myCanvas);
current.balls(numberBalls);
}


public void drawFrame()
{
myCanvas.setForegroundColor(Color.blue);
Rectangle rect = new Rectangle(20, 20,myCanvas.getSize().width-40,myCanvas.getSize().height-40);
myCanvas.fill(rect);
myCanvas.setForegroundColor(Color.white);
Rectangle rect2 = new Rectangle(25, 25,myCanvas.getSize().width-50,myCanvas.getSize().height-50);
myCanvas.fill(rect2);
}


}

[/highlight]

java.bounceInTheBox

[highlight=Java]
import java.awt.*;
import java.util.*;

public class bounceInTheBox
{
private Canvas canvas;

public bounceInTheBox(Canvas canvas)
{
this.canvas = canvas;
}


protected void balls(int number)
{
ArrayList<BoxBall> balls = new ArrayList<BoxBall>();
Random ran = new Random();
for (int i = 0; i<number;i++)
{
int xPos = 50,yPos = 50;
boolean finished = false;
while(!finished)
{
xPos = ran.nextInt(canvas.getSize().width-51);
if (xPos>=25)
{
finished = true;
}
}
finished = false;
while(!finished)
{
yPos = ran.nextInt(canvas.getSize().height-51);
if (yPos>=25)
{
finished = true;
}
}
finished = false;
int diameter = 111;
while (!finished)
{
diameter = ran.nextInt(30)+10;
if (diameter%4 == 0)
{
finished = true;
}
}
BoxBall current = new BoxBall(xPos,yPos,diameter,25,canvas.getSize().width-50,25,canvas.getSize().height-50,canvas);
balls.add(current);
}
for (BoxBall current : balls)
{
current.move();
}
}
}

[/highlight]

java.BoxBall

[highlight=Java]
import java.awt.*;
import java.awt.geom.*;
import java.util.*;


public class BoxBall
{
private int ballDegradation = 2;
private Ellipse2D.Double circle;
private Color color;
private int diameter;
private int xPos;
private int yPos;
private int x1Corn,x2Corn,y1Corn,y2Corn;
private Canvas canvas;
private int speed;

/**
* Constructor for objects of class BoxBall
*/
protected BoxBall(int xPos, int yPos, int ballDiameter, int x1Corn,
int x2Corn,int y1Corn,int y2Corn, Canvas drawingCanvas)
{
this.xPos = xPos;
this.yPos = yPos;
this.x1Corn = x1Corn;
this.x2Corn = x2Corn;
this.y1Corn = y1Corn;
this.y2Corn = y2Corn;
diameter = ballDiameter;
canvas = drawingCanvas;
Random current = new Random();
boolean finished = false;
while (!finished)
{
speed = current.nextInt(4);
if (speed > 0)
{
finished = true;
}
}
color = Color.getHSBColor( current.nextFloat(), 1.0F, 1.0F );
}

public void draw()
{
canvas.setForegroundColor(color);
canvas.fillCircle(xPos, yPos, diameter);
}

public void erase()
{
canvas.eraseCircle(xPos, yPos, diameter);
}

public void move()
{
boolean finished = false;
int a=2,b=1;
Random current = new Random();
while(!finished)
{
a = current.nextInt(speed+1)-current.nextInt(2*speed+1);
b= current.nextInt(speed+1)-current.nextInt(2*speed+1);
int result = Math.abs(a)+Math.abs(b);
if (result == speed)
{
finished = true;
}
}
while (speed != 0)
{
if (xPos < x2Corn)
{
erase();
}
else if (yPos < y2Corn)
{
erase();
}
else if (xPos < x2Corn && yPos < y2Corn)
{
erase();
}
xPos +=a;
yPos +=b;
if (xPos <= x1Corn)
{
erase();
xPos = x1Corn;
draw();
a *=-1;
}
if (yPos <= y1Corn)
{
erase();
yPos = y1Corn;
draw();
b *=-1;
}
if (xPos >= x2Corn)
{
erase();
xPos = x2Corn - diameter;
draw();
a *=-1;
}
if (yPos >= y2Corn)
{
erase();
yPos = y2Corn - diameter ;
draw();
b *=-1;
}
if (xPos <= x1Corn && yPos <= y1Corn)
{
erase();
xPos = x1Corn+diameter;
yPos = y1Corn+diameter;
draw();
a *=-1;
b *=-1;
}
if (xPos >= x2Corn+diameter && yPos <= y1Corn)
{
erase();
xPos = x2Corn+diameter;
yPos = y1Corn;
draw();
a *=-1;
b *=-1;
}
if (xPos <= x1Corn && yPos >= y2Corn+diameter)
{
erase();
xPos = x1Corn;
yPos = y2Corn+diameter;
draw();
a *=-1;
b *=-1;
}
if (xPos >= x2Corn+diameter && yPos >= y2Corn+diameter)
{
erase();
xPos = x2Corn+diameter;
yPos = y2Corn+diameter;
draw();
a *=-1;
b *=-1;
}
if (xPos < x2Corn)
{
draw();
}
else if (yPos < y2Corn)
{
draw();
}
else if (xPos < x2Corn && yPos < y2Corn)
{
draw();
}
canvas.wait(10);
}
}

public int getXPos()
{
return xPos;
}

public int getYPos()
{
return yPos;
}
}
[/highlight]

Die Klasse Canvas lass ich aus falls jemand die doch noch gerne hätte eben sagen.
 

Quaxli

Top Contributor
Canvas ist Deine Klasse? Ich finde das immer etwas ungeschickt, eigene Klassen identische zu existierenden "Sun"-Klassen zu benennen.

Wie auch immer, die meisten Fragen kannst Du mithilfe meines Tutorial beantworten. Einfach mal auf den Link in der Signatur klicken. :rtfm:
 
M

MiDniGG

Gast
1.) while(true){...}
2.) boolean laeuft = true;
while(laeuft) {
Button macht auf druck laeuft = false; schleife tod. :)
}
 

Nickolaus

Mitglied
nicht meine idee mit der canvas klasse, war so vorgegeben ausm lehrbuch vonner uni^^...
danke schonma ich gucks mir an
 

hdi

Top Contributor
nicht meine idee mit der canvas klasse, war so vorgegeben ausm lehrbuch vonner uni^^

Dann meinen die wohl aber die Sun-Klasse Canvas. Die sollst du nutzen, nicht dir
eine eigene schreiben. Also würde ich jetzt zumindest sagen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Rendering order auf einem ismetrischen Grid Spiele- und Multimedia-Programmierung 8
P Wie kann ich einem Programm hinter eine GUI verstecken? Spiele- und Multimedia-Programmierung 12
J (Libgdx) animation nur einmal in einem Event aufrufen Spiele- und Multimedia-Programmierung 1
B Programmieren wie der Befehl /ban in Minecraft geblockt wird aber nicht /ban mit einem Argument Spiele- und Multimedia-Programmierung 1
P selectedItem aus einem Methodenerstellten JPanel auslesen. Spiele- und Multimedia-Programmierung 5
O Problem beim Aufrufen des Spiels von einem Menü Spiele- und Multimedia-Programmierung 7
G Entity Verwaltung in einem 2D Spiel Spiele- und Multimedia-Programmierung 1
G Collision Detection in einem 2D Sandbox Game. Spiele- und Multimedia-Programmierung 2
E Einem A*-Pfad folgen Spiele- und Multimedia-Programmierung 27
G Auf einem Stick bewegen Spiele- und Multimedia-Programmierung 5
windl MP3-Tags von einem Inputstream auslesen Spiele- und Multimedia-Programmierung 5
U DPI von einem Bild definieren Spiele- und Multimedia-Programmierung 5
X Erklärung zu einem Tic Tac Toe Spiel Spiele- und Multimedia-Programmierung 1
C Hilfe bei einem Mosaikspiel Spiele- und Multimedia-Programmierung 16
M [JOGL] Maus über einem gezeichnetem Objekt abfragen? Spiele- und Multimedia-Programmierung 5
P Winkel von einem Punkt zum anderen berechnen Spiele- und Multimedia-Programmierung 9
X Kleines Problem mit Java Reflections und einem eigenen Eventhandler Spiele- und Multimedia-Programmierung 1
S Java3D: Primitives zu einem Objekt kombinieren Spiele- und Multimedia-Programmierung 7
Fl4sh1 Datum und Uhrzeit von einem Ereignis ausgeben lassen Spiele- und Multimedia-Programmierung 3
P Frage zu einem Projekt "Einarmiger Bandit" 3 Walzen / 9 Zeichnungen BLUEJ Spiele- und Multimedia-Programmierung 10
K Grundsätzlicher Spieleaufbau an (m)einem Beispiel Spiele- und Multimedia-Programmierung 4
S Problem mit Sichtfeld/Licht in einem Raster Spiele- und Multimedia-Programmierung 5
M Farbwerte für Flächen aus einem Bild erkennen Spiele- und Multimedia-Programmierung 3
A Drehen von einem Image Spiele- und Multimedia-Programmierung 4
F Bot updaten von einem Browser game Spiele- und Multimedia-Programmierung 7
W Java3D: Kanten die hinter einem Objekt liegen werden gezeigt Spiele- und Multimedia-Programmierung 2
B Reset bei einem Spiel Spiele- und Multimedia-Programmierung 16
C auf einem PC kein mp3 unter Java Spiele- und Multimedia-Programmierung 6
A Steuerung des Bewegungsflusses bei einem Netzwerkspiel Spiele- und Multimedia-Programmierung 18
R Mehrere Shader in einem Program Spiele- und Multimedia-Programmierung 8
B Generierung einer Wertetabelle aus einem Bild Spiele- und Multimedia-Programmierung 3
Z Kugeln aufgrund von Daten aus einem Array verschieben Spiele- und Multimedia-Programmierung 2
S Probleme mit JMenu in einem JFrame mit BufferStrategy Spiele- und Multimedia-Programmierung 2
K Kanten anzeigen lassen in einem Shape3D-Objekt Spiele- und Multimedia-Programmierung 4
A Interaktion von J3D in einem Applet Spiele- und Multimedia-Programmierung 4
H Speichern und Öffnen von einem Zeichenprogramm Spiele- und Multimedia-Programmierung 4
A Wie kann ich die Dateigröße aus einem tiff auslesen? Spiele- und Multimedia-Programmierung 2
hdi mehrere Threads/Tasks in einem synchronisieren -> TaskPoo Spiele- und Multimedia-Programmierung 36
N Farberkennung und -ersetzung in einem Bild Spiele- und Multimedia-Programmierung 2
F Umsetzung von einem Partikelsystem Spiele- und Multimedia-Programmierung 4
J Java3D Rotationsproblem bei einem 3D-Maennchen Spiele- und Multimedia-Programmierung 3
B Frage zur Spielsteuerung bei einem rundenbasiertes Spiel Spiele- und Multimedia-Programmierung 5
K Seitenlänge aus einem Würfel lesen Spiele- und Multimedia-Programmierung 3
K Einzelne Pixel in einem Bild lesen Spiele- und Multimedia-Programmierung 5
T Kollisionsabfrage von einem Stein mit einem Ball Spiele- und Multimedia-Programmierung 5
G Einen gif oder jpg Datei aus einem Graphics Objekt o. JFrame Spiele- und Multimedia-Programmierung 2
A 3D Gegenstand in einem 2D Koordinatensystem darstellen. Spiele- und Multimedia-Programmierung 3
K Hilfe bei Grafikeinbindung in einem Spiel Spiele- und Multimedia-Programmierung 6
D Image.getGraphics() in einem Frame Spiele- und Multimedia-Programmierung 4
G Bufferimage bei einem Frame Spiele- und Multimedia-Programmierung 4
I Zweite Kamera in einem SimpleUniverse Spiele- und Multimedia-Programmierung 6

Ähnliche Java Themen

Neue Themen


Oben