Formel für Apfelschiessen funktioniert nicht richtig

Status
Nicht offen für weitere Antworten.

777

Bekanntes Mitglied
Wer ein wenig Lust hat zu denken kann mir ja mal bei meinem Problem helfen.
Wie schon gesagt habe ich ein Apfelschiessen programmiert.
Am Bildschirm tauchen per Zufall verschiedene Bälle auf, die der User abschiessen muss.
Diese tauchen mit Hilfe "SetOval" etc auf.
Ich habe nun mit Hilfe des Satz des Pythagoras probiert das Programm so weiter zu bekommen, dass in ein Label Oben am Bildschirm ein "hallo" erscheinen soll wenn man einen apfel getroffen hat.
Leider funktioniert meine Formel nicht richtig- der hat nen Problem mit dem wurzel ziehen:

if((sqrt((posx+r-mausx)*(posx+r-mausx))+((posy+r-mausy)*(posy+r-mausy)))<=r)

Woran könnte das liegen?



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

public class Applecatch extends java.applet.Applet implements Runnable
{
 int f1=0,f2=0,f3=0,f4=0,a=0,b=0,h=0,posx=0,posy=0,mausx=0,mausy=0,r=0;
 
 Thread Apfelschiessen = null;
  
 //Objekterstellung Objekterstellung Objekterstellung Objekterstellung
 //Objekterstellung Objekterstellung Objekterstellung Objekterstellung
 //Objekterstellung Objekterstellung Objekterstellung Objekterstellung
 java.awt.Label ausgabe = new java.awt.Label();
 
 //Objekterstellung Objekterstellung Objekterstellung Objekterstellung
 //Objekterstellung Objekterstellung Objekterstellung Objekterstellung
 //Objekterstellung Objekterstellung Objekterstellung Objekterstellung
 
 
 public void init()
 {
  setLayout(null);
  setSize(400,400);
  setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.CROSSHAIR_CURSOR));
  
  //Labels
  add(ausgabe);
  ausgabe.setBounds(0,0,200,20);
  //Labels
  
  //Maus MAUS Maus MAUS Maus MAUS Listener
  Listen Mauslistener = new Listen();
  this.addMouseListener(Mauslistener);
  //Maus MAUS Maus MAUS Maus MAUS Listener ENDE
 }  
 
 
 //MAUS MAUS MAUS MAUS MAUS MAUS MAUS MAUS MAUS
 //MAUS MAUS MAUS MAUS MAUS MAUS MAUS MAUS MAUS
 //MAUS MAUS MAUS MAUS MAUS MAUS MAUS MAUS MAUS
 //MAUS MAUS MAUS MAUS MAUS MAUS MAUS MAUS MAUS
 
 class Listen extends java.awt.event.MouseAdapter
 {
     public void mousePressed(java.awt.event.MouseEvent Ereignis)
     {
       Object maus = Ereignis.getSource();
       if(maus==Applecatch.this)
       formdruck(Ereignis);
   
        
     }  
    
    
 }  
 
 
  
 //MAUS MAUS MAUS MAUS MAUS MAUS MAUS MAUS MAUS
 //MAUS MAUS MAUS MAUS MAUS MAUS MAUS MAUS MAUS
 //MAUS MAUS MAUS MAUS MAUS MAUS MAUS MAUS MAUS
 //MAUS MAUS MAUS MAUS MAUS MAUS MAUS MAUS MAUS
 
 
 public void run()
 {
        while(true)
        {
        repaint();
        
        try
        {
        Apfelschiessen.sleep(1000);
        }
        
        catch(InterruptedException e)
        {
            
        }   
        
        
        }
 }
 
 public void start()
 {
 Thread Apfelschiessen = new Thread(this);   
 Apfelschiessen.start();
 } 
 
      public void paint(Graphics g)
      {

            f1=(int)(Math.random()*200);
            f2=(int)(Math.random()*200);
            f3=(int)(Math.random()*200);
            f4=(int)(Math.random()*200);
            
            posx=(int)(Math.random()*300+10);
            posy=(int)(Math.random()*300+10);
            b=(int)(Math.random()*100+10);

            g.setColor(new Color(f1,f2,f3,f4));  
            g.fillOval(posx,posy,b,b);    
            
            
            

            
            try
            {
            Apfelschiessen.sleep(1500);
            }
            
            catch(InterruptedException e)
            {
                
            }     
            f1=(int)(Math.random()*200);
            f2=(int)(Math.random()*200);
            f3=(int)(Math.random()*200);
            f4=(int)(Math.random()*200);
            
            posx=(int)(Math.random()*300+10);
            posy=(int)(Math.random()*300+10);
            b=(int)(Math.random()*100+10);

            g.setColor(new Color(f1,f2,f3,f4));  
            g.fillOval(posx,posy,b,b); 
     
            
           
      }   
     

//OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE 
//OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE
//OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE
//OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE
//OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE

        void formdruck(java.awt.event.MouseEvent Ereignis)
        {   
         mausx=Ereignis.getX();
         mausy=Ereignis.getY();

         r=b/2;
        


         if((sqrt((posx+r-mausx)*(posx+r-mausx))+((posy+r-mausy)*(posy+r-mausy)))<=r)
         {
           ausgabe.setText("HALLO");
         }
         else
         {
           ausgabe.setText("WOS");
         }

       
        }   

//OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE 
//OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE
//OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE
//OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE
//OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE Ende


}


cya
David
 
Du musst "Math.sqrt" schreiben, "sqrt" ist eine ganz normale Methode...
 
1
2
3
4
5



int basis = 2;
int exponent = 3;
int i = Math.pow(basis, exponent); //i = 8


perfekt!
Danke
 
Mein fertiges Programm lautet:

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

public class Applecatch extends java.applet.Applet implements Runnable
{
 int f1=0,f2=0,f3=0,f4=0,a=0,b=0,h=0,posx=0,posy=0,mausx=0,mausy=0,r=0;
 double abstand=0;
 
 Thread Apfelschiessen = null;
  
 //Objekterstellung Objekterstellung Objekterstellung Objekterstellung
 //Objekterstellung Objekterstellung Objekterstellung Objekterstellung
 //Objekterstellung Objekterstellung Objekterstellung Objekterstellung
 java.awt.Label ausgabe = new java.awt.Label();
 
 //Objekterstellung Objekterstellung Objekterstellung Objekterstellung
 //Objekterstellung Objekterstellung Objekterstellung Objekterstellung
 //Objekterstellung Objekterstellung Objekterstellung Objekterstellung
 
 
 public void init()
 {
  setLayout(null);
  setSize(400,400);
  setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.CROSSHAIR_CURSOR));
  
  //Labels
  add(ausgabe);
  ausgabe.setBounds(0,0,200,20);
  //Labels
  
  //Maus MAUS Maus MAUS Maus MAUS Listener
  Listen Mauslistener = new Listen();
  this.addMouseListener(Mauslistener);
  //Maus MAUS Maus MAUS Maus MAUS Listener ENDE
 }  
 
 
 //MAUS MAUS MAUS MAUS MAUS MAUS MAUS MAUS MAUS
 //MAUS MAUS MAUS MAUS MAUS MAUS MAUS MAUS MAUS
 //MAUS MAUS MAUS MAUS MAUS MAUS MAUS MAUS MAUS
 //MAUS MAUS MAUS MAUS MAUS MAUS MAUS MAUS MAUS
 
 class Listen extends java.awt.event.MouseAdapter
 {
     public void mousePressed(java.awt.event.MouseEvent Ereignis)
     {
       Object maus = Ereignis.getSource();
       if(maus==Applecatch.this)
       formdruck(Ereignis);
   
        
     }  
    
    
 }  
 
 
  
 //MAUS MAUS MAUS MAUS MAUS MAUS MAUS MAUS MAUS
 //MAUS MAUS MAUS MAUS MAUS MAUS MAUS MAUS MAUS
 //MAUS MAUS MAUS MAUS MAUS MAUS MAUS MAUS MAUS
 //MAUS MAUS MAUS MAUS MAUS MAUS MAUS MAUS MAUS
 
 
 public void run()
 {
        while(true)
        {
        repaint();
        
        try
        {
        Apfelschiessen.sleep(1000);
        }
        
        catch(InterruptedException e)
        {
            
        }   
        
        
        }
 }
 
 public void start()
 {
 Thread Apfelschiessen = new Thread(this);   
 Apfelschiessen.start();
 } 
 
      public void paint(Graphics g)
      {

            f1=(int)(Math.random()*200);
            f2=(int)(Math.random()*200);
            f3=(int)(Math.random()*200);
            f4=(int)(Math.random()*200);
            
            posx=(int)(Math.random()*300+10);
            posy=(int)(Math.random()*300+10);
            b=(int)(Math.random()*100+10);

            g.setColor(new Color(f1,f2,f3,f4));  
            g.fillOval(posx,posy,b,b);    
            
            
            

            
            try
            {
            Apfelschiessen.sleep(1500);
            }
            
            catch(InterruptedException e)
            {
                
            }     
            f1=(int)(Math.random()*200);
            f2=(int)(Math.random()*200);
            f3=(int)(Math.random()*200);
            f4=(int)(Math.random()*200);
            
            posx=(int)(Math.random()*300+10);
            posy=(int)(Math.random()*300+10);
            b=(int)(Math.random()*100+10);

            g.setColor(new Color(f1,f2,f3,f4));  
            g.fillOval(posx,posy,b,b); 
     
            
           
      }   
     

//OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE 
//OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE
//OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE
//OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE
//OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE

        void formdruck(java.awt.event.MouseEvent Ereignis)
        {   
         mausx=Ereignis.getX();
         mausy=Ereignis.getY();

         r=b/2;
         
         abstand=Math.sqrt((Math.pow(posx+r-mausx,2))+(Math.pow(posy+r-mausy,2)));


         if( (Math.sqrt(abstand))<=r)
         {
           ausgabe.setText("TREFFER");
         }
         else
         {
           ausgabe.setText("DANEBEN");
         }

       
        }   

//OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE 
//OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE
//OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE
//OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE
//OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE OBJEKTE Ende


}



Doch es funktioniert nicht.
Irgendwie trifft der nur manchmal.... obwohls eig ganz logisch wäre...
Einer Lust sich da reinzudenken?
David
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben