tepsi.co
tepsi.co copied to clipboard
Timer null object reference and keeps stopping error ( Timer NullPointerException )
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));
}
}