Ben benieuwd of volgend stuk wordt gezien als misbaksel en zo ja, hoe ik dit het beste kan verbeteren.
De code is onderdeel van een game; het doel is om met vaste interval zogenoemde weeples te creëren. Dit gebeurt op basis van een mParameters, wat een HashMap<String, Object> is. Deze bevat weeple_type_i en weeple_count_i, met i als iterator.beginnende bij 0 en een onbekende max.
Stel dat de HashMap dit bevat:
Dan is dit het resultaat: Orange, Orange, null, Black, Black, Orange, Orange, null, Black, Black
Om dit te bereiken schreef ik dit:
Het gaat me voornamelijk om de while-lus, stiekem is dit gewoon een verkapte vorm van GoTo gebruik. Is dit af te raden en zo ja, welke richtnig moet ik op denken?
De code is onderdeel van een game; het doel is om met vaste interval zogenoemde weeples te creëren. Dit gebeurt op basis van een mParameters, wat een HashMap<String, Object> is. Deze bevat weeple_type_i en weeple_count_i, met i als iterator.beginnende bij 0 en een onbekende max.
Stel dat de HashMap dit bevat:
code:
1
2
3
4
5
6
7
| weeple_type_0: "Orange" weeple_count_0: 2 weeple_type_1: null weeple_count_1: 1 weeple_type_2: "Black" weeple_count_2: 2 repeat: 1 |
Dan is dit het resultaat: Orange, Orange, null, Black, Black, Orange, Orange, null, Black, Black
Om dit te bereiken schreef ik dit:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
| public class Entrance extends AbstractElement { int mWeepleCount; int mRow, mRowWeepleCount; int mRepeatCount, mRepeatMax; ElementParameter mParameters; public Entrance(ElementParameter parameters) { mParameters = paramters; mRepeatMax = parameters.getInt(ElementParameter.REPEAT, 1); } public void onTick(float delta) { mGameTime += delta; if (mGameTime * mFrequency > mWeepleCount) { createWeeple(); } } public void createWeeple() { WeepleType weepleType = null; while (true) { if (mRepeatCount = mRepeatMax) { setActive(false); return; } if (mRowWeepleCount == mParameters.getInt("weeple_count_" + mRow), 1) { mRow++; mRowWeepleCount = 0; } if (!mParameters.contains("weeple_type_" + mRow)) { mRepeatCount++; mRow = 0; mRowWeepleCount = 0; continue; } try { weepleType = WeepleType.valueOf(mParameters.getString("weeple_type_" + mRow)); } catch (IllegalArgumentException e) { } break; } if (weepleType != null) { ElementParameter weepleParameters = new ElementParameter(); weepleParameters.x = mX; weepleParameters.y = mY; weepleParameters.set(ElementParameter.FLOOR, mFloor); weepleParameters.set(ElementParameter.WEEPLE_TYPE, weepleType); getLevel().addWeeple(new Weeple(getLevel(), weepleParameters)); } mWeepleCount++; } } |
Het gaat me voornamelijk om de while-lus, stiekem is dit gewoon een verkapte vorm van GoTo gebruik. Is dit af te raden en zo ja, welke richtnig moet ik op denken?