Spiel - Mücke (brauche Hilfe beim Tier hinzufügen)

  • Antworten:108
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 84

06.03.2014, 18:32:42 via Website

Hallo Liebe Leute,
Bin neu hier

Um dieses spiel geht es.

Mückenfang:
Kurzbeschreibung

Wie viele Mücken zerquetscht worden sind
Je mehr punkte = höhere Runde = besseren Highscore
**Je zerquetschte Mücke 100-300 punkte (je nach Schwierigkeitsgrad) gutgschrieben**

**Um dies geht es:
HILFE BITTE, oder gebt mir einen Tipp**



1. Ich möchte gerne ein Tier z.B. Fliege oder Elefant hinzufügen, aber
so dass da Punkte abgezogen werden, so um die 500Punkte!!!



2. Es werden derzeit die Mücken gezählt, die ich in dieser Runde
erwischt hab um eine Runde weiter zu kommen, also es hebt von 0 an
und es zählt bis 10 rauf, bis ich diese Runde geschafft habe. Ich
will das aber genau umgekehrt, also das es von 10 runterzählt auf 0.


Ich habe schon ca. 3-4 Tage lang studiert und probiert aber irgendwie geht das nicht

**Hier mal das ganze, wo ich eure Hilfe brauch:**
Für die Tiere die erscheinen sollen (eineMueckeAnzeigen) und auch den onClick, wo die Punkte abgezogen werden hab ich mal hervorgehoben.

Bei dem anderen mit dem rückwärts zählen, brauche ich eure hilfe, weil ich glaube mal, das ich den code dann anders schreiben muss

Hoffe der code-tag funktioniert

