-
Notifications
You must be signed in to change notification settings - Fork 2
/
Curse.java
124 lines (112 loc) · 5.05 KB
/
Curse.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
//package org.trevorstone.curse;
import java.io.*;
import java.util.*;
/*****************************************************************************
* Shakespearian Curse Generator -- Based on lists compiled by Jerry Maguire, *
* English teacher at Center Grove High School in Greenwood, Indiana. *
* Public domain implementations by Trevor Stone http://trevorstone.org/curse *
*****************************************************************************/
public class Curse {
// default curse elements
private static final String[] adjective1 = { "artless", "bawdy",
"beslubbering", "bootless", "brazen", "churlish", "cockered", "clouted",
"craven", "currish", "dankish", "dissembling", "distempered", "droning",
"errant", "fawning", "fitful", "fobbing", "froward", "frothy",
"gleeking", "gnarling", "goatish", "gorbellied", "greasy", "grizzled",
"haughty", "hideous", "impertinent", "infectious", "jaded", "jarring",
"knavish", "lewd", "loggerheaded", "lumpish", "mammering", "mangled",
"mewling", "paunchy", "peevish", "pernicious", "prating", "pribbling",
"puking", "puny", "purpled", "quailing", "queasy", "rank", "reeky",
"roguish", "roynish", "ruttish", "saucy", "sottish", "spleeny",
"spongy", "surly", "tottering", "unmuzzled", "vacant", "vain",
"venomed", "villainous", "waggish", "wanton", "warped", "wayward",
"weedy", "wenching", "whoreson", "yeasty"
};
private static final String[] adjective2 = { "base-court", "bat-fowling",
"beef-witted", "beetle-headed", "boil-brained", "bunched-backed",
"clapper-clawed", "clay-brained", "common-kissing", "crook-pated",
"dismal-dreaming", "dizzy-eyed", "dog-hearted", "dread-bolted",
"earth-vexing", "elf-skinned", "empty-hearted", "evil-eyed",
"eye-offending", "fat-kidneyed", "fen-sucked", "flap-mouthed",
"fly-bitten", "folly-fallen", "fool-born", "full-gorged",
"guts-griping", "half-faced", "hasty-witted", "heavy-handed",
"hedge-born", "hell-hated", "horn-mad", "idle-headed", "ill-breeding",
"ill-composed", "ill-nurtured", "iron-witted", "knotty-pated",
"lean-witted", "lily-livered", "mad-bread", "milk-livered",
"motley-minded", "muddy-mettled", "onion-eyed", "pale-hearted",
"paper-faced", "pinch-spotted", "plume-plucked", "pottle-deep",
"pox-marked", "raw-boned", "reeling-ripe", "rough-hewn", "rude-growing",
"rug-headed", "rump-fed", "shag-eared", "shard-borne", "sheep-biting",
"shrill-gorged", "spur-galled", "sour-faced", "swag-bellied",
"tardy-gaited", "tickle-brained", "toad-spotted", "unchin-snouted",
"weak-hinged", "weather-bitten", "white-livered"
};
private static final String[] noun = { "apple-john", "baggage", "barnacle",
"bladder", "boar-pig", "bugbear", "bum-bailey", "canker-blossom",
"clack-dish", "clotpole", "coxcomb", "codpiece", "crutch", "cutpurse",
"death-token", "dewberry", "dogfish", "egg-shell", "flap-dragon",
"flax-wench", "flirt-gill", "foot-licker", "fustilarian", "giglet",
"gudgeon", "gull-catcher", "haggard", "harpy", "hedge-pig", "hempseed",
"horn-beast", "hugger-mugger", "jack-a-nape", "jolthead",
"lewdster", "lout", "maggot-pie", "malignancy", "malkin", "malt-worm",
"mammet", "manikin", "measle", "minimus", "minnow", "miscreant",
"moldwarp", "mumble-news", "nut-hook", "pantaloon", "pigeon-egg",
"pignut", "puttock", "pumpion", "rabbit-sucker", "rampallion",
"ratsbane", "remnant", "rudesby", "ruffian", "scantling", "scullion",
"scut", "skainsmate", "snipe", "strumpet", "varlot", "vassal",
"waterfly", "whey-face", "whipster", "wagtail", "younker"
};
protected List<WordList> wordLists = new LinkedList<WordList>();
public Curse() {
wordLists.add(new WordList(adjective1));
wordLists.add(new WordList(adjective2));
wordLists.add(new WordList(noun));
}
public String toString() {
StringBuilder result = new StringBuilder("Thou");
// iterator pattern
for (Iterator iter = wordLists.iterator(); iter.hasNext();) {
result.append(' ');
result.append(iter.next());
}
result.append('!');
return result.toString();
}
/**
* Output many curses.
* @param n The number of curses to generate
* @param out Where to write lines of curses
*/
public static void curse(int n, PrintStream out) {
Curse curse = new Curse();
while (n-- > 0) {
out.println(curse);
}
}
/**
* org.trevorstone.curse.Curse n prints n curses, without
* arguments will prompt the user
*/
public static void main(String[] args) throws IOException {
int count;
if (args.length == 0) {
System.out.print("Number of curses: ");
count = new Scanner(System.in).nextInt();
} else {
count = Integer.parseInt(args[0]);
}
curse(count, System.out);
}
/**
* String representation is a random word from a list.
*/
protected static class WordList {
private String[] words;
public WordList(String... words) {
this.words = words;
}
public String toString() {
return words[(int) (Math.random() * words.length)];
}
}
}