Rechenkönig - Schulprojekt

  • 9 Antworten
  • Letztes Antwortdatum
M

mimm.m

Stamm-User
69
Hallo,

ich möchte im Rahmen eines Schulprojektes mehrere Spiele erstellen, bin mit einem Spiel auch schon fertig, doch beim 2. dem Rechenkönig feigelt es mich.

Das Problem, dass ich momentan habe, ist wie folgt:
Beim erstmaligen Erstellen der Activity kommt nur ein Screen mit 0null0=?
und wenn ich dann spiele bricht die App zusammen, dies aber nicht nach dem ersten richtigen Klick sondern nach dem 2. oder 3. Mal ....

Meine Rechenkönig class sieht momentan so aus:
Code:
package at.kom.schneenapp;

import java.util.Random;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class Rechenk extends Activity implements OnClickListener {

	Random rnd = new Random(System.currentTimeMillis());

	private Button Button1;
	private Button Button2;
	private Button Button3;
	private Button Button4;
	private TextView Display;
	private TextView tvTime;

	private long starttime = 0;
	private long pausetime = 0;
	private long endtime = 0;
	// private long timeleft;
	// private long playTime = 60000;
	// private int secondsLeft;
	@SuppressWarnings("unused")
	private boolean timeIsUp = false;

	int buttonzufall = 0;
	int ergebnis = 0;
	String rechenz;
	int zufall1 = 0;
	int zufall2 = 0;
	int score = 0;

	int t = 60000;
	public int secoundsLeftt;
	Thread backth;
	public String secondsString;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.rechenk);
		initialize();
		initialize2();
		game();

		time();

	}

	@Override
	protected void onPause() {
		super.onPause();
		pausetime = System.currentTimeMillis();
	}

	@Override
	protected void onResume() {
		super.onResume();
		endtime = System.currentTimeMillis();
	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {

		case R.id.button1:
			if (buttonzufall == 1) {
				score++;
				initialize2();
				game();

			}
			break;

		case R.id.button2:
			if (buttonzufall == 2) {
				score++;
				initialize2();
				game();
			}
			break;

		case R.id.button3:
			if (buttonzufall == 3) {
				score++;
				initialize2();
				game();
			}
			break;

		case R.id.button4:
			if (buttonzufall == 4) {
				score++;
				initialize2();
				game();
			}
			break;
		}

	}

	public void game() {

		int rechenzeichen = rnd.nextInt(4);

		if (rechenzeichen == 0) {
			zufall1 = rnd.nextInt(100);
			zufall2 = rnd.nextInt(100);
		}

		if (rechenzeichen == 1) {
			do {
				zufall1 = rnd.nextInt(50);
				zufall2 = rnd.nextInt(50);
			} while (zufall1 >= zufall1);
		}

		if (rechenzeichen == 2) {
			zufall1 = rnd.nextInt(10);
			zufall2 = rnd.nextInt(10);
		}

		if (rechenzeichen == 3) {
			do {
				zufall1 = rnd.nextInt(90);
				zufall2 = rnd.nextInt(10);
			} while (zufall1 % zufall2 == 0);
		}

		zufall1 = rnd.nextInt(50);
		zufall2 = rnd.nextInt(50);

		if (rechenzeichen == 0) {
			ergebnis = zufall1 + zufall2;
			rechenz = "+";
		}

		if (rechenzeichen == 1) {
			ergebnis = zufall1 - zufall2;
			rechenz = "-";
		}

		if (rechenzeichen == 2) {
			ergebnis = zufall1 * zufall2;
			rechenz = "*";
		}

		if (rechenzeichen == 3) {
			ergebnis = zufall1 / zufall2;
			rechenz = "/";
		}

	}

	void initialize() {
		Button1 = (Button) findViewById(R.id.button1);
		Button1.setOnClickListener(this);
		Button2 = (Button) findViewById(R.id.button2);
		Button2.setOnClickListener(this);
		Button3 = (Button) findViewById(R.id.button3);
		Button3.setOnClickListener(this);
		Button4 = (Button) findViewById(R.id.button4);
		Button4.setOnClickListener(this);
		Display = (TextView) findViewById(R.id.textView1);
		tvTime = (TextView) findViewById(R.id.tvTime);

	}

	void initialize2() {
		Display.setText(Integer.toString(zufall1) + rechenz
				+ Integer.toString(zufall2) + "= ?");

		buttonzufall = rnd.nextInt(4) + 1;

		switch (buttonzufall) {

		case 1:
			Button1.setText(Integer.toString(ergebnis));
			Button2.setText(Integer.toString(ergebnis - rnd.nextInt(100)));
			Button3.setText(Integer.toString(ergebnis + rnd.nextInt(50)));
			Button4.setText(Integer.toString(ergebnis + rnd.nextInt(10)));
			break;

		case 2:
			Button2.setText(Integer.toString(ergebnis));
			Button1.setText(Integer.toString(ergebnis - rnd.nextInt(100)));
			Button4.setText(Integer.toString(ergebnis + rnd.nextInt(50)));
			Button3.setText(Integer.toString(ergebnis + rnd.nextInt(10)));
			break;

		case 3:
			Button3.setText(Integer.toString(ergebnis));
			Button4.setText(Integer.toString(ergebnis - rnd.nextInt(100)));
			Button1.setText(Integer.toString(ergebnis + rnd.nextInt(50)));
			Button2.setText(Integer.toString(ergebnis + rnd.nextInt(10)));
			break;

		case 4:
			Button4.setText(Integer.toString(ergebnis));
			Button3.setText(Integer.toString(ergebnis - rnd.nextInt(100)));
			Button2.setText(Integer.toString(ergebnis + rnd.nextInt(50)));
			Button1.setText(Integer.toString(ergebnis + rnd.nextInt(10)));
			break;
		}

	}

	public void time() {
		Log.i("mei log", "1");
		backth = new Thread(new Runnable() {
			// Setup the run() method that is called when the background thread
			// is started.
			public void run() {
				for (int i = 0; i < 60; i++) {
					try {
						Thread.sleep(1000);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					secoundsLeftt = 60 - i;
					secondsString = String.valueOf(secoundsLeftt);

					tvTime.post(new Runnable() {
						public void run() {
							tvTime.setText(secondsString);
						}
					});
				}
				secondsString = String.valueOf(0);
				tvTime.post(new Runnable() {
					public void run() {
						tvTime.setText(secondsString);
					}
				});
				timeIsUp = true;
			}
		});

		backth.start();

	}
}