1package de.androidnewcomer.mueckenfang;
2
3import java.util.Date;
4import java.util.Random;
5
6import android.app.Activity;
7import android.app.Dialog;
8import android.media.MediaPlayer;
9import android.os.Bundle;
10import android.os.Handler;
11import android.view.Gravity;
12import android.view.View;
13import android.view.View.OnClickListener;
14import android.view.ViewGroup;
15import android.view.ViewGroup.LayoutParams;
16import android.view.animation.Animation;
17import android.view.animation.Animation.AnimationListener;
18import android.view.animation.AnimationUtils;
19import android.widget.FrameLayout;
20import android.widget.ImageView;
21import android.widget.TextView;
22
23public class GameActivity extends Activity implements OnClickListener, Runnable {
24
25 private static final String FLIEGE = "FLIEGE";
26 private static final int INTERVALL_MS = 50;
27 private static final long HOECHSTALTER_MS = 2000;
28 private static final int MUECKEN_BILDER[][] = {
29 {R.drawable.muecke_nw, R.drawable.muecke_n, R.drawable.muecke_no},
30 {R.drawable.muecke_w, R.drawable.muecke, R.drawable.muecke_o},
31 {R.drawable.muecke_sw, R.drawable.muecke_s, R.drawable.muecke_so}};
32 private static final String HIMMELSRICHTUNGEN[][] = {
33 {"nw", "n", "no"},
34 {"w", "", "o"},
35 {"sw", "s", "so"}};
36
37 private boolean spielLaeuft;
38 private int runde;
39 private int punkte;
40 private int muecken;
41 private int gefangeneMuecken;
42 private int zeit;
43 private float massstab;
44 private Random zufallsgenerator = new Random();
45 private ViewGroup spielbereich;
46 private Handler handler = new Handler();
47 private MediaPlayer mp;
48 private int frame;
49 private int schwierigkeitsgrad;
50 **private ImageView muecke;
51 private Random rnd;
52 private Object fliege;**
53
54 @Override
55 protected void onCreate(Bundle savedInstanceState) {
56 super.onCreate(savedInstanceState);
57 setContentView(R.layout.game);
58 massstab = getResources().getDisplayMetrics().density;
59 spielbereich = (ViewGroup) findViewById(R.id.spielbereich);
60 mp = MediaPlayer.create(this, R.raw.summen);
61 schwierigkeitsgrad = getIntent().getIntExtra("schwierigkeitsgrad", 0);
62 spielStarten();
63 }
64
65 private void spielStarten() {
66 spielLaeuft = true;
67 runde = 0;
68 punkte = 0;
69 starteRunde();
70 }
71
72 private void starteRunde() {
73 runde = runde +1;
74 muecken = runde * (10 + schwierigkeitsgrad*10);
75 gefangeneMuecken = 0;
76 frame = 0;
77 zeit = 60;
78 bildschirmAktualisieren();
79 handler.postDelayed(this, INTERVALL_MS);
80 }
81
82 private void bildschirmAktualisieren() {
83 TextView tvPunkte = (TextView) findViewById(R.id.points);
84 tvPunkte.setText(Integer.toString(punkte));
85 TextView tvRunde = (TextView) findViewById(R.id.round);
86 tvRunde.setText(Integer.toString(runde));
87 TextView tvTreffer = (TextView) findViewById(R.id.hits);
88 tvTreffer.setText(Integer.toString(gefangeneMuecken));
89 TextView tvZeit = (TextView) findViewById(R.id.time);
90 tvZeit.setText(Integer.toString(zeit));
91 FrameLayout flTreffer = (FrameLayout) findViewById(R.id.bar_hits);
92 FrameLayout flZeit = (FrameLayout) findViewById(R.id.bar_time);
93 LayoutParams lpTreffer = flTreffer.getLayoutParams();
94 lpTreffer.width = Math.round(massstab * 300 * Math.min(gefangeneMuecken, muecken) /muecken);
95 LayoutParams lpZeit = flZeit.getLayoutParams();
96 lpZeit.width = Math.round(massstab * zeit * 300 / 60 );
97 }
98
99 private void zeitHerunterzaehlen() {
100 zeit = zeit -1;
101 float zufallszahl = zufallsgenerator.nextFloat();
102 double wahrscheinlichkeit = muecken * 1.5 / 60;
103 if(wahrscheinlichkeit > 1) {
104 eineMueckeAnzeigen();
105 if(zufallszahl < wahrscheinlichkeit-1) {
106 eineMueckeAnzeigen();
107 }
108 } else {
109 if(zufallszahl < wahrscheinlichkeit) {
110 eineMueckeAnzeigen();
111 }
112 }
113 mueckenVerschwinden();
114 bildschirmAktualisieren();
115 }
116
117
118 private void mueckenBewegen() {
119 int nummer=0;
120 while(nummer < spielbereich.getChildCount()) {
121 ImageView muecke = (ImageView) spielbereich.getChildAt(nummer);
122 int vx = (Integer) muecke.getTag(R.id.vx);
123 int vy = (Integer) muecke.getTag(R.id.vy);
124 // und nun bewegen...
125 FrameLayout.LayoutParams params = (android.widget.FrameLayout.LayoutParams) muecke.getLayoutParams();
126 params.leftMargin += vx*runde;
127 params.topMargin += vy*runde;
128 muecke.setLayoutParams(params);
129 nummer++;
130 }
131 }
132
133 private void mueckenVerschwinden() {
134 int nummer=0;
135 while(nummer < spielbereich.getChildCount()) {
136 ImageView muecke = (ImageView) spielbereich.getChildAt(nummer);
137 Date geburtsdatum = (Date) muecke.getTag(R.id.geburtsdatum);
138 long alter = (new Date()).getTime() - geburtsdatum.getTime();
139 if(alter > HOECHSTALTER_MS) {
140 spielbereich.removeView(muecke);
141 } else {
142 nummer++;
143 }
144 }
145 }
146
147 private boolean pruefeSpielende() {
148 if(zeit == 0 && gefangeneMuecken < muecken) {
149 gameOver();
150 return true;
151 }
152 return false;
153 }
154
155 private void gameOver() {
156 setResult(punkte);
157 Dialog dialog = new Dialog(this, android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
158 dialog.setContentView(R.layout.gameover);
159 dialog.show();
160 spielLaeuft = false;
161 }
162
163 private boolean pruefeRundenende() {
164 if(gefangeneMuecken >= muecken) {
165 starteRunde();
166 return true;
167 }
168 return false;
169 }
170
171 private void eineMueckeAnzeigen() {
172
173 **if(rnd.nextFloat() <0.05) {
174 muecke.setImageResource(R.drawable.fliege);
175 muecke.setTag(R.id.tier,fliege);
176 } else {
177 muecke.setImageResource(R.drawable.muecke);
178 }**
179
180 int breite = spielbereich.getWidth();
181 int hoehe = spielbereich.getHeight();
182 int muecke_breite = (int) Math.round(massstab*50);
183 int muecke_hoehe = (int) Math.round(massstab*42);
184 int links = zufallsgenerator.nextInt(breite - muecke_breite );
185 int oben = zufallsgenerator.nextInt(hoehe - muecke_hoehe);
186
187 // Mücke erzeugen
188 ImageView muecke = new ImageView(this);
189 muecke.setOnClickListener(this);
190 muecke.setTag(R.id.geburtsdatum, new Date());
191
192 // Bewegungsvektor erzeugen
193 int vx;
194 int vy;
195 do {
196 vx = zufallsgenerator.nextInt(3)-1;
197 vy = zufallsgenerator.nextInt(3)-1;
198 } while(vx==0 && vy==0);
199
200 muecke.setTag(R.id.vx, new Integer(vx));
201 muecke.setTag(R.id.vy, new Integer(vy));
202
203 setzeBild(muecke, vx, vy);
204
205 // Geschwindigkeitskorrektur für schräge Mücken
206 double faktor = 1.0;
207 if(vx!=0 && vy!=0) {
208 faktor = 0.70710678;
209 }
210
211 vx = (int) Math.round(massstab*faktor*vx);
212 vy = (int) Math.round(massstab*faktor*vy);
213
214 // Mücke anzeigen
215 FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(muecke_breite, muecke_hoehe);
216 params.leftMargin = links;
217 params.topMargin = oben;
218 params.gravity = Gravity.TOP + Gravity.LEFT;
219 spielbereich.addView(muecke, params);
220
221 // Summen starten
222 mp.seekTo(0);
223 mp.start();
224 }
225
226
227 private void setzeBild(ImageView muecke, int vx, int vy) {
228 // setzen des richtigen Bildes mit dem zweidimensionalen Array
229 muecke.setImageResource(MUECKEN_BILDER[vy+1][vx+1]);
230
231 // alternativ: setzen über Himmelsrichtungen und Bildname
232 //muecke.setImageResource(getResources().getIdentifier("muecke_"+HIMMELSRICHTUNGEN[vy+1][vx+1], "drawable", getPackageName()));
233 }
234
235 @Override
236 public void onClick(View muecke) {
237 **if(muecke.getTag(R.id.tier)== FLIEGE) {
238 punkte -= 500;
239 } else {
240 gefangeneMuecken++;
241 punkte += 100 + schwierigkeitsgrad*100;**
242 }
243 bildschirmAktualisieren();
244 mp.pause();
245 Animation animationTreffer = AnimationUtils.loadAnimation(this, R.anim.treffer);
246 animationTreffer.setAnimationListener(new MueckeAnimationListener(muecke));
247 muecke.startAnimation(animationTreffer);
248 muecke.setOnClickListener(null);
249
250
251 }
252
253 private class MueckeAnimationListener implements AnimationListener {
254 private View muecke;
255 public MueckeAnimationListener(View m) {
256 muecke = m;
257 }
258 @Override
259 public void onAnimationEnd(Animation arg0) {
260 handler.post(new Runnable() {
261 @Override
262 public void run() {
263 spielbereich.removeView(muecke);
264 }
265 });
266 }
267
268 @Override
269 public void onAnimationRepeat(Animation arg0) {
270 }
271
272 @Override
273 public void onAnimationStart(Animation arg0) {
274 }
275
276 }
277
278 @Override
279 public void run() {
280 mueckenBewegen();
281 frame++;
282 if(frame >= 1000/INTERVALL_MS) {
283 zeitHerunterzaehlen();
284 frame = 0;
285 }
286 if(!pruefeSpielende()) {
287 if(!pruefeRundenende()) {
288 handler.postDelayed(this, INTERVALL_MS);
289 }
290 }
291 }
292
293 @Override
294 protected void onDestroy() {
295 mp.release();
296 super.onDestroy();
297 }
298
299 @Override
300 protected void onPause() {
301 super.onPause();
302 handler.removeCallbacks(this);
303 }
304}


Ich sag schon mal danke im Voraus

— geändert am 06.03.2014, 19:29:14 durch Moderator

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.165

06.03.2014, 18:53:28 via Website

Wenn du aus einem Android Buch entwickelst, das dieses Beispiel drinnen hat, schau mal hier:
http://www.androidpit.de/de/android/forum/thread/579782/Mueckenfang-Hilfe


Ich möchte gerne ein Tier z.B. Fliege oder Elefant hinzufügen, aber so dass da Punkte abgezogen werden, so um die 500Punkte!!!
Dann mach das Doch. Wie nachlesen, im Inet suchen oder hier genauer mit Infos etc. nachfragen.

Es werden derzeit die Mücken gezählt, die ich in dieser Runde erwischt hab um eine Runde weiter zu kommen, also es hebt von 0 an und es zählt bis 10 rauf, bis ich diese Runde geschafft habe. Ich will das aber genau umgekehrt, also das es von 10 runterzählt auf 0.
Das kannst du machen indem du statt hochzählen einfach runterzählst.. (Poste die Entsprechende Stelle im Code den Langen liest niemand durch)

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

Antworten
  • Forum-Beiträge: 22.353

06.03.2014, 18:59:58 via App

Hallo und herzlich willkommen bei uns im Forum :)

