Reputation: 147
My goal when creating this code was to be able to set unique characteristics of each weather type, and be able to set one type of weather randomly by generating a random number.
I created 11 different weather types, made them all objects of Weather. I then made a getWeather function that will allow me to get a random weather type, and then save its unique characheristics (id,type,healthChange,mileChange) to Weather. However, It doesnt seem to be working. I believe that the error is through my random weather function, i don't think I have the right idea on what to do once i get the random number. Can someone give me a hand? I also think there is more to this then I have. Im not sure if weather(veryHot) is even doing anything. What I want it to do is allow me to the randomly selected weather, and get it's variables so I can manipulate my HTML.
function Weather(id,type,healthChange,mileChange,probability) {
this.id = id;
this.type = type;
this.healthChange = healthChange;
this.mileChange = mileChange;
this.probability = probability;
}
veryHot = new Weather("1", "Very Hot","-9",".7",".1");
hot = new Weather("2", "Hot","-3",".9",".1");
warm = new Weather("3", "Warm","1","1",".2");
cool = new Weather("4", "Cool","1",".95",".1");
cold = new Weather("5", "Cold","-5",".8",".1");
veryCold = new Weather("6", "Very Cold","-12",".7",".1");
rain = new Weather("1", "Rain","-4",".6",".1");
heavyRain = new Weather("1", "Heavy Rain","-8",".4",".05");
snow = new Weather("1", "Snow","-15",".3",".05");
blizzard = new Weather("1", "Blizzard","-30",".1",".05");
heavyFog = new Weather("1", "Heavy Fog","-3",".5",".05");
function getWeather() {
var randomNumber = Math.floor(Math.random() * 100);
if(randomNumber <= 10 ) {
weather(veryHot);
}
if((randomNumber > 10) && (randomNumber <= 20)) {
weather(hot);
}
if((randomNumber > 20) && (randomNumber <= 40)) {
weather(warm);
}
if((randomNumber > 40) && (randomNumber <= 50)) {
weather(cool);
}
if((randomNumber > 50) && (randomNumber <= 60)) {
weather(cold);
}
if((randomNumber > 60) && (randomNumber <= 70)) {
weather(veryCold);
}
if((randomNumber > 70) && (randomNumber <= 80)) {
weather(rain);
}
if((randomNumber > 80) && (randomNumber <= 85)) {
weather(heavyRain);
}
if((randomNumber > 85) && (randomNumber <= 90)) {
weather(snow);
}
if((randomNumber > 90) && (randomNumber <= 95)) {
weather(blizzard);
}
if((randomNumber > 95) && (randomNumber <= 100)) {
weather(heavyFog);
}
}
Upvotes: 2
Views: 355
Reputation: 19772
Put your objects in an array then generate a random number based off the length of the array. You now don't need to change anything if you add or remove weather objects.
function Weather(id,type,healthChange,mileChange,probability) {
this.id = id;
this.type = type;
this.healthChange = healthChange;
this.mileChange = mileChange;
this.probability = probability;
}
var arrWeather = [new Weather("1", "Very Hot","-9",".7",".1"),
new Weather("2", "Hot","-3",".9",".1"),
new Weather("3", "Warm","1","1",".2"),
new Weather("4", "Cool","1",".95",".1"),
new Weather("5", "Cold","-5",".8",".1"),
new Weather("6", "Very Cold","-12",".7",".1"),
new Weather("1", "Rain","-4",".6",".1"),
new Weather("1", "Heavy Rain","-8",".4",".05"),
new Weather("1", "Snow","-15",".3",".05"),
new Weather("1", "Blizzard","-30",".1",".05"),
new Weather("1", "Heavy Fog","-3",".5",".05")];
function getRandomWeather() {
var randomNumber = Math.floor(Math.random() * arrWeather.length);
return arrWeather[randomNumber];
}
var weather = getRandomWeather();
console.log(weather);
//Lets populate the HTML
for (var property in weather) {
if (weather.hasOwnProperty(property)) {
document.querySelector("#weather ." + property).innerHTML = weather[property];
}
}
<div id="weather">
<h2 class="type"></h2>
<dl>
<dt>ID</dt>
<dd class="id"></dd>
<dt>Health Change</dt>
<dd class="healthChange"></dd>
<dt>Mile Change</dt>
<dd class="mileChange">
<dt>Probability</dt>
<dd class="probability"></dd>
</dl>
</div>
Upvotes: 1
Reputation: 7308
function Weather(id,type,healthChange,mileChange,probability) {
this.id = id;
this.type = type;
this.healthChange = healthChange;
this.mileChange = mileChange;
this.probability = probability;
}
veryHot = new Weather("1", "Very Hot","-9",".7",".1");
hot = new Weather("2", "Hot","-3",".9",".1");
warm = new Weather("3", "Warm","1","1",".2");
cool = new Weather("4", "Cool","1",".95",".1");
cold = new Weather("5", "Cold","-5",".8",".1");
veryCold = new Weather("6", "Very Cold","-12",".7",".1");
rain = new Weather("1", "Rain","-4",".6",".1");
heavyRain = new Weather("1", "Heavy Rain","-8",".4",".05");
snow = new Weather("1", "Snow","-15",".3",".05");
blizzard = new Weather("1", "Blizzard","-30",".1",".05");
heavyFog = new Weather("1", "Heavy Fog","-3",".5",".05");
function getWeather() {
var randomNumber = Math.floor(Math.random() * 100);
if(randomNumber <= 10 ) {
return veryHot;
}
if((randomNumber > 10) && (randomNumber <= 20)) {
return hot;
}
if((randomNumber > 20) && (randomNumber <= 40)) {
return warm;
}
if((randomNumber > 40) && (randomNumber <= 50)) {
return cool;
}
if((randomNumber > 50) && (randomNumber <= 60)) {
return cold;
}
if((randomNumber > 60) && (randomNumber <= 70)) {
return veryCold;
}
if((randomNumber > 70) && (randomNumber <= 80)) {
return rain;
}
if((randomNumber > 80) && (randomNumber <= 85)) {
return heavyRain;
}
if((randomNumber > 85) && (randomNumber <= 90)) {
return snow;
}
if((randomNumber > 90) && (randomNumber <= 95)) {
return blizzard;
}
if((randomNumber > 95) && (randomNumber <= 100)) {
return heavyFog;
}
}
Upvotes: 0