wtorek, 23 października 2012

Opis aktywności Gra.java


Na początku klasycznie import bibliotek i pakietów
package pl.net.turka.android.develop.przyklad_04;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;




Definicja klasy Gra i tu ważny element implements OnClickListener - dzięki temu obsługą przycisków zajmie się metoda onClick
public class Gra extends Activity implements OnClickListener{
Definicja stałych i zmiennych
Context context;
public static final String TRUDNOSC_KLUCZ =
       "pl.net.turka.android.develop.przylkad_04.trudnosc" ;
public static final int TRUDNOSC_LATWY = 5;
public static final int TRUDNOSC_SREDNI = 10;
public static final int TRUDNOSC_TRUDNY = 100;
 
static final private int ALERT_DIALOG_KONIEC = 1;
private Button zgadnij;
private EditText numA;
private float trud;
private double  wylos;
private int wylo;
int licznik=0;
  float num1=0;
 private int counter = 0;
 private TextView tvCounter;
 Wyświetlenie poszczególnych elementów okna i powiązanie ich z OnClickListener, odczytanie przekazanego parametru - poziom trudności.

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        trud = getIntent().getIntExtra(TRUDNOSC_KLUCZ,
                TRUDNOSC_LATWY);

        context = getApplicationContext();
        setContentView(R.layout.gra);
        
        tvCounter = (TextView) findViewById(R.id.tvCounter);        
        zgadnij = (Button) findViewById(R.id.przyciskZgadnij);
        zgadnij.setOnClickListener(this);
       
        final TextView wynik = 
                (TextView) findViewById(R.id.textTrud);

Ustawienie i wylosowanie liczby do odgadnięcia
       
        if (trud == 0 ) {wylos = Math.random()*5+1; wynik.setText("Łatwy 1-5");}
        if (trud == 1 ) {wylos = Math.random()*10+1;wynik.setText("Średni 1-10"); }
        if (trud == 2 ) {wylos = Math.random()*100+1;wynik.setText("Trudny 1-100"); }
        wylo=(int)wylos;
     
Ustawienie wyświetlania upływu czasu
        startCounting();
    }
 
Głowna metoda obsługującą naciśnięcie przycisku zgadnij
    public void onClick(View v) {
           switch (v.getId()) {
        case R.id.przyciskZgadnij:
        licznik=licznik+1;
        numA  = (EditText)findViewById(R.id.poleWstaw);
                if (!numA.getText().toString().equals(""))
        {
        num1 = Float.parseFloat(numA.getText().toString());
        }
        numA.setText("");
                if (num1==wylo)
        {
        numA.setHint("Brawo");
        Intent intencja = new Intent(context, Wygrana.class);
                intencja.putExtra("licznik", Integer.toString(licznik));
        intencja.putExtra("czas", Integer.toString(counter));
                        startActivity(intencja);
   
        finish();
        break;
        }
        if (num1<wylo)
        {
     
        Toast toast = Toast.makeText(context,"za mało",Toast.LENGTH_LONG);
                toast.show();
                numA.setHint("Liczba "+(int)num1+" za mała "+licznik+ " ");
                }
        if (num1>wylo)
        {
                        Toast toast = Toast.makeText(context,"za dużo",Toast.LENGTH_LONG);
        toast.show();
        numA.setHint("Liczba "+(int)num1+" za duża "+licznik+ " ");
        }
        }
    }  

Ustawienie upływu czasu - co ile milisekund uruchomić metodę aktualizacji

    private void startCounting() {
        Timer timer = new Timer();
        TimerTask task = new TimerTask() {
            @Override
            public void run() {
                updateCounter();
            }
        };
        timer.scheduleAtFixedRate(task, 0, 1000);
    }
Aktualizacja czasu

    private void updateCounter() {
        runOnUiThread(new Runnable() {
            public void run() {
                tvCounter.setText("Czas gry: " + counter + "s");
                counter++;
            }
        });
    }
}

Brak komentarzy:

Prześlij komentarz