Hey, ik ben bezig met een project. We maken een spelletje waarin je met een speler kan bewegen en aan de hand van de speler dozen kan laten bewegen.
Wat werkt wel:
- normal bewegen
- bewegen door portal zonder doos
- 1 of meer dozen bewegen zonder door de portal te gaan.
Mijn probleem:
- 1 of meer dozen verplaatsen door de portal (regel 41-68).
de dozen worden wel verplaats door de portal, maar nadat ze zijn verplaats kan ik als speler niet meer de portal in. Ook zijn de dozen die zijn verplaats door de portal niet meer beweegbaar, soms hap ik ze op met mijn speler.
Wat ik wil is dat de dozen worden verplaats naar de teleport locatie, mocht er op de teleport locatie ook een doos staan moet deze dezelfde kant op bewegen als de speler bewoog.
Aantal dingen die wel handig zijn om te vermelden:
- huidigVeld is het veld waar de speler op staat.
- ik beweeg met enum Richting
- een Staveld is een veld die objecten mag bevatten zoals (speler, doos, portal). Andere velden mogen geen objecten bevatten
- de method move() roept de private method aan wanneer er true is teruggegeven.
de hele method
Ik ben zelf al een hele tijd hiermee bezig geweest maar ik kom er nog altijd niet uit.
Als iemand de tijd neemt om dit allemaal door te lezen stel ik dit erg op prijs.
Als iemand de oplossing weet hoor ik dit natuurlijk heel erg graag.
Bij voorbaat dank,
Donny
Wat werkt wel:
- normal bewegen
- bewegen door portal zonder doos
- 1 of meer dozen bewegen zonder door de portal te gaan.
Mijn probleem:
- 1 of meer dozen verplaatsen door de portal (regel 41-68).
de dozen worden wel verplaats door de portal, maar nadat ze zijn verplaats kan ik als speler niet meer de portal in. Ook zijn de dozen die zijn verplaats door de portal niet meer beweegbaar, soms hap ik ze op met mijn speler.
Wat ik wil is dat de dozen worden verplaats naar de teleport locatie, mocht er op de teleport locatie ook een doos staan moet deze dezelfde kant op bewegen als de speler bewoog.
Aantal dingen die wel handig zijn om te vermelden:
- huidigVeld is het veld waar de speler op staat.
- ik beweeg met enum Richting
- een Staveld is een veld die objecten mag bevatten zoals (speler, doos, portal). Andere velden mogen geen objecten bevatten
- de method move() roept de private method aan wanneer er true is teruggegeven.
de hele method
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
| private boolean kindmodeBoolean(Richting r, Staveld s) { bewogen = false; Staveld buurveld = (Staveld) huidigVeld.getBuurveld(r); BeweegbaarObject speler = this.huidigVeld.getBevatObject(); if (buurveld instanceof Staveld) { // normal bewegen if (buurveld.getBevatObject() == null && buurveld.getBevatPortal() == null) { huidigVeld.removeBevatObject(); buurveld.setBevatObject(speler); huidigVeld = (Staveld) buurveld; return true; } // bewegen door portal, zonder doos if (buurveld.getBevatPortal() != null && this instanceof Speler){ Portal p = buurveld.getBevatPortal(); Staveld teleportLoc = p.getTeleportLoc(); if (teleportLoc.getBevatObject() instanceof Doos){ Doos d = (Doos)teleportLoc.getBevatObject(); if (d.move(r, true)) { teleportLoc.removeBevatObject(); teleportLoc.getBuurveld(r).setBevatObject(d); huidigVeld.removeBevatObject(); teleportLoc.setBevatObject(speler); huidigVeld = (Staveld) teleportLoc; return true; } } else{ huidigVeld.removeBevatObject(); teleportLoc.setBevatObject(speler); huidigVeld = (Staveld) teleportLoc; } } // doos bewegen else { if (buurveld.getBevatObject() instanceof Doos && buurveld.getBuurveld(r) instanceof Staveld) { Doos d = (Doos)buurveld.getBevatObject(); // doos bewegen door portal if (buurveld.getBuurveld(r).getBevatPortal() != null){ Portal p = buurveld.getBuurveld(r).getBevatPortal(); Staveld teleportLoc = p.getTeleportLoc(); // doos bewegen door portal wanneer teleportloc WEL een doos bevat if (teleportLoc.getBevatObject() instanceof Doos){ Doos dd = (Doos)teleportLoc.getBevatObject(); if (dd.move(r, true)) { teleportLoc.removeBevatObject(); buurveld.removeBevatObject(); huidigVeld.removeBevatObject(); teleportLoc.getBuurveld(r).setBevatObject(dd); teleportLoc.setBevatObject(d); buurveld.setBevatObject(speler); huidigVeld = (Staveld) buurveld; return true; } } // doos bewegen door portal wanneer teleportloc GEEN doos bevat else{ huidigVeld.removeBevatObject(); buurveld.removeBevatObject(); buurveld.setBevatObject(speler); teleportLoc.setBevatObject(d); huidigVeld = (Staveld) buurveld; return true; } } // doos bewegen zonder portal else{ if (d.move(r, true)) { huidigVeld.removeBevatObject(); buurveld.setBevatObject(this); huidigVeld = (Staveld) buurveld; return true; } } } } } return false; } |
Ik ben zelf al een hele tijd hiermee bezig geweest maar ik kom er nog altijd niet uit.
Als iemand de tijd neemt om dit allemaal door te lezen stel ik dit erg op prijs.
Als iemand de oplossing weet hoor ik dit natuurlijk heel erg graag.
Bij voorbaat dank,
Donny