im Anhang ist ein Bild mit dem "soll" und eines ganz am Anfang beim Starten der Activity ...

Und auch bei den Buttons habe ich ein wenig "gepfuscht" da ich mir keinen besseren Weg gesehen habe: xml-Dokument
Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="bottom"
    android:orientation="vertical"
    tools:context=".Rechenk" >

    <TextView
        android:id="@+id/tvTime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Time"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_gravity="center_vertical|top|center_horizontal"
        android:layout_weight="1"
        android:gravity="center_vertical|center_horizontal"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="60dp"
            android:layout_weight="1"
            android:text="Button 1" />

        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="60dp"
            android:layout_weight="1.00"
            android:text="Button 2" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/button3"
            android:layout_width="wrap_content"
            android:layout_height="60dp"
            android:layout_weight="1"
            android:text="Button 3" />

        <Button
            android:id="@+id/button4"
            android:layout_width="wrap_content"
            android:layout_height="60dp"
            android:layout_weight="1.00"
            android:text="Button 4" />
    </LinearLayout>

</LinearLayout>

Ich hoffe ihr könnt mir helfen, da mein androidwissen leider sehr klein ist und auch noch beim entwickeln ist


Ich entschuldige mich schon im Vorhinein für meine Rechtschreibung und meine Programmierweise und hoffe ihr habt Mitleid mit einem Schüler. ;)
 

Anhänge

  • Screenshot_2014-05-07-22-12-24.png
    Screenshot_2014-05-07-22-12-24.png
    46,1 KB · Aufrufe: 163
  • Screenshot_2014-05-07-22-12-30.png
    Screenshot_2014-05-07-22-12-30.png
    35,1 KB · Aufrufe: 122
Zuletzt bearbeitet:
Erst mal:
do {
zufall1 = rnd.nextInt(50);
zufall2 = rnd.nextInt(50);
} while (zufall1 >= zufall1);

Fehler das ist eine Endlosschleife.
zufall1 ist immer größer oder gleich sie selbst ;)

und da steht 0null0 weil du initialize2() aufrufst BEVOR du game() aufrufst wo die Sachen überhaupt erst gesetz werden.
tausch beides aus das dann sollte es funktionieren.

Auf die vielen anderen Dinge geh ich jetzt nicht ein, das führt zu weit ^^
 
  • Danke
Reaktionen: mimm.m
Dass am Anfang 0null0 steht ist korrekt. Wenn du die App startest, wird onCreate() ausgeführt. Zuerst kommt da der Aufruf von initialize2(), womit die Textfelder gefüllt werden. Weil aber zu diesem Zeitpunkt game() noch nie ausgeführt worden ist, sind zufall1 und zufall2 noch 0 und rechenz nich initialisiert, deshalb null.

Das zweite Problem mit der abstürzenden App ist einfach ein Flüchtigkeitsfehler in game(). Tipp: Es geschieht immer dann, wenn das Rechenzeichen einen gewissen Wert erhält. Bei den drei anderen Werten gibts keine Probleme. Den genauen Fehler darfst du jetzt noch selber suchen ;)

Edit: ups, war ich wohl zu langsam und amfa hat schon alles verraten :laugh:
 
  • Danke
Reaktionen: mimm.m
DANKE !!

erstens: zum Fehler mit initialize2() und game(), ein Klassenkollege hat es mir so gesagt (hat eine bessere Note als ich in Informatik) aber mir ist das eh schon spanisch vorgekommen, danke ;)

und zum zweiten problem: DUMMMMMER FEHLER!


vielen anderen Dinge? ist noch viel Falsch?? oder einfach mieserabel programmiert?

edit: bin noch auf einen Fehler gekommen und werde es jetzt ein wenig verbessern versuchen ...
 
Zuletzt bearbeitet:
mimm.m schrieb:
vielen anderen Dinge? ist noch viel Falsch?? oder einfach mieserabel programmiert?

Allzu viel fällt mir nicht auf...
Vielleicht ein paar Kleinigkeiten:
Variablen / Objekte werden klein geschrieben, Klassen groß.
Eine Frage wäre noch warum manche Variablen private gekennzeichnet sind, andere nicht. Wenn die Variablen nicht im gleichen Package nochmal gebraucht werden, sollten diese auch als private gekennzeichnet werden (aber das sind meiner Meinung nach keine gravierenden Fehler - aber du hattest ja gefragt^^)...

Teste doch mal die App und drücke während der Ausführung des Threads die Zurück-Taste - ggf verhält sich die App unvorhergesehen.
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: mimm.m
ja ich muss so oder so noch alles verschönern, doch ich bin jetzt schon mal heilfroh dass alles halbwegs funktioniert! :D

vielleicht kann mir ja noch jemand sagen wie ich es schaffe die Buttons immer exakt den halben Bildschirmbreite zuzuschreiben also dass die breite eines buttons eigentlich match_parent / 2 ist ;)
 
Wenn du sie vom Rand bis zur Mitte festlegst - aber dann hast du keinen Zwischenraum mehr, ist das so gewollt?
 
Ja ein kleiner zwischenraum wäre schon noch toll, aber wie kann ich die breite fixieren, damit sie auf meinem nexus5 gleich aussieht wie auf dem S3 von meinem freund ... Diese frage stelle ich mir noch

Gesendet von meinem Nexus 5 mit der Android-Hilfe.de App
 
Mit
android:layout_weight (weight nicht width, die brauchst du aber auch)

Wenn du deinen inneren LinearLayouts den gleichen Wert gibst sollten die gleichbreit sein.
Wenn du dann noch deine Buttons umstellst von wrap_content auf match parent.
sollten die Buttons alle gleich breit sein

EDIT:
Hab mal ein wenig rumprobiert so kann's gehen:
Code:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" >

        <EditText
            android:id="@+id/editText1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:ems="10" >

            <requestFocus />
        </EditText>
    </RelativeLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/button3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Button" />

        <Button
            android:id="@+id/button4"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Button" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/button1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Button" />

        <Button
            android:id="@+id/button2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Button" />
    </LinearLayout>

