Fussballspiel

Servus
Komme bei einer Aufgabe nicht weiter, wo es um "If " Verschachtlungen geht.
Aufgabe im Anhang.

Mein Ansatz bei dem ich nicht weiter komme.
Java:
.
public class Fusballspiel {


    public static void main(String[] args) {
        // TODO Auto-generated method stub
       
        // Deklaration
           
        String mannschaft1 = "Schalke" ;
        String mannschaft2 = "Dortmund" ;
        String zone = "Ball ist im Mittelfeld" ;
        double zufallszahl ;
       

       
        for(int i = 0 ; i< 91 ; i++)
        {
        System.out.println(i + ". Minute: " + zone);
        zufallszahl = Math.random()*100 ;
        System.out.println(zufallszahl);
       
        if(zone.equals("Ball ist im Tor von Dortmund")){
        zone = "Ball ist im Mittelfeld" ;
        {
       
        }
        }
        if (zufallszahl <= 30.0){
            zone = "Ball ist vor dem Tor von "+ mannschaft1 ;
           
            zufallszahl = Math.random()*100 ; 
            System.out.println(zufallszahl);
            if(zufallszahl <= 10.0){
                zone = "Ball ist im Tor von " + mannschaft1 ;
               
                   
        }
           
            }
                }
  }
}
Über Ideen und Tipps wäre ich sehr dankbar.
Mfg
 

Anhänge

  • Fussballspiel.pdf
    67,7 KB · Aufrufe: 8

T_T

Bekanntes Mitglied
Im Allgemeinen ist die Einrückung ein Schreckenspiel.

Und:
- Wo kommst du nicht weiter / Wo klemmts ?
- Raten mag hier keine :)
 

VfL_Freak

Top Contributor
Moin,

add 1: formatiere den Code bitte mal so, dass man ihn lesen kann. Ich vermute als erstes mal ganz pauschal einen Klammerungsfehler :p
add 2: poste Deinen Code (oder was auch immer es ist) hier direkt, so wie am Anfang. Hier werden die wenigsten diffuse PDFs öffnen wollen! Außerdem lassen sich nur dann Teile daraus sinnvoll zitieren
add 3: wie @T_T schon schreibt: kein Mensch weiß, was genau Dein Problem ist ... :confused:
Kommen Fehlermeldungen? Welche? StackTrace? :rolleyes:

Lies Dir bitte mal dies hier durch:
http://www.java-forum.org/forum-faq-beitraege/7407-man-fragen-richtig-stellt.html

VG Klaus
 

VfL_Freak

Top Contributor
Moin,
dann will ich mal nicht so sein ... habe heute meine sozialen Tag:
Java:
public class Fusballspiel
{
    public static void main(String[] args)
    {
        // TODO Auto-generated method stub

        // Deklaration
        String mannschaft1 = "Schalke" ;
        String mannschaft2 = "Dortmund" ;
        String zone = "Ball ist im Mittelfeld" ;
        double zufallszahl ;

        for(int i = 0 ; i< 91 ; i++)
        {
            System.out.println(i + ". Minute: " + zone);
            zufallszahl = Math.random()*100 ;
            System.out.println(zufallszahl);

            if(zone.equals("Ball ist im Tor von Dortmund"))
            {
                zone = "Ball ist im Mittelfeld" ;
                // {} = obsolet !!
            }
            if( zufallszahl <= 30.0 )
            {
                zone = "Ball ist vor dem Tor von "+ mannschaft1 ;
                zufallszahl = Math.random()*100 ;
                System.out.println(zufallszahl);
                if(zufallszahl <= 10.0)
                {
                    zone = "Ball ist im Tor von " + mannschaft1 ;
                }
            }
        } // for
    } // main
} // class
Eine echte Verschachtelung sehe ich hier nur bedingt!
Ich verstehe aber auch nicht, was der Code im einzelnen bewerkstelligen soll :(
Was hat es denn mit den Zufallszahlen (double??) genau auf sich ??

Und dieser Teil hier ist irgendwie auch ziemlich sinnfrei ;)
EDIT: ok, beim nächsten Schleifendurchlauf könnte das doch kommen ...

Java:
if(zone.equals("Ball ist im Tor von Dortmund"))
{
    zone = "Ball ist im Mittelfeld" ;
    // {} = obsolet !!
}

Versuch doch mal ein paar Komentare einzufügen, wo Du beschreibst, was die einzelnen Codeteile machen sollen !

VG Klaus
 
math.Random () liefert eine Zahl zwischen 0,1 und 1,0, deshalb Double.

Es gibt ja fünf Möglichkeiten
--> Der Ball ist im Mittelfeld
--> Linker und rechter Strafraum
--> Im Tor

Daraus muss ich ja jetzt einen "Weg" basteln :confused:
Gruß
 
