Schreibe Android APP



  • so das funktioniert jetzt. Aber ich hab ja 4 Bilder. Damit der User während des Timers delay nicht auf ein anderes Bild klickt, möchte ich die anderen 3 invisible schalten. Kurioserweise wird zwar der background des einen Bilders neu gezeichnet, aber die anderen Bilder werden nicht invisible gemacht. Woran kann das nun wieder liegen. Wie könnte ich das lösen.

    vi = (ImageView) v;
                //hier setz ich den hintergrund des geklickten bildes auf blau
                vi.setBackgroundColor(Color.argb(255, 163, 237, 250));
    
                //Hier setz ich die anderen 3 Bilder invisible
                if(vi!= imgRow1Left)
                {
                    imgRow1Left.setVisibility(View.INVISIBLE);
                }
                if(vi != imgRow1Left)
                {
                    imgRow1Right.setVisibility(View.INVISIBLE);
                }
                if(vi != imgRow1Left)
                {
                    imgRow2Left.setVisibility(View.INVISIBLE);
                }
                if(vi != imgRow1Left)
                {
                    imgRow2Right.setVisibility(View.INVISIBLE);
                }
    
                timer = new Timer();
                timer.schedule(timerTask, 3000);
    


  • Lies den Code nochmal.
    Zeile für Zeile. Ob das da steht was du meinst dass dastehen sollte. Tut es nämlich nicht. So offensichtliche Fehler musst du selbst finden.



  • Entweder du bemerkst deinen Copy & Paste Fehler und wenn du das nicht tust, dann kannst du an den entsprechenden Stellen Debuggen --> Achso, kannst du nicht, weil du das Debug-Problem noch nicht gelöst hast?

    Merke dir eins: Wenn du ein größeres Problem hast, dann deshalb, weil du gleich mehrere Fehler gemacht hast und das wird solange weitergehen, bis du die Dinge richtig anpackst.

    Wenn wir dir hier wieder alles sagen, dann stolperst du gleich im nächsten Moment über den nächsten Krümel auf den Boden, weil deine Herangehensweise schon falsch ist.



  • ah den copy paste fehler seh ich jetz auch *gg*. Aber bin mal gespannt ob es dann geht. Hatte vorher nee andere IMplementierung da ging es nicht..



  • ich möchte gern ein netzwerkfähiges Spiel programmieren.
    Ich stell mir das total einfach vor.

    Ich mach eine Client zu Client Anwendung ohne Server. Beim Setzen eines neuen Spielsteins, wird die neue Position über das Netzwerk geschickt. Ganz ohne Server.

    Gestartet wird das Spiel indem jeder Spieler die IP des anderen Spielers eingibt. Wahrscheinlich braucht dann jeder Client auch einen Listener.

    Wie wäre das eigentlich wenn 2 Spieler spielen die an einem Router hängen und die selbe IP-Adresse haben.

    Das sind jetzt einfach mal so Gedanken. Denkt einer dass es nicht so einfach geht ?



  • Kann mir das mal einer erklären. Ich hab hier einen anonymen Click Listener. Ich kann auch die recreate() Methode der Activity aufrufen. Wenn ich aber this. mache, dann wird mir z.B. recreate() und alle anderen Member der Klasse nicht angezeigt.

    // Create an anonymous implementation of OnClickListener
        private View.OnClickListener buttonNewListener = new View.OnClickListener() {
            public void onClick(View v) {
                    recreate();
            }
        };
    


  • Peter_Mueller schrieb:

    Wenn ich aber this. mache, dann wird mir z.B. recreate() und alle anderen Member der Klasse nicht angezeigt.

    Das this bezieht sich immer auf die Klasse in der es steht. Wenn du in der Anonymen Klasse this verwendest, bezieht es sich entsprechend auf die Anonyme Klasse, die keine recreate Methode etc. hat.

    Peter_Mueller schrieb:

    Ich kann auch die recreate() Methode der Activity aufrufen.

    Du befindest dich dort vermutlich im Scope der Activity. Anonyme Klasen und Lambdas beziehen den umgebenen scope mit ein. Daher kannst du einfach auf Variablen und Methoden aus der Activity zugreifen.



  • ich würde für mein 4 gewinnt Spiel gerne den MinMax bzw noch effizienter den Alpha Beta Pruning Algorithmus verwenden. Ich würde die Tiefe mit 4 implementieren , also 4 Züge vorausberechnen.

    Muss man da wirklich eine Baumstruktur anlegen? Dann wendet man einen Tree Algorithmus an und sucht den besten Pfad raus.



  • Hallo,

    ich benutze die Animation Klasse das hier ist mein Code.

    playerView.animate()
                            .translationY(50)
                            .setInterpolator(new AccelerateInterpolator())
                            .setInterpolator(new BounceInterpolator())
                            .setDuration(2000);
    

    das hier ist mein Spieler und in der selben Funktion wird dann auch der Computer Spieler ausgelöst. Und da benutz ich letztendlich wieder den selben Code nur die View heisst halt computerView.

    Jetzt hätte ich natürlich dass die PlayerView 2 sekunden runterfällt. Stattdessen erreicht die playerView sofort ihre Zielposition und nur die ComputerView wird 2 sekunden lang animiert. Was muss ich machen dass erst die PlayerView 2 sekunden animiert wird und erst dann die computerView 2 sekunden animiert wird ??



  • kennt keiner das Problem ?



  • Wieso gibt es in Android nicht diesen Textboxen wir man sie auch aus C# kennt.

    Wie bekommt man diese rechteckigen umrandeten Textboxen hin.

    Ist echt lästig dass es die nicht gibt....



  • Wie kann man denn auf das onTouchEvent warten

    public boolean onTouchEvent(MotionEvent e) { }

    Ich hab hier eine Funktion.

    void funk(){
    
    //DoSomething
    
      WaitforOnTouchEvent
    
    //get value which was changed in OnTouchEvent...
    
    }
    


  • Ich hab da meinen Server und der soll dann wenn das onTouchEvent abgearbeitet ist die neuen Positionsdaten an den Client schicken.

    Der Server müsste also das onTouchEvent abonnieren. Nur wie macht man das...

    Der Server muss doch auch in einem eigenen Thread laufen oder sonst könnte das onTouchEvent der Activity ja gar nicht auslösen...

    Die ganzen Ereignisse wie onTouchEvent etc laufen die alle in einem eigenen Thread oder ??



  • selbst

    InetAddress IP = InetAddress.getLocalHost();
    

    wirft eine NetworkOnMainThreadException Exception. Darf man nicht mal die IP-Adresse aus dem Main Thread ermitteln. Find ich jetzt übertrieben. Wenn ich den Aufruf in einem separaten Thread starte gehts...



  • Dieser Code zeigt mir auf meinem Computer meine tatsächliche IP Adresse an , aber auf meinem Android Phone den localhost obwohl die IP Adresse eine andere ist...

    InetAddress IP=InetAddress.getLocalHost();
    		System.out.println(IP.getHostAddress());
    

Anmelden zum Antworten