PROBLEMA Errore successione istruzioni, Android Studio - Java

matte404

Nuovo Utente
13
2
OS
Windows
Buonasera, sto facendo una semplice applicazione che al cambiare del colore dello sfondo, te devi trascinare il dito nella direzione giusta.
Qui sotto le righe di codice in dettaglio che sono quasi a tre quarti del codice completo. Esse mi danno problemi, cioè, dovrebbero cambiare il colore dello sfondo della app, rendere visibile l'immagine, aspettare un secondo, aumentare la variabile contBlank di uno, far partire la funzione randomSwipePaper() e poi far partire la funzione game(); invece quello che fa è, aspettare un secondo, richiamare la funzione randomSwipePaper() e game() e poi aumentare la variabile di uno.
Qualcuno mi saprebbe dire perchè salta istruzioni?
grazie

Questo è il codice che da errore:
if(direction == "bomb"){
layout.setBackgroundResource(R.color.colorAccent);
tapImage.setVisibility(ImageView.INVISIBLE);
Thread.sleep(1000);
contBlank += 1;
randomSwipePaper();
game();
}


Qui sotto l'intero codice:

Java:
import android.annotation.SuppressLint;

import android.app.Activity;

import android.graphics.Color;

import android.graphics.ColorFilter;

import android.graphics.Point;

import android.support.constraint.ConstraintLayout;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.GestureDetector;

import android.view.View;

import android.view.ViewGroup;

import android.view.Window;

import android.widget.Button;

import android.widget.ImageView;

import android.widget.TextView;

import android.view.MotionEvent;

import android.gesture.Gesture;



import java.util.Calendar;



import static android.view.GestureDetector.*;



public class MainActivity extends AppCompatActivity implements View.OnTouchListener, GestureDetector.OnGestureListener{



    private GestureDetector gesturedetector;

    private String direction;

    private Button gioca;

    private TextView tap_to_start;

    private ImageView tapImage;

    private TextView gesture;

    private TextView swipaper;

    private long score;

    private int life;

    private int contBlank;

    private ConstraintLayout layout;

