Erstmal vielen dank wegen dieser sehr ausfürlichen erklärung diese dokumentation werde ich mir dierekt angucken melde mich später nochmal wegen deinen Fragen zum Code
Beiträge von Vincent
-
-
Habe mal eine andere Frage es kann sein das du das damit gemeint hast habe das jetzt mal ein bisschen weiter gemacht und jetzt stehe ich vor einem anderen problem das programm schmiert immer ab wenn ich die onClick aufrufe:(
Java
Alles anzeigenpackage com.example..a223; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.TextView; import java.util.Timer; import java.util.TimerTask; public class gameOver extends AppCompatActivity { GameView gameView; MainActivity mainActivity; TextView scoreView; private int score; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_game_over); gameView = new GameView(this); score = gameView.score; mainActivity = new MainActivity(); } public void onClick(View v){ mainActivity.gameSchleife(); } }
Code
Alles anzeigenpublic void gameSchleife(){ setContentView(gameView); timer.schedule(new TimerTask() { @Override public void run() { handler.post(new Runnable() { @Override public void run() { gameView.invalidate(); gameOver = gameView.gameOver; if (gameOver) { timer.cancel(); setContentView(R.layout.activity_main); } } }); } }, 0, TIMER_INTERVAL); }
-
Das problem ist das ich generell ziemliche schwierichkeiten dabei habe zwischen klassen zu wechselbn oder auch variablen zu übernehmen wie gesagt bin relativ neu
Wäre aber mnett wenn du mir das ein bisschen erklären könntest
-
Code
Alles anzeigensetContentView(gameView); timer.schedule(new TimerTask() { @Override public void run() { handler.post(new Runnable() { @Override public void run() { gameView.invalidate(); gameOver = gameView.gameOver; if (gameOver) { setContentView(R.layout.activity_game_over); } } }); } }, 0, TIMER_INTERVAL);
Die variable TIMER_INTERVAL wierd oben im code gestetzt
-
Okay dankeschön das werde ich mal ausprobieren Melde mich dann nochmal aber erstmal danke an alle für die hilfe
-
Hallo erstmal danke für deine hilfe die ganze Klasse GameView wierd alle 10 millisekunden in der Main klasse aufgerufen also mittels invalidate(); sonst hätte ich da keine bewegung vom ball drin ich wollte jetzt einfach nur das wenn gameOver aufgerufen wierd allso wenn der ball nicht die farbe hat das dann ein neues Fenster aufgerufen wierd das ich dann z.b auch wieder individuell bearbeiten kann
P.S Wie gesagt bin neu wie würdest du dass denn machen mit der Steuerung und dem View?
-
Bin ein anfänger kann damit leider nicht viel anfangen würdest du mir das villeicht ein bisschen genauer zu erklären?
-
Ich möchte im gameOver teil in eine klasse namens gameOver springen da ich hier aber View extende bin ich leider hilflos
Code
Alles anzeigenpackage com.example.a223; import android.content.Context; import android.content.Intent; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Typeface; import android.view.MotionEvent; import android.view.View; public class GameView extends View { /* Farbtabelle 0 = blau 1 = black 2 = red */ //Maih MainActivity mainActivity = new MainActivity(); //Ball private int blueX; private int blueY = -40; int blueSpeed = 15; private Paint bluePaint = new Paint(); private int zufallzahl; //Game public boolean gameOver = false; private Paint gameOverPaint = new Paint(); private int currColor = 0; public int currGameColor = 0; public int score = 0; private boolean touchflg = false; private boolean gamenotStart = true; private boolean starttap = false; private Paint untenviereckPaint = new Paint(); Paint lvlUpPaint = new Paint(); int currLvl =1; int currLvlUpScore = 10; //canvas int canvasWith; int canvasHigh; //Status Check //Score private Paint scorePaint = new Paint(); public GameView(Context context) { super(context); scorePaint.setColor(Color.BLACK); scorePaint.setTextSize(55); scorePaint.setTypeface(Typeface.DEFAULT_BOLD); scorePaint.setAntiAlias(true); gameOverPaint.setColor(Color.BLACK); gameOverPaint.setTextSize(70); gameOverPaint.setTypeface(Typeface.DEFAULT_BOLD); gameOverPaint.setAntiAlias(true); lvlUpPaint.setColor(Color.LTGRAY); lvlUpPaint.setTextSize(60); lvlUpPaint.setTypeface(Typeface.SANS_SERIF); lvlUpPaint.setAntiAlias(true); //bluePaint.setColor(Color.BLUE); } @Override protected void onDraw(Canvas canvas) { canvasWith = getWidth(); canvasHigh = getHeight(); //Blue Ball if(touchflg){ if(currGameColor == 0) untenviereckPaint.setColor(Color.BLUE); if(currGameColor == 1) untenviereckPaint.setColor(Color.BLACK); if(currGameColor == 2) untenviereckPaint.setColor(Color.RED); if(currGameColor ==3) untenviereckPaint.setColor(Color.GREEN); } if(gamenotStart){ canvas.drawText("Tap Screen to start Game!",getWidth()/6,getHeight()/2 ,gameOverPaint); if(starttap){ gamenotStart = false; } } //Game Over else if(gameOver){ }else{ blueX = canvasWith / 2; blueY +=blueSpeed; if(blueY > canvasHigh - 200 ) { if(score == currLvlUpScore){ currLvl++; blueSpeed = blueSpeed+1; currLvlUpScore = currLvlUpScore+currLvlUpScore+currLvl; } blueY = -80; zufallzahl = (int) Math.floor(Math.random() * 4); if (currColor == currGameColor) { score++; } else { gameOver = true; } } } if(zufallzahl == 0){ bluePaint.setColor(Color.BLUE); currColor = 0; }else if (zufallzahl == 1){ bluePaint.setColor(Color.BLACK); currColor = 1; }else if(zufallzahl == 2){ bluePaint.setColor(Color.RED); currColor = 2; }else if(zufallzahl == 3){ bluePaint.setColor(Color.GREEN); currColor = 3; } canvas.drawRect(0,canvasHigh,canvasWith,canvasHigh - 200,untenviereckPaint); canvas.drawCircle(canvasWith/2,canvasHigh-60,50,untenviereckPaint); canvas.drawCircle(blueX, blueY,30,bluePaint); canvas.drawText("Score : " + score, 50,100,scorePaint); canvas.drawText("Level : " + currLvl , canvasWith-300,100,scorePaint); } @Override public boolean onTouchEvent(MotionEvent event) { if(event.getAction() == (MotionEvent.ACTION_DOWN)){ if(gamenotStart) starttap = true; if(gameOver){ score = 0; gameOver = false; return true; } currGameColor ++; if(currGameColor == 4) currGameColor =0; touchflg = true; } return true; } }
-
Ahhhhh okay das war das problem xD
Naja ich werde da nochmal bisschen drüber nachdenken und mak ein bisschen rumprobieren
Melde mich nochmal wenn noch was ist erstmal vielen Dank hast mir mal wieder sehr geholfen
-
das problem ist wenn der punkt den boden berührt soll er die farbe wechseln das ist glaube ich schwer umsetzbar wenn ich das so mache oder ?
-
Ich dachte durch das roterPunkt.animate().translationYBy(100f).setDuration(2000)){ get es solange runter bis es die position 0 erreicht habe aber noh ein bisschen recherchiert und gemerkt das man das besser mit einem image view ganz unten in der app realiesieren kann habe aber absolut keine vorstellung wiie ich das umsetzen kann
-
Ohh ja das meinte ich xD
Und was ist mit der for schleife giebbt es da eine möglichkeit ? -
Sry aber welche animationen laufen denn gleichzeitig die eine ist in der onCreate metode die andere wierd ausgefürt wenn die for schleife falsch ist und die andere wenn sie richtig ist
oder habe ich ürgendwas komplett falsch verstandenUnd die for schleife soll den ball solange runtersetzen bis er das Image View am boden berührt kriege ich das irgendwie an ?
-
Also erstmal soll der Rote Punkt von oben runter animiert werden und wenn er dann das ImageView am boden berührt dann soll er wieder aus dem bild raus und dann wieder rein kommen
-
hey ich habe ein problem der folgende code soll bewirken das wenn man den strt button drückckt sich der punkt solange nach unten bewegt bis er den boden berürt un d dann wieder nach oben geht leider passiert hier gar nix :
Java
Alles anzeigenpackage com.example.vincent.prayforit; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.ImageView; public class MainActivity extends AppCompatActivity { ImageView roterPunkt; Button start; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); roterPunkt = (ImageView)findViewById(R.id.roterpunkt); start = (Button)findViewById(R.id.start); start.setVisibility(View.VISIBLE); roterPunkt.setY(-1500f); start.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //start.setVisibility(View.INVISIBLE); for (float position =roterPunkt.getY() ; position == 0 ; roterPunkt.animate().translationYBy(100f).setDuration(2000)){ start.setVisibility(View.INVISIBLE); roterPunkt.setY(0f); roterPunkt.setY(100f); } } }); } }
Würde mich über schnelle hilfe freuen lg Vincent -
Habe das problem grade selber gelöst trotzdem vielen dank für eure hilfe
-
Das ist die erste Seite die soll aber nur so ein Startbildschirm werden also eine Überschrift und ein Start Buttonpublic class MainActivity extends AppCompatActivity {
TextView startText;
Button startButton;@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);startButton = (Button) findViewById(R.id.startButton);
startButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {setContentView(R.layout.activity_zweite_seit);
}
});
startButton.setText("Start");startText = (TextView) findViewById(R.id.startText);
startText.setText("CookieClicker");
}
}
-
Ich wollte ja das man auf das ImageView Klcikt und das dann etwas passiert in dem fall Cookies 1 auf eine variable addiert wierd bei mir passiert aber ienfach gar jnix wenn i9ch das imageView anklicke
-
Funktioniert leider immer noch nicht ich gehe davon aus das hier was am onClickListener falsch gelaufen ist
Nebenbei wollte ich m ich mal bei dir bedanken dafür das du dir die mühe machst und mich entschuldigen das ich so wenig kann habe wie gesagt garde erst angefanegn -
habe das ganze mal überarbeitet leider passiert jetzt gar nix mehr wenn ich auf mein imageView klcike
Java
Alles anzeigenpublic class zweiteSeit extends AppCompatActivity { ImageView Cookie; TextView cookieAnzahl; Integer Cookies; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_zweite_seit); Cookies = 0; cookieAnzahl = (TextView)findViewById(R.id.cookieAnzahl); Cookie = (ImageView)findViewById(R.id.Cookie); Cookie.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Cookies++; cookieAnzahl.setText("Cookies:" + Cookies); } }); } }