onClick()x2

  • Antworten:68
Tom Com
  • Forum-Beiträge: 203

21.02.2014, 19:14:26 via Website

impjor

Da musst du dir natürlich selber irgendetwas überlegen... Woher sollen wir wissen, wie dein Spiel funktioniert / aufgebaut etc. ist?

LG
Welche Möglichkeiten gibt es?
zB if ? Aber wie kann man das mit onClick verbinden?

— geändert am 21.02.2014, 19:17:59

Liebe Grüße!!!!!!!!!!!!!!!!!!!!!!

Antworten
impjor
  • Forum-Beiträge: 1.793

21.02.2014, 19:25:47 via Website

impjor
Da musst du dir natürlich selber irgendetwas überlegen... Woher sollen wir wissen, wie dein Spiel funktioniert / aufgebaut etc. ist?
Nochmal deutlich: Du musst selber wissen, wie du das implementierst, da du ja auch den Rest erstellt hast.

LG

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

21.02.2014, 19:53:06 via Website

Ja wie ist denn dein Spiel aufgebaut?
Dieses muss halt irgendwie angehalten werden, dafür musst du dann deiner Spiellogik arbeiten..

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Tom Com
  • Forum-Beiträge: 203

22.02.2014, 16:53:33 via Website

Ich schicke mal die bildschirmaktualisieren-Methode (also wo die Zeit heruntergezählt wird und noch mehr):
1private void bildschirmAktualisieren(){
2 TextView tvPunkte = (TextView)findViewById(R.id.points);
3 tvPunkte.setText(Integer.toString(punkte));
4 TextView tvRunde = (TextView)findViewById(R.id.round);
5 tvRunde.setText(Integer.toString(runde));
6 TextView tvTreffer = (TextView)findViewById(R.id.hits);
7 tvTreffer.setText(Integer.toString(gefangeneFly));
8 TextView tvZeit = (TextView)findViewById(R.id.time);
9 tvZeit.setText(Integer.toString(zeit));
10 FrameLayout flTreffer = (FrameLayout)findViewById(R.id.bar_hits);
11 LayoutParams lpTreffer = flTreffer.getLayoutParams();
12 lpTreffer.width = Math.round( massstab * 300 *
13 Math.min( gefangeneFly,fly) / fly);
14 FrameLayout flZeit = (FrameLayout)findViewById(R.id.bar_time);
15 LayoutParams lpZeit = flZeit.getLayoutParams();
16 lpZeit.width = Math.round( massstab * zeit * 300 / ZEITSCHEIBEN);
17
18
19
20 }
Außerdem schicke ich den Pausedialog mit:
1public void pause(){
2 final Dialog dialog = new Dialog(this, android.R.style.
3 Theme_Translucent_NoTitleBar_Fullscreen);
4 dialog.setContentView(R.layout.pause);
5 dialog.show();
6 Button fortsetzen = (Button)dialog.findViewById(R.id.Fortsetzen);
7 fortsetzen.setOnClickListener(new OnClickListener(){
8 @Override
9 public void onClick(View v){
10 dialog.dismiss();
11
12 }
13
14 });
15
16
17 }
Der Dialog wird in der onCreate aufgerufen
Könnt ihr damit was anfangen?

— geändert am 22.02.2014, 16:54:37

Liebe Grüße!!!!!!!!!!!!!!!!!!!!!!

Antworten
impjor
  • Forum-Beiträge: 1.793

22.02.2014, 17:18:00 via App

Nein, das hilft nicht... weißt du überhaupt was dein eigener Code macht?
Irgendwo wirst du doch auf Collisionen prüfen, die Objekte bewegen usw., dort musst du dann bei Pause eben nichts machen.

LG

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Tom Com
  • Forum-Beiträge: 203

22.02.2014, 17:27:01 via Website

Am besten mit if oder?

Liebe Grüße!!!!!!!!!!!!!!!!!!!!!!

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

22.02.2014, 17:29:11 via Website

Ok...
Was meinst du mit "am besten mit if"?
Wenn du eine App entwickelst musst du doch selber wissen, welche mittel du einsetzen kannst, damit deine Bedingungen erfüllt werden

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
impjor
  • Forum-Beiträge: 1.793

