-
-
Save inky/400487 to your computer and use it in GitHub Desktop.
Scheme version by bengold.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;Based on the Wondermark Fiction Generator by David Malki (http://wondermark.com/554/) | |
;Also based on Liam Cooke's automated version (http://fictiongen.boxofjunk.ws/) | |
;loc-adj-num is a random number between and including 0 and 12. | |
;The program location-adj takes the number from loc-adj-num and returns a location adjective based on the numbers each adjective is assigned. | |
(define loc-adj-num (random 12)) | |
(define (location-adj loc-adj-num) | |
(cond | |
[(= loc-adj-num 0) (display "neo-noir ")] | |
[(= loc-adj-num 1) (display "alternate-history ")] | |
[(= loc-adj-num 2) (display "ancient ")] | |
[(= loc-adj-num 3) (display "post-apocalyptic ")] | |
[(= loc-adj-num 4) (display "dystopian ")] | |
[(= loc-adj-num 5) (display "VR-simulated ")] | |
[(= loc-adj-num 6) (display "metaphorical ")] | |
[(= loc-adj-num 7) (display "anachronistic ")] | |
[(= loc-adj-num 8) (display "leather-clad ")] | |
[(= loc-adj-num 9) (display "coal-powered ")] | |
[(= loc-adj-num 10) (display "dragon-filled ")] | |
[(= loc-adj-num 11) (display "shrill ")])) | |
(define loc-noun-num (random 12)) | |
(define (location-noun loc-noun-num) | |
(cond | |
[(= loc-noun-num 0) (display "America, ")] | |
[(= loc-noun-num 1) (display "Japan, ")] | |
[(= loc-noun-num 2) (display "Soviet Russia, ")] | |
[(= loc-noun-num 3) (display "Victorian Britain, ")] | |
[(= loc-noun-num 4) (display "medieval Europe, ")] | |
[(= loc-noun-num 5) (display "Aztec empire, ")] | |
[(= loc-noun-num 6) (display "Atlantis, ")] | |
[(= loc-noun-num 7) (display "terraformed Mars, ")] | |
[(= loc-noun-num 8) (display "Antarctica, ")] | |
[(= loc-noun-num 9) (display "one-way spaceflight, ")] | |
[(= loc-noun-num 10) (display "Outer Rim world, ")] | |
[(= loc-noun-num 11) (display "set from Road Warrior, ")])) | |
(define protag-num (random 12)) | |
(define (protagonist protag-num) | |
(cond | |
[(= protag-num 0) (display "flying message courier ")] | |
[(= protag-num 1) (display "student of metaphysics ")] | |
[(= protag-num 2) (display "milquetoast office drone ")] | |
[(= protag-num 3) (display "schlub with mild OCD ")] | |
[(= protag-num 4) (display "farm boy with dreams ")] | |
[(= protag-num 5) (display "techno-obsessed geek ")] | |
[(= protag-num 6) (display "brooding loner ")] | |
[(= protag-num 7) (display "wisecracking mercenary ")] | |
[(= protag-num 8) (display "idealistic revolutionary ")] | |
[(= protag-num 9) (display "journeyman inventor ")] | |
[(= protag-num 10) (display "collector of oddities ")] | |
[(= protag-num 11) (display "author self-insert ")])) | |
(define disco-num (random 12)) | |
(define (discovery disco-num) | |
(cond | |
[(= disco-num 0) (display "magic diadem ")] | |
[(= disco-num 1) (display "arcane prophecy ")] | |
[(= disco-num 2) (display "dusty tome ")] | |
[(= disco-num 3) (display "crazy old man ")] | |
[(= disco-num 4) (display "alien artifact ")] | |
[(= disco-num 5) (display "enchanted sword ")] | |
[(= disco-num 6) (display "otherworldly portal ")] | |
[(= disco-num 7) (display "dream-inducing drug ")] | |
[(= disco-num 8) (display "encrypted data feed ")] | |
[(= disco-num 9) (display "time-traveling soldier ")] | |
[(= disco-num 10) (display "exiled angel ")] | |
[(= disco-num 11) (display "talking fish ")])) | |
(define adver-num (random 12)) | |
(define (adversary adver-num) | |
(cond | |
[(= adver-num 0) (display "a megalomaniacal dictator, ")] | |
[(= adver-num 1) (display "a government conspiracy, ")] | |
[(= adver-num 2) (display "a profit-obsessed corporation, ")] | |
[(= adver-num 3) (display "a sneering wizard, ")] | |
[(= adver-num 4) (display "supernatural monsters, ")] | |
[(= adver-num 5) (display "computer viruses made real, ")] | |
[(= adver-num 6) (display "murderous robots, ")] | |
[(= adver-num 7) (display "an army led by a sadist, ")] | |
[(= adver-num 8) (display "forces that encourage conformity, ")] | |
[(= adver-num 9) (display "a charismatic politician on the rise, ")] | |
[(= adver-num 10) (display "humanity’s selfish nature, ")] | |
[(= adver-num 11) (display "his own insecurity vis-à-vis girls, ")])) | |
(define assist-num (random 8)) | |
(define (assistant assist-num) | |
(cond | |
[(= assist-num 0) (display "sarcastic female techno-geek ")] | |
[(= assist-num 1) (display "tomboyish female mechanic ")] | |
[(= assist-num 2) (display "shape-shifting female assassin ")] | |
[(= assist-num 3) (display "leather-clad female in shades ")] | |
[(= assist-num 4) (display "girl who's always loved him ")] | |
[(= assist-num 5) (display "bookish female scholar with mousy brown hair ")] | |
[(= assist-num 6) (display "cherubic girl with pigtails and spunk ")] | |
[(= assist-num 7) (display "female who inexplicably becomes attracted to the damaged protagonist for unstated reasons ")])) | |
(define inven-num (random 8)) | |
(define (inventory inven-num) | |
(cond | |
[(= inven-num 0) (display "wacky pet, ")] | |
[(= inven-num 1) (display "welding gear, ")] | |
[(= inven-num 2) (display "closet full of assault rifles, ")] | |
[(= inven-num 3) (display "reference book, ")] | |
[(= inven-num 4) (display "cleavage, ")] | |
[(= inven-num 5) (display "facility with magic, ")] | |
[(= inven-num 6) (display "condescending tone, ")] | |
[(= inven-num 7) (display "discomfort in formal wear, ")])) | |
(define con-num (random 12)) | |
(define (conflict con-num) | |
(cond | |
[(= con-num 0) (display "a fistfight atop a tower.")] | |
[(= con-num 1) (display "a daring rescue preceding a giant explosion.")] | |
[(= con-num 2) (display "a heroic sacrifice that no one will ever remember.")] | |
[(= con-num 3) (display "a philosophical argument punctuated by violence.")] | |
[(= con-num 4) (display "a false victory with the promise of future danger.")] | |
[(= con-num 5) (display "the invocation of a spell at the last possible moment.")] | |
[(= con-num 6) (display "eternal love professed without irony.")] | |
[(= con-num 7) (display "the land restored to health.")] | |
[(= con-num 8) (display "authorial preaching through the mouths of the characters.")] | |
[(= con-num 9) (display "convoluted nonsense that squanders the readers’ goodwill.")] | |
[(= con-num 10) (display "wish-fulfillment solutions to real-world problems.")] | |
[(= con-num 11) (display "a cliffhanger for the sake of prompting a series.")])) | |
(define title-adj-num (random 12)) | |
(define (title-adj title-adj-num) | |
(cond | |
[(= title-adj-num 0) (display "Chrono")] | |
[(= title-adj-num 1) (display "Neuro")] | |
[(= title-adj-num 2) (display "Aero")] | |
[(= title-adj-num 3) (display "Cosmo")] | |
[(= title-adj-num 4) (display "Reve")] | |
[(= title-adj-num 5) (display "Necro")] | |
[(= title-adj-num 6) (display "Cyber")] | |
[(= title-adj-num 7) (display "Astro")] | |
[(= title-adj-num 8) (display "Psycho")] | |
[(= title-adj-num 9) (display "Steam")] | |
[(= title-adj-num 10) (display "Meta")] | |
[(= title-adj-num 11) (display "Black")])) | |
(define title-noun-num (random 12)) | |
(define (title-noun title-noun-num) | |
(cond | |
[(= title-noun-num 0) (display "punks")] | |
[(= title-noun-num 1) (display "mechs")] | |
[(= title-noun-num 2) (display "noiacs")] | |
[(= title-noun-num 3) (display "opolis")] | |
[(= title-noun-num 4) (display "nauts")] | |
[(= title-noun-num 5) (display "phages")] | |
[(= title-noun-num 6) (display "droids")] | |
[(= title-noun-num 7) (display "bots")] | |
[(= title-noun-num 8) (display "blades")] | |
[(= title-noun-num 9) (display "trons")] | |
[(= title-noun-num 10) (display "mancers")] | |
[(= title-noun-num 11) (display "Wars")])) | |
;The program an-or-an uses the number from loc-adj-num to determine whether the location adjective should be preceded by an 'a' or an 'a'. | |
(define (a-or-an) | |
(cond | |
[(= loc-adj-num 1) (display "an ")] | |
[(= loc-adj-num 2) (display "an ")] | |
[(= loc-adj-num 7) (display "an ")] | |
[else (display "a ")])) | |
(define (a-or-an2) | |
(cond | |
[(= disco-num 1) (display "an ")] | |
[(= disco-num 4) (display "an ")] | |
[(= disco-num 5) (display "an ")] | |
[(= disco-num 6) (display "an ")] | |
[(= disco-num 8) (display "an ")] | |
[(= disco-num 10) (display "an ")] | |
[else (display "a ")])) | |
;The following uses the previously defined programs to generate the text that is displayed. | |
(display "Your title is: The ")(title-adj title-adj-num)(title-noun title-noun-num)(newline) | |
(newline) | |
(display "In ")(a-or-an)(location-adj loc-adj-num)(location-noun loc-noun-num)(display "a young ")(protagonist protag-num)(display "stumbles across ")(a-or-an2)(discovery disco-num)(display "which spurs him into conflict with ")(adversary adver-num)(display "with the help of a ")(assistant assist-num)(display "and her ")(inventory inven-num)(display "culminating in ")(conflict con-num) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment