Who said programming is not fun? How about your favorite programming language doing (a part of) Queen’s Bohemian Rhapsody?
Here goes:
program BohemianRhapsody; {$APPTYPE CONSOLE} uses System.SysUtils, System.Generics.Collections; type ELandSlideException = Exception; TSex = (Male, Female); TLife = (Real, Fantasy); TDifficulty = (Easy); TWindDirection = (Any); TSelf = class(TObject) Wealth : integer; Sex : TSex; Symphaties : TArray; ComeDifficulty : TDifficulty; GoDifficulty : TDifficulty; High : double; Low : double; Matter : boolean; end; TWind = record BlowDirection : TWindDirection; end; TEyeDirection = (Sky); TEye = class(TObject) Direction : TEyeDirection; procedure Open; procedure See; end; TPerson = class (TObject) class var Eyes : TEnumerable<TEye>; end; TPiano = class(TObject) class procedure Play; end; var IsLife : array [TLife] of boolean; //and here it is... procedure Play; var eye : TEye; self : TSelf; wind : TWind; begin self := TSelf.Create; try try Assert(IsLife[TLife.Real], 'Is this the'); Assert(IsLife[TLife.Fantasy], 'Is this just'); except on ELandSlideException do {$region 'Reality'} while True do begin for eye in TPerson.Eyes do begin eye.Open; eye.Direction := TEyeDirection.Sky; eye.See; end; self.Wealth := 0; self.Sex := TSex.Male; self.Symphaties := nil; if (self.ComeDifficulty = TDifficulty.Easy) AND (self.GoDifficulty = TDifficulty.Easy) then begin self.High := 0.1; self.Low := 0.1; end; self.Matter := wind.BlowDirection <> TWindDirection.Any; self.Matter := self.Matter; TPiano.Play; end; {$endregion} end; finally self.Free; end; end; begin Play; end.
Yes, I got the idea from Reddit – liked it so much I had to do a Delphi version (actually compiles once you add required empty procedure declarations).
So, the above solves this part of the song (but I guess you figured it out):
Is this the real life?
Is this just fantasy?
Caught in a landslide,
No escape from reality.Open your eyes,
Look up to the skies and see,
I’m just a poor boy, I need no sympathy,
Because I’m easy come, easy go,
Little high, little low,
Any way the wind blows doesn’t really matter to me, to me.
How about you finishing the Bohemian Rhapsody in Delphi code (a lot more lyrics to do) 🙂