S
schornstein
Neues Mitglied
- 0
Hallo Leute.
Ich bin noch ein neuling in Sachen Java und Android und brauche Hilfe bei der OnClick Methode. Hier der Code:
Wenn ich ein Spiel starte erscheinen 2 verschiedene Imageview: mehrere Muecken-Images und mehrere Time-Images.
Was passiert wenn ich die Muecke berühre könnt ihr ja im code sehen^^.
Aber wenn ich das Time-Image berühre soll meine Zeit erhöht werden, hier komme ich irgentwie nicht weiter. Hab es mit switch-case versucht, hat aber irgentwie nicht geklappt
.
Kann mir bitte jemand weiterhelfen?
Ich bin noch ein neuling in Sachen Java und Android und brauche Hilfe bei der OnClick Methode. Hier der Code:
Code:
//C:\Dokumente und Einstellungen\Admin\workspace
package de.androidnewcomer.mueckenfang;
import java.util.Random;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
public class GameActivity extends Activity implements Runnable, OnClickListener {
private static final int INTERVALL = 100;
private static final int ZEITSCHEIBEN = 100;
private int regZeit = 0;
private Random zufallsgenerator = new Random();
private Handler handler = new Handler();
private FrameLayout spielbereich;
private int punkte;
private int munition;
private int zeit;
private float massstab;
private Button reload;
public MediaPlayer mp;
GameActivity theGameActivity;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.game);
reload = (Button) findViewById(R.id.reload);
reload.setOnClickListener(this);
reload.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
mp = MediaPlayer.create(getApplicationContext(), R.raw.reload);
mp.start();
munition = 20;
}
});
spielbereich = (FrameLayout) findViewById(R.id.spielbereich);
massstab = getResources().getDisplayMetrics().density;
spielStarten();
}
private void spielStarten() {
punkte = 0;
starteRunde();
}
private void starteRunde() {
munition = 20;
zeit = ZEITSCHEIBEN;
bildschirmAktualisieren();
handler.postDelayed(this, INTERVALL);
}
private boolean pruefeSpielende() {
if (zeit == 0) {
gameOver();
return true;
}
return false;
}
public void gameOver() {
Intent GameOver= new Intent(this, GameOverActivity.class);
startActivity(GameOver);
this.finish();
}
private void zeitHerunterzaehlen() {
zeit = zeit - 1;
regZeit = regZeit + 1;
spielbereich.getChildCount();
if (spielbereich.getChildCount() < 10) {
eineMueckeAnzeigen();
moreTime();
}
bildschirmAktualisieren();
if (!pruefeSpielende()) {
handler.postDelayed(this, INTERVALL);
}
}
private void bildschirmAktualisieren() {
TextView tvPunkte = (TextView) findViewById(R.id.points);
tvPunkte.setText("Kills: " + Integer.toString(punkte));
TextView tvRestzeit = (TextView) findViewById(R.id.time);
tvRestzeit.setText("Time:" + Integer.toString(zeit));
TextView tvMunition = (TextView) findViewById(R.id.munition);
tvMunition.setText("Munition: " + Integer.toString(munition));
}
private void eineMueckeAnzeigen() {
int breite = spielbereich.getWidth();
int hoehe = spielbereich.getHeight();
ImageView muecke = new ImageView(this);
muecke.setImageResource(R.drawable.muecke);
muecke.setOnClickListener(this);
int muecke_breite = (int) Math.round(massstab * 50);
int muecke_hoehe = (int) Math.round(massstab * 42);
int links = zufallsgenerator.nextInt(breite - muecke_breite);
int oben = zufallsgenerator.nextInt(hoehe - muecke_hoehe);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
muecke_breite, muecke_hoehe);
params.leftMargin = links;
params.topMargin = oben;
spielbereich.addView(muecke, params);
}
private void moreTime() {
int breite = spielbereich.getWidth();
int hoehe = spielbereich.getHeight();
ImageView time = new ImageView(this);
time.setImageResource(R.drawable.time);
time.setOnClickListener(this);
int time_breite = (int) Math.round(massstab * 50);
int time_hoehe = (int) Math.round(massstab * 42);
int links = zufallsgenerator.nextInt(breite - time_breite);
int oben = zufallsgenerator.nextInt(hoehe - time_hoehe);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
time_breite, time_hoehe);
params.leftMargin = links;
params.topMargin = oben;
spielbereich.addView(time, params);
}
public void run() {
zeitHerunterzaehlen();
}
public void onClick(View muecke) {
if (munition == 0) {
mp = MediaPlayer.create(getApplicationContext(), R.raw.leer);
mp.start();
} else {
mp = MediaPlayer.create(getApplicationContext(), R.raw.shoot);
mp.start();
punkte++;
munition--;
bildschirmAktualisieren();
spielbereich.removeView(muecke);
}
}
}
Was passiert wenn ich die Muecke berühre könnt ihr ja im code sehen^^.
Aber wenn ich das Time-Image berühre soll meine Zeit erhöht werden, hier komme ich irgentwie nicht weiter. Hab es mit switch-case versucht, hat aber irgentwie nicht geklappt

Kann mir bitte jemand weiterhelfen?