Skip to content

Instantly share code, notes, and snippets.

@shuuki
Created April 7, 2018 10:51
Show Gist options
  • Save shuuki/fa0f9956afe895ae0d6efa443af8d7fb to your computer and use it in GitHub Desktop.
Save shuuki/fa0f9956afe895ae0d6efa443af8d7fb to your computer and use it in GitHub Desktop.
make small universes
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
body {
background: #f8f8f8;
color: #0a0a0a;
}
</style>
</head>
<body>
<script>
var game = {
overworld: {}
}
function selfseed(list, limit) {
let seeded = []
while (limit > 0) {
let roll = Math.floor(Math.random() * list.length);
seeded.push(list[roll]);
limit -= 1;
}
return seeded.join('');
}
//lets = ('111111122223334').split('')
//selfseed(lets,280)
// advanced weighted rolling
// takes array of numbers
function decider( values ) {
let result = 0
let max = 0
let roll = 0
let step = 0
let slice = []
for ( let i = 0; i < values.length; i++ ) {
//add values together
max += values[i]
//build array of steps for rolls
for ( let k = 0; k < values[i]; k++ ) {
step += 1
slice[step] = i
}
}
//make a roll bounded by total of values
roll = Math.ceil( Math.random() * max )
//return value of slice index at roll
result = slice[roll]
//console.log( 'max ' + max )
//console.log( 'roll ' + roll )
//console.log( '#' + slice[roll] + ' = ' + values[slice[roll]] )
return result
}
//console.log(decider([12,44,12]))
//console.log(decider([120,16,61,87,17,1,4]))
// assumes {keys: [], weights: []} format
function decideseed( seed, limit ) {
let seeded = []
while ( limit > 0 ) {
let index = seed.keys[decider( seed.weights )]
seeded.push( index );
limit -= 1;
}
//return seeded.join('')
return seeded;
}
//decideseed({keys: ['o','x'], weights: [2,2]}, 140)
//decideseed({keys: ['o','x','y',' '], weights: [2,8,40,140]}, 200)
//decideseed({keys: ['o','x','y',' '], weights: [4,4,4,80]}, 200).join('')
//🌲🌳🌱🍃🌷
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment