1. #1
    Avatar von Lisamon
    Registriert seit
    24.07.2014
    Ort
    Auf meinem Sofa <3
    Beiträge
    641
    Spielt gerade
    Animal Crossing NH, Red Dead Redemption
    Konsolen
    Switch 3DS Wii DS PS3 GC GBA N64 SNES GB
    New3DS, XBOX, XBOX Series X, C64, PC

    großes Grinsen Java - div. Fragen und Probleme

    Hey Leute.

    Ich versuche im Moment mein erstes Spiel in Java zu Programmieren anhand dem was wir in der Schule lernen. Es klappt auch schon ganz gut, aber ich habe ein Problem beim Programmieren des Gegners und hoffe das mir hier vielleicht jemand helfen kann.

    Ganz kurz: Im allgemeinen geht es in dem Spiel darum, dass in einem Forschungslabor Roboter außer Kontrolle geraten sind und ein Jung jetzt die Aufgabe bekommt die Roboter entweder zu eleminieren oder die Fernbedienung zu finden, die alle Roboter augenblicklich abschaltet.

    Aber irgendwie kriege ich die Bewegungen der Roboter nicht richtig hin. Sie sollen sich Random im Raum bewegen, sich wenn sie auf ein Objekt oder den Rand der Map stoßen umdrehen und weiter, aber sich auch so ab und zu drehen.
    Mit einem einfachen Rotationswechsel ist es aber nicht getan, denn ich habe denen eine bestimmt Animation gegeben je nachdem in welche Richtung sie sich bewegen. Das Problem liegt jetzt darin, dass die Roboter sich schon so bewegen und das tun was sie sollen, aber halt nicht ganz. Sie drehen sich ständig. Mit anderen Worten: Sie krüppeln durch die Spielwelt. Wie kann ich machen, dass sie mehrere Schritte gehen, bevor sie sich random drehen? Ich vermute dass es an dem getRandomNumber liegt, weil da ja die Chance 25% ist, dass sie sich in jene Richtung bewegen und sich auch drehen. Aber ehrlich gesagt habe ich keine Ahnung wie ich es besser machen könnte.
    Das drehen am Rand habe ich jetzt mal ganz rausgenommen, weil das irgendwie nicht so funktionierte wie ich das wollte.
    Die Methode lookForDanny() habe ich definiert, aber das klappt einwandfrei, daswegen poste ich die mal jetzt nicht.

    Der Code für die Bewegung sieht im Moment so aus (und ja ich weis er ist noch ziemlich unprofessionell, bin halt noch nicht so weit):

    Code:
    public void act() 
    
        { 
            move();
            lookForDanny();
        }
    
    
    public void move()
        {
            if (Greenfoot.getRandomNumber(100) < 25)
            {
                setImage( Roboter1Links.getCurrentImage() );
                wall=(Furniture) getOneObjectAtOffset(-1,0, Furniture.class);
                if(wall==null)
                {                
                    for 
                    x = x-2; 
                    setLocation(x, y);
                }
            }
            if (Greenfoot.getRandomNumber(100) < 50 && (Greenfoot.getRandomNumber(100) >25))
            {
                setImage( Roboter1Rechts.getCurrentImage() );
                wall=(Furniture) getOneObjectAtOffset(1,0, Furniture.class);
                if(wall==null)
                {
                    x = x+1;
                    setLocation(x, y);  
                }
            }
            if ( Greenfoot.getRandomNumber(100) < 75 && (Greenfoot.getRandomNumber(100) >50))
            {
                setImage( Roboter1Oben.getCurrentImage() );
                wall=(Furniture) getOneObjectAtOffset(0,-1, Furniture.class);
                if(wall==null)
                {
                    y = y-2;
                    setLocation(x, y);
    
         
                }
            }     
            if (Greenfoot.getRandomNumber(100) < 100 && (Greenfoot.getRandomNumber(100) >75))
            {
                setImage( Roboter1Unten.getCurrentImage() );
                wall=(Furniture) getOneObjectAtOffset(0,1, Furniture.class);
                if(wall==null)
                {
                    y = y+2;
                    setLocation(x, y);
       
           
                }
            }
        }
    Es wäre echt toll wenn jemand von euch mehr Ahnung von Java hat als ich und mir helfen könnte und mir Tipss geben könnte wie ich das da alles eleganter hinkriegen könnte.

    LG Lisa


  2. #2
    Avatar von Cleese
    Registriert seit
    24.02.2003
    Ort
    Braunschweig
    Beiträge
    7.791
    Konsolen
    Switch
    Playstation 5
    move() wird einmal aufgerufen. Somit passiert wohl nur 1 Aktion... je nachdem wie random wirklich getrandomnumber ist.

  3. #3
    Avatar von Soren
    Registriert seit
    28.07.2011
    Ort
    Bayern
    Beiträge
    2.436
    Spielt gerade
    Videospiele
    Konsolen
    Switch PS4 Wii U 3DS Wii PSP DS PS3 GBA
    Du könntest die Bewegung und die Rotation in 2 verschiedene Methoden stecken und die Rotations Methode nur alle paar Sekunden aufrufen. Vielleicht mit Thread.sleep() oder Wait() Ich weiß nicht was man da zurzeit in Java eher benutzt.

    Und möchtest du wirklich, dass die Figur so schnell ihre Blickrichtung wechselt? Du könntest es so machen, dass nur ein Wechsel pro Methodenaufruf gemacht wird.
    Z.b. speicherst du den Wert von GetRandomNumber(100) am Anfang der Methode in eine Variable und fragst dann die 4 ifs eher nach folgendem ab:

    - Ist die Variable kleiner als 25
    - Ist sie größer als 25, aber kleiner als 50
    - Ist sie größer als 50, aber kleiner als 75
    - Ist sie größer als 75(oder einfach ein else, wenn du mit if/else arbeitest)

    Dadurch hast du nur eine Drehung alle paar Sekunden, je nachdem wieviel du bei Thread.sleep()/Wait() setzt.
    Und wenn du die Bewegung und die Rotation in einzelne Methoden trennst, kannst du die Bewegung dauerhaft laufen lassen und die Rotation nur abundzu. Wäre eine spontane Idee. Vielleicht hilft es dir ja.

  4. #4
    Avatar von Lisamon
    Registriert seit
    24.07.2014
    Ort
    Auf meinem Sofa <3
    Beiträge
    641
    Spielt gerade
    Animal Crossing NH, Red Dead Redemption
    Konsolen
    Switch 3DS Wii DS PS3 GC GBA N64 SNES GB
    New3DS, XBOX, XBOX Series X, C64, PC
    Danke für eure Antworten. Am Wochenende probiere ich dann mal aus ob ich das so hinkriege. Ich melde mich dann wieder und erzähle euch von dem Ergebnis


Ähnliche Themen

  1. NES Java-Version
    Von Cleese im Forum Nintendo
    Antworten: 3
    Letzter Beitrag: 20.04.2007, 18:50
  2. Java Games
    Von Vegeta im Forum Off Topic
    Antworten: 6
    Letzter Beitrag: 16.06.2004, 15:07
  3. Java Programmierung /ATW
    Von Blue Crush im Forum Off Topic
    Antworten: 2
    Letzter Beitrag: 02.12.2003, 16:59
  4. Scheiss Java
    Von Zeldafreak im Forum Off Topic
    Antworten: 21
    Letzter Beitrag: 22.10.2003, 18:11
  5. Java-Problem
    Von Vegeta im Forum Off Topic
    Antworten: 6
    Letzter Beitrag: 05.05.2003, 22:46

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Anmelden

Anmelden