Dim-Feld und verschachtelte Schleife
Übersicht BlitzBasic Beginners-Corner
FlushBetreff: Dim-Feld und verschachtelte Schleife |
Sa, Mai 19, 2018 18:51 Antworten mit Zitat |
|
---|---|---|
Hallo zusammen,
ich habe ein ziemlich simples Problem aber es klappt einfach nicht. Ich möchte 7 gleichlange Linien zeichnen. Diesen Linien möchte ich Farbwerte aus einem zweidimensionalen Dim-Feld mittels verschachtelter Schleife zuweisen aber es klappt einfach nicht ! Obwohl die äußere Schleife von 0 bis 6 geht werden 8 Linien gezeichnet und alle bleiben weiß d.h. ohne Farbe! Könnt Ihr mir da weiterhelfen ? BlitzBasic: [AUSKLAPPEN]
Viele Grüße, schöne Pfingsten und danke für Eure Hilfe, Flush |
||
XeresModerator |
Sa, Mai 19, 2018 19:02 Antworten mit Zitat |
|
---|---|---|
Ich würde an deiner Stelle mal mit print statements ausgeben, welche Werte du da in den Schleifen eigentlich erzeugst. | ||
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) |
Flush |
Sa, Mai 19, 2018 19:25 Antworten mit Zitat |
|
---|---|---|
Hallo,
ja klar das hab ich schon gemacht. IndexRow 0 1 2 und IndexColumn 1 1 1. Ich weiß dass es falsch ist. ich hab schon zig Kombinationen durch aber ich komm nicht auf das richtige Ergebnis! Eine funktionierende Farbzuweisung müsste so aussehen:BlitzBasic: [AUSKLAPPEN] Color AxisColor(0,0), AxisColor(0,1), AxisColor(0,2) Wenn ich hiermit die Werte auslese sieht es für mich sogar so aus als wär alles richtig??? BlitzBasic: [AUSKLAPPEN]
Viele Grüße, Flush |
||
- Zuletzt bearbeitet von Flush am Sa, Mai 19, 2018 19:44, insgesamt einmal bearbeitet
XeresModerator |
Sa, Mai 19, 2018 19:34 Antworten mit Zitat |
|
---|---|---|
Wenn dir das Problem nicht klar ist, hast du's wohl noch nicht lange genug gemacht.
Ich meinte auch nicht, einfach die Indizies ausgeben, sondern was für Befehle du damit tatsächlich generierst. BlitzBasic: [AUSKLAPPEN] Print "Color AxisColor("+IndexRow+","+IndexColumn+"), AxisColor("+IndexRow+","+IndexColumn+"), AxisColor("+IndexRow+","+IndexColumn+")" Code kann kompliziert sein, manchmal muss man da lange drauf starren, bis der Groschen fällt. |
||
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) |
Flush |
Sa, Mai 19, 2018 19:46 Antworten mit Zitat |
|
---|---|---|
Meine Ausgabe sieht so aus:
X=0,Y=0 Ergebnisse: 0 X=0,Y=1 Ergebnisse: 100 X=0,Y=2 Ergebnisse: 0 X=1,Y=0 Ergebnisse: 0 X=1,Y=1 Ergebnisse: 200 X=1,Y=2 Ergebnisse: 0 X=2,Y=0 Ergebnisse: 0 X=2,Y=1 Ergebnisse: 250 X=2,Y=2 Ergebnisse: 0 Viele Grüße und vielen Dank, Flush P.S.: Ups da warst Du schneller Xeres! |
||
XeresModerator |
Sa, Mai 19, 2018 19:51 Antworten mit Zitat |
|
---|---|---|
Denke dir keinen Code zum debuggen aus - debugge den Code, den du auch benutzt.
Du hast da 3(!) Schleifen oben in deinem Eingangspost. |
||
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) |
Flush |
Sa, Mai 19, 2018 19:54 Antworten mit Zitat |
|
---|---|---|
Stimmt,
ich hab Deine Zeilen eingepflegt! Das ganze von mir gebaute for....next Gerüst ist irgendwie völlig falsch! BlitzBasic: [AUSKLAPPEN]
Die 1. Schleife brauche ich um durch die Anzahl der Linien zu iterieren die 2. für die Zeilen und Spalten des 2 dimensionalen Array. Die verschachtelung klappt nicht, aber wie muss ich das denn machen, ich brauche doch alle 3 Schleifen!? Wenn ich die Ausgabe verschiebe dann habe ich natürlich 7 Linien aber der nur die Farbe des letzten Array Eintrages (3, 2) nämlich 255, 255, 255 also weiß, das ist auch logisch aber wie mach ichs richtig? BlitzBasic: [AUSKLAPPEN]
Viele Grüße, Flush |
||
Flush |
Sa, Mai 19, 2018 20:29 Antworten mit Zitat |
|
---|---|---|
Ich habe jetzt lange genug drauf gestarrt und rumprobiert.
Ich seh den Wald halt vor lauter Bäumen einfach nicht! Kennt keiner die Lösung? Vielen Dank und viele Grüße, Flush |
||
XeresModerator |
Sa, Mai 19, 2018 20:37 Antworten mit Zitat |
|
---|---|---|
Dann schon mal ein Hinweis: Wie willst du auf diese Weise mit Color jemals alle Farbkomponenten gleichzeitig setzen? | ||
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) |
Flush |
Sa, Mai 19, 2018 20:44 Antworten mit Zitat |
|
---|---|---|
Zitat: Wie willst du auf diese Weise mit Color jemals alle Farbkomponenten gleichzeitig setzen?
AhhhhrrggHHH, es stimmt mit den Werten R, G, B nicht aber es sind doch 3 Rows? Oder meinst Du was anderes? Oder ist der Ansatz schon völlig falsch? Oder steckt der Teufel im Detail und ich dreh mich um die eigene Achse? Mensch Xeres wenn Du so weiter machst dann wird das zur Schnitzlejagd . Hinweise sind in Adventures gut aber wenn jemand in einer Sackgasse ist dann....verwirrt das nur noch mehr ! Wenn ich das Problem so angehe funktioniert das natürlich aber das ist halt sehr unelegant! BlitzBasic: [AUSKLAPPEN]
Vielen Dank und viele Grüße, Flush |
||
SpionAtomBetreff: Sorry fürs Vorkauen |
Sa, Mai 19, 2018 21:01 Antworten mit Zitat |
|
---|---|---|
Code: [AUSKLAPPEN] Data 7 Data 0, 100, 0 Data 0, 200, 0 Data 0, 250, 0 Data 255, 255, 255 Data 0, 250, 0 Data 0, 200, 0 Data 0, 100, 0 Restore Read lines width = GraphicsWidth() / lines For n = 0 To lines - 1 Read r, g, b Color r, g, b Rect n * width, 0, width, GraphicsHeight() Next WaitKey End Zwei Tipps noch: Wenn sich das Farbmuster immer spiegelt, dann kannst du die Hälfte der Daten einsparen. Wenn du noch senkrechte oder wagerechte Linien verwendest, dann nimm Rect, das ist schneller. |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
- Zuletzt bearbeitet von SpionAtom am Sa, Mai 19, 2018 21:13, insgesamt einmal bearbeitet
XeresModerator |
Sa, Mai 19, 2018 21:07 Antworten mit Zitat |
|
---|---|---|
Statt Arrays Data-Blöcke zu benutzen ist keine Lösung des eigentlichen Problems.
Wenn du die Farben so in Arrays definierst.. Code: [AUSKLAPPEN] AxisColor(0, 0) = 0
AxisColor(0, 1) = 100 AxisColor(0, 2) = 0 ...dann musst du auch RGB gleichzeitig in Color setzen: Code: [AUSKLAPPEN] Color AxisColor(LineNumber, 0), AxisColor(LineNumber, 1), AxisColor(LineNumber, 2)
Sonst setzt du RGB ja immer zu dem letzten Wert in dem Array. |
||
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) |
Flush |
Sa, Mai 19, 2018 21:10 Antworten mit Zitat |
|
---|---|---|
@SpionAtom
Vielen Dank für die Antwort . Vorkauen ist nicht falsch nur dann wenn man sich mit dem Ergebnis nicht beschäftigt Zitat: Sage es mir, und ich werde es vergessen. Zeige es mir, und ich werde es vielleicht behalten. Lass es mich tun, und ich werde es können.
Konfuzius, *551 v. Chr. †479 v. Chr. Chinesicher Philosoph Jetzt kann ich es tun und daraus lernen ==> es können ! War also mein Ansatz mit den verschachtelten Schleifen völlig falsch oder kann so ein Sachverhalt auch mit verschachtelten Schleifen gelöst werden? Ich war schon wieder nicht schnell genug, vielen Dank für Deine Antwort Xeres! Viele Grüße und vielen Dank nochmal, Flush |
||
Flush |
Sa, Mai 19, 2018 21:16 Antworten mit Zitat |
|
---|---|---|
@Xeres
Zitat: Statt Arrays Data-Blöcke zu benutzen ist keine Lösung des eigentlichen Problems.
Stimmt!. Zitat: ...Wenn du die Farben so in Arrays definierst.
Hmmm das leuchtet ein. Wenn Du den Sachverhalt mit Arrays und verschachtelten Schleifen lösen wolltest/ müsstest, wie würde das bei Dir dann komplett aussehen? 3-4 Zeilen könnten den Knoten für immer lösen ==> keine unnötigen Fragen! Das wäre sehr gut, denn Problemstellungen wie diese treten sehr häufig auf! Nach Deiner letzten Antwort meinst Du das so? BlitzBasic: [AUSKLAPPEN]
Das kann aber auch nicht funktionieren denn auf diese Weise werden 7 Linien in einer Farbe gezeichnet. Da aber 7 Linien in verschiedenen Farben benötigt werden werden verschachtelete Schleifen benötigt und im wie diese richtig gebaut werden, liegt der Hund begraben! Viele Grüße und vielen Dank vorab, Flush |
||
- Zuletzt bearbeitet von Flush am Sa, Mai 19, 2018 21:28, insgesamt einmal bearbeitet
BladeRunnerModerator |
Sa, Mai 19, 2018 21:26 Antworten mit Zitat |
|
---|---|---|
Du verschachtelst zu tief. Dein Array hat zwei Dimensionen, benenn sie nach dem was sie beinhalten, nicht row und column, vielleicht fällt dir dann auf wo der Fehler liegt. | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Jolinah |
Sa, Mai 19, 2018 21:28 Antworten mit Zitat |
|
---|---|---|
Hier noch ein paar Hinweise
So lange die Linien alle gleich lang sein sollen und untereinander, dann reicht 1 Schleife völlig (0 - 6 für die Linien). Du willst pro Linie 1x die Farbe setzen, nur besteht die Farbe aus 3 Komponenten. Dafür brauchst du keine Schleife, sondern kannst die Farb-Komponenten ja direkt mit 0, 1 und 2 ansteuern im Array. Das y für jede Linie lässt sich berechnen. Der einfachste Fall ist den Zeilen-Index zu verwenden (und allenfalls ein paar Pixel dazu zu addieren, damit die Linie nicht ganz oben am Fensterrand gezeichnet wird, z.B. ZeilenIndex + 10). X-Start und -Ende würde ich erstmal statisch machen, z.B. Start bei 10 und Ende bei 110. Der letzte Parameter von Graphics würde ich von 3 zu 2 ändern. In meinem Fall wurde das Fenster so runter skaliert, dass man die 1px breiten Linien gar nicht sehen konnte, obwohl sie eigentlich gezeichnet wurden. |
||
Flush |
Sa, Mai 19, 2018 21:33 Antworten mit Zitat |
|
---|---|---|
@Blade Runner & Jolinah
Hmmm, ich mach! @Jolinah Die Linien sollen nebeneinander gezeichnet werden Ich hab jetzt alles so geändert auch die Farben (zum besseren Erkennen): BlitzBasic: [AUSKLAPPEN]
Es sieht so aus als würde es klappen ! Oh Mann hab ich kompliziert gedacht Viele Grüße und Vieeelen Dank für Eure Antworten, Flush |
||
- Zuletzt bearbeitet von Flush am Sa, Mai 19, 2018 22:06, insgesamt 2-mal bearbeitet
Jolinah |
Sa, Mai 19, 2018 21:55 Antworten mit Zitat |
|
---|---|---|
Auch da geht es mit einer einzigen Schleife. Selbst wenn die Linien nicht gleich lang wären, könnte man die Länge pro Linie gleich wie die Farben im Array mitspeichern
Edit: Ich dachte du wolltest 7 Linien zeichen? Im geänderten Code zeichnest du ja jetzt nur 3 von oben nach unten, aber das Array hat immer noch eine grösse von 7? |
||
Übersicht BlitzBasic Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group