 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Winkel
Anmeldungsdatum: 17.07.2006 Beiträge: 25 Wohnort: Berlin
|
Verfasst am: 02.08.2006, 07:01 Titel: (x-y)-Diagramme |
|
|
Guten morgen, Forum :
Wie fange ich an ??...
Nun, ich brauche einen Anfangsstupser, der mir die Reihenfolge und die Elemente zeigt, wie ich ein (x-y)-Diagramm erstellen kann.
An den x- und y-Achsen kommen auch noch die Skalierungen oder Einteilungen oder wie man sie nennt, und das ganze noch dynamisch, d.h. die Balken in der x-Achse ändern ihre Höhe (werden kürzer oder länger je nach laufend neue Ereignisse - 1 neues Ereignis alle 50 sec)
Habe in der CD (Antoni´s) leider nur Malerei gefunden, leider kein Beispiel, ( als Beispiel: aus einer Tabelle den Verlauf der Höchsttemperaturen im Monat Mai, oder ähnliches ) so etwas würde mir weiterhelfen.
Da ich glaube dass ich mit dem Bildschirmmodus 0 (25 Z x 80 Sp) zurechtkomme, wird es einfacher. (Farbe brauche ich nicht)
Habe mit Screen und Line "gespielt" aber mich verrannt.
Übrigens: 3 Module laufen schon als einzelne Programme zu meiner Zufriedenheit ..
Falls DIM oder so etwas benötigt wird, da habe ich keine Angst - habe zwar noch nicht geDIMt, aber darunter kann ich mir sehr gut was vorstellen...
Mit Dank im Voraus
Winkel |
|
Nach oben |
|
 |
Elvis

Anmeldungsdatum: 01.06.2006 Beiträge: 818 Wohnort: Deutschland, BW
|
Verfasst am: 02.08.2006, 11:15 Titel: |
|
|
Ich hab' mir mal eine kleine 'Demo' ( ) gemacht. Ohne Beschriftung. Allerdings habe ich auch eine Maßstabfunktion hinzugefügt, sodass das Diagramm nicht zu klein oder zu groß wird. Diese kannst du ja noch entsprechend erweitern. Ich denke die Beschriftung ist nicht sonderlich schwer, hatte jetzt blos keine Lust mehr
Dass sich die Werte alle 50 sec. ändern, ist auch nicht schwer. Du musst lediglich ON TIME, o.s.ä., in dein Programm einbauen, sodass es alle 50 sec. zum Diagramm-SUB springt (vorher Werte ändern)...
Code: |
10 CLS
20 SCREEN 12
25 DIM Temperatur(12)
26 DIM Temperatur2(12)
30 Temperatur(1) = 1: Temperatur2(1) = 10 + 20
40 Temperatur(2) = 2: Temperatur2(2) = 40 + 20
50 Temperatur(3) = 3: Temperatur2(3) = 70 + 20
60 Temperatur(4) = 4: Temperatur2(4) = 100 + 20
70 Temperatur(5) = 5: Temperatur2(5) = 130 + 20
80 Temperatur(6) = 6: Temperatur2(6) = 160 + 20
90 Temperatur(7) = 7: Temperatur2(7) = 190 + 20
100 Temperatur(8) = 8: Temperatur2(8) = 220 + 20
110 Temperatur(9) = 9: Temperatur2(9) = 250 + 20
120 Temperatur(10) = 11: Temperatur2(10) = 280 + 20
130 Temperatur(11) = 9: Temperatur2(11) = 310 + 20
140 Temperatur(12) = 9: Temperatur2(12) = 340 + 20
155 Massstab = 1
160 FOR Temperatur = 1 TO 12
170 IF Temperatur(Temperatur) < 10 THEN Massstab = 20
180 IF Temperatur(Temperatur) > 10 THEN Massstab = 10
190 IF Temperatur(Temperatur) = 10 THEN Massstab = 20
200 NEXT Temperatur
201 GOSUB Hintergrund
205 FOR Wdh = 1 TO 12
210 FOR Linie = 1 TO 12
211 y = 300
215 FOR Mass = 1 TO Temperatur(Linie) * Massstab
216 y = y - 1
220 LINE (Temperatur2(Linie), y)-(Temperatur2(Linie) + 10, y)
230 NEXT Mass
240 NEXT Linie
250 NEXT Wdh
251 END
255 Hintergrund:
260 COLOR 2
270 LINE (25, 300)-(25, 60)
280 LINE (25, 300)-(380, 300)
285 y = 300
290 FOR Beschriftung = 1 TO 100
300 y = y - Massstab
310 IF y = 50 OR y <= 50 THEN GOTO 340
320 LINE (25, y)-(380, y)
330 NEXT Beschriftung
340 COLOR 15: RETURN
|
Zum Code: Es wird kein Haftung für schwerwiegende Verwirrungen und eventuell auftretende Krankheiten wie Augenkrebs übernommen.
PS: Ich hab auch ein bisschen gebraucht, bis ich mit LINE einigermaßen umgehen konnt. Reine Routine...
Grüße, Elvis _________________ Geforce 7300GT (256MB GDDR3, Gainward) -- 2x 512MB (DDR2 800, MDT) -- AMD Athlon64 X2 EE 3800+ -- Asrock ALiveNF5-eSATA2+ |
|
Nach oben |
|
 |
Winkel
Anmeldungsdatum: 17.07.2006 Beiträge: 25 Wohnort: Berlin
|
Verfasst am: 02.08.2006, 20:12 Titel: (x-y)-Diagramme |
|
|
Danke Forum, danke Elvis !
Da Dein .bas mit markieren, kopieren, nicht in´s QB einzufügen ist, habe ich es eingetippt... (kein Augenkrebs )...
Dass bei der Nummerierung der Temperaturen am Ende etwas durcheinadergeriet habe ich erkannt, und nachdem einige - kleine - Fehlerchen ( gosub "name" abstatt gosub "zeilennr." beseitigt habe LIEF ES BEIM AUSFÜHREN !!!!
Jetzt.. einige Fragen:
Das mit dem SCREEN2 ist mir ein bisschen zu...,na ja: kann man im Modus 0 eine Linie "malen", mit genauer Angabe der Bildschirmkoordinaten ??
Ginge das mit PRINT USING ---1---2---3---4--- ?, ich denke es ginge, bloss "krumme Werte" kann er nicht mehr zuordnen, z.B. 2,5...und die senkrechten "Linien" kann ich so gar nicht darstellen. ((eine Befehlszeile pro Punkt, und dann wieder eine Befehlszeile por angezeigtes Element...))
nö, so nicht !
Oder soll ich auf Screen 2 gehen und mich daran gewöhnen ????
Denn bei Screen 2, habe ich nur den Vorteil der Grafik, das ich im "normalen" Modus nicht habe.
Bei mir kommen noch Anfragen zu Anfangszustände - welche eingetippt werden müssen - und dann wird der Stand der anderen Variablen nach jeden Ereignis angezeigt..
Wenn dieser "Textteil" konstant bleiben soll, kann ich nur in der unteren Hälfte des Bildschirmes die Grafik zeigen.., geht sowas?
Das heisst ja, dass ich den "Textteil" auch positionieren muss, damit QB weiss wohin es schreiben soll.
Liege ich mit diesen Überlegungen überhaupt richtig ??? oder habe ich mich (wieder) verrant ?
mit Dank im Voraus
Winkel |
|
Nach oben |
|
 |
Winkel
Anmeldungsdatum: 17.07.2006 Beiträge: 25 Wohnort: Berlin
|
Verfasst am: 02.08.2006, 21:37 Titel: (x-y)-Diagramme |
|
|
Hallo...
Eine Zusatzfrage ist mir noch eingefallen.
Gibt es die Möglichkeit die so lauten könnte:
PRINT AT (x, y) "blabla", a
Wobei x und y die jeweilige Spalte und Zeile auf dem Bildschirm festlegt?
Z.B. drei Texte links untereinander und drei rechts untereinander, in nur drei Zeilen, versteht sich ???
Winkel |
|
Nach oben |
|
 |
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 395
|
Verfasst am: 02.08.2006, 23:33 Titel: Re: (x-y)-Diagramme |
|
|
Winkel hat Folgendes geschrieben: | Hallo...
Eine Zusatzfrage ist mir noch eingefallen.
Gibt es die Möglichkeit die so lauten könnte:
PRINT AT (x, y) "blabla", a
Wobei x und y die jeweilige Spalte und Zeile auf dem Bildschirm festlegt?
Z.B. drei Texte links untereinander und drei rechts untereinander, in nur drei Zeilen, versteht sich ???
Winkel |
Es gibt einen Befehl Namens LOCATE zeile%, spalte%. Damit kannst du den Text positionieren. Also erst mit LOCATE den Curser setzen, und dann mit PRINT den Text schreiben.
Senkrechte Linien gehen im Textmodus bedingt, ich glaube mit chr$(186) oder so ähnlich, einfach mal die Ascii-tabelle in der Hilfe anschauen. Ich rate dir aber einen Grafikmodus zu benutzen.
Und zum Thema Code abschreiben: Kopier den Code aus dem Forum und füge ihn im Texteditor ein. Speichere das ganze ab, und benenne die Datei statt .txt in .bas um, fertig.
EDIT: Und hier mal ein Diagramm:
Code: | DEFINT A-Z
CONST screenmodus = 7, xr = 320, yr = 200
SCREEN screenmodus, 1, 1, 2
skalierung = 20
CONST max = 7
DIM werte!(max, 2) '..,1 = Wert; ..,2 = Position
werte!(1, 1) = 5: werte!(1, 2) = 40
werte!(2, 1) = 8: werte!(2, 2) = 80
werte!(3, 1) = 2: werte!(3, 2) = 120
werte!(4, 1) = 3: werte!(4, 2) = 160
werte!(5, 1) = 6: werte!(5, 2) = 200
werte!(6, 1) = 4: werte!(6, 2) = 240
werte!(7, 1) = 1: werte!(7, 2) = 280
wahl = 1
WHILE ende% = 0
taste$ = INKEY$
IF taste$ = CHR$(27) THEN END
IF taste$ = "+" THEN skalierung = skalierung + 1
IF taste$ = "-" THEN IF skalierung > 1 THEN skalierung = skalierung - 1
IF taste$ = CHR$(0) + "H" THEN werte!(wahl, 1) = werte!(wahl, 1) + .1
IF taste$ = CHR$(0) + "P" THEN werte!(wahl, 1) = werte!(wahl, 1) - .1
IF taste$ = CHR$(0) + "K" THEN wahl = wahl - 1: IF wahl < 1 THEN wahl = max
IF taste$ = CHR$(0) + "M" THEN wahl = wahl + 1: IF wahl > max THEN wahl = 1
CLS
'Koordinatensystem zeichnen
nx = 10: ny = yr - 10
LINE (nx, 0)-(nx, yr), 15
LINE (0, ny)-(xr, ny), 15
p = 0
FOR i = ny TO 0 STEP -skalierung
p = p + 1
LINE (nx - 2, i)-(nx + 2, i), 15
NEXT i
'Balken einzeichnen
FOR i = 1 TO max
LINE (werte!(i, 2) - 4, ny - 1)-(werte!(i, 2) + 4, ny - skalierung * werte!(i, 1)), 11, BF
NEXT i
'Auswahl zeichnen
LINE (werte!(wahl, 2) - 3, ny + 2)-(werte!(wahl, 2) + 3, ny + 5), 12, BF
'Erklaerungstext
LOCATE 1, 5: PRINT "Pfeiltasten, um Werte zu „ndern"
LOCATE 2, 5: PRINT "+ und -, um zu skalieren"
PCOPY 1, 2
WEND
END |
_________________ Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht. |
|
Nach oben |
|
 |
Winkel
Anmeldungsdatum: 17.07.2006 Beiträge: 25 Wohnort: Berlin
|
Verfasst am: 03.08.2006, 01:50 Titel: (x-y)-Diagramme |
|
|
Danke, SpionAtom !!!!
SUPER-TIP, der mit kopieren in den Editor hinein und dann als .bas deklarieren.
Dein Programm sieht gut aus, aber ich denke Du wolltest mehr bezwecken als einen schwarzen Bildschirm erzeugen.
"alt"D , dann P (programm laden), bzw f (öffnen)
"alt"A, (bzw "alt " F) dann S (start) => schwarz. im "grossen" Bildschirmmodus, (ich starte ja immer mit den kleinen, so wie eben QB startet...)
Aussteigen mit Ctrl-C, der Bilschirm bleibt gross. (oder groß)
Beenden und wieder starten, dann o.k. (kleiner Schirm)
Dieses Verhalten zeigt sich sowohl im QBasic als auch im QuickBasic 45.
Nachdem ich einige Male mir den SCREEN 2-Modus ansehen musste, kam die Erinnerung hoch, dass unsere ersten Prüfprogramme auch so aussahen, - gar nicht so schlimm - und da waren Mengen von Diagramme und Texfelder ... also ich meine mein "na ja" bezüglich grosser Schirm im vorigen oder vorletzten Beitrag hat sich relativiert.
Was machn´wa mit Dein Prog ??
Ich möchte es natürlich laufen lassen, erst da und dann dort ändern, so dass man weiss was was ist...
Winkel |
|
Nach oben |
|
 |
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 395
|
Verfasst am: 03.08.2006, 12:12 Titel: |
|
|
Läuft mein Programm auch bei anderen nicht?
Ich arbeite mit PCOPY, vielleicht macht das bei einigen Systemen Probleme?
Also bei meinem QBasic 1.1 läufts, unter XP einwandfrei....
Ich bitte um Erfahrungsberichte. _________________ Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht. |
|
Nach oben |
|
 |
Winkel
Anmeldungsdatum: 17.07.2006 Beiträge: 25 Wohnort: Berlin
|
Verfasst am: 03.08.2006, 13:46 Titel: (x-y)-Diagramme |
|
|
Hallo, SpionAtom
Also, was die Anderen QB-ler betrifft, weiss ich nicht.
Mein QBasic ist von einer W95 CD (original!) und mein QuickBasic is das 45D.
Ich fahre W2k mit allen Updates.
Inzwischen habe ich festgestellt, dass einige .bas-Progs von der MonsterFAQ auch nicht gehen wollen.
Bei einigen die ich DIREKT (Progamm laden von D\DOS\MonsterFAQ\ usw\xyz.bas) geladen habe und funktonieren,habe ich festgestellt, dass wenn ich sie mit dem editor öffne, als .bas auf Disk speichere und erst dann von Disk lade auch nicht gehen.
Leider habe ich inzwischen vergessen welche es waren (Eifer des Gefechtes).
Ist was obskures und unbekanntes was da noch eine Rolle spielt mit den Win-Maschinen...???.
Ich weiss nicht, ob alle Beispiele auf der MonsterFAQ eingehend mit QB undQuickB geprüft wurden...
Wenn das Ganze hier zu viel nach Tüftelei riecht, kann ich es verstehen.
Da bleibt mir nicht anderes übrig als ein funktionierendes erwischen und da die "Lernänderungen" durchführen.
Eins ist mir aufgefallen: die Angaben und Erläuterungen bezüglich SCREEN (Funktion und Anweisung) sind im QB selber sehr dürftig.
------
Habe soeben in der MonsterFAQ reingesehen, da ist mehr, muss ich aber sorgfältig durcharbeiten...(ein betagter Greis wie ich muss noch lernen, tsss, tsss... )
Winkel |
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 03.08.2006, 18:34 Titel: Re: (x-y)-Diagramme |
|
|
Winkel hat Folgendes geschrieben: | Bei einigen die ich DIREKT (Progamm laden von D\DOS\MonsterFAQ\ usw\xyz.bas) geladen habe und funktonieren,habe ich festgestellt, dass wenn ich sie mit dem editor öffne, als .bas auf Disk speichere und erst dann von Disk lade auch nicht gehen.
Leider habe ich inzwischen vergessen welche es waren (Eifer des Gefechtes).
Ist was obskures und unbekanntes was da noch eine Rolle spielt mit den Win-Maschinen...???. |
Das ist alt bekannt.
Windows und Dos (und damit auch QBasic) verwenden einen anderen Zeichensatz und Notepad ist kein guter Editor ...
Öffne die Datei in QBasic und überprüfe die Sonderzeichen (auch öäü sind Sonderzeichen)
Winkel hat Folgendes geschrieben: | Ich weiss nicht, ob alle Beispiele auf der MonsterFAQ eingehend mit QB undQuickB geprüft wurden... |
Geprüft wurden sie, aber jenach Windows gibt es immer ärger.
Dos, Win 95 und Win 98 sollte es Problemlos gehen, beim NT Stamm (Win NT, 2000 und XP) gibt es immer wieder Probleme.
Dazu steht auch was im MonsterFAQ.
----
Edit:
@SpionAtom
Schönes Programm, läuft Einwandfrei (QBasic 1.1, Windows XP SP 2)
Mir ist noch eine Idee gekommen, an was es liegen könnte:
Vielleicht ist die Dateiendung falsch?
Wenn Windows die Dateienung nicht anzeigt (Standard Einstellung) merkt man nicht Unbedingt, das die Datei "test.bas.txt" heisst.
Oder auch eine Idee:
Dos erlaubt nur 8 + 3 Zeichen, also 8 Zeichen für den Namen und 3 für die Endung. _________________ http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight |
|
Nach oben |
|
 |
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 395
|
Verfasst am: 03.08.2006, 18:49 Titel: |
|
|
So wie ich das verstanden habe, hat Winkel das Programm geladen und auch ausgeführt.
Ich könnte das Programm nochmal umschreiben, dass es ohne den PCOPY Befehl arbeitet, vielleicht klappts dann.
Und ein falsches Zeichen kann höchstens den ausgegebenen Text verändern, was aber nicht zu einem schwarzen Bildschirm führt. Denn wenn irgendwo anders ein falsches Zeichen wäre, dann hätten wir einen Syntaxfehler und der würde von QB erkannt werden.
Und zu lange Dateinamen werden ohnehin ja mit ~1 abgekürzt
Sehr merkwürdig alles... _________________ Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht. |
|
Nach oben |
|
 |
Winkel
Anmeldungsdatum: 17.07.2006 Beiträge: 25 Wohnort: Berlin
|
Verfasst am: 05.08.2006, 14:28 Titel: (x-y)-Diagramme |
|
|
Hallo, Forum :
Da habe ich was ausgelöst...
1. Das mit .txt.bas (oder umgekehrt) habe ich bemerkt und behoben: es ändert nichts.
2. NICHT mit NOTEPAD, sondern mit dem "Zubehör"-Editor. so wie ich es mit dem Temperaturen-Prog vom Elvis gemacht habe, und es lief ja...
3. Wenn ich von der Antoni-CD ein Prog laufen lassen wil, ist es ja ein bisschen mühevoll die ganzen Unterverzieichnisse mit Alt-V anzugeben, aber es geht, obwohl da auch längere Titel mit ~1 abgekürzt werden. - geladen wird es trotzdem...
Nicht destotrotz bin ich auch schon ein Schritt weiter.
Dieses Thema kommt in die Kiste unter "Unzulänglichkeiten beachten" und weiter gehts.
Weitere Fragen - tut mir Leid, aber Ihrr seid ja die Experten :
1. Wenn bei den unterschiedlichen Screen-Modi da z.B. "16 von 256 Farben" angegeben wird, was meinen Die dann GENAU ??
1.a Kann der ALLE 256 Farben und davon darf ich nur 16 im selben Prog. benutzen??
1.b Kann er NUR 16 ?? was soll dann die Angabe "von 256"???
Ich habe Modis ausprobiert, Modus 13 find ich mit einer noch vertretbaren Schrift - nicht zu grob un körnig, klein genug sodass etwas reinpasst..
Die Farbeneinschränkung ist für mich zweitrangig.
2. Was für ein Modus ist der, der in QB "aufgeht" wenn ich z.B Alt-D und dann U (speichern unter) mache ???,
2.a Kann man den auf volle Bilschirmgrösse bringen ??
(Genau dieses Schema will ich haben, mit der Schrift und die Kästchen dort...)
3. Was bedeutet genau wenn einige Modi von sich behaupten "bis zu x Seiten" ???
3.a Nach unten scrollen oder eine Seite anspringen z.B rechts unten "Nächste Seite" antippen ??
So, genug für heute,
Danke im voraus, und schönes Wochenende !
Winkell  |
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 05.08.2006, 15:04 Titel: |
|
|
Zitat: | 2. NICHT mit NOTEPAD, sondern mit dem "Zubehör"-Editor. |
Wo ist da der Unterschied?
Notepad ist ein andere Namen für den Editor von Windows.
Zitat: | 2. Was für ein Modus ist der, der in QB "aufgeht" wenn ich z.B Alt-D und dann U (speichern unter) mache ??? |
Screen 0
Zitat: | 2.a Kann man den auf volle Bilschirmgrösse bringen ?? |
Oben beim Fenster, Rechtsklick, Eigenschaften, Vollbild.
Zitat: | 3. Was bedeutet genau wenn einige Modi von sich behaupten "bis zu x Seiten" ???
3.a Nach unten scrollen oder eine Seite anspringen z.B rechts unten "Nächste Seite" antippen ?? |
Du hast so zusagen mehrere Bildschirme zum Zeichnen aber nur einer ist Sichtbar davon.
Damit kannst du z.B. im Hintergrund das Bild aufbauen und erst wenn es fertig ist, es an den Bildschirm geben.
siehe auch MonsterFAQ:
Link 1
Link 2
Link 3 _________________ http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight |
|
Nach oben |
|
 |
|
|
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.
|
|