Skip to content

Instantly share code, notes, and snippets.

View shaefer's full-sized avatar

Daniel Shaefer shaefer

View GitHub Profile
@shaefer
shaefer / renderForceGraph.js
Created February 11, 2019 19:14
Examples For Node Rendering with force-graph
const simpleNodeAsText = (node, ctx) => {
ctx.font = '10px Sans-Serif';
ctx.textAlign = 'center';
ctx.textBaseline = 'middle';
ctx.fillStyle = node.color;
ctx.fillText(node.id, node.x, node.y);
};
const renderCircleWithLabel = (node, ctx, globalScale) => {
@shaefer
shaefer / tavernGenerator.js
Last active October 28, 2018 03:49
Tavern name generator (with seed support from seedrandom library)
import 'seedrandom';
const TavernGenerator = (seed = null) => {
const prng = new Math.seedrandom(seed);
const generateTavernName = () => {
const templateInt = random(tavern_templates.length);
const template = tavern_templates[templateInt];
return template.fn();
}
@shaefer
shaefer / DiceBag.js
Created June 6, 2018 04:54
DiceBag -> Phase 4 (extra credit 1)
import {sum} from './ArrayUtils'
import seedrandom from 'seedrandom'
export const d6 = (generator = Math.random) => {
return rollDice(1, 6, generator);
}
export const rollDiceSets = (diceSets, generator = Math.random) => {
let setResults = [];
for(let i = 0;i<=(diceSets.length - 1);i++) {
@shaefer
shaefer / Dicebag.test.js
Created June 5, 2018 21:13
Dicebag.test.js Phase 3
import {DiceBag, DiceBagWithSeed} from './Dice'
import seedrandom from 'seedrandom'
it('rolls a basic die and returns results', () => {
const diceBag = DiceBag();
for (let i = 0; i<100; i++) {
const result = diceBag.d6().total;
expect(result).toBeGreaterThanOrEqual(1);
expect(result).toBeLessThanOrEqual(6);
}
@shaefer
shaefer / Dicebag.js
Created June 5, 2018 21:11
DiceBag Phase 3
import seedrandom from 'seedrandom'
import {sum} from './ArrayUtils'
const rollDice = (numOfDice, numOfSides, generator = Math.random) => {
if (numOfDice > 100000) throw new Exception("Max dice of 10000 exceeded");
if (numOfSides > 100000) throw new Exception("Max sides of 10000 exceeded");
let results = [];
for (let i = 1; i<= numOfDice; i++) {
const result = Math.floor(generator() * numOfSides) + 1;
results.push(result);
@shaefer
shaefer / Dicebag.js
Created June 5, 2018 21:09
DiceBag Phase 2
import {sum} from './ArrayUtils'
export const d6 = () => {
return rollDice(1, 6);
}
export const rollDice = (numOfDice, numOfSides) => {
if (numOfDice > 100000) throw new Exception("Max dice of 10000 exceeded");
if (numOfSides > 100000) throw new Exception("Max sides of 10000 exceeded");
let individualResults = [];
for(let i = 1;i <= numOfDice;i++) {
@shaefer
shaefer / Dicebag.js
Created June 5, 2018 21:08
DiceBag Phase 1
export const d6 = () => {
return rollDice(1, 6);
}
export const rollDice = (numOfDice, numOfSides) => {
let total = 0;
for(let i = 1;i <= numOfDice;i++) {
total += Math.floor(Math.random() * numOfSides) + 1;
}
return total;

Keybase proof

I hereby claim:

  • I am shaefer on github.
  • I am danielshaefer (https://keybase.io/danielshaefer) on keybase.
  • I have a public key whose fingerprint is 80AB 3505 7C38 9838 1792 2BF5 25B5 7FC3 7CD1 DE5F

To claim this, I am signing this object: