Dienstag, 8. Oktober 2013

Hamurabi - DasSpiel.java: Jetzt mit Schiebereglern!

Wie versprochen zum dritten und letzten Artikel der Reihe "Die 5 Minuten-App" im aktuellen Java-Magazin zum Spicken eine weitere Version der Klasse "DasSpiel.java".
Der Code für die bisherigen Eingabefelder ist bewusst auskommentiert (falls es deswegen bei dem Einen oder Anderen zu einem ansonsten berechtigten Stirnrunzeln kommen sollte), damit man noch einmal den Unterschied zu sehen bekommt.
Da das ADT-Bundle auf meinem Laptop sich gerade weigert tatächlich als Bundle zu arbeiten, ist der Code ausnahmsweise vorerst nicht auf einem AVD getestet (ursprünglich natürlich schon, aber diese Version im Artikel ist nicht die allerletzte gewesen - Dank sei dem ewigen Wandel). Ich werde das am kommenden Wochenende nachholen, außerdem soll es ja auch nur zum Spicken sein - nicht zum Abschreiben!

package net.einedomain.hamurabi;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.SeekBar;

public class DasSpiel extends Activity implements
SeekBar.OnSeekBarChangeListener {

TextView meinBericht;
EditText wertA;
EditText wertB;
Button berichteButton;

SeekBar meineSeekBarNahrung;
SeekBar meineSeekBarSaat;

Hamurabi meinSpiel = new Hamurabi();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_das_spiel);

/*
* Layout-Elemente. Hier werden die Layout-Elemente fuer den Zugriff im
* Java-Quellcode zugaenglich gemacht: Das Textfeld fuer den Bericht,
* die beiden Eingabefelder, sowie die Schieberegler. Zum Schluss der
* Button mit dem Ereignis des Absendens.
*/

meinBericht = (TextView) findViewById(R.id.textView1);
meinBericht.setText(meinSpiel.getBericht());

// wertA = (EditText) findViewById(R.id.editText1);
// wertB = (EditText) findViewById(R.id.editText2);

meineSeekBarNahrung = (SeekBar) findViewById(R.id.seekBarNahrung);
meineSeekBarNahrung.setOnSeekBarChangeListener(this);
meineSeekBarNahrung.setMax(meinSpiel.getKorn());
meineSeekBarNahrung.setProgress(0);

meineSeekBarSaat = (SeekBar) findViewById(R.id.seekBarSaat);
meineSeekBarSaat.setOnSeekBarChangeListener(this);
meineSeekBarSaat.setMax(meinSpiel.getKorn());
meineSeekBarSaat.setProgress(0);

berichteButton = (Button) this.findViewById(R.id.button1);
berichteButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {

// Wird mit den Schiebereglern nicht mehr benoetigt!
// int nahrung = Integer.parseInt(wertA.getText().toString());
// int saat = Integer.parseInt(wertB.getText().toString());

int nahrung = meineSeekBarNahrung.getProgress();
int saat = meineSeekBarSaat.getProgress();

meinSpiel.zug(0, 0, nahrung, saat);
meinBericht.setText(meinSpiel.getBericht());

meineSeekBarNahrung.setMax(meinSpiel.getKorn());
meineSeekBarSaat.setMax(meinSpiel.getKorn());

meineSeekBarNahrung.setProgress(0);
meineSeekBarSaat.setProgress(0);

// wertA.setText("");
// wertB.setText("");

if (meinSpiel.getEnde() == true) {
// wertA.setVisibility(View.GONE);
// wertB.setVisibility(View.INVISIBLE);
berichteButton.setVisibility(View.GONE);
// wertA.setVisibility(View.VISIBLE);
berichteButton.setVisibility(View.VISIBLE);
}

}
});

}

@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {

if (fromUser) {
switch (seekBar.getId()) {

case R.id.seekBarNahrung:

meineSeekBarNahrung.setMax(meinSpiel.getKorn());
meinBericht.setText("Nahrung: " + Integer.toString(progress) + " Saat: "
+ meineSeekBarSaat.getProgress());
// wertA.setText(Integer.toString(progress));
break;

case R.id.seekBarSaat:

meineSeekBarSaat.setMax(meinSpiel.getKorn());
meinBericht.setText("Nahrung: " + meineSeekBarNahrung.getProgress() +
" Saat: " + Integer.toString(progress));
// wertB.setText(Integer.toString(progress));
break;

}
}
}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// wird hier nicht benoetigt

}

@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// ...und das hier auch nicht.
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);

menu.add(0, 42, 2, "Exit");
menu.add(0, 4711, 1, "Info");
return true;
}

public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) {
case 4711:
Toast.makeText(getApplicationContext(), "Irgendeine Info",
Toast.LENGTH_LONG).show();
return true;
case 42:
finish();
return true;
}

return false;
}

}

Keine Kommentare:

Kommentar veröffentlichen