Kompliziertes Problem!

  • Themenstarter Themenstarter Clemenzo
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
C

Clemenzo

Gast
Guten Tag, ich möchte ein kleines Spiel mit Java-Applet programmieren, in welchem sich Kästchen von alleineüber ein Gitter bewegen und der SPieler während dessen ein Kästchen selbst steuern kann!

Ich bekomme es jedoch leider nicht hin, dass sich die Kästchen von alleine hin und her bewegen und man gleichzeitig ein Kästchen steuern kann! Wie kann man so etwas programmieren? Ich habe mit einer while-schleife versucht, dass sich die Kästchen alle 2 sec in eine Richtung bewegen, hat geklappt, aber ich konnte dann wiederum nicht mein Kästchen während dessen steuern..

Ich schreib hier mal meinen Quellcode hinein, auch wenn er nicht gut geschrieben ist, ich hoffe ihr versteht auch ohne den Quellcode mein problem. Der Quellcode ist nicht gerade sehr durchschaubar!:



import java.awt.*;
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.util.Random;
import java.lang.*;
import java.io.*;
import java.text.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class HalloWWW extends Applet
{
Button links, rechts, oben, unten ;
Label l_satz;
TextField t_satz;
long start = System.currentTimeMillis();
long t=3000;

Rechteck r = new Rechteck();
int li=1, re=1, ob=1, un=1 ;
int fi=1,fe=1,fo=1,fu=1;
int go=1;
public void paint(Graphics gc)
{

for(int i=1;i<30;i++)
{
gc.drawLine(1,30*i,500,30*i);
gc.drawLine(30*i,30,30*i,500);
}
gc.setColor(Color.red);
gc.fillRect(90,60,30,30);
gc.setColor(Color.green);
gc.fillRect(120,90,30,30);

r.zeichnen(gc, li,re,ob,un);
r.zeichnen(gc,fi,fe,fo,fu);


}
class Spielen implements ActionListener
{



public void actionPerformed(ActionEvent e)
{

if((System.currentTimeMillis()-start) >t)
{
li++;
t+=2000;
repaint();
}


String a;
a = e.getActionCommand();


if(a.equals("links"))
{
li--;



if((li==3 & re==2 & ob==1 & un==1)|(li==4 & re==3 &ob==1 & un==1))
{
t_satz.setText("DONG");
li++;

repaint();
}
else
repaint();

}
if(a.equals("rechts"))
{
li++;

if(li==3 & re==2 & ob==1 & un==1|(li==4 & re==3 &ob==1 & un==1))
{
t_satz.setText("Doing");
li--;
repaint();
}
else
repaint();

}
if(a.equals("oben"))
{
re--;

if(li==3 & re==2 & ob==1 & un==1|(li==4 & re==3 &ob==1 & un==1))
{
t_satz.setText("Bautz!");
re++;
repaint();
}
else
repaint();

}
if(a.equals("unten"))
{
re++;


if(li==3 & re==2 & ob==1 & un==1|(li==4 & re==3 &ob==1 & un==1))
{
t_satz.setText("KLONG");
re--;
repaint();
}
else
repaint();


}
}
}
public void init()

{

links = new Button("links");
rechts = new Button("rechts");
oben = new Button ("oben");
unten = new Button ("unten");

l_satz = new Label("Gesucht:");
t_satz= new TextField(10);

setLayout(new FlowLayout(FlowLayout.LEFT));

add(links);
add(oben);
add(unten);
add(rechts);


add(l_satz);
add(t_satz);

links.addActionListener(new Spielen());
rechts.addActionListener(new Spielen());
oben.addActionListener(new Spielen());
unten.addActionListener(new Spielen());
}
}



class Rechteck
{
private int li,re,ob,un ;

public Rechteck()
{
int li=1;
int re=1;
int ob=1;
int un=1;
}

public void zeichnen(Graphics g, int li, int re, int ob, int un )
{
g.setColor(Color.black);
g.fillRect(30*li,30*re,30*ob,30*un);


}
}
 
