tepsi.co icon indicating copy to clipboard operation
tepsi.co copied to clipboard

Timer null object reference and keeps stopping error ( Timer NullPointerException )

Open mec799 opened this issue 3 years ago • 0 comments

package com.mec.hikobabarun;

import androidx.appcompat.app.AppCompatActivity; import androidx.constraintlayout.widget.ConstraintLayout;

import android.annotation.SuppressLint; import android.content.Intent; import android.media.MediaPlayer; import android.os.Bundle; import android.os.Handler; import android.view.MotionEvent; import android.view.View; import android.widget.ImageView; import android.widget.TextView;

import java.util.Timer; import java.util.TimerTask;

public class OyunEkrani extends AppCompatActivity { private TextView textViewBaslamak ; private TextView skor ; private ImageView hiko ; private ImageView dondurma ; private ImageView karpuz ; private ImageView ordek ; private ConstraintLayout cl ; //POZİSYONLAR private int hikoX; private int hikoY ; private int dondurmaX; private int dondurmaY; private int ordekX; private int ordekY; private int karpuzX; private int karpuzY; //KONTROLLER private boolean dokunmaKontrol = false ; private boolean baslangicKontrol = false ; //BOYUTLAR private int ekranGenisligi ; private int ekranYuksekligi ; private int hikoYuksekligi ; private int hikoGenisligi ; //Hızlar private int hikoHız ; private int karpuzHız ; private int dondurmaHız ; private int ordekHız ;

private Timer timer = new Timer();
private final Handler handler = new Handler();

private int sayi ;

@SuppressLint("ClickableViewAccessibility")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_oyun_ekrani);
    textViewBaslamak = findViewById(R.id.textViewBaslamak);
    skor = findViewById(R.id.skor);
    hiko = findViewById(R.id.hiko);
    dondurma = findViewById(R.id.dondurma);
    karpuz = findViewById(R.id.karpuz);
    ordek = findViewById(R.id.ordek);


    cl = findViewById(R.id.cl);
    final MediaPlayer ses = MediaPlayer.create(this, R.raw.hikoses);



    dondurma.setX(-80);
    dondurma.setY(-80);
    karpuz.setX(-80);
    karpuz.setY(-80);
    ordek.setX(-80);
    ordek.setY(-80);
            

 cl.setOnTouchListener((View.OnTouchListener) (v, event) -> {
     if (baslangicKontrol){
         if(event.getAction() == MotionEvent.ACTION_DOWN){
             dokunmaKontrol = true;

         }
         if(event.getAction() == MotionEvent.ACTION_UP){
             dokunmaKontrol = false;

         }

     }
     else{
         textViewBaslamak.setVisibility(View.INVISIBLE);
         baslangicKontrol = true ;
         hikoX = (int) hiko.getX();
         hikoY = (int) hiko.getY();
         hikoYuksekligi = (int) hiko.getHeight();
         hikoGenisligi = (int) hiko.getWidth();
         ekranYuksekligi = (int) cl.getHeight();
         ekranGenisligi = (int) cl.getWidth();



         timer.schedule(new TimerTask() {
             @SuppressLint("ClickableViewAccessibility")
             @Override
             public void run() {
                 handler.post(() -> {
                     hikoHareketEttirme();
                     cisimleriHareketEttir();
                     carpismaKontrol();






                 });

             }
         }, 0 , 20);


     }


     return true;
 });



}
public void hikoHareketEttirme (){
    hikoHız = Math.round(ekranYuksekligi/60);
    if(dokunmaKontrol){
        hikoY -= hikoHız ;
    }
    else {
        hikoY += hikoHız ;


    }
    if(hikoY <= 0 ){
        hikoY = 0;
    }
    if(hikoY >= ekranYuksekligi- hikoYuksekligi){
        hikoY = ekranYuksekligi- hikoYuksekligi;

    }

    hiko.setY(hikoY);
}
public void cisimleriHareketEttir(){
    ordekHız = Math.round(ekranGenisligi/40);
    karpuzHız = Math.round(ekranGenisligi/50);
    dondurmaHız = Math.round(ekranGenisligi/60);

    ordekX -= ordekHız ;
    if(ordekX < 0 ){
        ordekX = ekranGenisligi +20 ;
        ordekY = (int) Math.floor(Math.random()*ekranYuksekligi);


    }
    ordek.setX(ordekX);
    ordek.setY(ordekY);


    karpuzX -= karpuzHız ;
    if(karpuzX < 0 ){
        karpuzX = ekranGenisligi +20 ;
        karpuzY = (int) Math.floor(Math.random()*ekranYuksekligi);


    }
    karpuz.setX(karpuzX);
    karpuz.setY(karpuzY);

    dondurmaX -= dondurmaHız ;
    if(dondurmaX < 0 ){
        dondurmaX = ekranGenisligi +20 ;
        dondurmaY = (int) Math.floor(Math.random()*ekranYuksekligi);


    }
    dondurma.setX(dondurmaX);
    dondurma.setY(dondurmaY);




}
public void carpismaKontrol (){


    int karpuzMerkezX = karpuzX + karpuz.getWidth()/2 ;
    int karpuzMerkezY = karpuzY + karpuz.getHeight()/2;
    if(0 <= karpuzMerkezX && karpuzMerkezX <= hikoGenisligi && hikoY <= karpuzMerkezY && karpuzMerkezY <= hikoY+hikoYuksekligi){
        final MediaPlayer sesa = MediaPlayer.create(this, R.raw.dri);
        sesa.start();
        sayi+=15 ;
        karpuzX = -10 ;
    }


    int dondurmaMerkezX = dondurmaX + dondurma.getWidth()/2 ;
    int dondurmaMerkezY = dondurmaY + dondurma.getHeight()/2;
    if(0 <= dondurmaMerkezX && dondurmaMerkezX <= hikoGenisligi && hikoY <= dondurmaMerkezY && dondurmaMerkezY <= hikoY+hikoYuksekligi){
        final MediaPlayer sesa = MediaPlayer.create(this, R.raw.dri);
            sesa.start();
        sayi+=10 ;
        dondurmaX = -10 ;

    }


    int ordekMerkezX = ordekX + ordek.getWidth()/2 ;
    int ordekMerkezY = ordekY + ordek.getHeight()/2;
    if(0 <= ordekMerkezX && ordekMerkezX <= hikoGenisligi && hikoY <= ordekMerkezY && ordekMerkezY <= hikoY+hikoYuksekligi){
        final MediaPlayer ses = MediaPlayer.create(this, R.raw.hikoses);
        ses.start();
        timer.cancel();
        timer = null;







        Intent intent = new Intent(OyunEkrani.this , SonucEkrani.class);
        intent.putExtra("sayi", sayi) ;
        startActivity(intent);







    }
    skor.setText(String.valueOf(sayi));


}

}

mec799 avatar May 17 '21 22:05 mec799