    private String temp = "";



    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);



        View decorView = getWindow().getDecorView();

        decorView.setSystemUiVisibility(

                View.SYSTEM_UI_FLAG_IMMERSIVE

                        | View.SYSTEM_UI_FLAG_LAYOUT_STABLE

                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION

                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION

                        | View.SYSTEM_UI_FLAG_FULLSCREEN);



        score = 0;

        life = 4;

        contBlank = 0;

        tap_to_start = findViewById(R.id.tap_to_start);

        gioca = findViewById(R.id.Start);

        tapImage = findViewById(R.id.imageView5);

        swipaper = findViewById(R.id.textView);

        gesture = findViewById(R.id.textView2);

        layout = findViewById(R.id.background);



        tapImage.setVisibility(ImageView.INVISIBLE);

        tap_to_start.setVisibility(ImageView.INVISIBLE);





        gioca.setOnClickListener(new View.OnClickListener(){

            @Override

            public void onClick(View arg0) {

                Button gioca = findViewById(R.id.Start);

                gioca.setVisibility(Button.INVISIBLE);

                start();

            }

        });



        layout.setOnTouchListener(this);



        gesturedetector = new GestureDetector(this);

    }





    private void start() {

        tapImage.setVisibility(ImageView.VISIBLE);

        tap_to_start.setVisibility(ImageView.VISIBLE);

        layout.setBackgroundResource(R.color.colorPrimary);



        Point size = new Point();

        getWindowManager().getDefaultDisplay().getSize(size);

        int positionY = size.y * 85 / 100;

        ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) swipaper.getLayoutParams();

        params.setMargins(0, 0, 0, positionY);

        swipaper.setLayoutParams(params);



        gesture.setText("Inizio");



        aggiornaPunteggio();



        tap_to_start.setOnClickListener(new View.OnClickListener(){

            @Override

            public void onClick(View arg0) {

                try {

                    game();

                } catch (InterruptedException e) {

                    e.printStackTrace();

                }

            }

        });

        tapImage.setOnClickListener(new View.OnClickListener(){

            @Override

            public void onClick(View arg0) {

                try {

                    game();

                } catch (InterruptedException e) {

                    e.printStackTrace();

                }

            }

        });

    }



    private void death(){

        gesture.setText("You are death");

        score = 0;

        life = 0;

        System.exit(0);

    }



    private void randomSwipePaper(){

        int nPaper;





        nPaper = (int)(Math.random()*10);



        switch (nPaper){

            case 0:

                layout.setBackgroundResource(R.color.top);

                direction = "top";

                break;

            case 1:

                layout.setBackgroundResource(R.color.top);

                direction = "top";

                break;

            case 2:

                layout.setBackgroundResource(R.color.right);

                direction = "right";

                break;

            case 3:

                layout.setBackgroundResource(R.color.right);

                direction = "right";

                break;

            case 4:

                layout.setBackgroundResource(R.color.bottom);

                direction = "bottom";

                break;

            case 5:

                layout.setBackgroundResource(R.color.bottom);

                direction = "bottom";

                break;

            case 6:

                layout.setBackgroundResource(R.color.left);

                direction = "left";

                break;

            case 7:

                layout.setBackgroundResource(R.color.left);

                direction = "left";

                break;

            case 8:

                nPaper = (int)(Math.random()*3);

                if(nPaper == 0){

                    layout.setBackgroundResource(R.color.colorAccent);

                    direction = "bomb";

                }

                break;

            case 9:

                nPaper = (int)(Math.random()*3);

                if(nPaper == 0){

                    layout.setBackgroundResource(R.color.colorAccent);

                    direction = "bomb";

                }

                break;

        }

    }



    public void aggiornaPunteggio(){

        if(life == 0){

            death();

        }else{

            gesture.setText("Score: " + score + "    -    " + "Life: " + life + "    -    " + contBlank);

        }

    }



    private void game() throws InterruptedException {

        aggiornaPunteggio();

        tapImage.setImageResource(R.drawable.swap_direction);

        tapImage.setImageAlpha(120);

        tap_to_start.setVisibility(ImageView.INVISIBLE);



        Point size = new Point();

        getWindowManager().getDefaultDisplay().getSize(size);

        int positionY = size.y * 35 / 100;

        ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) tapImage.getLayoutParams();

        params.setMargins(0, 0, 0, positionY);

        tapImage.setLayoutParams(params);



        temp = direction;

        do{

            randomSwipePaper();

        }while(temp == direction);





        if(direction == "right"){

            tapImage.setVisibility(ImageView.VISIBLE);

            tapImage.setRotation(90);

        }else if(direction == "left"){

            tapImage.setVisibility(ImageView.VISIBLE);

            tapImage.setRotation(270);

        }else if(direction == "bottom"){

            tapImage.setVisibility(ImageView.VISIBLE);

            tapImage.setRotation(180);

        }else if(direction == "top"){

            tapImage.setVisibility(ImageView.VISIBLE);

            tapImage.setRotation(0);

        }else{

           if(direction == "bomb"){

                layout.setBackgroundResource(R.color.colorAccent);

                tapImage.setVisibility(ImageView.INVISIBLE);

                Thread.sleep(1000);

                contBlank += 1;

                randomSwipePaper();

                game();

            }

        }

    }



    @Override

    public boolean onTouch(View v, MotionEvent motionEvent) {

        return false;

    }



    @Override

    public boolean onDown(MotionEvent e) {

        return false;

    }



    @Override

    public void onShowPress(MotionEvent e) {



    }



    @Override

    public boolean onSingleTapUp(MotionEvent e) {

        return false;

    }



    @Override

    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {

        return false;

    }



    @Override

    public void onLongPress(MotionEvent e) {



    }



    @Override

    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {



        boolean result = false;



        if(gioca.getVisibility() == View.INVISIBLE){



            float gestureID = 0;

         

            float diffY = e2.getY() - e1.getY();

            float diffX = e2.getX() - e1.getX();





            if(Math.abs(diffX) >= Math.abs(diffY)){

                /*Left or Right gesture*/

                if(Math.abs(diffX) >= 0){

                    if(diffX > 0){

                        gestureID = 90;                     /*Right*/

                    }else{

                        gestureID = 270;                    /*Left*/

                    }

                    result = true;

                }

            }else{

                /*Up or Down gesture*/

                if(Math.abs(diffY) >= 0){

                    if(diffY > 0){

                        gestureID = 180;                    /*Bottom*/

                    }else{

                        gestureID = 0;                      /*Top*/

                    }

                    result = true;

                }

            }

            if(gestureID == tapImage.getRotation()){

                score += 1;

                aggiornaPunteggio();

                try {

                    game();

                } catch (InterruptedException e) {

                    e.printStackTrace();

                }

            }else if(gestureID != tapImage.getRotation()){

                score -= 2;

                life -= 1;

                aggiornaPunteggio();

            }

        }

        return result;

    }



    @Override

    public boolean onTouchEvent(MotionEvent event) {

        gesturedetector.onTouchEvent(event);

        return super.onTouchEvent(event);

    }

}
 
Ultima modifica:

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,854
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!