Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function Pirates(arr){
- let cities={}
- //Използваме i за да знаем през колко града сме минали за да можем после да ги премахнем от arr
- let i=0
- for(let row of arr){
- i++
- //Ако row е равно на Sail излизаме от цикъла
- if(row==="Sail"){
- break;
- }
- //Разделяме row на city,population и gold като row.split("||")= Оutput:row["Tortuga","345000","1250"]
- let[city,population,gold]=row.split("||")
- //Превръщаме популацията и златото в числа
- population=Number(population)
- gold=Number(gold)
- //Ако градът не съществува в обекта cities извърши:
- if(!cities.hasOwnProperty(city)){
- //Създаваме обект в обекта с името на града неговата популация и злато
- cities[city]={cityPopulation: population,
- cityGold: gold}
- //Output:cities{Tortuga:{cityPopulation:345000,cityGold:1250}}
- }
- //Ако градът вече съществува в обекта извърши:
- else{
- //Влезни в cities обекта и добави популацията към value на ключа cityPopulation намиращ се в ключа Tortuga
- cities[city].cityPopulation+=population
- //Влезни в cities обекта и добави златото към value на ключа cityGold намиращ се в ключа Tortuga
- cities[city].cityGold+=gold
- }
- }
- //Изрязваме градовете и sail от arr
- arr.splice(0,i)
- for(let row of arr){
- //Сплитваме row на command,city,n1 и n2 като row.split("=>")=Оutput:row["Plunder","Tortuga",75000","380"]
- let[command,city,n1,n2]=row.split("=>")
- //Във всеки случай имаме едно число
- n1=Number(n1)
- //Проверяваме дали n2 същестува за да не ни даде грешка че превръщаме undefined в число. Ако n2 съществува извърши:
- if(!isNaN(n2)){
- n2=Number(n2)
- }
- switch(command){
- case "Plunder":
- let peopleKilled=n1
- let goldStolen=n2
- //Извършваме само ако градът от който трябва да крадем същестува в cities
- if(cities.hasOwnProperty(city)){
- console.log(`${city} plundered! ${goldStolen} gold stolen, ${peopleKilled} citizens killed.`)
- //Влезни в cities обекта и извади убитите от популацията от value на ключа cityPopulation намиращ се в ключа Tortuga
- cities[city].cityPopulation-=peopleKilled
- //Влезни в cities обекта и извади откраднатото злато от златото от value на ключа cityPopulation намиращ се в ключа Tortuga
- cities[city].cityGold-=goldStolen
- //Ако хората или златото на града станат по малко или равно на 0 извърши:
- if(cities[city].cityGold<=0||cities[city].cityPopulation<=0){
- console.log(`${city} has been wiped off the map!`)
- //Изтрии ключа Tortuga и неговото value от обекта cities
- delete cities[city]
- }
- }
- break;
- case "Prosper":
- let goldGain=n1
- //Ако златото е по малко от 0 извърши:
- if(goldGain<0){
- console.log("Gold added cannot be a negative number!")
- break;
- }
- //Извършваме само ако градът които просперира същестува в cities
- if(cities.hasOwnProperty(city)){
- //Влезни в cities обекта и добави златото към value на ключа cityGold в намиращ се в ключа Tortuga
- cities[city].cityGold+=goldGain
- console.log(`${goldGain} gold added to the city treasury. ${city} now has ${cities[city].cityGold} gold.`)
- }
- break;
- }
- }
- //Проверяваме дали в обекта има нещо като Object.keys(cities) връща масив от ключове
- //Оutput:["Tortuga","Santo Domingo","Havana"]
- //Ако обекта е празен извърши:
- if(Object.keys(cities).length===0){
- console.log("Ahoy, Captain! All targets have been plundered and destroyed!")
- }
- //Ако обекта не е празен извърши:
- else{
- console.log(`Ahoy, Captain! There are ${Object.keys(cities).length} wealthy settlements to go to:`)
- //Минаваме през ключовете в cities
- //console.log(city)
- //Output:"Tortuga"
- for(let city in cities){
- console.log(`${city} -> Population: ${cities[city].cityPopulation} citizens, Gold: ${cities[city].cityGold} kg`)
- }
- }
- }
- Pirates(["Tortuga||345000||1250",
- "Santo Domingo||240000||630",
- "Havana||410000||1100",
- "Sail",
- "Plunder=>Tortuga=>75000=>380",
- "Prosper=>Santo Domingo=>180",
- "End"])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement