Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

3-dimensionales Array auslesen

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Adrian



Anmeldungsdatum: 18.08.2010
Beiträge: 1

BeitragVerfasst am: 18.08.2010, 17:35    Titel: 3-dimensionales Array auslesen Antworten mit Zitat

Hi zusammen, bin als FreeBasic-Neuling an meine Grenzen gestoßen (vor 20 Jahren mal AmigaBasic genutzt...rmhh und damit immerhin 'nen kleinen zellulären Automaten geschafft...)

Vielleicht kann mir jemand zwei Fragen beantworten:

1.
Ich erzeuge ein 2-dim. Feld (width * height) mit 15 Farbwerten auf Zufallsbasis. Diese Farbwerte sollen in einer for-next-schleife jeweils mit ihrer Pixelposition(x,y) im 3-dim. Array eingelesen werden:
Ich deklariere also erstmal den Array:
Code:
DIM AS INTEGER farbe(width, height, 15)


Wie weise ich die Farbwerte mit der xy-Position dem Array zu?
Code:
for y=0 to height
    for x=0 to width
        pset(x,y),zufallsfarbwert
        ???
    next
next


2.
In einem weiteren Durchgang benötige ich die Farbwerte bestimmter Positionen. Wie lese ich diese aus dem erzeugten Array aus?

Danke im Voraus, Adrian
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 18.08.2010, 18:06    Titel: Antworten mit Zitat

Hallo und willkommen im Forum!

Ich habe noch nicht ganz durchschaut, warum das Array dreidimensional deklariert wird, du aber einer XY-Position lediglich einen Farbwert zuordnen möchtest.

Dafür würde ja auch eine zweidimensionale Matrix reichen:
Code:
DIM AS INTEGER farbe(width, height)
farbe (123,456) = 15 'An der Koordinate (X,Y)=(123,456) steht die Farbe 15 (weiß)


Unter dieser Annahme müsste dein Code so aussehen:
Code:
for y=0 to height
    for x=0 to width
        pset(x,y),zufallsfarbwert
        farbe(x,y) = zufallsfarbwert
    next
next

...oder, wenn die 3 Dimensionen nötig sind:
Code:
for y=0 to height
    for x=0 to width
        pset(x,y),zufallsfarbwert
        farbe(x,y,zufallsfarbwert) = ???
    next
next

Zur zweiten Frage:
Zitat:
In einem weiteren Durchgang benötige ich die Farbwerte bestimmter Positionen.

Code:
Print farbe (123, 456) 'Farbcode im Punkt (X,Y)=(123,456) ausgeben


Viele Grüße!
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 18.08.2010, 23:31    Titel: Antworten mit Zitat

0 to height sieht mir etwas komisch aus (was aber nix heißt)...
es _könnte_ sein, dass Sebastian eigentlich 0 to heigth-1 meint (wäre jedenfalls für C-code so), kann aber auch sein dass er recht hat,
in jedem fall (und im letzten ganz besonders, weil missverständlich!) ist es oft übersichtlicher, ein array mit " anfang to ende " zu deklarieren (also 1 to width in deinem Fall)
_________________
MFG
Flo

Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.

zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 18.08.2010, 23:32    Titel: Antworten mit Zitat

Flo hat Folgendes geschrieben:
wäre jedenfalls für C-code so

Das hat nix mit der Sprache, sondern mit Konventionen bzw logischem Denken zu tun. Zunge rausstrecken Wenn dein Bild h Pixel hoch ist, dann kannst du die entweder von 1 bis h indizieren (scheiße) oder von 0 bis h - 1 (gut).
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 18.08.2010, 23:43    Titel: Antworten mit Zitat

joa. oder, bei äußerst kranken konventionen könnte ein derartiges dim auch von 0 bis height DIMen... ich weiß es nicht, und bei basic wäre ich da eher vorsichtig...

allerdings zählen grade anfänger lieber von eins, und nicht von null.
_________________
MFG
Flo

Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.

zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 18.08.2010, 23:48    Titel: Antworten mit Zitat

@Flo: Stimmt natürlich, ich hab nur auf die "Mehrdimensionalität" und nicht den Code mit den Zählschleifen geachtet. Der ist einfach per Copy&Paste aus dem Startposting übertragen.
Die Arraygrenzen in der Schleife muss er natürlich anpassen, je nachdem, wie er genau dimensioniert.
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz