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:

Function mal anders?
Gehe zu Seite Zurück  1, 2
 
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
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 24.09.2007, 16:47    Titel: Antworten mit Zitat

Hm.. also bitte nicht zu nah an dem beispiel mit pset halten. man könnte beispielsweise noch etwas mit dem farbwert machen... was weiss ich.. arithmetischer mittelwert mit den angrenzenden pixeln bilden und dann diesen wert setzen...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 24.09.2007, 18:03    Titel: Antworten mit Zitat

So kompliziert wollen wir es nicht machen, wieso nicht, wie immer, mit pointern arbeiten?

Code:
#define pixel(x, y) cast(uinteger ptr, screenptr)[x + y * w]
Screen 18, 32

Dim As Integer w, h
Screeninfo w, h

pixel(100, 100) = RGB(100, 255, 100)

sleep



Anders geht es nicht, also eine richtige funktion kannst du nicht machen.
_________________
Code:
#include "signatur.bi"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
AndT



Anmeldungsdatum: 02.04.2007
Beiträge: 481

BeitragVerfasst am: 24.09.2007, 19:20    Titel: Antworten mit Zitat

Was spricht eigl. gegen DIM SHARED?
Einfaches Beispiel:
Code:
dim as integer eingabe
dim shared as integer x
input "Bitte eine Zahl eingeben..";eingabe


x = eingabe ' eingabe nach x übertragen


function blubb as string
    print x
    function = "eine unglauliche Funktion^^"
end function


print blubb

sleep

   

_________________
Bis irgendwann... grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


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

BeitragVerfasst am: 24.09.2007, 19:48    Titel: Antworten mit Zitat

UIIIII, du hast da einen ganz schönen bock geschossen durchgeknallt

DIM Shared x - X ist eine allerweltsvariable, da kann SEHR VIEL schief gehn, wenn du die als shared deklarierst. Shared ist insofern "suboptimal", da man auch mit anderen variablen viel durcheinander bringen kann... übergibt man die variablen als parameter, hat man wunderbar im blick, was benötigt wird und was nicht.
_________________
» 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
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 24.09.2007, 20:36    Titel: Antworten mit Zitat