</LinearLayout>
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: mimm.m
So, habe jetzt ein wenig herumgespielt und bin jetzt zu der Idee gekommen, Zeit abzuziehen wenn ein falscher Button gedrückt wurde.

Und auch wenn ich in den Pausendialog gehe sollte die Zeit nicht weiterlaufen .... edit: Dieses Problem wurde gelöst!!

Kann ich das auch mit einem Backgroundthread machen bzw. mit dem schon vorhandenen??

Habe mich dazu auch schon mal ein wenig ausgetobt (meine ganze Klasse):
Code:
package at.kom.schneenapp;

import java.util.Random;

import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnDismissListener;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Vibrator;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.ToggleButton;

public class Rechenk extends Activity implements OnClickListener,
		OnDismissListener {

	Random rnd = new Random(System.currentTimeMillis());

	private Button Button1, Button2, Button3, Button4, resume, menu, newTry;
	private ToggleButton vibrationToggle;
	private TextView Display, tvTime, tvScore2;
	private Dialog dialog;

	private Thread backth, backth2;
	private long starttime = 0;
	private long pausetime = 0;
	@SuppressWarnings("unused")
	private long endtime = 0;
	// private long timeleft;
	// private long playTime = 60000;
	// private int secondsLeft;
	private boolean timeIsUp = false;
	private boolean gameOver = false;

	private int buttonzufall = 0;
	private int ergebnis = 0;
	private String rechenz;
	private int zufall1 = 0;
	private int zufall2 = 0;
	private int score = 0;
	private boolean dialogIsActive = false;
	private boolean vibrationToggleState;
	@SuppressWarnings("unused")
	private boolean transparency = false;
	@SuppressWarnings("unused")
	private boolean onPauseSecondTime = false;
	// private int t = 60000;
	public int secoundsLeftt;
	public String secondsString;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.rechenk);
		dialog = new Dialog(this, android.R.style.Theme_Translucent_NoTitleBar);
		dialog.setContentView(R.layout.pausescreen);
		dialog.hide();
		dialog.setOnDismissListener(this);
		initialize();
		game();
		initialize2();
		starttime = System.currentTimeMillis();
		time();
		score();

	}

	@Override
	protected void onPause() {
		super.onPause();
		pausetime = System.currentTimeMillis();
	}

	@Override
	protected void onResume() {
		super.onResume();
		endtime = System.currentTimeMillis();
	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {

		case R.id.button1:
			if (buttonzufall == 1) {
				score++;
				game();
				initialize2();
			} else if (buttonzufall != 1)
				vibrator();
			break;

		case R.id.button2:
			if (buttonzufall == 2) {
				score++;
				game();
				initialize2();
			} else if (buttonzufall != 2)
				vibrator();
			break;

		case R.id.button3:
			if (buttonzufall == 3) {
				score++;
				game();
				initialize2();
			} else if (buttonzufall != 3)
				vibrator();
			break;

		case R.id.button4:
			if (buttonzufall == 4) {
				score++;
				game();
				initialize2();
			} else if (buttonzufall != 4)
				vibrator();
			break;

		case R.id.bContinue:
			dialogState();
			break;

		case R.id.bMainMenu:
			compareScore();
			dialog.dismiss();
			Intent menuIntent = new Intent(getApplicationContext(),
					menuActivity.class);
			startActivity(menuIntent);
			finish();
			break;

		case R.id.bNewTry:
			compareScore();

			dialog.dismiss();

			finish();
			Intent newGameScreen = new Intent(this, Rechenk.class);
			startActivity(newGameScreen);

		}

	}

	public void game() {

		int rechenzeichen = rnd.nextInt(4);

		if (rechenzeichen == 0) {
			zufall1 = rnd.nextInt(50);
			zufall2 = rnd.nextInt(50);
		}

		if (rechenzeichen == 1) {
			do {
				zufall1 = rnd.nextInt(40);
				zufall2 = rnd.nextInt(50);
			} while (zufall1 < zufall2);
		}

		if (rechenzeichen == 2) {
			zufall1 = rnd.nextInt(10);
			zufall2 = rnd.nextInt(10);
		}

		if (rechenzeichen == 3) {
			int zahl;
			do {
				zufall1 = rnd.nextInt(60) + 1;
				zufall2 = rnd.nextInt(10) + 1;
				zahl = zufall1 % zufall2;

			} while (zahl != 0);
		}

		if (rechenzeichen == 0) {
			ergebnis = zufall1 + zufall2;
			rechenz = "+";
		}

		if (rechenzeichen == 1) {
			ergebnis = zufall1 - zufall2;
			rechenz = "-";
		}

		if (rechenzeichen == 2) {
			ergebnis = zufall1 * zufall2;
			rechenz = "*";
		}

		if (rechenzeichen == 3) {
			ergebnis = zufall1 / zufall2;
			rechenz = "/";
		}

	}

	void initialize() {
		Button1 = (Button) findViewById(R.id.button1);
		Button1.setOnClickListener(this);
		Button2 = (Button) findViewById(R.id.button2);
		Button2.setOnClickListener(this);
		Button3 = (Button) findViewById(R.id.button3);
		Button3.setOnClickListener(this);
		Button4 = (Button) findViewById(R.id.button4);
		Button4.setOnClickListener(this);
		Display = (TextView) findViewById(R.id.textView1);
		tvTime = (TextView) findViewById(R.id.tvTime);
		tvScore2 = (TextView) findViewById(R.id.tvScore2);
		resume = (Button) dialog.findViewById(R.id.bContinue);
		menu = (Button) dialog.findViewById(R.id.bMainMenu);
		newTry = (Button) dialog.findViewById(R.id.bNewTry);
		resume.setOnClickListener(this);
		menu.setOnClickListener(this);
		newTry.setOnClickListener(this);
		SharedPreferences pref = getSharedPreferences("GAME", 0);
		vibrationToggleState = pref.getBoolean("vibrationToggleState", false);
		vibrationToggle = (ToggleButton) dialog.findViewById(R.id.tbVibration);
		vibrationToggle.setChecked(vibrationToggleState);
		vibrationToggle.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				saveVibrationToggleState();
			}
		});

	}

	void initialize2() {
		Display.setText(Integer.toString(zufall1) + rechenz
				+ Integer.toString(zufall2) + "= ?");

		buttonzufall = rnd.nextInt(4) + 1;

		switch (buttonzufall) {

		case 1:
			Button1.setText(Integer.toString(ergebnis));
			int a,
			b,
			c;
			do {
				a = ergebnis - rnd.nextInt(100);
				b = ergebnis + rnd.nextInt(50);
				c = ergebnis + rnd.nextInt(10);
			} while (a == ergebnis || b == ergebnis || c == ergebnis);

			Button2.setText(Integer.toString(a));
			Button3.setText(Integer.toString(b));
			Button4.setText(Integer.toString(c));
			break;

		case 2:
			Button2.setText(Integer.toString(ergebnis));
			int d,
			e,
			f;
			do {
				d = ergebnis - rnd.nextInt(100);
				e = ergebnis + rnd.nextInt(50);
				f = ergebnis + rnd.nextInt(10);
			} while (d == ergebnis || e == ergebnis || f == ergebnis);

			Button3.setText(Integer.toString(d));
			Button1.setText(Integer.toString(e));
			Button4.setText(Integer.toString(f));
			break;

		case 3:
			Button3.setText(Integer.toString(ergebnis));
			int g,
			h,
			i;
			do {
				g = ergebnis - rnd.nextInt(100);
				h = ergebnis + rnd.nextInt(60);
				i = ergebnis + rnd.nextInt(10);
			} while (g == ergebnis || h == ergebnis || i == ergebnis);

			Button4.setText(Integer.toString(g));
			Button1.setText(Integer.toString(h));
			Button2.setText(Integer.toString(i));
			break;

		case 4:
			Button4.setText(Integer.toString(ergebnis));
			int j,
			k,
			l;
			do {
				j = ergebnis - rnd.nextInt(100);
				k = ergebnis + rnd.nextInt(50);
				l = ergebnis + rnd.nextInt(10);
			} while (j == ergebnis || k == ergebnis || l == ergebnis);

			Button3.setText(Integer.toString(j));
			Button2.setText(Integer.toString(k));
			Button1.setText(Integer.toString(l));
			break;
		}

	}

	public void time() {
		backth = new Thread(new Runnable() {
			// Setup the run() method that is called when the background thread
			// is started.
			public void run() {

				for (int i = 0; i < 60; i++) {
					if (!dialogIsActive) {
						try {
							Thread.sleep(1000);
						} catch (InterruptedException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
						secoundsLeftt = 60 - i;
						secondsString = String.valueOf(secoundsLeftt);

						tvTime.post(new Runnable() {
							public void run() {
								tvTime.setText(secondsString);
							}
						});

						/*
						 * tvScore2.post(new Runnable() { public void run() {
						 * tvScore2.setText(String.valueOf(score)); } });
						 */
					}
					else
					{
						i--;
					}
				}
				secondsString = String.valueOf(0);

				tvTime.post(new Runnable() {
					public void run() {
						tvTime.setText(secondsString);
					}
				});
				timeIsUp = true;

				if (timeIsUp)
					onGameOver();

			}
		});

		backth.start();

	}

	public void score() {
		backth2 = new Thread(new Runnable() {
			// Setup the run() method that is called when the background thread
			// is started.
			public void run() {
				tvScore2.post(new Runnable() {
					public void run() {
						tvScore2.setText(String.valueOf(score));
					}
				});
			}
		});

		backth2.start();
	}

	public void onGameOver() {
		compareScore();
		Intent theNextIntent = new Intent(getApplicationContext(),
				GameOverActivity.class);
		theNextIntent.putExtra("score", getScore());
		startActivity(theNextIntent);
		gameOver = true;
		this.finish();
	}

	public int readHighscore() {
		SharedPreferences pref = getSharedPreferences("GAME", 0);
		return pref.getInt("HIGHSCORE", 0);
	}

	public void writeHighscore(int highscore) {
		SharedPreferences pref = getSharedPreferences("GAME", 0);
		SharedPreferences.Editor editor = pref.edit();
		editor.putInt("HIGHSCORE", highscore);
		editor.commit();
	}

	public void compareScore() {
		if (getScore() > readHighscore()) {
			writeHighscore(getScore());
		}
	}

	@Override
	public void onBackPressed() {
		dialogState();
	}

	public void dialogState() {
		if (dialogIsActive) {
			dialog.hide();
			dialogIsActive = false;
			setTransparency(false);
			pausetime = System.currentTimeMillis() - starttime + pausetime;
			// resumeThread();
			onPauseSecondTime = false;
		} else if (!dialogIsActive) {
			setTransparency(true);
			if (!gameOver)
				dialog.show();
			dialogIsActive = true;
			starttime = System.currentTimeMillis();
			onPauseSecondTime = true;
		}
	}

	public void onDismiss(DialogInterface dialog) {
		dialogState();
	}

	public void vibrator() {
		Vibrator vb = (Vibrator) this
				.getSystemService(Context.VIBRATOR_SERVICE);
		vb.vibrate(200);
	}

	public void saveVibrationToggleState() {
		SharedPreferences pref = getSharedPreferences("GAME", 0);
		SharedPreferences.Editor editor = pref.edit();
		editor.putBoolean("vibrationToggleState", vibrationToggle.isChecked());
		editor.commit();
		vibrationToggleState = pref.getBoolean("vibrationToggleState", false);
		vibrationToggle = (ToggleButton) dialog.findViewById(R.id.tbVibration);
		vibrationToggle.setChecked(vibrationToggleState);
	}

	public boolean getVibrationToggleState() {
		return vibrationToggleState;
	}

	public long getPauseTime() {
		return pausetime;
	}

	public void setTransparency(boolean theTransparency) {
		transparency = theTransparency;
	}

	public int getScore() {
		return this.score;
	}

}


funktionieren tut es momentan nicht, doch wie könnte ich es gut realisieren?

also das Spiel funktioniert jetzt schon mal so wie gewollt, alles was jetzt noch kommt sind Vorzüge ;)

falls ihr mir helfen wollt wäre dies toll :)
 
Zuletzt bearbeitet:
Zurück
Oben Unten