J
Johny
Gast
Code:
//import javax.sound.sampled.*;
import java.awt.Color;
import java.awt.*;
public class Ball
{
private int rand = 5;
private int radius; // Größe
private int x,y; // Position
private int maxx,maxy;
private int speed_x,speed_y; // Geschwindigkeit
private Color farbe; //Farbe
private String text;
private boolean visible = true;
Color farbe2 = new Color(0,255,255);
//ac = getAudioClip( getCodeBase(),"MetalCrash.au" );
public Ball(int radius, int x, int y,int maxx,int maxy, int dx, int dy, Color color,String text)
{
this.radius = radius;
this.x = x;
this.y = y;
this.maxx = maxx;
this.maxy = maxy;
speed_x = dx;
speed_y = dy;
rand = radius;
farbe = color;
this.text = text;
}
public void move()
{
if (visible)
{
x += speed_x;
y += speed_y;
isOut();
}
}
private boolean isOut()
{
boolean out = false;
if (x>(maxx-rand))
{
x = maxx-rand-1;
//
speed_x = speed_x * -1;
speed_x = (int)(speed_x * (2*(Math.random())));
speed_y = (int)(speed_y * (2*(Math.random())));
if (speed_x == 0)speed_x = (int)(2*(Math.random()+2));
if (speed_y == 0) speed_y = (int)(2*(Math.random()+2));
out = true;
}
if (x<(rand))
{
x = rand+1;
//
speed_x = speed_x * -1;
speed_x = (int)(speed_x * (1*(Math.random()+0.5)));
speed_y = (int)(speed_y * (1*(Math.random()+0.5)));
if (speed_x ==0)speed_x = (int)(2*(Math.random()+2));
if (speed_y == 0) speed_y = (int)(2*(Math.random()+2));
out = true;
}
if (y>(maxy-rand))
{
y = maxy-rand-1;
//
speed_y = speed_y * -1;
speed_y = (int)(speed_y * (1*(Math.random()+0.5)));
speed_x = (int)(speed_x * (1*(Math.random()+0.5)));
if (speed_y == 0)speed_y =-1;
if (speed_x == 0)speed_x =1;
out = true;
}
if (y<(rand))
{
y = rand+1;
//
speed_y = speed_y * -1;
speed_y = (int)(speed_y * (1*(Math.random()+0.5)));
speed_x = (int)(speed_x * (1*(Math.random()+0.5)));
if (speed_x == 0)speed_x =1;
out = true;
}
return out;
}
public boolean userHit (int maus_x, int maus_y)
{
// Bestimmen der Verbindungsvektoren
double mx = maus_x - x;
double my = maus_y - y;
// Berechnen der Distanz
double distance = Math.sqrt ((mx*mx) + (my*my));
// Wenn Distanz kleiner als 15 gilt Ball als getroffen
if (distance < 15)
{
return true;
}
else return false;
}
public boolean ballHit(int bx,int by)
{
double mx = bx - x;
double my = by - y;
// Berechnen der Distanz
double distance = Math.sqrt ((mx*mx) + (my*my));
// Wenn Distanz kleiner als 15 gilt Ball als getroffen
if (distance < 15)
{
return true;
}
else return false;
}
public int getNummer()
{
return Integer.parseInt(text);
}
public int getX()
{
return x;
}
public int getY()
{
return y;
}
public int getRadius()
{
return radius;
}
public void verdecken()
{
visible = false;
}
public void neueRichtung()
{
speed_y = speed_y *(-1);
speed_x = speed_x *(-1);
}
public void paint(Graphics g)
{
if (visible) g.setColor(farbe);
else
g.setColor(farbe2);
//g.fillOval(x,y,radius,radius);
g.drawString(text,x,y);
}
public void hide(Graphics g)
{
g.setColor(Color.BLACK);
//g.fillOval(x,y,radius,radius);
g.drawString(text,x,y);
}
}
Zitat:
import java.awt.*;
public class Schlaeger
{
private int x,y; // Position
private int tempX,tempY; // Gespeicherte Position
private int richtungX,richtungY; //Richtung der Maus
private int dx,dy; // Ausdehnung in x und y
private Color farbe; //Farbe
public Schlaeger(int x,int y,int dx,int dy,Color color)
{
this.x = x;
this.y = y;
this.dx = dx;
this.dy = dy;
farbe = color;
}
public void setPos(int x,int y)
{
this.tempX =x;
this.tempY = y;
}
public int getX()
{
return x;
}
public int getY()
{
return y;
}
public void paint(Graphics g)
{
// g.setColor(farbe);
// g.fillRect(x,y,dx,dy);
}
public boolean getroffenX(int ballX,int ballY,int radius)
{
boolean treffer = false;
if ((x+dx >= ballX)&&(x<ballX)) // rechte Seite des Schlägers
treffer = true;
if ((x<= ballX+radius)&&(x+dx>ballX+radius)) // linke Seite des Schlägers
treffer = true;
if (getroffenY(ballX,ballY,radius)&&treffer)
treffer = false;
return treffer;
}
public boolean getroffenY(int ballX,int ballY,int radius)
{
boolean treffer = false;
if (y+dy == ballY)
treffer = true;
if (y == ballY+radius)
treffer = true;
return treffer;
}
public void hide(Graphics g)
{
//g.setColor(Color.BLACK);
//g.clearRect(x,y,dx,dy);
x = tempX;
y = tempY;
}
}
Zitat:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.JButton;
import javax.swing.JDialog;
//Aufgabe 4
public class Spiel extends Applet implements Runnable, WindowListener, MouseMotionListener,ActionListener
{
Cursor c; // Variable für Cursor
Font f = new Font ("Serif", Font.BOLD, 50);
int speed = 150;
int treffernummer = 0;
Thread th;
Ball b;
Schlaeger s;
//Button but=new Button("Start");
TextField T= new TextField();
boolean bp=false;
private Image dbImage;
private Graphics dbg;
private Vector baelle;
private static final int maxBaelle = 15;
JDialog d = new JDialog();
public void init()
{
setSize(800,800);
setVisible(true);
c = new Cursor (Cursor.CROSSHAIR_CURSOR);
this.setCursor (c);
Color superblue = new Color (255, 0, 255);
// Setzen der Hintergrundfarbe
setBackground (Color.black);
// Setzten der Schrift
setFont (f);
speed = 15;
th = new Thread (this);
addMouseMotionListener(this);
s = new Schlaeger(100,100,25,50,new Color(255,0,0));
baelle = new Vector(20);
for ( int i= 0; i <=maxBaelle;i++)
{
Ball b = new Ball(10,30*i,30*i,getWidth(),getHeight(),(int)(Math.random()*3+1),(int)(Math.random()*3+1),superblue,String.valueOf(i));
baelle.add(b);
}
}
public void run() {
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
while (true)
{
try
{
// Stoppen des Threads für 10 Millisekunden
Thread.sleep (speed);
repaint();
}
catch (InterruptedException ex)
{
// do nothing
}
// Zurücksetzen der ThreadPriority auf Maximalwert
Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
}
}
public void update (Graphics g)
{
// Initialisierung des DoubleBuffers
if (dbImage == null)
{
dbImage = createImage (this.getSize().width, this.getSize().height);
dbg = dbImage.getGraphics ();
}
// Auf gelöschten Hintergrund Vordergrund zeichnen
dbg.setColor (getForeground());
s.hide(dbg);
s.paint(dbg);
for (Iterator iter = baelle.iterator();iter.hasNext()Wink
{ Ball b;
b = ((Ball) iter.next());
for (Iterator iter2 = baelle.iterator();iter2.hasNext()Wink
{ Ball b2;
b2 = ((Ball) iter2.next());
if ((b2.getX()!= b.getX())&&(b2.getY()!= b.getY()))
if (b2.ballHit(b.getX(),b.getY())) b2.neueRichtung();
}
b.hide(dbg);
b.move();
b.paint(dbg);
}
paint (dbg);
// Nun fertig gezeichnetes Bild Offscreen auf dem richtigen Bildschirm anzeigen
g.drawImage (dbImage, 0, 0, this);
}
public void start()
{
while (bp!=true)
{
run();
}
d.addMouseMotionListener(this);
d.add( new JButton ("Herzlich willkommen Spiel Starten") );
d.setSize( 300, 100 );
d.setVisible( true );
repaint();
Spiel s = new Spiel();
}
public void actionPerformed(ActionEvent e)
{
bp=true;
d.hide();
run();
}
public static void main(String[] args)
{
}
public void windowActivated(WindowEvent e) {}
public void windowClosed(WindowEvent e) {}
public void windowClosing(WindowEvent e)
{
}
public void windowDeactivated(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowOpened(WindowEvent e) {}
public void mouseClicked(MouseEvent e) {
}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {}
public void mouseDragged(MouseEvent e) { run(); }
public void mouseMoved(MouseEvent e) {
s.setPos(e.getX(),e.getY());
for (Iterator iter = baelle.iterator();iter.hasNext()Wink
{ Ball b;
b = ((Ball) iter.next());
if (b.userHit(s.getX(),s.getY()))
{
treffernummer=treffernummer+1;
System.out.print("Fehler"+treffernummer);
;
treffernummer = b.getNummer();
b.verdecken();
}
}
}}
soweit der sourcecode
Aufgabe1
jetzt soll eine begrüßung vorm spielbeginn gezeigt werden, die nach klicken verschwindet und das spiel startet.
Aufgabe2
EIn Fehlerzähler soll bei berühren einer falschen zahl um eins erhöht werden
Aufgabe3
nach beendigung des spiels soll nach nachfrage das spiel wieder von vorne anfangen
zb der fehlerzähler läuft ohne mein zutun unendlich weiter
ie begrüssung wird als fenster angezeigt
aber das programm läuft sofort los und der angezeigte button tut nichts
if (b.userHit(s.getX(),s.getY()))
{
treffernummer=treffernummer+1;
System.out.print("Fehler"+treffernummer);
die treffer kann ich auch nicht erfassen
wie komm ich dabei weiter?