|
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 |
maxi
Anmeldungsdatum: 03.08.2016 Beiträge: 9
|
Verfasst am: 03.08.2016, 15:21 Titel: Code erstellen - aber wie? |
|
|
Liebes Forum,
ich bin am verzweifeln. Vielleicht kann mir jemand helfen.
Ich kann kein Basic programmieren benötige aber den Code für folgendes Beispiel um daraus ein Flussdiagramm zu erzeugen.
Nach tagelangem lesen und rumprobieren komme ich einfach nicht weiter und finde den Fehler nicht
Hier mein Beispiel:
Code: | 100 REM -- V EINER DER VERDAECHTIGEN 1 BIS 4
110 REM -- M DER MOERDER, V AUS 1 BIS 4, 0 UNBEKANNT
120 REM -- H$ ARRAY DER HAARFARBEN
130 REM -- A$ ARRAY DER AEUSSEREN ERSCHEINUNG
140 REM -- Z$ ARRAY DER ZIMMERNUMMERN
150 REM
160 REM – 1 = COLONEL WOODLEY 2 = MR HOLMAN
170 REM – 3 = MR POPE 4 = SIR RAYMOND
180 REM
190 DIM V (1 to 4) as integer = {1, 2, 3, 4}
191 DIM M (1 to 4) as integer = {1, 2, 3, 4}
192 DIM H(4)As String = {"ROT", "SCHWARZ", "BRAUN", "GRAU","UNBEKANNT"}
193 DIM A(4)As String = {"RUBINRING", "GOLDUHR", "ZWICKER", "AERMEL","UNBEKANNT"}
194 DIM Z(4)As String = {"ZIMMER 10", "ZIMMER 12", "ZIMMER 14", "ZIMMER 16","UNBEKANNT"}
210 REM – UNTERSTELLEN, DASS NICHTS BEKANNT IST
220 LET M = 0
230 FOR V = 1 TO 4
240 LET H$(V) = „UNBEKANNT“
250 LET A$(V) = „UNBEKANNT‘“
260 LET Z$(V) = „UNBEKANNT‘“
270 NEXT V
280 REM
290 REM – BEKANNTE HINWEISE ANGEBEN
300 LET Z$(4) = „ZIMMER 10“
310 LET A$(3) = „GOLDUHR“
320 LET A$(2) = „RUBINRING“
330 LET Z$(2) = “ZIMMER 12”
340 REM
350 LET V = 1
360 REM – VERBLEIBENDE HINWEISE WIEDERHOLT PRUEFEN
370 IF Z$(V) <> “ZIMMER 14“ THEN 390
380 LET H$(V) = “SCHWARZ”
390 IF A$(4) = “UNBEKANNT” THEN 420
400 IF A$(4) = “ZWICKER” THEN 420
410 LET A$(1) = “ZWICKER”
420 IF A$(1) = “UNBEKANNT” THEN 450
430 IF A$(1) = “ZWICKER” THEN 450
440 LET A$(4) = “ZWICKER”
450 IF A$(V) <> “ZWICKER” THEN 470
460 LET H$(V) = “BRAUN”
470 IF A$(V) <> “AERMEL” THEN 490
480 LET H$(V) = “ROT”
490 IF Z$(V) <> “ZIMMER 16” THEN 510
500 LET A$(V) = “AERMEL”
510 IF Z$(V) <> “ZIMMER 12” THEN 530
520 LET H$(V) = “GRAU”
530 IF A$(V) <> “GOLDUHR” THEN 550
540 LET Z$(V) = “ZIMMER 14”
550 IF Z$(V) <> “ZIMMER 10” THEN 580
560 IF V = 1 THEN 580
570 LET Z$(1) = “ZIMMER 16”
580 IF Z$(V) <> “ZIMMER 16” THEN 610
590 IF V = 1 THEN 610
600 LET Z$(1) = “ZIMMER 10”
610 IF B$(V) <> “BRAUN” THEN 650
620 LET M = V
630 REM
640 REM – NAECHSTEN VERDAECHTIGEN PRUEFEN
650 IF V = 4 THEN 680
660 LET V = V + 1
670 GOTO 700
680 LET V = 1
690 GOTO 700
700 IF M = 0 THEN 370
710 REM
720 REM – ZEIGE NAMEN DES MOERDERS AN
730 IF M <> 1 THEN 750
740 PRINT “DER MOERDER IST COLONEL WOODLEY“
750 IF M <> 2 THEN 770
760 PRINT “DER MOERDER IST MR. HOLMAN“
770 IF M <> 3 THEN 790
780 PRINT “DER MOERDER IST MR. POPE“
790 IF M <> 4 THEN 810
800 PRINT “DER MOERDER IST SIR RAYMOND“
810 STOP
820 END |
Was mache ich denn falsch?
Viele Grüße
maxi
Editiert durch Moderator: Ursprünglichen Titel "Hilfe ! zu Code für Anfänger" etwas präzisiert. (Sebastian)
Zuletzt bearbeitet von maxi am 03.08.2016, 16:25, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4676 Wohnort: ~/
|
Verfasst am: 03.08.2016, 15:44 Titel: |
|
|
Nur mal so ein paar Kleinigkeiten, die mir gerade auffallen (vielleicht sehe ich nachher noch was):
Du verwendest mal H() AS STRING und mal H$(). Ich bin mir nicht sicher, ob die beiden Arrays als identisch angesehen werden; ich vermute aber eher nicht.
Code: | LET H$(V) = „UNBEKANNT“ |
sollte einen Fehler hervorrufen. Die Anführungszeichen sind einfach nur die doppelten oberen Anführungsstriche (Shift+2).
Code: | LET H$(V) = "UNBEKANNT" ' so stimmt's |
Ähnliches hast du mehrmals im Programm.
Wenn das Programm logische Fehler beinhaltet, kann ich dazu nichts sagen; dazu fehlen mir irgendwie die Entscheidungsregeln, wann welche Werte wie gesetzt werden. Wenn Laufzeitfehler auftreten, wäre es hilfreich, wenn du sie postest; dann sieht man mehr. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
maxi
Anmeldungsdatum: 03.08.2016 Beiträge: 9
|
Verfasst am: 03.08.2016, 16:09 Titel: |
|
|
Hallo,
vielen Dank. Ich habe das jetzt nochmal überarbeitet.
Code: | 100 REM -- V EINER DER VERDAECHTIGEN 1 BIS 4
110 REM -- M DER MOERDER, V AUS 1 BIS 4, 0 UNBEKANNT
120 REM -- H$ ARRAY DER HAARFARBEN
130 REM -- A$ ARRAY DER AEUSSEREN ERSCHEINUNG
140 REM -- Z$ ARRAY DER ZIMMERNUMMERN
150 REM
160 REM – 1 = COLONEL WOODLEY 2 = MR HOLMAN
170 REM – 3 = MR POPE 4 = SIR RAYMOND
180 REM
190 DIM V (1 to 4) as integer = {1, 2, 3, 4}
191 DIM M (1 to 4) as integer = {1, 2, 3, 4}
192 DIM H(4)As String = {"ROT", "SCHWARZ", "BRAUN", "GRAU","UNBEKANNT"}
193 DIM A(4)As String = {"RUBINRING", "GOLDUHR", "ZWICKER", "AERMEL","UNBEKANNT"}
194 DIM Z(4)As String = {"ZIMMER 10", "ZIMMER 12", "ZIMMER 14", "ZIMMER 16","UNBEKANNT"}
210 REM – UNTERSTELLEN, DASS NICHTS BEKANNT IST
220 LET M = 0
230 FOR V = 1 TO 4
240 LET H(V) = "UNBEKANNT"
250 LET A(V) = "UNBEKANNT"
260 LET Z(V) = "UNBEKANNT"
270 NEXT V
280 REM
290 REM – BEKANNTE HINWEISE ANGEBEN
300 LET Z(4) = "ZIMMER 10"
310 LET A(3) = "GOLDUHR"
320 LET A(2) = "RUBINRING"
330 LET Z(2) = "ZIMMER 12"
340 REM
350 LET V = 1
360 REM – VERBLEIBENDE HINWEISE WIEDERHOLT PRUEFEN
370 IF Z(V) <> "ZIMMER 14" THEN 390
380 LET H(V) = "SCHWARZ"
390 IF A(4) = "UNBEKANNT" THEN 420
400 IF A(4) = "ZWICKER" THEN 420
410 LET A(1) = "ZWICKER"
420 IF A(1) = "UNBEKANNT" THEN 450
430 IF A(1) = "ZWICKER" THEN 450
440 LET A(4) = "ZWICKER"
450 IF A(V) <> "ZWICKER" THEN 470
460 LET H(V) = "BRAUN"
470 IF A(V) <> "AERMEL" THEN 490
480 LET H(V) = "ROT"
490 IF Z(V) <> "ZIMMER 16" THEN 510
500 LET A(V) = "AERMEL"
510 IF Z(V) <> "ZIMMER 12" THEN 530
520 LET H(V) = "GRAU"
530 IF A(V) <> "GOLDUHR" THEN 550
540 LET Z(V) = "ZIMMER 14"
550 IF Z(V) <> "ZIMMER 10" THEN 580
560 IF V = 1 THEN 580
570 LET Z(1) = "ZIMMER 16"
580 IF Z(V) <> "ZIMMER 16" THEN 610
590 IF V = 1 THEN 610
600 LET Z(1) = "ZIMMER 10"
610 IF B(V) <> "BRAUN" THEN 650
620 LET M = V
630 REM
640 REM – NAECHSTEN VERDAECHTIGEN PRUEFEN
650 IF V = 4 THEN 680
660 LET V = V + 1
670 GOTO 700
680 LET V = 1
690 GOTO 700
700 IF M = 0 THEN 370
710 REM
720 REM – ZEIGE NAMEN DES MOERDERS AN
730 IF M <> 1 THEN 750
740 PRINT "DER MOERDER IST COLONEL WOODLEY"
750 IF M <> 2 THEN 770
760 PRINT "DER MOERDER IST MR. HOLMAN"
770 IF M <> 3 THEN 790
780 PRINT "DER MOERDER IST MR. POPE"
790 IF M <> 4 THEN 810
800 PRINT "DER MOERDER IST SIR RAYMOND"
810 STOP
820 END |
|
|
Nach oben |
|
|
RWK
Anmeldungsdatum: 04.07.2011 Beiträge: 44
|
Verfasst am: 03.08.2016, 20:55 Titel: |
|
|
HeHe....Hallo, guten Abend,
eine schöne Abendbeschäftigung.
Was soll das Programm denn machen... und warum.... und was ist die Vorgabe
und was soll denn in diesem speziellen Fall als Ergebnis herauskommen?
und was tuts denn bei Dir nicht ?
Fragen über Fragen
Grüße
Rainer |
|
Nach oben |
|
|
maxi
Anmeldungsdatum: 03.08.2016 Beiträge: 9
|
Verfasst am: 04.08.2016, 07:34 Titel: |
|
|
Hallo,
es gibt eine Geschichte, aus der bestimmte Informationen zu entnehmen sind. Und aus diesen soll dann in einem Programm bzw. dann in einem Flussdiagramm oder so der Mörder ermittelt werden.
LG
Maxi |
|
Nach oben |
|
|
Elor
Anmeldungsdatum: 12.07.2013 Beiträge: 205 Wohnort: Konstanz
|
Verfasst am: 04.08.2016, 08:00 Titel: |
|
|
Stell mal als Sprache am Anfang des Quelltextes auf
ein und Kommentiere die Zeilen 190 und 191 aus, diese Arrays verwendest Du ja nur als Variable.
Der Array Bezeichner in Zeile 610 ist falsch, da muss ein H() hin. |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4676 Wohnort: ~/
|
Verfasst am: 04.08.2016, 08:41 Titel: |
|
|
Sagt mal, schreibt ihr eure Quelltexte in Word oder OpenOffice?
Auch hier gilt
_________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
Elor
Anmeldungsdatum: 12.07.2013 Beiträge: 205 Wohnort: Konstanz
|
Verfasst am: 04.08.2016, 09:32 Titel: |
|
|
nemored hat Folgendes geschrieben: |
Sagt mal, schreibt ihr eure Quelltexte in Word oder OpenOffice?
|
Nein, aber (zumindest ich) in LibreOffice Hab ich ganz vergessen, danke für die Korrektur. |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1258 Wohnort: Ruhrpott
|
Verfasst am: 04.08.2016, 10:18 Titel: |
|
|
Hallo maxi!
Ohne das Programm jetzt näher analysiert zu haben: Wenn du -zusätzlich zu den vorherigen Tips- noch Zeile 610 in Code: | 610 IF H(V) <> "BRAUN" THEN 650 | und Zeile 810 in änderst, läuft es zumindest erst einmal und meldet:
DER MOERDER IST SIR RAYMOND
Was ich noch nicht ganz verstanden habe: Hast du das Programm selber geschrieben, oder hast du es übernommen und versuchst jetzt herauszufinden, wie es funktioniert?
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4676 Wohnort: ~/
|
Verfasst am: 04.08.2016, 11:22 Titel: |
|
|
grindstone hat Folgendes geschrieben: | DER MOERDER IST SIR RAYMOND |
Na toll, jetzt hast du alles verraten.
Ich habe das so verstanden, dass das Programm mehr oder weniger so vorgegeben war, und die Aufgabe besteht jetzt darin, ein Flussdiagramm dazu zu erstellen. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
maxi
Anmeldungsdatum: 03.08.2016 Beiträge: 9
|
Verfasst am: 04.08.2016, 11:47 Titel: |
|
|
JUHU !!!! Es läuft
Tausend Dank für eure Hilfe
Das Programm war so vorgegeben. Ich soll jetzt mit einem Tool (ist noch auszuwählen) einmal ein Flussdiagramm erzeugen. Und dann noch ein Toll "suchen" mit dem ich genau diese Geschichte (Hinweise und Mörder finden) nachbilden kann mit visueller (grafischer) Programmierung, so dass es für Kinder genutzt werden kann. Ich hatte mir scratch angeschaut, aber mal sehen, ob es damit geht.
Aber jetzt habe ich schon mal den ersten Schritt - Dank eurer Hilfe - geschafft. |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1258 Wohnort: Ruhrpott
|
Verfasst am: 04.08.2016, 12:09 Titel: |
|
|
nemored hat Folgendes geschrieben: | Na toll, jetzt hast du alles verraten. | Keine Ahnung. Ich kenne ja weder die zugrundeliegende Geschichte noch weiß ich, ob sie korrekt umgesetzt wurde. Die Spannung bleibt also erhalten.
Zitat: | Ich habe das so verstanden, dass das Programm mehr oder weniger so vorgegeben war, und die Aufgabe besteht jetzt darin, ein Flussdiagramm dazu zu erstellen. | Au ha! Beim Lesen des Programms bekomme ich irgendwie Hunger (du weisst schon: Spaghetti...).
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
maxi
Anmeldungsdatum: 03.08.2016 Beiträge: 9
|
Verfasst am: 04.08.2016, 12:15 Titel: |
|
|
Zur Aufklärung
Dies waren die Hinweise aus der Geschichte:
Anhaltspunkte, die bekannte Faktoren festlegen:
1. Sir Raymond Jasper bewohnte Zimmer 10.
2. Mr. Pope trug eine goldene Taschenuhr.
3. Mr. Holman trug einen Rubinring.
4. Mr. Holman bewohnte Zimmer 12.
Verbleibende Hinweise:
5. Der Mann in Zimmer 14 hatte schwarze Haare.
6. Entweder Colonel Woodley oder Sir Raymond trugen einen Zwicker.
7. Der Mann mit dem Zwicker hatte braune Haare.
8. Der Mann mit zerfransten Ärmeln hatte rote Haare.
9. Der Mann in Zimmer 16 hatte zerfranste Ärmel.
10. Der Mann in Zimmer 12 hatte graue Haare.
11. Der Mann mit der goldenen Uhr bewohnte Zimmer 14.
12. Colonel Woodley bewohnte ein Eckzimmer.
13. Der Mörder hatte braune Haare. |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 04.08.2016, 12:36 Titel: |
|
|
Elor hat Folgendes geschrieben: | Nein, aber (zumindest ich) in LibreOffice Hab ich ganz vergessen, danke für die Korrektur. |
Färbst du dann auch mangels eingebautem Syntax-Highlighting jedes Schlüsselwort von Hand passend ein? _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1258 Wohnort: Ruhrpott
|
Verfasst am: 04.08.2016, 12:37 Titel: |
|
|
Dasselbe Programm, in eine ordentliche Struktur gebracht und mit "sprechenden" Variablennamen. So ist es wesentlich leichter zu lesen. Code: |
' – 1 = COLONEL WOODLEY 2 = MR HOLMAN
' – 3 = MR POPE 4 = SIR RAYMOND
Dim Haarfarbe(4)As String = {"ROT", "SCHWARZ", "BRAUN", "GRAU","UNBEKANNT"}
Dim AeussereErscheinung(4)As String = {"RUBINRING", "GOLDUHR", "ZWICKER", "AERMEL","UNBEKANNT"}
Dim Zimmernummer(4)As String = {"ZIMMER 10", "ZIMMER 12", "ZIMMER 14", "ZIMMER 16","UNBEKANNT"}
Dim As Integer Moerder, Verdaechtiger
'UNTERSTELLEN, DASS NICHTS BEKANNT IST
Moerder = 0
For Verdaechtiger = 1 To 4
Haarfarbe(Verdaechtiger) = "UNBEKANNT"
AeussereErscheinung(Verdaechtiger) = "UNBEKANNT"
Zimmernummer(Verdaechtiger) = "UNBEKANNT"
Next Verdaechtiger
'BEKANNTE HINWEISE ANGEBEN
Zimmernummer(4) = "ZIMMER 10"
AeussereErscheinung(3) = "GOLDUHR"
AeussereErscheinung(2) = "RUBINRING"
Zimmernummer(2) = "ZIMMER 12"
Verdaechtiger = 1
'VERBLEIBENDE HINWEISE WIEDERHOLT PRUEFEN
Do
'Der Mann in Zimmer 14 hatte schwarze Haare.
If Zimmernummer(Verdaechtiger) = "ZIMMER 14" Then
Haarfarbe(Verdaechtiger) = "SCHWARZ"
EndIf
'Entweder Colonel Woodley oder Sir Raymond trugen einen Zwicker.
If AeussereErscheinung(4) <> "UNBEKANNT" And _
AeussereErscheinung(4) <> "ZWICKER" Then
AeussereErscheinung(1) = "ZWICKER"
EndIf
If AeussereErscheinung(1) <> "UNBEKANNT" And _
AeussereErscheinung(1) <> "ZWICKER" Then
AeussereErscheinung(4) = "ZWICKER"
EndIf
'Der Mann mit dem Zwicker hatte braune Haare.
If AeussereErscheinung(Verdaechtiger) = "ZWICKER" Then
Haarfarbe(Verdaechtiger) = "BRAUN"
EndIf
'Der Mann mit zerfransten Ärmeln hatte rote Haare.
If AeussereErscheinung(Verdaechtiger) = "AERMEL" Then
Haarfarbe(Verdaechtiger) = "ROT"
EndIf
'Der Mann in Zimmer 16 hatte zerfranste Ärmel.
If Zimmernummer(Verdaechtiger) = "ZIMMER 16" Then
AeussereErscheinung(Verdaechtiger) = "AERMEL"
EndIf
'Der Mann in Zimmer 12 hatte graue Haare.
If Zimmernummer(Verdaechtiger) = "ZIMMER 12" Then
Haarfarbe(Verdaechtiger) = "GRAU"
EndIf
'Der Mann mit der goldenen Uhr bewohnte Zimmer 14.
If AeussereErscheinung(Verdaechtiger) = "GOLDUHR" Then
Zimmernummer(Verdaechtiger) = "ZIMMER 14"
EndIf
'Colonel Woodley bewohnte ein Eckzimmer.
If Zimmernummer(Verdaechtiger) = "ZIMMER 10" And _
Verdaechtiger <> 1 Then
Zimmernummer(1) = "ZIMMER 16"
EndIf
If Zimmernummer(Verdaechtiger) = "ZIMMER 16" And _
Verdaechtiger <> 1 Then
Zimmernummer(1) = "ZIMMER 10"
EndIf
'Der Mörder hatte braune Haare.
If Haarfarbe(Verdaechtiger) = "BRAUN" Then
Moerder = Verdaechtiger
EndIf
'NAECHSTEN VERDAECHTIGEN PRUEFEN
If Verdaechtiger = 4 Then
Verdaechtiger = 1
Else
Verdaechtiger = Verdaechtiger + 1
EndIf
Loop While Moerder = 0
'ZEIGE NAMEN DES MOERDERS AN
Select Case Moerder
Case 1
Print "DER MOERDER IST COLONEL WOODLEY"
Case 2
Print "DER MOERDER IST MR. HOLMAN"
Case 3
Print "DER MOERDER IST MR. POPE"
Case 4
Print "DER MOERDER IST SIR RAYMOND"
End Select
Sleep |
Zur Lösung solcher Logikrätsel "per Hand" benutzt man als Hilfsmittel üblicherweise eine Matrixstruktur, bei der solange Kombinationsmöglichkeiten ausgeschlossen werden, bis nur noch eine übrigbleibt.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
maxi
Anmeldungsdatum: 03.08.2016 Beiträge: 9
|
Verfasst am: 05.08.2016, 13:33 Titel: |
|
|
Vielen lieben Dank grindstone ! |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1258 Wohnort: Ruhrpott
|
Verfasst am: 05.08.2016, 14:23 Titel: |
|
|
Gern geschehen
Es gäbe noch einige Details, die sich verbessern liessen, aber da ich befürchte, daß das für dich eher verwirrend als hilfreich wäre, habe ich es gelassen.
maxi hat Folgendes geschrieben: | Ich soll jetzt mit einem Tool (ist noch auszuwählen) einmal ein Flussdiagramm erzeugen. | Wie wäre es mit einem selbstgeschriebenen Tool in freeBasic?
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
maxi
Anmeldungsdatum: 03.08.2016 Beiträge: 9
|
Verfasst am: 05.08.2016, 16:07 Titel: |
|
|
grindstone hat Folgendes geschrieben: | Wie wäre es mit einem selbstgeschriebenen Tool in freeBasic?
|
Haha Da muss ich erst noch etwas länger üben. |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1258 Wohnort: Ruhrpott
|
Verfasst am: 06.08.2016, 14:28 Titel: |
|
|
Ich habe ja nicht gesagt, daß DU das Tool schreiben sollst.
Soll das Diagramm das ganze Programm darstellen oder nur das Rätsel?
Gruß
grindstone
EDIT:
Hier mal eine (noch sehr) rudimentäre Alphaversion, nur für einen ersten Eindruck: Code: | Const pi As Double = Acos(0)*2
Enum
oval = 1
rechteck
raute
End Enum
Type tPunkt
x As Integer
y As Integer
End Type
Type tDiagramm
muster As UByte
xpos As Integer
ypos As Integer
breite As Integer
hoehe As Integer
text As String
farbe As ULong = RGBA(255,255,255,255)
Declare Property oben As tPunkt
Declare Property unten As tPunkt
Declare Property rechts As tPunkt
Declare Property links As tPunkt
Declare Sub zeichnen
End Type
Property tDiagramm.oben As tPunkt
tDiagramm.oben = Type<tPunkt>(xpos + breite / 2, ypos)
End Property
Property tDiagramm.unten As tPunkt
tDiagramm.unten = Type<tPunkt>(xpos + breite / 2, ypos + hoehe)
End Property
Property tDiagramm.links As tPunkt
tDiagramm.links = Type<tPunkt>(xpos, ypos + hoehe / 2)
End Property
Property tDiagramm.rechts As tPunkt
tDiagramm.rechts = Type<tPunkt>(xpos + breite, ypos + hoehe / 2)
End Property
Sub tDiagramm.zeichnen
Dim As Integer radius = hoehe / 2
Select Case muster
Case oval
Line(xpos + radius, ypos)-(xpos + breite - radius, ypos), RGB(255,255,255)
Line(xpos + radius, ypos + hoehe)-(xpos + breite - radius, ypos + hoehe), RGB(255,255,255)
Circle (links.x + radius, links.y), radius, farbe, pi/2, pi/2*3
Circle (rechts.x - radius, rechts.y), radius, farbe, pi/2*3, pi/2
Case rechteck
Line(xpos, ypos)-(xpos + breite, ypos + hoehe), farbe, B
Case raute
Line(links.x, links.y)-(oben.x, oben.y), farbe
Line(oben.x, oben.y)-(rechts.x, rechts.y), farbe
Line(rechts.x, rechts.y)-(unten.x, unten.y), farbe
Line(unten.x, unten.y)-(links.x, links.y), farbe
End Select
Draw String (oben.x - (Len(text) * 8 / 2),links.y - 4), text, farbe
End Sub
ReDim As tDiagramm diagramm(5)
Declare Sub pfeil(von As tPunkt, bis As tPunkt, xversatz As Integer = 0, yversatz As Integer = 0, farbe As ULong = RGBA(255,255,255,255))
ScreenRes 1000,1000,32
With diagramm(1)
.muster = oval
.xpos = 125
.ypos = 50
.breite = 100
.hoehe = 20
.text = "START"
.zeichnen
End With
With diagramm(2)
.muster = raute
.xpos = 100
.ypos = 100
.breite = 150
.hoehe = 50
.text = "Zimmer 14?"
.zeichnen
End With
pfeil(diagramm(1).unten, diagramm(2).oben)
With diagramm(3)
.muster = rechteck
.xpos = 100
.ypos = 180
.breite = 150
.hoehe = 50
.text = "Schwarze Haare"
.zeichnen
End With
pfeil(diagramm(2).unten, diagramm(3).oben)
With diagramm(4)
.muster = raute
.xpos = 100
.ypos = 260
.breite = 150
.hoehe = 50
.text = "Zwicker?"
.zeichnen
End With
pfeil(diagramm(3).unten, diagramm(4).oben)
pfeil(diagramm(2).rechts, Type<tPunkt>(diagramm(3).unten.x, diagramm(3).unten.y + 10), 20,0)
Sleep
End
Sub pfeil(von As tPunkt, bis As tPunkt, xversatz As Integer = 0, yversatz As Integer = 0, farbe As ULong = RGBA(255,255,255,255))
Dim As tPunkt pvon, pbis
If xversatz Then
Line(von.x, von.y) - (von.x + xversatz, von.y), farbe
Line(von.x + xversatz, von.y) - (von.x + xversatz, bis.y), farbe
pvon = Type<tPunkt>(von.x + xversatz, bis.y)
pbis = Type<tPunkt>(bis.x, bis.y)
ElseIf yversatz Then
Else
pvon = von
pbis = bis
EndIf
Line(pvon.x, pvon.y) - (pbis.x, pbis.y), farbe
If Abs(pvon.x - pbis.x) < 5 Then 'senkrecht
If pbis.y > pvon.y Then 'von oben nach unten
Line(pbis.x, pbis.y) - (pbis.x - 5, pbis.y - 5), farbe
Line(pbis.x, pbis.y) - (pbis.x + 5, pbis.y - 5), farbe
Else 'von unten nach oben
Line(pbis.x, pbis.y) - (pbis.x - 5, pbis.y + 5), farbe
Line(pbis.x, pbis.y) - (pbis.x + 5, pbis.y + 5), farbe
EndIf
ElseIf pvon.y = pbis.y Then 'waagerecht
If pbis.x > pvon.x Then 'von links nach rechts
Line(bis.x, bis.y) - (bis.x - 5, bis.y - 5), farbe
Line(bis.x, bis.y) - (bis.x - 5, bis.y + 5), farbe
Else 'von rechts nach links
Line(pbis.x, pbis.y) - (pbis.x + 5, pbis.y - 5), farbe
Line(pbis.x, pbis.y) - (pbis.x + 5, pbis.y + 5), farbe
EndIf
EndIf
End Sub
|
_________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
maxi
Anmeldungsdatum: 03.08.2016 Beiträge: 9
|
Verfasst am: 07.08.2016, 10:58 Titel: |
|
|
Beeindruckend
Es soll das ganze Programm abbilden. |
|
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.
|
|