Argh... kannst du den code mitte mit den code-tags formatieren? Das liest sich so schlecht wenn alles nach "einheitsbrei" aussieht.
 
könntest du bitte code-tags setzen, dann können wir uns den quellcode besser durchlesen.

lg doctus
 
Ich hab mir deinen Code auch nicht wirklich durchgelesen - aber mir ist dennoch aufgefallen das du keine Threads benutzt. Also: verwende Threads!

MfG,
Hilefoks
 
Code:
mport java.awt.*;
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.util.Random;
import java.lang.*;
import java.io.*;
import java.text.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class HalloWWW extends Applet
{
Button links, rechts, oben, unten ;
Label l_satz;
TextField t_satz;
long start = System.currentTimeMillis();
long t=3000;

Rechteck r = new Rechteck();
int li=1, re=1, ob=1, un=1 ;
int fi=1,fe=1,fo=1,fu=1;
int go=1;
public void paint(Graphics gc)
{

for(int i=1;i<30;i++)
{
gc.drawLine(1,30*i,500,30*i);
gc.drawLine(30*i,30,30*i,500);
}
gc.setColor(Color.red);
gc.fillRect(90,60,30,30);
gc.setColor(Color.green);
gc.fillRect(120,90,30,30);

r.zeichnen(gc, li,re,ob,un);
r.zeichnen(gc,fi,fe,fo,fu);


}
class Spielen implements ActionListener
{



public void actionPerformed(ActionEvent e)
{

if((System.currentTimeMillis()-start) >t)
{
li++;
t+=2000;
repaint();
}


String a;
a = e.getActionCommand();


if(a.equals("links"))
{
li--;



if((li==3 & re==2 & ob==1 & un==1)|(li==4 & re==3 &ob==1 & un==1))
{
t_satz.setText("DONG");
li++;

repaint();
}
else
repaint();

}
if(a.equals("rechts"))
{
li++;

if(li==3 & re==2 & ob==1 & un==1|(li==4 & re==3 &ob==1 & un==1))
{
t_satz.setText("Doing");
li--;
repaint();
}
else
repaint();

}
if(a.equals("oben"))
{
re--;

if(li==3 & re==2 & ob==1 & un==1|(li==4 & re==3 &ob==1 & un==1))
{
t_satz.setText("Bautz!");
re++;
repaint();
}
else
repaint();

}
if(a.equals("unten"))
{
re++;


if(li==3 & re==2 & ob==1 & un==1|(li==4 & re==3 &ob==1 & un==1))
{
t_satz.setText("KLONG");
re--;
repaint();
}
else
repaint();


}
}
}
public void init()

{

links = new Button("links");
rechts = new Button("rechts");
oben = new Button ("oben");
unten = new Button ("unten");

l_satz = new Label("Gesucht:");
t_satz= new TextField(10);

setLayout(new FlowLayout(FlowLayout.LEFT));

add(links);
add(oben);
add(unten);
add(rechts);


add(l_satz);
add(t_satz);

links.addActionListener(new Spielen());
rechts.addActionListener(new Spielen());
oben.addActionListener(new Spielen());
unten.addActionListener(new Spielen());
}
}



class Rechteck
{
private int li,re,ob,un ;

public Rechteck()
{
int li=1;
int re=1;
int ob=1;
int un=1;
}

public void zeichnen(Graphics g, int li, int re, int ob, int un )
{
g.setColor(Color.black);
g.fillRect(30*li,30*re,30*ob,30*un);


}
}
 
aah..sry ist immer noch ziemlich unübersichtlich..vergesst den code! Nennt mir nur ein paar kreative Lösungsvorschläge, wie sich Kästchen auf ein Gitternetz selbständig und unabhängig hin und her bewegen können, während man selbst ein kästchen steuern kann!
 
Wurde schon geschrieben.

Die sich selbst bewegenden Kästchen durch einen eigenen Thread steuern lassen
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben