Jump&Run spiel Sprung funktion vorhanden blos die einzelnen Schritte für flüssigen Sprung fehlen

  • Antworten:9
Alex Beluvin
  • Forum-Beiträge: 4

25.06.2015, 09:54:43 via Website

Hallo zusammen

Ich hab die Aufgabe ein Jump&Run Spiel zu programmieren. Ich hab die Figur eingefügt und auch die Sprungfunktion eingebaut aber er springt nur an die jeweiligen Koordinaten. Mir fehlen die zwischenschritte sodass ich sehe wie meine Figur springt wenn jemand Vorschläge hat oder Beispiel Code immer her damit.

LG Alex

— geändert am 25.06.2015, 11:54:17

Antworten
Klaus
  • Blogger
  • Forum-Beiträge: 19.172

25.06.2015, 11:41:56 via App

Hallo Alex Beluvin!

Ich habe deinen Thread mal in den passenden Bereich verschoben.

Bitte beachte, dass Threads mit nicht aussagekräftigem Titel bei uns üblicherweise den Regeln entsprechend entfernt werden. Ich bitte dich daher, deinen Threadtitel innerhalb der nächsten 24 Stunden, spätestens jedoch bei deinem nächsten Besuch noch etwas aussagekräftiger zu gestalten (Hierfür einfach unter deinem ersten Beitrag auf 'bearbeiten' klicken, dann kannst du oben noch mal den Titel anpassen)

Danke :)

| LG Klaus |
| Google Nexus 6P - Dirty Unicorns | Google Nexus 6 - Dirty Unicorns |
| Das AndroidPITiden-Buch | Die Androiden-Toolbox | AndroidPIT-Regeln |

Antworten
Alex Beluvin
  • Forum-Beiträge: 4

25.06.2015, 14:55:57 via Website

Die Fugur soll sich innerhalb der Activity freibewegen können. Sie soll von a nach b springen aber mit allen zwischenschritten damit es wie ein Sprung aussieht.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

25.06.2015, 15:18:03 via Website

Das ist mir klar, aber wie machst du den Sprung bisher im Progamm?

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Alex Beluvin
  • Forum-Beiträge: 4

25.06.2015, 15:43:14 via Website

package com.hartmannfp.jumpnrun;

import com.hartmannfp.jumpnrun.R;
import android.support.v7.app.ActionBarActivity;
import android.hardware.Camera.Parameters;
import android.media.Image;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;

public class MainActivity extends ActionBarActivity {

private final int YMIN=500;
private final int YMAX=100;
private int x = 100;
private int y = YMIN ;
private ImageView image1 = null;
private boolean anhalten = false;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    image1 =(ImageView) findViewById(R.id.activity_main_image_token);

// Button einfuegen
Button button1 = (Button) findViewById(R.id.activity_main_button_jump);
button1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            jump();





        }
    });
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}
public void jump() {

    image1.setX(x);
    image1.setY(y);





            new Thread(new Runnable() {
            public void run() {
                System.out.println("starte thread");
                anhalten = false;
                long now = System.currentTimeMillis();
                int elapsedTime = 100;
                int jump = y-(YMIN-YMAX);

                while(y > jump)
                {
                    if(System.currentTimeMillis() > now + elapsedTime)
                    {
                        now = now + elapsedTime;
                        elapsedTime -=3;
                        y = y-10;

// image1.setY(y);
System.out.println("up " + y);
}
}
while(y < YMIN)
{
long jetztgerade= System.currentTimeMillis();

                    if(jetztgerade > now + elapsedTime)
                    {
                        now = now + elapsedTime;
                        elapsedTime -=3;
                        y = y+10;

// image1.setY(y);
System.out.println("down " + y );
}
}
anhalten=true;

            }
          }).start();


            anhalten=false;

            while (!anhalten){
                System.out.println("sety " +y);
                image1.setY(y);
                  try {
                    Thread.sleep(50);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }

// Spielfigur einfuegen

}

}

Hoffentlich blickst du bisschen durch vieles durcheinander und nicht beschriftet brauche einfach auf die schnelle eine Antwort.

LG Alex

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

25.06.2015, 16:07:20 via Website

Sieht etwas spartanisch aus :P
Ich meine normalerweise zeichnet man sowas in einem Canvas, da ist man flexieler.

Jetzt kommt es darauf an wie der Sprung nachher aussehen soll.
Einfach senkrecht nach oben oder etwas nach vorne und parabelförmig?

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Alex Beluvin
  • Forum-Beiträge: 4

25.06.2015, 16:14:56 via Website

Weil ich ja das programmiertechnisch mache wollte ich einfach nur hoch und runter also entlang der Y-Achse nicht Parabelförmig wollte es mal ausprobieren ohne die ganzen Game Editoren

Antworten
Rexxar
  • Forum-Beiträge: 2.563

25.06.2015, 21:48:30 via App

while (player.y != 100) y++;
Nur ein Denkanstöße, musst das natürlich an deinen Code anpassen.
Ich würde das Bild solange einen Pixel nach oben schieben bis es auf der max Höhe ist.

Liebe Grüße, Rexxar :)
Moto Z Play Stock
Nvidia Shield Tablet K1
http://www.androidpit.de/forum/634540/allgemeines-faq-fuer-neulinge

Antworten
Ju Ku
  • Forum-Beiträge: 72

28.06.2015, 19:09:54 via Website

Da die cpu dies aber relativ schnell berechnet sollte, würde der Player trotzdem nur oben angezeigt werden.
Wenn dann müsstest du noch den Thread ein paar ms warten lassen oder stattdessen einen Timer verwenden, der alle paar ms den Player bewegt.

Antworten