Nur zur Korrektur/Ergänzung:
Objektorientierung (wozu Klassen nat. auch gehören) gibt's "erst" seit C++. Und ja, dort kann man z.B. den Zuweisungs-Operator (lächeln überladen. (*1
Das kannst du aber genauso gut auch mit FB machen. (Kein Beispiel parat, da in FB noch nicht allzu intensiv mit beschäftigt. Such aber mal, ytwinky hat da mal 'ne Übersetzung eines englischen Artikels veröffentlicht.)

*1
Code:

#include <iostream>
#include <string>

class cTest
{
  public:
    cTest& operator=(const std::string& sBlubb)
    {
      std::cout<<sBlubb<<std::endl;
      return *this;
    }
};

int main(int argc, char *argv[])
{
  cTest myObject;
  std::string myString;
 
  myString="Hello World!";
  myObject=myString;
}

_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 24.09.2007, 21:05    Titel: Antworten mit Zitat

Meinst du den hier?
Denn der hier kann's nicht sein, wg. keine Übersetzung vor lachen auf dem Boden rollen
[edit]
Für diejenigen, die nicht auf die Idee kommen, daß die Dateien auch auch auf ytwinky.freebasic.de zu finden sind, habe ich die Links berichtigt..
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..

Zuletzt bearbeitet von ytwinky am 24.09.2007, 22:22, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
AndT



Anmeldungsdatum: 02.04.2007
Beiträge: 481

BeitragVerfasst am: 24.09.2007, 21:53    Titel: Antworten mit Zitat

Hmm irgendwie ist fängt dir Adresse mit file:///I: an mit den Augen rollen
_________________
Bis irgendwann... grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
PMedia



Anmeldungsdatum: 14.08.2006
Beiträge: 2847

BeitragVerfasst am: 24.09.2007, 21:55    Titel: Antworten mit Zitat

AndT hat Folgendes geschrieben:
Hmm irgendwie ist fängt dir Adresse mit file:///I: an mit den Augen rollen

Das hat irgendwie bestimmt nen Grund Zunge rausstrecken
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Cherry



Anmeldungsdatum: 20.06.2007
Beiträge: 249

BeitragVerfasst am: 26.09.2007, 22:39    Titel: Antworten mit Zitat

dein Vorhaben müsste gehen, wenn du Properties verwendert...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 09.11.2007, 16:41    Titel: Zusammenfassung: Antworten mit Zitat

Ich habs mit properties probiert. Sieht vom prinzip auch nicht schlecht aus!

Einzige problem ist, das man einem property nicht mehr als einen index mitgeben kann.

Da kann ich aber ein wenig herrumarbeiten:
Code:

type postype
    x as integer
    y as integer
end type

Type scrmem
  Declare Property pixel(Byval index As postype, Byval value As UInteger)
  Declare Property pixel(Byval index As postype) As UInteger
  dummy As Integer
End Type

Property scrmem.pixel(Byval index As postype, Byval value As UInteger)
    pset(index.x,index.y), value
End Property

Property scrmem.pixel(Byval index As postype) As UInteger
  Property = point(index.x, index.y)
End Property

declare function p(x1 as integer,y1 as integer) as postype
function p(x1 as integer,y1 as integer) as postype
    dim tmp as postype
    tmp.x = x1
    tmp.y = y1
    return tmp
end function


'-----

Dim scr1 As scrmem
screen 14,32

scr1.pixel(p(100,100)) = RGBA(0,0,255,0)
print scr1.pixel(p(100,100))
sleep




Letztenendes möchte ich nichts anderes machen als den bildschirminhalt als 2 dimensionales objekt ansprechen. Da die objektorientierung aber in FBasic noch in den kinderschuhen steckt muss ich mich wohl mit dieser lösung zufrieden geben. Oder weiss jemand wie ich unter FBasic ein 2 dimensionales "objekt" erstelle?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 09.11.2007, 17:27    Titel: Antworten mit Zitat

Nun, zunächst einmal mit
Code:
type 2dobjekt
  x as integer ' oder double oder was immer du brauchst
  y as integer
end type

Dann kommt es darauf an, was du mit dem Objekt anstellen willst. Um beispielsweise eine Addition zu definieren, kannst du OPERATOR verwenden. Schlag mal in der Befehlsreferenz nach, da ist unten ein Beispiel für die Addition von zweidimensionalen Vektoren dabei.

Ich hoffe, dass ich die Frage jetzt soweit richtig verstanden habe ...
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 09.11.2007, 17:53    Titel: Antworten mit Zitat

Ja .. ähm ne.. nich wirklich.

Ich möchte ein objekt, welches mir abhängig vom index, einen wert zurückgibt bzw einen wert, abhänig vom index abspeichert.
Im prinzip nichts anderes als dim 2DObjekt(1 to 100, 1 to 100) as integer.

Nur das was passiere soll wenn ich z.B.

2DObjekt(32,55) = 12345

aufrufe.

In meinem Beispiel (aus meinem vorherigen Beitrag) übergibt eine Funktion die x und y koordinaten als type (postype) an den index des property. Jeweils als "Holer" und als "Setzer"
Beim "Holen" liest er mittels Point(x,y) die farbe an der koordinate aus, beim "Setzen" schreibt er mittels Pset(x,y), value die Farbe auf den Bildschirm.

So ein objekt wäre ganz praktisch. Ich kann mir neben der ein und ausgabe eines farbwertes auf dem bildschirm auch andere technische gebiete vorstellen. Aber den sinn eines objektes wird hier ja wohl niemand in frage stellen wollen oder? zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 09.11.2007, 18:09    Titel: Antworten mit Zitat

So in diesem Sinne ist das in FreeBASIC (meines Wissens) nicht möglich, jedenfalls nicht mit "Live-Anzeige". Mit einem abstrakten "Bildschirm", der nicht automatisch angezeigt wird, kannst du das natürlich machen (also eben ein Array), aber das ist ja nicht das, worauf du hinaus willst.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
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
Gehe zu Seite Zurück  1, 2
Seite 2 von 2

 
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