Hey Leute 
hab hier eine Aufgabe für einen Einstellungstest und suche gerade eine Lösung auf ein bestimmtes Problem. Und zwar geht es darum, dass ich ein kleines Spiel entwickeln soll, bei dem ich die Welt zufällig generieren soll. Den Code hab ich natürlich in die entsprechende onDraw()-Methode gepackt. Hier mal kurz der komplette Code der onDraw()-Methode:
[CODE lang="java" title="onDraw()-Methode zum Zeichnen des Spiels."]protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setFilterBitmap(true);
paint.setDither(true);
if(drewFirst) {
// Initialize all map elements
dirt = BitmapFactory.decodeResource(getResources(), R.mipmap.dirt);
dirt = Bitmap.createScaledBitmap(dirt, 146, 248, true);
grass = BitmapFactory.decodeResource(getResources(), R.mipmap.grass);
grass = Bitmap.createScaledBitmap(grass, 146, 248, true);
stone = BitmapFactory.decodeResource(getResources(), R.mipmap.stone);
stone = Bitmap.createScaledBitmap(stone, 146, 248, true);
water = BitmapFactory.decodeResource(getResources(), R.mipmap.water);
water = Bitmap.createScaledBitmap(water, 146, 248, true);
int top = 0;
int left = 0;
int random = 0; // for generating random maps
// it's completely random generated, no structures
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 5; j++) {
random = (int) (Math.random() * 100) + 1;
if (random <= 25)
canvas.drawBitmap(dirt, left, top, paint);
else if (random > 25 && random <= 50)
canvas.drawBitmap(grass, left, top, paint);
else if (random > 50 && random <= 75)
canvas.drawBitmap(stone, left, top, paint);
else
canvas.drawBitmap(water, left, top, paint);
top += 125;
}
top = 0;
left += 145;
}
}
for(int i = 0; i < bugs.length; i++) {
canvas.drawBitmap(bugs.getImage(), bugs.getX(), bugs.getY(), paint);
}
for(int i = 0; i < hostages.length; i++) {
canvas.drawBitmap(hostages.getImage(), hostages.getX(), bugs.getY(), paint);
}
}[/CODE]
Jetzt ist es so, dass ich den Codeblock, welcher in der If-Bedingung "if(drewFirst) { ... }" nur einmal zu Beginn zeichnen lassen möchte. Ich dachte mir zuerst, dass ich einfach ein boolean-Feld erstelle (drewFirst), welches ich zuerst auf true setze und dann am Ende des if-Blocks auf false setze, sodass dieser Teil nicht nochmal ausgeführt wird. Aber dann wird dieser Code bei mir gar nicht mehr ausgeführt
Vielleicht hab ich hier auch nur ein Brett vorm Kopf, aber ich weiß hier gerade nicht ganz weiter. Vielleicht kann mir einer mal einen Stups in die richtige Richtung geben
hab hier eine Aufgabe für einen Einstellungstest und suche gerade eine Lösung auf ein bestimmtes Problem. Und zwar geht es darum, dass ich ein kleines Spiel entwickeln soll, bei dem ich die Welt zufällig generieren soll. Den Code hab ich natürlich in die entsprechende onDraw()-Methode gepackt. Hier mal kurz der komplette Code der onDraw()-Methode:
[CODE lang="java" title="onDraw()-Methode zum Zeichnen des Spiels."]protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setFilterBitmap(true);
paint.setDither(true);
if(drewFirst) {
// Initialize all map elements
dirt = BitmapFactory.decodeResource(getResources(), R.mipmap.dirt);
dirt = Bitmap.createScaledBitmap(dirt, 146, 248, true);
grass = BitmapFactory.decodeResource(getResources(), R.mipmap.grass);
grass = Bitmap.createScaledBitmap(grass, 146, 248, true);
stone = BitmapFactory.decodeResource(getResources(), R.mipmap.stone);
stone = Bitmap.createScaledBitmap(stone, 146, 248, true);
water = BitmapFactory.decodeResource(getResources(), R.mipmap.water);
water = Bitmap.createScaledBitmap(water, 146, 248, true);
int top = 0;
int left = 0;
int random = 0; // for generating random maps
// it's completely random generated, no structures
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 5; j++) {
random = (int) (Math.random() * 100) + 1;
if (random <= 25)
canvas.drawBitmap(dirt, left, top, paint);
else if (random > 25 && random <= 50)
canvas.drawBitmap(grass, left, top, paint);
else if (random > 50 && random <= 75)
canvas.drawBitmap(stone, left, top, paint);
else
canvas.drawBitmap(water, left, top, paint);
top += 125;
}
top = 0;
left += 145;
}
}
for(int i = 0; i < bugs.length; i++) {
canvas.drawBitmap(bugs.getImage(), bugs.getX(), bugs.getY(), paint);
}
for(int i = 0; i < hostages.length; i++) {
canvas.drawBitmap(hostages.getImage(), hostages.getX(), bugs.getY(), paint);
}
}[/CODE]
Jetzt ist es so, dass ich den Codeblock, welcher in der If-Bedingung "if(drewFirst) { ... }" nur einmal zu Beginn zeichnen lassen möchte. Ich dachte mir zuerst, dass ich einfach ein boolean-Feld erstelle (drewFirst), welches ich zuerst auf true setze und dann am Ende des if-Blocks auf false setze, sodass dieser Teil nicht nochmal ausgeführt wird. Aber dann wird dieser Code bei mir gar nicht mehr ausgeführt
Vielleicht hab ich hier auch nur ein Brett vorm Kopf, aber ich weiß hier gerade nicht ganz weiter. Vielleicht kann mir einer mal einen Stups in die richtige Richtung geben