Aufzug programmieren

Status
Nicht offen für weitere Antworten.

Ne Frage

Neues Mitglied
Hi,

hab mit Hilfe einiger Personen einen Aufzug programmiert aber ein Problem hab ich noch. Ab einer bestimmten position "fährt" er von allein ins unendlich.... wo und wie kann ich ihm sagen stop halt hier! Danke für eure Hilfe.

Code:
import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;

public class Aufzugtop extends Applet implements ActionListener
	{
	private Button steigen, sinken;
	private Aufzug meinAufzug;
	
public void init()
	{
		steigen = new Button("Hinauf");
		add(steigen);
		steigen.addActionListener(this);
		
		sinken = new Button ("Hinunter");
		add(sinken);
		sinken.addActionListener(this);
		
		meinAufzug = new Aufzug(20, 250, 250);
	}
public void actionPerformed(ActionEvent event) 
	{ 
       
         steigen.setEnabled( false ); 
         sinken.setEnabled( false ); 
          
         final int delta = event.getSource() == steigen ? -5 : 5; 
          
         Thread thread = new Thread(){ 
         
public void run(){ 
               do{ 
                  meinAufzug.groesseVeraendern( delta ); 
                  repaint(); 
                   
                  try { 
                  Thread.sleep( 100 ); 
} 
catch (InterruptedException e) {
                  e.printStackTrace(); 
} 
                   
   }
while(meinAufzug.getHoehe() > 30 && meinAufzug.getHoehe() >10);
                
               steigen.setEnabled( true ); 
               sinken.setEnabled( true ); 
   } 
   }; 
          
         thread.start(); 
   }
public void paint (Graphics g)
	{
		meinAufzug.anzeigen(g);
		setBackground(Color.red);
	}
	}
class Aufzug
	{
	private int Hoehe;
	private int xKoord, yKoord;
	int a=100;
	int b=150;
	
	
public Aufzug(int anfangsHoehe, int anfangsX, int anfangsY)
	{
		Hoehe=anfangsHoehe;
		xKoord=anfangsX;
		yKoord=anfangsY;
	}
public void groesseVeraendern(int veraenderung)
	{
		Hoehe=Hoehe+veraenderung;
	}
public void anzeigen(Graphics g)
	{
		g.setColor(Color.blue);
		g.fillRect(xKoord,Hoehe,a,b);	
	}
		public int getHoehe(){ 
  		return Hoehe; 

	}
	}
 
G

Guest

Gast
Ne Frage hat gesagt.:
Hi,

Code:
while(meinAufzug.getHoehe() > 30 && meinAufzug.getHoehe() >10);
                
               steigen.setEnabled( true ); 
               sinken.setEnabled( true ); 
   }

sicher das es nicht
Code:
while(meinAufzug.getHoehe() < 30 && meinAufzug.getHoehe() >10);
heissen muss ???
 

rastaman

Mitglied
Also im Moment ist es ja so, dass man dreimal auf "Hinunter" klicken kann und dann rauscht er ab in die Tiefe....


wenn man den Vorschlag von "Gast" bevolgt ist es halt umgekehrt, man klickt dreimal hinfauf, und dann rauscht er in die Höhe...
(Dieser Vorschlag ist logischer, da das applet, wenn man es vergrössert, den Lift immer oben Zeichnet...)

ich habs jetzt mal so geändert:

Code:
while(meinAufzug.getHoehe() < 60 && meinAufzug.getHoehe() >10);

und das ganze sieht dann mit zusätzlichem Button etwa so aus:


Code:
/*
 * aufz.java
 *
 * Created on 28. Juni 2004, 23:41
 */

package tests;

import java.awt.*; 
import java.applet.Applet; 
import java.awt.event.*; 
/**
 *
 * @author  bruce
 */
public class aufz extends java.applet.Applet implements ActionListener{
    


   private Button steigen, sinken, stopp; 
   private Aufzug meinAufzug; 
   private int delta;
    
public void init() 
   { 
      steigen = new Button("Hinauf"); 
      add(steigen); 
      steigen.addActionListener(this); 
       
      sinken = new Button ("Hinunter"); 
      add(sinken); 
      sinken.addActionListener(this); 
      
      stopp = new Button ("Notstopp"); 
      add(stopp); 
      stopp.addActionListener(this); 
       
      meinAufzug = new Aufzug(20, 250, 250); 
   } 

public void actionPerformed(ActionEvent event) 
   { 
        
         steigen.setEnabled( false ); 
         sinken.setEnabled( false ); 
         //neue funktion... ziemlich unsauber...
         if (event.getSource() == stopp){ 
             delta = 0;
             steigen.setEnabled( true ); 
             sinken.setEnabled( true );
         }
         if (event.getSource() == steigen){delta = -5;}
         if (event.getSource() == sinken){delta =5;}
         //final int delta = event.getSource() == steigen ? -5 : 5; 
          
         Thread thread = new Thread(){ 
          
public void run(){ 
               do{ 
                  meinAufzug.groesseVeraendern( delta ); 
                  repaint(); 
                    
                  try { 
                  Thread.sleep( 100 ); 
} 
catch (InterruptedException e) { 
                  e.printStackTrace(); 
} 
                    
   } 
               //willst du sowas?
while(meinAufzug.getHoehe() < 60 && meinAufzug.getHoehe() >10); 
                
               steigen.setEnabled( true ); 
               sinken.setEnabled( true ); 
   } 
   }; 
          
         thread.start(); 
   } 
public void paint (Graphics g) 
   { 
      meinAufzug.anzeigen(g); 
      setBackground(Color.red); 
   } 
   } 
class Aufzug 
   { 
   private int Hoehe; 
   private int xKoord, yKoord; 
   int a=100; 
   int b=150; 
    
    
public Aufzug(int anfangsHoehe, int anfangsX, int anfangsY) 
   { 
      Hoehe=anfangsHoehe; 
      xKoord=anfangsX; 
      yKoord=anfangsY; 
   } 
public void groesseVeraendern(int veraenderung) 
   { 
      Hoehe=Hoehe+veraenderung; 
   } 
public void anzeigen(Graphics g) 
   { 
      g.setColor(Color.blue); 
      g.fillRect(xKoord,Hoehe,a,b);    
   } 
      public int getHoehe(){ 
        return Hoehe; 

   } 
   
}

Ist zwar unsauber... Aber ist es sowas, dass du willst?
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben