not really known
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

147 lines
3.9 KiB

// Cards lists
FoodChain.cards = [
"alligator", "animal", "bat", "bee", "bird", "camel", "cat", "chicken", "chimp",
"clam", "corn", "cow", "crab", "crocodile", "crow", "dog", "duck", "fish", "flies",
"fox", "frog", "giraffe", "goat", "grass", "hay", "hen", "lamb", "mice", "mole",
"mosquito", "mule", "owl", "ox", "pig", "rat", "shark", "shrimp", "skunk", "snail",
"snake", "spider", "spike", "squid", "squirrel", "starfish", "swan", "tick", "wheat"
];
// Feed strategy list and members
FoodChain.feedStrategy = [
{ name: "herbivore", members: ["swan", "bee", "cow", "giraffe", "squirrel", "goat", "ox", "lamb", "mule", "camel", "chimp"] },
{ name: "carnivore", members: ["mosquito", "mole", "spike", "tick", "squid", "crab", "owl", "snake", "dog", "alligator", "bat", "crocodile", "frog", "shark", "spider", "starfish", "crocodile"] },
{ name: "omnivore", members: ["duck", "flies", "pig", "mice", "rat", "skunk", "chicken", "hen", "fox"] }
];
// Chains computation
FoodChain.validChains = [
["snake", "mice", "corn"],
["cat", "mice", "corn"],
["fox", "bird", "spider", "mosquito"],
["fox", "bird", "spider", "flies"],
["fox", "duck", "frog", "flies"],
["snake", "frog", "mosquito"],
["snake", "frog", "flies"],
["fox", "duck", "frog", "snail", "grass"],
["spike", "spider", "mosquito"],
["spike", "spider", "flies"],
["shark", "fish", "shrimp"],
["owl", "bat", "mosquito"],
["owl", "bat", "flies"],
["cat", "bat", "mosquito"],
["cat", "bat", "flies"],
["fox", "hen", "corn"],
["fox", "chicken", "corn"],
["cow", "grass"],
["starfish", "clam"],
["frog", "snail", "grass"],
["skunk", "rat", "snail", "grass"],
["skunk", "mice", "snail", "grass"],
["spike", "snail", "grass"],
["crow", "snail", "grass"],
["duck", "snail", "grass"],
["starfish", "crab"]
];
// Create a random foodchain for the specified size (game build)
FoodChain.randomChain = function(size) {
// Check size
if (size == undefined) {
size = 3;
}
// Look for chains for this size
var chains = [];
for(var i in FoodChain.validChains) {
// Too small
var c = FoodChain.validChains[i];
if (c.length < size)
continue;
// Just the right size
if (c.length == size) {
chains.push(c);
continue;
}
// Too long, compute randomly a subchain
var index = Math.floor(Math.random()*(c.length-size));
var newchain = [];
for (var j = index; j < index+size ; j++) {
newchain.push(c[j]);
}
chains.push(newchain);
}
// Randomly choose a chain
return chains[Math.floor(Math.random()*chains.length)];
};
// Mix a chain
FoodChain.mix = function(chain) {
// Check size
if (chain.length < 2) {
return chain;
}
// Mix cards
var mixedchain = [];
var tomix = enyo.cloneArray(chain);
while (tomix.length != 1) {
// Take a card
var i = Math.floor(Math.random()*tomix.length);
mixedchain.push(tomix[i]);
tomix[i] = null;
// Remix
var newmix = [];
for (var j = 0 ; j < tomix.length ; j++) {
if (tomix[j] != null)
newmix.push(tomix[j]);
}
tomix = newmix;
}
mixedchain.push(tomix[0]);
return mixedchain;
};
// Create a random feed card for the specified size and count (game learn)
FoodChain.randomFeedList = function(size, count) {
// Check size
if (size == undefined) {
size = 2;
}
// Look for chains for this size
var list = [];
for(var i = 0 ; i < count ; i++) {
// Choose randomly a feed strategy
var strategy = Math.floor(Math.random()*size);
// Choose randomly a card not already picked
var index = -1;
var cardname;
while (index == -1) {
// Pick a card
index = Math.floor(Math.random()*FoodChain.feedStrategy[strategy].members.length);
// Check if not already here
cardname = FoodChain.feedStrategy[strategy].members[index];
for (var j = 0 ; index != -1 && j < list.length ; j++) {
if (list[j].cardname == cardname) {
index = -1;
}
}
}
// Add card
list.push({cardname: cardname, strategy: strategy});
}
// Return list
return list;
};