22.02.2014, 18:44:20 via Website

Tom Com
Am besten mit if oder?
Wenn du es mit if schaffst, dann mach das doch einfach so.:bashful: Mehrere Wege gibt es immer.

LG

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Tom Com
  • Forum-Beiträge: 203

25.02.2014, 16:25:56 via Website

OK Danke
Aber wie kann man eigtl. eine if machen mit wenn der onClickListener gedrückt wird, dann... So kann ich das ja mit if

Liebe Grüße!!!!!!!!!!!!!!!!!!!!!!

Antworten
Tom Com
  • Forum-Beiträge: 203

25.02.2014, 17:37:34 via Website

Leider habe ich keine richtige Anleitung für das was ich suche gefunden:(
Irgendewie so if und dann wenn der Button gedrückt wird, sonst..
Bitte hilf du mir bei dem auf die Sprünge

— geändert am 25.02.2014, 17:38:11

Liebe Grüße!!!!!!!!!!!!!!!!!!!!!!

Antworten
impjor
  • Forum-Beiträge: 1.793

25.02.2014, 17:41:37 via Website

Sorry, du musst dich schon etwas mit Android beschäftigen...
So wie du dir das vorstellst wird das nie gehen. Soll dein Handy alle 5millisekunden prüfen, ob der Button gedrückt ist? Man verwendet einen Listener, der den Code erst dann ausführt, wenn der Knopf auch gedrückt wurde. Nix if.

LG

— geändert am 25.02.2014, 17:41:56

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Tom Com
  • Forum-Beiträge: 203

25.02.2014, 18:04:46 via Website

Bitte ich schicke mal den ganzen Code bitte sage mir wie ich am besten diee Pause mache. BITTE!
1package at.tomcom.strangefly;
2
3import java.util.Date;
4import java.util.Random;
5
6import android.app.Activity;
7import android.app.Dialog;
8import android.content.Intent;
9import android.media.MediaPlayer;
10import android.os.Bundle;
11import android.os.Handler;
12import android.view.Gravity;
13import android.view.View;
14import android.view.View.OnClickListener;
15import android.view.ViewGroup;
16import android.view.ViewGroup.LayoutParams;
17import android.view.animation.Animation;
18import android.view.animation.AnimationUtils;
19import android.widget.Button;
20import android.widget.FrameLayout;
21import android.widget.ImageView;
22import android.widget.TextView;
23
24public class GameActivity extends Activity implements Runnable{
25 private static final int ZEITSCHEIBEN = 600;
26 private static final int INTERVALL = 100;
27 private static final long HOECHSTALTER_MS = 2000;
28 private float massstab ;
29 private Random zufallsgenerator = new Random();
30 private int runde;
31 private int punkte;
32 private ViewGroup spielbereich;
33 private int gefangeneFly;
34 private int zeit;
35 private int fly;
36 private Handler handler = new Handler();
37 private static final String HELFER = "HELFER";
38 private MediaPlayer mp;
39 private Animation animationEinblenden;
40
41
42
43 @Override
44 public void onCreate(Bundle savedInstanceState) {
45 super.onCreate(savedInstanceState);
46 setContentView(R.layout.activity_game);
47 massstab = getResources().getDisplayMetrics().density;
48 spielbereich = (FrameLayout) findViewById(R.id.spielbereich);
49 spielStarten();
50 mp = MediaPlayer.create(this,R.raw.summen);
51 animationEinblenden = AnimationUtils.loadAnimation(this, R.anim.einblenden);
52 Button pause = (Button)findViewById(R.id.Pause);
53 pause.setOnClickListener(new OnClickListener(){
54 @Override
55 public void onClick(View v){
56 pause();
57 }
58 });
59 }
60
61
62
63
64
65
66 private void spielStarten() {
67 runde = 0;
68 punkte = 0;
69 starteRunde();
70 }
71 private void starteRunde(){
72 runde = runde +1;
73 fly = runde * 20;
74 gefangeneFly = 0;
75 zeit = ZEITSCHEIBEN;
76 bildschirmAktualisieren();
77 handler.postDelayed(this,INTERVALL);
78 }
79
80 private boolean pruefeRundenende(){
81 if (zeit == 0){
82 punkte += 1000;
83 starteRunde();
84 return true;
85 }
86 return false;
87 }
88
89 private boolean pruefeSpielende(){
90 if( zeit == 0 && gefangeneFly < fly){
91 gameOver();
92 return true;
93 }
94 return false;
95 }
96 private void gameOver(){
97 final Dialog d = new Dialog(this, android.R.style.
98 Theme_Translucent_NoTitleBar_Fullscreen);
99 d.setContentView(R.layout.gameover);
100 d.show();
101 Button over = (Button)d.findViewById(R.id.Overbutton);
102 over.setOnClickListener(new OnClickListener(){
103 @Override
104 public void onClick(View v){
105 onDestroy();
106 d.dismiss();
107 }
108
109 });
110
111 }
112 private void zeitHerunterzaehlen(){
113
114
115 zeit = zeit -1;
116 float zufallszahl = zufallsgenerator.nextFloat();
117 double wahrscheinlichkeit = fly * 1.5/ZEITSCHEIBEN;
118 if ( wahrscheinlichkeit > 1 ) {
119 eineFlyAnzeigen();
120 if ( zufallszahl < wahrscheinlichkeit - 1) {
121 eineFlyAnzeigen();
122 }
123 } else {
124 if ( zufallszahl < wahrscheinlichkeit) {
125 eineFlyAnzeigen();
126 }
127
128 }
129 flyVerschwinden();
130 bildschirmAktualisieren();
131 if(!pruefeSpielende()) {
132 if(!pruefeRundenende()){
133 handler.postDelayed(this, INTERVALL);
134 }
135
136 }
137
138 }
139 private void bildschirmAktualisieren(){
140
141 TextView tvPunkte = (TextView)findViewById(R.id.points);
142 tvPunkte.setText(Integer.toString(punkte));
143 TextView tvRunde = (TextView)findViewById(R.id.round);
144 tvRunde.setText(Integer.toString(runde));
145 TextView tvTreffer = (TextView)findViewById(R.id.hits);
146 tvTreffer.setText(Integer.toString(gefangeneFly));
147 TextView tvZeit = (TextView)findViewById(R.id.time);
148 tvZeit.setText(Integer.toString(zeit));
149 FrameLayout flTreffer = (FrameLayout)findViewById(R.id.bar_hits);
150 LayoutParams lpTreffer = flTreffer.getLayoutParams();
151 lpTreffer.width = Math.round( massstab * 300 *
152 Math.min( gefangeneFly,fly) / fly);
153 FrameLayout flZeit = (FrameLayout)findViewById(R.id.bar_time);
154 LayoutParams lpZeit = flZeit.getLayoutParams();
155 lpZeit.width = Math.round( massstab * zeit * 300 / ZEITSCHEIBEN);
156
157
158
159 }
160
161
162 private void eineFlyAnzeigen(){
163 final ImageView flyi = new ImageView(this);
164 flyi.setImageResource(R.drawable.ic_launcher);
165 flyi.setOnClickListener(new OnClickListener(){
166 @Override
167 public void onClick(View v){
168 if(flyi.getTag(R.id.tier) == HELFER) {
169 punkte -= 1000;
170 } else {
171 gefangeneFly++;
172 punkte +=10;
173 bildschirmAktualisieren();
174 spielbereich.removeView(flyi);
175 mp.pause();
176 }
177 }
178
179 });
180
181
182 int breite = spielbereich.getWidth();
183 int hoehe = spielbereich.getHeight();
184
185
186 flyi.setTag(R.id.geburtsdatum, new Date());
187 int fly_breite = (int)Math.round(massstab*50);
188 int fly_hoehe = (int)Math.round(massstab*50);
189 int links = zufallsgenerator.nextInt(breite-fly_breite);
190 int oben = zufallsgenerator.nextInt(hoehe-fly_hoehe);
191
192 FrameLayout.LayoutParams params =
193 new FrameLayout.LayoutParams(fly_breite,fly_hoehe);
194 params.leftMargin = links;
195 params.topMargin = oben;
196 params.gravity = Gravity.TOP + Gravity.LEFT;
197 if(zufallsgenerator.nextFloat() < 0.05) {
198 flyi.setImageResource(R.drawable.helfer);
199 flyi.setTag(R.id.tier,HELFER);
200 } else {
201 flyi.setImageResource(R.drawable.ic_launcher);
202 }
203 spielbereich.addView(flyi,params);
204 mp.seekTo(0);
205 mp.start();
206 }
207
208 private void flyVerschwinden() {
209 int nummer = 0;
210 while(nummer < spielbereich.getChildCount() ) {
211 ImageView flyi = (ImageView) spielbereich.getChildAt(nummer);
212 Date geburtsdatum = (Date) flyi.getTag(R.id.geburtsdatum);
213 geburtsdatum.getTime();
214 long alter = (new Date()).getTime() - geburtsdatum.getTime();
215 if(alter > HOECHSTALTER_MS ) {
216 spielbereich.removeView(flyi);
217 mp.pause();
218 }else{
219 nummer++;
220
221 }
222 }
223 }
224
225
226
227
228
229
230
231
232 public void pause(){
233
234 final Dialog dialog = new Dialog(this, android.R.style.
235 Theme_Translucent_NoTitleBar_Fullscreen);
236 dialog.setContentView(R.layout.pause);
237 dialog.show();
238 Button fortsetzen = (Button)dialog.findViewById(R.id.Fortsetzen);
239 fortsetzen.setOnClickListener(new OnClickListener(){
240 @Override
241 public void onClick(View v){
242 dialog.dismiss();
243
244 }
245
246 });
247
248
249 }
250
251
252
253
254
255 @Override
256 public void run(){
257 zeitHerunterzaehlen();
258 }
259 public void startActivity(){
260 startActivity(new Intent(this,GameActivity.class));
261 }
262
263 @Override
264 public void onResume(){
265 View v = findViewById(R.id.WurzelLayout);
266 v.startAnimation(animationEinblenden);
267 super.onResume();
268 }
269
270
271 @Override
272 public void onDestroy() {
273 mp.release();
274 startActivity(new Intent(this, StartActivity.class));
275 super.onDestroy();
276 }
277
278
279
280 }
Den Pausedialg habe ich schon in pause()
DANKE

Liebe Grüße!!!!!!!!!!!!!!!!!!!!!!

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

25.02.2014, 18:13:08 via Website

Ich glaube, dass du nicht genau weißt , was der ganze Code im Detail überhaupt macht.
Deswegen kannst du auch keine Pausefunktion implementieren.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Tom Com
  • Forum-Beiträge: 203

25.02.2014, 18:18:25 via Website

Aber könnt ihr mir bitte vlt. eine Option meines Codes für eine Pause sagen????

Liebe Grüße!!!!!!!!!!!!!!!!!!!!!!

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

25.02.2014, 18:21:36 via Website

Das bringt dich aber nicht weiter, du weisst dann zwar du Lösung aber verstanden hast du es nicht.
Beim nächsten spiel geht es dann wieder von vorne los..

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Tom Com
  • Forum-Beiträge: 203

25.02.2014, 18:27:41 via Website

Könnt ihr mir dann nicht den Code erklären, den ihr mir sendet?

Liebe Grüße!!!!!!!!!!!!!!!!!!!!!!

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

25.02.2014, 18:40:00 via Website

Bisschen musst du schon selber machen.
Programmieren ist nicht so einfach.
Man muss sich mehrere Jahre damit intensiv beschäftigen.
Wenn man es dann kann und verstanden hat geht alles wesentlich einfacher.
Wenn du später richtig programmieren willst, würde ich dir empfehlen ein Java buch zu lesen, dann sich in Java einzuarbeiten und dann erst mit android anzufangen

PS: Wir haben hier auch nicht die Lust dazu uns deinen Code anzuschauen dann zu verstehen um dir deinen eigenen Code erklärem zu können.
Sorry aber Eigeninitiative ist angesagt.
Und nur um das klarzustellen Du sendest den Code und nicht wir

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Tom Com
  • Forum-Beiträge: 203

25.02.2014, 18:50:36 via Website

Ist okay! Wede mir wahrscheinlich diesesBuch kaufen. Habt ihr Erfahrungen mit diesem Buch gemacht?

Liebe Grüße!!!!!!!!!!!!!!!!!!!!!!

Antworten