Wie sicher schon viele mitbekommen haben, arbeite ich an einem Spiel.
Das nun sicher größte Problem erfordert euer Hirnschmalz und etwas ehrgeiz. ich habe mich schon etwas umgehört, bin aber auf noch keine zufriedenstellende lösung gekommen.
Es soll festfestellt werden ob das Volle Viereck (das in der geschw. geregelt werden kann) eines der leeren Vierecke berührt.
SO SCHAUTS IM MOMENT AUS
und hier ist der Code in dem das meiste errechnet und gezeichnet wird
Daweil ist alles irgendwie in die graphics gepfercht... eben nur aus Testzwecken.. das wird aber im Moment behoben.
mfg
Das nun sicher größte Problem erfordert euer Hirnschmalz und etwas ehrgeiz. ich habe mich schon etwas umgehört, bin aber auf noch keine zufriedenstellende lösung gekommen.
Es soll festfestellt werden ob das Volle Viereck (das in der geschw. geregelt werden kann) eines der leeren Vierecke berührt.
SO SCHAUTS IM MOMENT AUS
und hier ist der Code in dem das meiste errechnet und gezeichnet wird
Code:
import java.awt.*;
import javax.swing.*;
public class JStrassen extends JPanel
{
private boolean run;
private int speed = 0;
private int zaehler;
private int schrittweite;
private double xWert;
private double yWert;
private double steigung;
private int zufall;
private double verkehr1=(Math.random()*30);
private double verkehr2=((verkehr1+60)+Math.floor(Math.random()*(200-verkehr1+61)));
private double verkehr3=((verkehr2+60)+Math.floor(Math.random()*(200-verkehr2+61)));
private double verkehr4 =((verkehr3+60)+Math.floor(Math.random()*(200-verkehr3+61)));
//u + Math.floor(Math.random() * (o-u+1))
public JStrassen (int zaehler, boolean run, int speed)
{
setZaehler (zaehler);
setRunB (run);
setSpeed (speed);
}
public void setZaehler (int zaehler )
{
this.zaehler = zaehler;
}
public void setRunB (boolean run )
{
this.run = run;
}
public void setSpeed (int speed)
{
this.speed = speed;
}
public void paintComponent (Graphics screen)
{ Graphics2D screen2d = (Graphics2D) screen;
zufall=(int)(Math.random()*10);
/** Die Straße wird gezeichnet.
*/
screen.setColor(new Color(155,155,155)); //Das grau für die Straße
//screen.fillRect(0,150,800,60); //Der gerade Straßenteil
//screen.fillArc(400,150,600,540,90,90); //Die Kurve
screen.setColor(new Color(255,255,255));
screen.fillArc(460,210,540,480,90,90);
screen.setColor(new Color(0,0,0));
//screen.fillOval(515,224,5,5); //Der Schnittpunkt
//screen.fillOval(700,178,5,5); //Der Schnittpunkt
screen.drawString(verkehr1 + " " + verkehr2 + " " + verkehr3 + " " + verkehr4,120,40);
//Autos zeichnen
screen.drawRect(((int)(-verkehr1+(zaehler*5))),180, 50,20);
screen.drawRect(((int)(-verkehr2+(zaehler*5))),180,50,20);
screen.drawRect(((int)(-verkehr3+(zaehler*5))),180,50,20);
screen.drawRect(((int)(-verkehr4+(zaehler*5))),180,50,20);
//Berechnen der Werte für den Punkt
xWert = schrittweite;
if(schrittweite<515) //Bevor die Kurve gefahren wird
{yWert = -0.53018867924528301886792452830189*xWert + 505;
// screen.fillOval((int)xWert-2, (int)yWert-2,4,4);
steigung=(-0.53018867924528301886792452830189);
screen2d.rotate(steigung,(int)xWert,(int)yWert);
screen.fillRect((int)xWert,(int)yWert,50,20);
screen2d.rotate(-steigung,(int)xWert,(int)yWert);
screen.drawString("Steigung: "+zufall,120,30);
}
else
{ if (schrittweite>700) //nachdem die Kurve gefahren wurde
{yWert= 180;
// screen.fillOval((int)xWert-2, (int)yWert-2,4,4);
steigung=0;
screen2d.rotate(steigung,(int)xWert,(int)yWert);
screen.fillRect((int)xWert,(int)yWert,50,20);
screen2d.rotate(-steigung,(int)xWert,(int)yWert);
screen.drawString("Steigung: "+steigung,120,30);
}
else //die Kurve
{yWert=0.001463*(xWert*xWert)-2.034*xWert+887.199;
// screen.fillOval((int)xWert-2, (int)yWert-2,4,4);
steigung=2*0.001464*(xWert)-2.034;
screen2d.rotate(steigung,(int)xWert,(int)yWert);
screen.fillRect((int)xWert,(int)yWert,50,20);
screen2d.rotate(-steigung,(int)xWert,(int)yWert);
screen.drawString("Steigung: "+steigung,120,30);
}
}
/**
Hier wird die Geschwindigkeit des Autos verändert
**/
if(run==true)
schrittweite += speed;
if((schrittweite>1000))
schrittweite = 0;
// Für Testzwecke werden einige Werte dargestellt
//screen.fillRect (20+(schrittweite),20,20,20);
screen.drawString("Zaehler:"+ zaehler + "Speed: " + speed+"Zaehler1:" + schrittweite, 120,120);
screen.drawString("XWert: "+xWert + "yWert: "+yWert,120,150);
}
}
Daweil ist alles irgendwie in die graphics gepfercht... eben nur aus Testzwecken.. das wird aber im Moment behoben.
mfg