Lutzen

Anwendungen, Tools, Userlibs und anderes nützliches.
Caliban
Beiträge: 41
Registriert: 08.09.2004 08:46

Lutzen

Beitrag von Caliban »

Da mir etwas Langweilig war dachete ich, ich übe mich etwas in PureBasic.
Da ich gerade einen Artikel über den kürzlich verstorbenen Theo Lutz gelesen habe, der als Pionierr der sogenannten diagitalen Posie gilt. Hab ich mal kurzerhand ein Programm von ihm versucht nachzumachen. Es "lutzt" Kafkas Das Schloss, so wie es das Programm von Theo Lutz auch tat. Man kann aber die verwendeten Wörter selbst editieren.

Also vieleicht hat ja jemand ein wenig Spass damit.

Code: Alles auswählen

;--------------------------------------
;--------- Lutzen von Caliban ---------
;--------- Idee von Theo Lutz ---------
;--------------------------------------

#Window = 0
Enumeration
  #Editor 
  #Button 
  #Spin
  #Text
EndEnumeration

Zeilen.i = 35

Global Dim Subjekt.s(15)
Global Dim Praedikat.s(15)
Global Dim Operator.s(2,2)
Global Dim Konstante.s(2)

Dim SubjektGadget(15)
Dim PraedikatGadget(15)

;Gadget Ids für String Felder
For i = 0 To 15
  SubjektGadget(i) = 100 + i
  PraedikatGadget(i) = 200 + i
Next i

; Daten einlesen
Restore Subjekte
For i.i = 0 To 15
  Read.s Subjekt(i)
Next
  
Restore Praedikate
For i = 0 To 15
  Read.s Praedikat(i)
Next

Restore Operatoren
For i = 0 To  2
  For ii.i = 0 To 2
    Read.s Operator(i,ii)
  Next
Next

Restore Konstanten
For i = 0 To 2
  Read.s Konstante(i)
Next i

Procedure.s Lutzen(Text.s = "")
  ;Subjekt bestimmen
  ;jedes Subjekt tritt mit der gleichen Wahrscheinlichkeit auf.
  S = Random(15) ;Subjekt
   
  ;Geschlecht bestimmen
  Select Left(Subjekt(S),3)
    Case "der"
      G.i = 0
    Case "die"
      G = 1
    Case "das"
      G = 2
  EndSelect
  
  Buffer.s + Operator(Random(2),G) + " " 
  Buffer + Mid(Subjekt(S),4) + " " + " ist " + Praedikat(Random(15))
  
  If Text = ""
    If Random(7) > 4 ;mit 5/8 Wahrscheinlichkeit kein Punkt    
        Buffer + Konstante(Random(2))
        Buffer = Lutzen(Buffer + " ")    
    EndIf
  Buffer + "."
  EndIf 
  
  
  
  ;Elementarsätze durchlogische Konstanten verknüpfen
  
  ProcedureReturn UCase(Text + buffer)
EndProcedure    

;-- Fenster zeichnen
StringW = 100
StringH = 20

EditorW = 450

ButtonH = 30
ButtonW = 50

SpinW = 35
SpinH = 20

TextH = 20
TextW = 80

padding = 5
x = padding
y = padding

WindowH = StringH * 16 + padding * 17 + ButtonH + padding
WindowW = 2* StringW + 3 * padding + EditorW + padding

OpenWindow(#Window,0,0,WindowW,WindowH,"Lutzen",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)

EditorGadget(#Editor,x,y,EditorW,WindowH-2*padding,#PB_Editor_ReadOnly)

x + EditorW + padding

For i = 0 To 15 
  gy = y + (StringH+Padding)*i
  StringGadget(SubjektGadget(i),x, gy, StringW,StringH,Subjekt(i))
  StringGadget(PraedikatGadget(i),x+StringW+padding, gy, StringW,StringH,Praedikat(i))
Next 


y = WindowH - ButtonH - padding
x = WindowW - ButtonW - padding

ButtonGadget(#Button,x,y,ButtonW, ButtonH, "Starten")

x = EditorW + 2 * padding

TextGadget(#Text, x, y+8, TextW,TextH,"Anzahl Zeilen")

x + TextW + padding

SpinGadget(#Spin,x,y+5,SpinW,SpinH,1,999,#PB_Spin_Numeric)
SetGadgetState(#Spin,35)


;-- Fenster Schleife

Repeat

  event = WaitWindowEvent()
  
  If event = #PB_Event_Gadget    
    If EventGadget() = #Button
      ClearGadgetItems(#Editor)
      For i = 0 To 15
        Subjekt(i) = GetGadgetText(SubjektGadget(i))
        Praedikat(i) = GetGadgetText(PraedikatGadget(i))
      Next
      
      z = 1
      Buffer.s = ""
      
      For i = 1 To GetGadgetState(#Spin)
        Buffer1.s = Lutzen()
        l1 = Len(Buffer)
        l2 = Len(Buffer1)
        
        If l1+l2 > 27 And l1+l2 <59       
          AddGadgetItem(#Editor,z,Buffer+Buffer1)
          z+1
          Buffer = ""
          Buffer1 = ""
        ElseIf l1+l2 > 55
          AddGadgetItem(#Editor,z,Buffer)
          z+1
          AddGadgetItem(#Editor,z,Buffer1)
          z+1
          Buffer = ""
          Buffer1 = ""
        EndIf
        Buffer + Buffer1         
      Next 
      
    EndIf 
  EndIf
  
Until event = #PB_Event_CloseWindow

End

DataSection
  Subjekte:
  Data.s "der Graf","der Fremde","der Blick","die Kirche"
  Data.s "das Schloss","das Bild","das Auge","das Dorf"
  Data.s "der Turm","der Bauer","der Weg","der Gast"
  Data.s "der Tag","das Haus","der Tisch","der Knecht"
  
  Praedikate:
  Data.s "offen","still","stark","gut","schmal","nah","neu"
  Data.s "leise","fern","tief","spaet","dunkel","frei"
  Data.s "gross","alt","wütend"
  
  Operatoren:
  Data.s "ein","eine","ein"
  Data.s "jeder","jede","jedes"
  Data.s "kein","keine","kein"
  Data.s "nicht jeder","nicht jede","nicht jedes"
  
  Konstanten:
  Data.s " und"," oder",", so gilt"
  
EndDataSection
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Lutzen

Beitrag von Kaeru Gaman »

Der Vollständigkeit halber:
Als die Welt das Lutzen lernte: Zum Tod von Theo Lutz (Heise)

Das Original von Theo Lutz

Variationen des Gedichtes verwendete H.G.Ewers 1965 in seinem Roman "Raumkapitän Nelson" (Perry-Rhodan Taschenbuch Nr.18)
Der Roboter George dichtet aufgrund einer Fehlverschaltung zweier Bauteile.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Max_der_Held
Beiträge: 595
Registriert: 18.04.2006 17:01
Wohnort: Bavaria
Kontaktdaten:

Re: Lutzen

Beitrag von Max_der_Held »

armer toter lutz :(
was evtl noch mehr lustig wäre wäre wenn das Programm von Hausaus haufenweise Wörter hätte und sich die gedichte reimen :)
ist aber auch so schön zum durchlesen, was das Programm da macht^^ :)
lg
max
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Re: Lutzen

Beitrag von bobobo »

:bounce: ein contest .. ein contest .. :bounce:
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
rolaf
Beiträge: 3843
Registriert: 10.03.2005 14:01

Re: Lutzen

Beitrag von rolaf »

Schon klar das dir Lutzen gefällt bo³. Wie wärs mit nen bisschen Olafen. :lol:
:::: WIN 10 :: PB 5.73 :: (x64) ::::
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Re: Lutzen

Beitrag von bobobo »

:bounce: ein contest .. ein contest .. :bounce:
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
teejex
Beiträge: 44
Registriert: 30.03.2009 17:55
Computerausstattung: PB4.40 Pro
C++: MinGW :)
Java: Eclipse :)
Notepad++ :)
--
Notebook/eher Mobile Workstation :D : Q9800 - nVidia - 4GB Ram - 500GB HD

Re: Lutzen

Beitrag von teejex »

KEINE MILCH IST GRÜN.JEDE BUCHECKER IST SÜß.
JEDE BANANE IST ALT.EINE ORANGE IST FRISCH.
KEINE AVOCADO IST BLAU.JEDER KOHL IST VOLL.
KEINE ZWIEBEL IST GRÜN.
EINE MANDARINE IST BLAU UND EINE BUCHECKER IST GROß.
KEINE BUCHECKER IST DUNKEL ODER JEDER KOHL IST BLAU.

JEDER BRATEN IST BITTER ODER JEDE MANDARINE IST DUNKEL.
EIN KOHL IST DUNKEL.KEIN JOGHURT IST SAUER.
KEINE BANANE IST GRÜN.JEDER KNOBLAUCH IST GRÜN.
EIN KNOBLAUCH IST SÜß.KEINE KIRSCHE IST LILA.

JEDE ORANGE IST BLAU, SO GILT JEDER JOGHURT IST EKELIG.
EIN BIER IST GRÜN, SO GILT KEIN APFEL IST LECKER.
JEDER KOHL IST FRISCH.KEINE BANANE IST SAUER.
KEINE AVOCADO IST LECKER, SO GILT EIN BIER IST BITTER.
KEINE BUCHECKER IST VOLL.JEDE ORANGE IST SÜß.
KEINE ORANGE IST BITTER ODER JEDER KOHL IST SAFTIG.
JEDER APFEL IST BITTER.
JEDER JOGHURT IST SAFTIG, SO GILT EIN JOGHURT IST LECKER.
EINE MILCH IST BITTER.EINE BUCHECKER IST ALT.
KEINE OLIVE IST DUNKEL.
EIN BRATEN IST ALT, SO GILT JEDER KNOBLAUCH IST GRÜN.
JEDES BIER IST SAUER.EINE BUCHECKER IST GROß.
JEDE OLIVE IST DUNKEL UND JEDER BRATEN IST GELB.
EINE MILCH IST BITTER.EINE MANDARINE IST EKELIG.

---
Mein Beitrag zum :bounce: ein contest .. ein contest .. :bounce:

Besonders gefällt mir die Alliteration in Z.13 - ein Bier ist Bitter
Die diversen (un-)Wahrheiten sind natürlich auch interessant ^^

MfG
Teejex
我是单洋。
我是德国人。
Antworten