Java:
import java.util.Scanner;
public class Fusballspiel {


    public static void main(String[] args) {
        // TODO Auto-generated method stub
       
        // Deklaration
           
        String mannschaft1 = "Schalke" ;
        String mannschaft2 = "Dortmund" ;
        String zone = "Ball ist im Mittelfeld" ;
        int zufallszahl ;
       
        for(int i = 0 ; i< 91 ; i++){
        System.out.println(i + ". Minute: " + zone);
        zufallszahl = (int) (Math.random()*100) ;
        // Way in the right area
        if(zone.equals("Ball ist im Tor von Dortmund")){
        zone = "Ball ist im Mittelfeld" ;
        }
        if(zone.equals("Ball ist im Tor von Schalke")){
            zone = "Ball ist im Mittelfeld" ;
            }
        if(zufallszahl > 39){
            zone = "Ball ist im Mittelfeld";   
            }
       
        if (zufallszahl <= 30){
            zone = "Ball ist vor dem Tor von "+ mannschaft1 ;
           
            if(zufallszahl <= 10)
                zone = "Ball ist im Tor von " + mannschaft1 ;
            }
            //Way in the left Area
            else{
                if(zufallszahl > 39){
                    zone = "Ball ist im Mittelfeld";   
                    }
               
                if (zufallszahl <= 30){
                    zone = "Ball ist vor dem Tor von "+ mannschaft2 ;
                   
                    if(zufallszahl <= 10)
                        zone = "Ball ist im Tor von " + mannschaft2 ;
                    }
                }
            }
        }       
    }

Jetzt habe ich eine Verschachtlung mit Kommentaren :D
Der Else Block wird jedoch nicht angerührt.
Jemand eine Idee wie ich das vielleicht besser lösen kann ?
Gruß
 

T_T

Bekanntes Mitglied
Der Else Block wird jedoch nicht angerührt.
Jemand eine Idee wie ich das vielleicht besser lösen kann ?
Also folgendes ist Prinzipiell möglich
Java:
if(foo)
   System.out.println(bar);

Jedoch empfehle ich, zum besseren Verständnis und für das bessere lesen folgendes:
Java:
if(foo) {
   System.out.println(bar);
}
Damit ist es direkt gekapselt und man versteht dies auf dem ersten Blick, grad wenn du wie in deinem obigen Beispiel mehrere ifs ineinander hast.

Dann zu deinem Problem:

Du frägst in deiner if folgendes ab:

- Ist die Zufallszahl größer 39, also 40, dann mache xy
- Ist die Zufallszahl kleiner oder gleich 30 dann mache yx
# trifft kleiner oder gleich 30 NICHT zu, dann gehe in den else Zweig.

Und genau dort kommt die gleiche Anweisung "größer 39" "kleiner oder gleich 30"....

Was ist aber mit dem Fall, wenn deine Zufallszahl zwischen 31 und 39 liegt?
Das hast du mit deinem Codeschnipsel nicht bedacht.
Bzw. Wenn die if mit <= 30 nicht zutrifft, dann wird es dies auch nicht in dem else Zweig.

Ich hoffe, das war hilfreich zur Lösung deines Problems.
 
Zuletzt bearbeitet:

Leon_2001

Aktives Mitglied
du könntest dein Spiel evtl realistischer gestalten, indem du auf die Zone eingehst in der Ball grade liegt.

Als pseudo code also:

wenn: Ball im Mittelfeld
wenn: Zahl > 60 && < 90
dann: Ball Strafraumzone rechts
wenn: Zahl < 40 && > 10
dann: Ball Strafraumzone links
wenn: Zahl >= 40 && <= 60
dann: Ball Mittelfeld
wenn: Zahl >= 90
dann: Ball im rechten Tor
wenn: Zahl <= 10
dann: Ball im linken Tor
wenn: Ball im rechten Strafraum
wenn: Zahl ...
dann ...
wenn: Zahl ...
dann...
Hier kannst du dir überlegen, was wahrscheinlich ist:
- Tor rechts 30%
- Tor links 5%
- der Ball bleibt im Strafraum (für eine Minute ---> unwahrscheinlich) 5%
- Befreiungsschlag Mittelfeld vlt. 35%
- Befreiungsschlag Strafraum (bzw. ein bisschen davor vlt.) 25%

Außerdem solltest du dir überlegen, was im Fußball passiert, wenn der Ball tatsächlich im Tor landet... dann würde nämlich aktuell einfach nur die Meldung kommen Ball ist im Tor und dann springt der Ball vlt. einfach von einem Tor ins andere usw. das ist ja in echt ein wenig anders;)

Hinweis: Hier könnte eine Switch Konstruktion recht nützlich sein, dennoch würde ich es für den Anfang erstmal mit if und if else machen, damit du lernst damit umzugehen
 

Neue Themen


Oben