基于文本的rpgjavascript实践项目

Text based rpg javascript practice project

本文关键字:rpgjavascript 项目 于文本 文本      更新时间:2023-09-26

有人告诉我,制作游戏是学习如何正确使用javascript的好方法,所以我已经开始了一个游戏,到目前为止,玩家会被提示创建一个英雄,然后根据英雄类型(法师、死灵法师、术士或萨满)为其分配属性。然而,当我开始分配属性时,它总是说用户选择了一个死灵法师,无论他实际上选择了什么职业。简而言之,我的函数"defaultAssign"出了问题。我希望我能正确地发布这个问题,如果我发布错误,请告诉我,这样我就可以尝试解决它,这是我的第一个问题。这是我的代码:

var heroArray = [];
var yourHero ="";
var hero = {
characterType:"",
Damage:0,
Health:0,
Mana:0,
ManaRegenRate:0,
HealthRegenRate:0,
SpecialSkills:[]
};
var mainMenu = function(){
var nameCheck = prompt("What is your Character's Name?").toUpperCase() ;
    for( var i = 0;i <= heroArray.length ; i++){
         if (nameCheck === heroArray[i]){
                alert("We have found your hero change this string later");
                runGame(heroArray[i]);  
            }

            else{
            alert("You Must Create a Champion");
        var heroName = prompt("What Will You Name Your Sorcerer!").toUpperCase;
            characterCreator(heroName);
        /*use a loop with a regular expression here to check if the name is avalible, if it is countinue, if not
         prompt the user for another name
        */
            }
        /*  run "gameSave" for particular hero
        Run the main Game function and print to the console:
        "Ah yes "+yourHerosNameHere+"," +hisOrHer+" tale echoes far and wide. We last spoke of his journey to"
        +insertCurrentCityHere+" where "+heOrShe+" "mostRecentAction"." 
        */  
        }
    }
var characterCreator = function(yourHero){
yourHero = Object.create(hero);
yourHero.characterType = prompt("Choose your Character Type:'n"+ 
    "MageRouge'n"+
    "Warlock'n"+
    "Shaman'n"+
    "Necromancer").toUpperCase;
    defaultAssign(yourHero.characterType)
}
function defaultAssign(playersType){

for (var j = 0 ; j <= 3 ; j++){
    if (playersType === "MAGEROUGE"){
        yourHero.Damage=25;
        yourHero.Health=50;
        yourHero.Mana=15;
        yourHero.ManaRegenRate=1;
        yourHero.HealthRegenRate=0.4;
        yourHero.SpecialSkills=[["pickpocket",],["sneak",],["lockpick",]];
        alert("Ahha a powerful Magerouge, choose your skills emphasis wisely,"
        +" it could determine your Destiny...");
        skillAssigner(yourHero);
        break;  
    }
    if(playersType === "WARLOCK"){
        yourHero.Damage=50;
        yourHero.Health=50;
        yourHero.Mana=25;
        yourHero.ManaRegenRate=0.6;
        yourHero.HealthRegenRate=0.3;
        yourHero.SpecialSkills=[["summonDemon",0],["bindDemon",0],["portal",0],["illusion",0]];
        alert("Ahha a powerful Warlock, choose your skills emphasis wisely,"
        +"it could determine your Destiny...");
        skillAssigner(yourHero);
        break;
    }
    if(playersType === "SHAMAN"){
        yourHero.Damage=40;
        yourHero.Health=50;
        yourHero.Mana=30;
        yourHero.ManaRegenRate=0;
        yourHero.HealthRegenRate=0.6;
        yourHero.SpecialSkills=[["weatherControl",0],["heal",0],["astralProjection",0]]
        alert("Ahha a powerful Shaman choose your skills emphasis wisely,"
        +"it could determine your Destiny...");
        skillAssigner(yourHero);
        break;  
    }
    else if(playersType === "NECROMANCER") {
        yourHero.Damage=60;
        yourHero.Health=50;
        yourHero.Mana=20;
        yourHero.ManaRegenRate=0.8;
        yourHero.HealthRegenRate=0.4;
        yourHero.SpecialSkills=[["raiseDead",0],["petrify",0],["soulSap",0]];
        alert("Ahha a powerful Necromancer choose your skills emphasis wisely,"
        +"it could determine your Destiny...");
        skillAssigner(yourHero);
        break;
        }
}   
}
/*
create an array of hometowns for the main character to choose from
*/

function skillAssigner(yourHero){
for (var s = 0;s<3;s++){
var p = 0;  
while( p < 10 ){
    var n = prompt("How many points will you spend on "+yourHero.SpecialSkills[s]+"?");
    yourHero.SpecialSkills[s][1] = n;   
    p +=n;
}
}
}

mainMenu();

去掉线上的else,它会检查玩家的类型是否为亡灵法师。没有必要。

for循环在函数defaultAssign内部不是必需的(随着它的移除,break s也不是必需的。)

最后,toUpperCase是一个函数,所以必须用括号toUpperCase()来调用它。

解决这些问题可以使代码正常工作。

您应该对代码进行格式化(或者让一个编辑器为您进行格式化),以提高代码的可读性——这将帮助您发现错误。