bitte bearbeite doch nochmal etwas deinen Threadtitel, damit andere User besser erkennen können, worum es hier geht. Hierfür einfach unter deinem ersten Beitrag auf "Bearbeiten" drücken, dann kannst du oben noch mal den Titel bearbeiten. Danke

Viele Grüße,
Andy


OnePlus 3 (Resurrection Remix 5.8.2)
LG G Watch

Regeln | unsere Mods & Admins

Antworten
  • Forum-Beiträge: 84

06.03.2014, 19:19:19 via Website

Andy N.

bitte bearbeite doch nochmal etwas deinen Threadtitel, damit andere User besser erkennen können, worum es hier geht. Hierfür einfach unter deinem ersten Beitrag auf "Bearbeiten" drücken, dann kannst du oben noch mal den Titel bearbeiten.

Danke für die nachricht aber leider funktioniert das mit dem bearbeiten überhaupt garnicht und das mit dem code-tag hat leider auch nicht funktioniert, warum?

Pascal P.

Poste die Entsprechende Stelle

Danke für den Link, aber ich habe dort auch schon durchforstet und im Internet finde ich auch nicht das richtige.

Das andere problem ist die Liste, ich weiß nicht ganz genau, was jetzt alles dazugehört für die Änderung des zählens!!!, deswegen die ganze Activity

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.165

06.03.2014, 19:25:16 via Website

Das musst du schon wissen. Daran sehe ich das du den Code nicht verstanden hast. Bitte Grundlagen anschauen.
Wieso haben eigentlich mehrere leute damit Probleme?
Ist es im Buch nicht genau erklärt?

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

Antworten
  • Forum-Beiträge: 22.353

06.03.2014, 19:30:16 via App

Patrick M.


Danke für die nachricht aber leider funktioniert das mit dem bearbeiten überhaupt garnicht und das mit dem code-tag hat leider auch nicht funktioniert, warum?

Keine Ahnung, warum das bei dir nicht ging... Ich hab das mal für dich übernommen ;)

Viele Grüße,
Andy


OnePlus 3 (Resurrection Remix 5.8.2)
LG G Watch

Regeln | unsere Mods & Admins

Antworten
  • Forum-Beiträge: 84

06.03.2014, 19:43:13 via Website

Pascal
Ich verstehe schon den Code nur bei mir ist das Problem anders. Entweder muss ich den Code komplett von vorne anfangen zum schreiben, damit ich weiß wo was und wofür es ist oder ich brauche xTage bis ich es schaffe aber ich bin momentan erst Anfänger wie du siehst

Im Buch steht nicht alles, das ist das problem, wenn es drinen stehen würde, würde ich weder übers Internet um hilfe bitten noch ca. 20Seiten bei der Suchmaschine durchforsten!!!

Andy
Danke für deine Hilfe

Ich hab den Computer neu gestartet und auch GoogleChrome, funktioniert immer noch nicht, warscheinlich weil ich die Beta-Version benutze

Ach ja, wenn der Code-Tag wiedernicht funktioniert, bitte schreibt, wie der richtig geschrieben wird!


