113 lines
3.7 KiB
JavaScript
113 lines
3.7 KiB
JavaScript
|
|
// Strachey's Love Letter generator!
|
||
|
|
|
||
|
|
// vocabulary
|
||
|
|
const first = ['DARLING', 'DEAR', 'HONEY', 'JEWEL'];
|
||
|
|
const second = ['DUCK', 'LOVE', 'MOPPET', 'SWEETHEART'];
|
||
|
|
const adjectives = ['ADORABLE', 'AFFECTIONATE', 'AMOROUS', 'ANXIOUS', 'ARDENT', 'AVID', 'BREATHLESS', 'BURNING', 'COVETOUS', 'CRAVING', 'CURIOUS', 'DARLING', 'DEAR', 'DEVOTED', 'EAGER', 'EROTIC', 'FERVENT', 'FOND', 'IMPATIENT', 'KEEN', 'LITTLE', 'LOVEABLE', 'LOVESICK', 'LOVING', 'PASSIONATE', 'PRECIOUS', 'SWEET', 'SYMPATHETIC', 'TENDER', 'UNSATISFIED', 'WISTFUL'];
|
||
|
|
const nouns = ['ADORATION', 'AFFECTION', 'AMBITION', 'APPETITE', 'ARDOUR', 'CHARM', 'DESIRE', 'DEVOTION', 'EAGERNESS', 'ENCHANTMENT', 'ENTHUSIASM', 'FANCY', 'FELLOW FEELING', 'FERVOUR', 'FONDNESS', 'HEART', 'HUNGER', 'INFATUATION', 'LIKING', 'LONGING', 'LOVE', 'LUST', 'PASSION', 'RAPTURE', 'SYMPATHY', 'TENDERNESS', 'THIRST', 'WISH', 'YEARNING'];
|
||
|
|
const adverbs = ['AFFECTIONATELY', 'ANXIOUSLY', 'ARDENTLY', 'AVIDLY', 'BEAUTIFULLY', 'BREATHLESSLY', 'BURNINGLY', 'COVETOUSLY', 'CURIOUSLY', 'DEVOTEDLY', 'EAGERLY', 'FERVENTLY', 'FONDLY', 'IMPATIENTLY', 'KEENLY', 'LOVINGLY', 'PASSIONATELY', 'SEDUCTIVELY', 'TENDERLY', 'WINNINGLY', 'WISTFULLY'];
|
||
|
|
const verbs = ['KICKS', 'ADORES', 'ATTRACTS', 'CARES FOR', 'CHERISHES', 'CLINGS TO', 'DESIRES','HOLDS DEAR', 'HOPES FOR', 'HUNGERS FOR', 'IS WEDDED TO', 'LIKES', 'LONGS FOR', 'LOVES', 'LUSTS AFTER', 'PANTS FOR', 'PINES FOR', 'PRIZES', 'SIGHS FOR', 'TEMPTS', 'THIRSTS FOR', 'TREASURES', 'WANTS', 'WISHES', 'WOOS', 'YEARNS FOR'];
|
||
|
|
|
||
|
|
|
||
|
|
function setup() {
|
||
|
|
createCanvas(400, 400);
|
||
|
|
}
|
||
|
|
|
||
|
|
function draw() {
|
||
|
|
background(220);
|
||
|
|
}
|
||
|
|
|
||
|
|
// function selecting a random element from an array
|
||
|
|
function choice(array_to_choose_from) {
|
||
|
|
let random_index = floor(random(array_to_choose_from.length));
|
||
|
|
return array_to_choose_from[random_index];
|
||
|
|
}
|
||
|
|
|
||
|
|
// function that randomly decides if an element from an array should be selected or not
|
||
|
|
function maybe(array_to_choose_from) {
|
||
|
|
// choose between true or false
|
||
|
|
if(choice([true, false])) {
|
||
|
|
// if true then return an element from the array
|
||
|
|
return choice(array_to_choose_from);
|
||
|
|
} else {
|
||
|
|
// otherwise return and empty sentence (i.e. nothing)
|
||
|
|
return "";
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// function that randomly generates a long form sentence
|
||
|
|
function long() {
|
||
|
|
return "MY " + maybe(adjectives) + " " + choice(nouns) + " " + maybe(adverbs) + " " + choice(verbs) + " YOUR " + maybe(adjectives) + " " + choice(nouns) + ".";
|
||
|
|
}
|
||
|
|
|
||
|
|
// function that randomly generates a short form sentence
|
||
|
|
function short() {
|
||
|
|
return choice(adjectives) + ' ' + choice(nouns) + '. ';
|
||
|
|
}
|
||
|
|
|
||
|
|
// function that randomly an opening
|
||
|
|
function opening() {
|
||
|
|
return choice(first) + ' ' + choice(second);
|
||
|
|
}
|
||
|
|
|
||
|
|
// function that randomly a closing
|
||
|
|
function closing() {
|
||
|
|
return "YOURS " + choice(adverbs);
|
||
|
|
}
|
||
|
|
|
||
|
|
function write_letter(){
|
||
|
|
var text = "";
|
||
|
|
|
||
|
|
// write opening
|
||
|
|
text += opening();
|
||
|
|
text += "\n"; // this is a new line!
|
||
|
|
|
||
|
|
let YOU_ARE = false;
|
||
|
|
// write 5 sentences
|
||
|
|
for(let i = 0; i < 5; i++) {
|
||
|
|
|
||
|
|
// choose if the next sentence is a short or long
|
||
|
|
let sentence_form = choice(['short', 'long']);
|
||
|
|
|
||
|
|
if(sentence_form == 'short') {
|
||
|
|
// there's two types of short to switch from
|
||
|
|
if(YOU_ARE) {
|
||
|
|
// the ": MY" can only follow a "YOU ARE MY"
|
||
|
|
text += ": MY " + short();
|
||
|
|
YOU_ARE = false;
|
||
|
|
} else {
|
||
|
|
text += "YOUR ARE MY " + short();
|
||
|
|
// the ": MY" can only follow a "YOU ARE MY"
|
||
|
|
YOU_ARE = true;
|
||
|
|
}
|
||
|
|
} else if(sentence_form == 'long') {
|
||
|
|
text += long();
|
||
|
|
// make sure the next sentence is not ": MY"
|
||
|
|
YOU_ARE = false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
text += "\n"; // this is a new line!
|
||
|
|
|
||
|
|
// write closing
|
||
|
|
text += " " + closing();
|
||
|
|
|
||
|
|
text += "\n"; // this is a new line!
|
||
|
|
|
||
|
|
// sign
|
||
|
|
text += "MUC";
|
||
|
|
|
||
|
|
// return the letter
|
||
|
|
return text;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
function keyTyped() {
|
||
|
|
if(key == 'x') {
|
||
|
|
let letter = write_letter();
|
||
|
|
print(letter);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// Reference: https://p5js.org/reference/
|