array mit einträgen eines anderen array vergleichen
Übersicht

x_toBetreff: array mit einträgen eines anderen array vergleichen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich sitze seit tagen vor dem problem und bekomme das nicht hin:
ich erkläre mal was ich machen will: ich habe ein bild im buffer; das wird auf ein zweites kopiert; jetzt will ich über das zweite bild eien tilemap zeichnen und dabei soll anhand eines anderen arrays entschieden werden, ob ein tile transparent oder solid gezeichnet wird. feld() enthält alle die werte die verglichen werden sollen mit buffer_index(), kommt es zur übereinstimmung, soll das tile mit index aus changed_index() eigentlich transparent gezeichnet werden, ansonsten solid. Allerdings wird alles nur solid gezeichnet....worin liegt der fehler ?? ich kann auch gern den kompletten source posten....oder jemanden zuschicken....wäre für jede hilfe dankbar..... würde ich statt der schleife nur mit if verzweigungen arbeiten läuft es wunderbar.... das wäre aber verdammt viel arbeit... ![]() Code: [AUSKLAPPEN] layer_2=CreateImage (4096,4096)
SetBuffer ImageBuffer (layer_2) i=0 DrawImage layer_1,0,0 For y= 0 To 255 For x = 0 To 255 a=changed_index(i) For b = 0 To 3 If buffer_index(i)=feld(b) MaskImage tile(a),red,green,blue DrawImage tile(a),x*16,y*16 Else DrawBlock tile(a),x*16,y*16 EndIf Next i=i+1 Next Next SaveBuffer (ImageBuffer(layer_2),CurrentDir$()+"layer_2.bmp") |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Willkommen.
Als erstes finde ich es schon mal fraglich, alle Tiles in ein Bild zeichnen zu wollen: Gibt dafür gute Gründe, oder ist das ein Fall von verfrühter Optimierung, weil du glaubst, dass das schneller ist, als einzelne Bilder zu zeichnen? Zweitens sind die Variablennamen nicht sehr deutlich: x,y gehen von mir aus noch durch, i wird schon leicht undeutlich - was wird das durchgezählt und dann prüft du was gegen b und weist danach aber was mit a zu. Da sieht man nicht durch und ich könnte nur raten, was sich dahinter verbirgt. Ansonsten fände ich interessant, wie du changed_index, buffer_index und feld mit Werten befüllst. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
x_to |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
im grunde suchen ich eigentlich nur einen einfachen algorithmus um einträge eines eindimensionalem array mit einem anderen zu vergleichen....
ich nutze BB um gamemaps für die HOL zu erstellen und bin momentan an dem spiel Globdule....da kommt es auf zeit überhaupt nicht drauf an... ![]() |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ist die Abfrage denn überhaupt nötig?
Falls ja: Sind die Werte in irgendeiner Form sortiert - oder sortierbar? Wenn diese Optimierung nicht nötig ist: Zeichne einzelne Tiles und spare die Entwicklungszeit, die wo anders besser investiert ist. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hej, ich verstehe deine Beweggründe auch nichgt so ganz. Der Fehler liegt vermutlich in deiner For-Schleife.
In einem deiner vier Durchläufe mag der If-Zweig greifen, in den anderen Läufen läuft dann wohl immer der Else-Zweig. Es ist also egal, ob du einmal maskiert zeichnest. Vielleicht hilft es die Schleife von dem Zeichnen zu trennen: Code: [AUSKLAPPEN] foundForMask = False
For b = 0 To 3 If buffer_index(i)=feld(b) Then foundForMask = True Exit EndIf Next If foundForMask Then MaskImage tile(a),red,green,blue DrawImage tile(a),x*16,y*16 Else DrawBlock tile(a),x*16,y*16 EndIf |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
x_to |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@SpionAtom....das war es...genau jetzt läuft es so wie es soll...![]() Vielen vielen Dank...... ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group