1package de.androidnewcomer.mueckenfang;
2
3import java.util.Date;
4import java.util.Random;
5
6import android.app.Activity;
7import android.app.Dialog;
8import android.media.MediaPlayer;
9import android.os.Bundle;
10import android.os.Handler;
11import android.view.Gravity;
12import android.view.View;
13import android.view.View.OnClickListener;
14import android.view.ViewGroup;
15import android.view.ViewGroup.LayoutParams;
16import android.view.animation.Animation;
17import android.view.animation.Animation.AnimationListener;
18import android.view.animation.AnimationUtils;
19import android.widget.FrameLayout;
20import android.widget.ImageView;
21import android.widget.TextView;
22
23public class GameActivity extends Activity implements OnClickListener, Runnable {
24
25 private static final int INTERVALL_MS = 50;
26 private static final long HOECHSTALTER_MS = 2000;
27 private static final int MUECKEN_BILDER[][] = {
28 {R.drawable.muecke_nw, R.drawable.muecke_n, R.drawable.muecke_no},
29 {R.drawable.muecke_w, R.drawable.muecke, R.drawable.muecke_o},
30 {R.drawable.muecke_sw, R.drawable.muecke_s, R.drawable.muecke_so}};
31 private static final String HIMMELSRICHTUNGEN[][] = {
32 {"nw", "n", "no"},
33 {"w", "", "o"},
34 {"sw", "s", "so"}};
35
36 private boolean spielLaeuft;
37 private int runde;
38 private int punkte;
39 private int muecken;
40 private int gefangeneMuecken;
41 private int zeit;
42 private float massstab;
43 private Random zufallsgenerator = new Random();
44 private ViewGroup spielbereich;
45 private Handler handler = new Handler();
46 private MediaPlayer mp;
47 private int frame;
48 private int schwierigkeitsgrad;
49
50 @Override
51 protected void onCreate(Bundle savedInstanceState) {
52 super.onCreate(savedInstanceState);
53 setContentView(R.layout.game);
54 massstab = getResources().getDisplayMetrics().density;
55 spielbereich = (ViewGroup) findViewById(R.id.spielbereich);
56 mp = MediaPlayer.create(this, R.raw.summen);
57 schwierigkeitsgrad = getIntent().getIntExtra("schwierigkeitsgrad", 0);
58 spielStarten();
59 }
60
61 private void spielStarten() {
62 spielLaeuft = true;
63 runde = 0;
64 punkte = 0;
65 starteRunde();
66 }
67
68 private void starteRunde() {
69 runde = runde +1;
70 muecken = runde * (10 + schwierigkeitsgrad*10);
71 gefangeneMuecken = 0;
72 frame = 0;
73 zeit = 60;
74 bildschirmAktualisieren();
75 handler.postDelayed(this, INTERVALL_MS);
76 }
77
78 private void mueckenVerschwinden() {
79 int nummer=0;
80 while(nummer < spielbereich.getChildCount()) {
81 ImageView muecke = (ImageView) spielbereich.getChildAt(nummer);
82 Date geburtsdatum = (Date) muecke.getTag(R.id.geburtsdatum);
83 long alter = (new Date()).getTime() - geburtsdatum.getTime();
84 if(alter > HOECHSTALTER_MS) {
85 spielbereich.removeView(muecke);
86 } else {
87 nummer++;
88 }
89 }
90 }
91
92 private boolean pruefeSpielende() {
93 if(zeit == 0 && gefangeneMuecken < muecken) {
94 gameOver();
95 return true;
96 }
97 return false;
98 }
99
100 private boolean pruefeRundenende() {
101 if(gefangeneMuecken >= muecken) {
102 starteRunde();
103 return true;
104 }
105 return false;
106 }
107
108 private void eineMueckeAnzeigen() {
109
110 if(rnd.nextFloat() <0.05) {
111 muecke.setImageResource(R.drawable.fliege);
112 muecke.setTag(R.id.tier,fliege);
113 } else {
114 muecke.setImageResource(R.drawable.muecke);
115 }

116
117 int breite = spielbereich.getWidth();
118 int hoehe = spielbereich.getHeight();
119 int muecke_breite = (int) Math.round(massstab*50);
120 int muecke_hoehe = (int) Math.round(massstab*42);
121 int links = zufallsgenerator.nextInt(breite - muecke_breite );
122 int oben = zufallsgenerator.nextInt(hoehe - muecke_hoehe);
123
124 // Mücke erzeugen
125 ImageView muecke = new ImageView(this);
126 muecke.setOnClickListener(this);
127 muecke.setTag(R.id.geburtsdatum, new Date());
128
129 // Bewegungsvektor erzeugen
130 int vx;
131 int vy;
132 do {
133 vx = zufallsgenerator.nextInt(3)-1;
134 vy = zufallsgenerator.nextInt(3)-1;
135 } while(vx==0 && vy==0);
136
137 muecke.setTag(R.id.vx, new Integer(vx));
138 muecke.setTag(R.id.vy, new Integer(vy));
139
140 setzeBild(muecke, vx, vy);
141
142 // Geschwindigkeitskorrektur für schräge Mücken
143 double faktor = 1.0;
144 if(vx!=0 && vy!=0) {
145 faktor = 0.70710678;
146 }
147
148 vx = (int) Math.round(massstab*faktor*vx);
149 vy = (int) Math.round(massstab*faktor*vy);
150
151 // Mücke anzeigen
152 FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(muecke_breite, muecke_hoehe);
153 params.leftMargin = links;
154 params.topMargin = oben;
155 params.gravity = Gravity.TOP + Gravity.LEFT;
156 spielbereich.addView(muecke, params);
157
158 }
159 private void setzeBild(ImageView muecke, int vx, int vy) {
160 muecke.setImageResource(MUECKEN_BILDER[vy+1][vx+1]);
161 }
162 @Override
163 public void onClick(View muecke) {
164 if(muecke.getTag(R.id.tier)== FLIEGE) {
165 punkte -= 500;
166 } else {
167 gefangeneMuecken++;
168 punkte += 100 + schwierigkeitsgrad*100;

169 }
170 bildschirmAktualisieren();
171 mp.pause();
172 Animation animationTreffer = AnimationUtils.loadAnimation(this, R.anim.treffer);
173 animationTreffer.setAnimationListener(new MueckeAnimationListener(muecke));
174 muecke.startAnimation(animationTreffer);
175 muecke.setOnClickListener(null);
176 }

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.165

06.03.2014, 19:54:21 via Website

Was willst du denn jetzt genau Wissen?

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

Antworten
  • Forum-Beiträge: 84

06.03.2014, 20:07:21 via Website

Ich will als erstes nur mal die Fliege oder den Elefanten, also das die punkte weggezählt werden.
Soviel was ich weiß wird dies über dem onClick geschehen, nur fehlt mir noch die erfahrung und so.

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.165

06.03.2014, 20:13:24 via Website

1public void onClick(View muecke) {
2 if(muecke.getTag(R.id.tier)== FLIEGE) { //Wenn Tier ist FLiege; Das ist schon Fraglich Ist FLIEGE eine Variable ein string oder was?
3 punkte -= 500; //Hier werden 500 Punkte abgezogen; kann aber auch sein dass die Punkte dannach im minusbereich sind
4 } else {
5 gefangeneMuecken++; //Wenn es keine Fliege ist, zähle den Counter +1
6 punkte += 100 + schwierigkeitsgrad*100; //Die Punkte werden höher berechnet
7 }

Funktioniert dieser Code denn?
Wir müssen natürlich wissen, wie du die Fliege (das bild) einbindest, dann musst du an der stelle auf den Elefanten ändern.

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

Antworten
  • Forum-Beiträge: 84

06.03.2014, 20:33:19 via Website

Danke erstmal fürs helfen
Und sorry für die Wartezeit der Antwort, hab mal AVD-Emulator gestartet, dauert eine weile!

Tier ist eine Id

das ich ins minus komm kann nicht passieren, weil es werden 150% mücken angezeigt, und die fliege nur 5%, und wenn ich ins minus komme, kann ich ja trotzdem weniger punkte machen(programmieren)

genau, das mit dem schwierigkeitsgrad. Da werden level 1 und 2 übersprungen (runde 3, danach runde 6 usw. wird gespielt). Dafür bekommt man mehr punkte weil die schwierigkeitsgrad schwer ist

Das mit dem einbinden, das wird entweder bei onCreadet oder etwas unterhalb von import hingeschrieben oder liege ich da falsch??


Und jetzt kommt dieses Problem von der Console, das seit 1Woche immer häufiger wird

ANDROID-EMULATOR>CONSOLE
[2014-03-07 20:29:00 - Mueckenfang7] Failed to install Mueckenfang7.apk on device 'emulator-5554!
[2014-03-07 20:29:00 - Mueckenfang7] (null)
[2014-03-07 20:29:01 - Mueckenfang7] Launch canceled!

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.165

06.03.2014, 20:45:48 via Website

Das ist ein Emulatorfehler, teste es auf deinem Device
Poste mal die Stelle der Einbindung

— geändert am 06.03.2014, 20:46:19

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

Antworten
  • Forum-Beiträge: 84

06.03.2014, 20:51:12 via Website

das war ziemlich am schluss
Ist dieser Emulator gut, weil ich lade den gerade herunter
www.genymotion.com/


[2014-03-07 20:20:50 - Mueckenfang7] ------------------------------
[2014-03-07 20:20:50 - Mueckenfang7] Android Launch!
[2014-03-07 20:20:50 - Mueckenfang7] adb is running normally.
[2014-03-07 20:20:50 - Mueckenfang7] Performing de.androidnewcomer.mueckenfang.MueckenfangActivity activity launch
[2014-03-07 20:20:51 - Mueckenfang7] Automatic Target Mode: launching new emulator with compatible AVD 'AVD_for_Samsung_Galaxy_S4_mini'
[2014-03-07 20:20:51 - Mueckenfang7] Launching a new emulator with Virtual Device 'AVD_for_Samsung_Galaxy_S4_mini'
[2014-03-07 20:21:17 - Mueckenfang7] New emulator found: emulator-5554
[2014-03-07 20:21:17 - Mueckenfang7] Waiting for HOME ('android.process.acore') to be launched...
[2014-03-07 20:26:12 - Mueckenfang7] HOME is up on device 'emulator-5554'
[2014-03-07 20:26:12 - Mueckenfang7] Uploading Mueckenfang7.apk onto device 'emulator-5554'
[2014-03-07 20:26:19 - Mueckenfang7] Installing Mueckenfang7.apk...
[2014-03-07 20:29:00 - Mueckenfang7] Failed to install Mueckenfang7.apk on device 'emulator-5554!
[2014-03-07 20:29:00 - Mueckenfang7] (null)
[2014-03-07 20:29:01 - Mueckenfang7] Launch canceled!

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.165

06.03.2014, 20:55:31 via Website

Sieht gut aus, ob er auch so Funktioniert kann ich nicht sagen.
Was soll das LogCat?
Dass weiss ich doch schon.
Oder kannst du die App auf denem Handy auch nicht starten

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

Antworten
  • Forum-Beiträge: 84

06.03.2014, 20:57:13 via Website

Ach nö.
Das untere war sicher unnötig.

Sag mir mal, wo bzw. wie ich die einbindung sehe bzw. erkenne.
Das bringt mir dann schon mal weiter

Antworten
  • Forum-Beiträge: 84

06.03.2014, 20:59:10 via Website

Sorry. Hatte heute sehr viel stress

Nur hat für heute mein Handy den geist aufgegeben, weil mein Akku leer ist und ich bei mein freund bin und den sein Computer benutzen kann ja

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.165

06.03.2014, 20:59:19 via Website

Das ist die Stelle andem du deine Bilder in die ImageView Setzt. Also Funktion mücke anzeigen

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

Antworten
  • Forum-Beiträge: 84

06.03.2014, 21:12:46 via Website

Ist drinen.
Hoffe das du dies meintest



[code] public class GameActivity extends Activity implements OnClickListener, Runnable {
private ImageView muecke; [code/]

1private void eineMueckeAnzeigen() {
2 if(rnd.nextFloat() <0.05) {
3 muecke.setImageResource(R.drawable.fliege);
4 muecke.setTag(R.id.tier,fliege);
5 } else {
6 muecke.setImageResource(R.drawable.fliege);

7 }
8
9 int breite = spielbereich.getWidth();
10 int hoehe = spielbereich.getHeight();
11 int muecke_breite = (int) Math.round(massstab*50);
12 int muecke_hoehe = (int) Math.round(massstab*42);
13 int links = zufallsgenerator.nextInt(breite - muecke_breite );
14 int oben = zufallsgenerator.nextInt(hoehe - muecke_hoehe);
15
16 // Mücke erzeugen
17 ImageView muecke = new ImageView(this);
18 muecke.setOnClickListener(this);
19 muecke.setTag(R.id.geburtsdatum, new Date());
20
21 // Bewegungsvektor erzeugen
22 int vx;
23 int vy;
24 do {
25 vx = zufallsgenerator.nextInt(3)-1;
26 vy = zufallsgenerator.nextInt(3)-1;
27 } while(vx==0 && vy==0);
28
29 muecke.setTag(R.id.vx, new Integer(vx));
30 muecke.setTag(R.id.vy, new Integer(vy));
31
32 setzeBild(muecke, vx, vy);
33
34 // Geschwindigkeitskorrektur für schräge Mücken
35 double faktor = 1.0;
36 if(vx!=0 && vy!=0) {
37 faktor = 0.70710678;
38 }
39
40 vx = (int) Math.round(massstab*faktor*vx);
41 vy = (int) Math.round(massstab*faktor*vy);
42
43 // Mücke anzeigen
44 FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(muecke_breite, muecke_hoehe);
45 params.leftMargin = links;
46 params.topMargin = oben;
47 params.gravity = Gravity.TOP + Gravity.LEFT;
48 spielbereich.addView(muecke, params);
49
50 // Summen starten
51 mp.seekTo(0);
52 mp.start();
53 }


Programm fehler!!!!

Ich danke dir erstmal für deine Hilfe. Werde morgen sehr spät wieder on sein

Antworten
  • Forum-Beiträge: 84

13.03.2014, 20:23:58 via Website

Nein, funktioniert leider nicht.
Ich habs schon 10mal herumprobiert und herumgeschrieben. Leider nichts

Hab diese funktion bei onClick und bei mueckeAnzeigen ausprobiert


Bei debug oben links wird dies angezeigt

egal ob ich diesen Code bei onClick oder mueckeAnzeigen einfüge, es kommt immer dies
Bei debug oben links wird dies angezeigt
Ich hab ca. 15mal Step Over [F6] geklickt

1. NullPointerException

Thread [<1> main] (Suspended (exception NullPointerException))
<VM does not provide monitor information>
ZygoteInit$MethodAndArgsCaller.run() line: 1108 ---->Wenn ich danach Step Over klicke, schließt sich diese Klasse und die untere öffnet sich
Dabei wird bei LogCat dies Angezeigt: D/AndroidRuntime(23932): Shutting down VM
W/dalvikvm(23932): threadid=1: thread exiting with uncaught exception (group=0x40f47ac8)
ZygoteInit.main(String[]) line: 869
NativeStart.main(String[]) line: not available [native method]


2. Android wird angehalten

Thread [<1> main] (Stepping)
<VM does not provide monitor information>
ThreadGroup.uncaughtException(Thread,Throwable)line: 690
NativeStart.main(String[]) line: not available [native method] -----> Ab da zeigt Android "Mückenfang angehalten"

egal ob ich diesen Code bei onClick oder mueckeAnzeigen einfüge, es kommt immer dies

Ich hab dem Breakpoint bei
if(rnd.next.float() <0.05) {
gesetzt

Nur leider funktionieren die SourceCode klassen nicht um die probleme genauer auf die Spur zukommen.
Ich beobachte seit gestern den Thread "Eclipse "Source not found" Fehler bei Debugging." von Superbit!!

Hier mal der LogCat
03-13 19:34:03.327: D/AndroidRuntime(23932): Shutting down VM
03-13 19:34:03.337: W/dalvikvm(23932): threadid=1: thread exiting with uncaught exception (group=0x40f47ac8)
03-13 19:34:23.989: E/AndroidRuntime(23932): FATAL EXCEPTION: main
03-13 19:34:23.989: E/AndroidRuntime(23932): java.lang.NullPointerException
03-13 19:34:23.989: E/AndroidRuntime(23932): at de.androidnewcomer.mueckenfang.GameActivity.eineMueckeAnzeigen(GameActivity.java:144)
03-13 19:34:23.989: E/AndroidRuntime(23932): at de.androidnewcomer.mueckenfang.GameActivity.zeitHerunterzaehlen(GameActivity.java:86)
03-13 19:34:23.989: E/AndroidRuntime(23932): at de.androidnewcomer.mueckenfang.GameActivity.run(GameActivity.java:179)
03-13 19:34:23.989: E/AndroidRuntime(23932): at android.os.Handler.handleCallback(Handler.java:725)
03-13 19:34:23.989: E/AndroidRuntime(23932): at android.os.Handler.dispatchMessage(Handler.java:92)
03-13 19:34:23.989: E/AndroidRuntime(23932): at android.os.Looper.loop(Looper.java:137)
03-13 19:34:23.989: E/AndroidRuntime(23932): at android.app.ActivityThread.main(ActivityThread.java:5306)
03-13 19:34:23.989: E/AndroidRuntime(23932): at java.lang.reflect.Method.invokeNative(Native Method)
03-13 19:34:23.989: E/AndroidRuntime(23932): at java.lang.reflect.Method.invoke(Method.java:511)
03-13 19:34:23.989: E/AndroidRuntime(23932): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
03-13 19:34:23.989: E/AndroidRuntime(23932): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
03-13 19:34:23.989: E/AndroidRuntime(23932): at dalvik.system.NativeStart.main(Native Method)


1//Egal welcher, immer das gleiche
2private static final String FLIEGE = "FLIEGE";
3private static final Object FLIEGE = 1;
4
5
6private void eineMueckeAnzeigen() {
7 //Anzeige
8 int breite = spielbereich.getWidth();
9 int hoehe = spielbereich.getHeight();
10 int muecke_breite = (int) Math.round(massstab*50);
11 int muecke_hoehe = (int) Math.round(massstab*42);
12 int links = zufallsgenerator.nextInt(breite - muecke_breite );
13 int oben = zufallsgenerator.nextInt(hoehe - muecke_hoehe);
14
15 //Die zwei waren drinnen, war das gleiche, sowie ohne die!
16 ImageView muecke = new ImageView(this);
17 muecke.setImageResource(R.drawable.muecke);

18
19
20//Hier ist der Code, was du für mich geschrieben hast
21 if (rnd.nextFloat() < 0.05) {
22 muecke.setImageResource(R.drawable.fliege);
23 muecke.setTag(R.id.tier,FLIEGE);
24 } else {
25 muecke.setImageResource(R.drawable.muecke);
26 }

27
28 muecke.setOnClickListener(this);
29 muecke.setTag(R.id.geburtsdatum, new Date());
30
31
32 FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(muecke_breite, muecke_hoehe);
33 params.leftMargin = links;
34 params.topMargin = oben;
35 params.gravity = Gravity.TOP + Gravity.LEFT;
36
37 spielbereich.addView(muecke, params);

1public void onClick(View muecke) {
2
3 if (muecke.getTag(R.id.tier) == FLIEGE) {
4 punkte -= 500;
5 } else {
6 gefangeneMuecken++;
7 punkte += 100;
8 }
9 bildschirmAktualisieren();
10 spielbereich.removeView(muecke);
11 }

Ich habs versucht so genau wie möglich, ab wann und wo das Problem auftritt!!
Hoffe, Ihr könnt mir da weiterhelfen, damit zumindest mal die FLIEGE angezeigt wird!!!

— geändert am 13.03.2014, 20:24:50

Antworten

Empfohlene Artikel