überschneidung von häusern über mehrere felder
Verfasst: 16.03.2014 21:59
hallo,
ich habe folgendes Verständnis Problem:
ich entwickle eine Stadt-Aufbausimulation, bei welcher man Häuser bauen und nutzen kann.
Alle Häuser Kann man auf einem Kachel-System frei setzen, dabei ist ein Haus z.b. 4 Kacheln groß.
Nun habe ich eine map erstellt, bei welcher das haus auf der kachel oben links gespeichert wird
Nun habe wollt ich natürlich, dass man keine Häuser ineinander bauen kann
d.h. man kann in einem Quadrat mit dem abstand 4 zum S ein weiteres s setzten
Und hier der Code
Nun kann ich trotzdem noch Häuser ineinander bauen wenn ich die procedure aufrufe.
Kann mir jemand helfen
ich habe folgendes Verständnis Problem:
ich entwickle eine Stadt-Aufbausimulation, bei welcher man Häuser bauen und nutzen kann.
Alle Häuser Kann man auf einem Kachel-System frei setzen, dabei ist ein Haus z.b. 4 Kacheln groß.
Nun habe ich eine map erstellt, bei welcher das haus auf der kachel oben links gespeichert wird
Code: Alles auswählen
___________________________
| | | | | | | | | |
___________________________
| | | |S |H |H |H | | |
___________________________
| | | |H |H |H |H | | |
___________________________
| | | |H |H |H |H | | |
___________________________
| | | |H |H |H |H | | |
___________________________
| | | | | | | | | |
Legende:
H: das Haus
s: das map Feld auf dem das Haus gespeichert wird
alles Andere:Leer
d.h. man kann in einem Quadrat mit dem abstand 4 zum S ein weiteres s setzten
Und hier der Code
Code: Alles auswählen
Global Dim MapDaten(240, 240)
For Arrayz = 1 To 240
For ArrayX = 1 To 240
MapDaten(Arrayx, Arrayz) = 0
Next
Next
;zwei test Häuser
MapDaten(1, 1) = 1
MapDaten(5, 1) = 1
Procedure objsetzen(x,z);haus setzten
Shared hausid
xmin=x-4
xmax=x+4
zmin=z-4
zmax=z+4
hausnichtbauen=0
For ax = xmin To xmax
For az = zmin To zmax
If mapdaten((ax+6000)/50,(az+6000)/50)=1
hausnichtbauen=1
EndIf
Next az
Next ax
If Not hausnichtbauen =1
mapdaten((x+6000)/50,(z+6000)/50)=1;jede kachel ist 50*50 groß
ProcedureReturn 1
Else
ProcedureReturn 0
EndIf
EndProcedure
objsetzen(1,1)
if objsetzen(3,2)= 1
Debug "Wenn man das lesen kann funzt es nicht"
endif
Nun kann ich trotzdem noch Häuser ineinander bauen wenn ich die procedure aufrufe.
Kann mir jemand helfen