0

如何制作一个标志来检查:
is_valid_length、is_valid_letters、is_valid_digits、is_valid_at
是否都为真?还有我如何让它只在最后显示正确,而不是你必须遵守最后的规则。如果我把“output_msg =”你必须遵守这些规则“;” 然后 output_msg 变成一个未知变量。请有人帮助我,谢谢

   {
   var is_valid_length, is_valid_letters, is_valid_digits, is_valid_at, output_msg;
   is_valid_length = false;
   is_valid_letters = false;
   is_valid_digits = false;
   is_valid_at = false;
   var user;
   var length,char;
   length = 0;  
   char = 0;

    do{
   output_msg ="You must follow these rules";
   user=get_string("Enter password:","")
   if (string_length(user)>=6 && string_length(user)<=10){
   is_valid_length = true;
   }
   else{
   output_msg =("Password is not 5-10 characters long");
   }


   if (string_length(string_digits(user))>=1){
   is_valid_digits = true;
   }
   else{
   output_msg +=("#Password Does not contain 1 digit");
   }



   if (string_length(string_letters(user))>=1){
   is_valid_letters = true;
   }
   else{
   output_msg +=("#Password Does not contain 1 letter");
   }



   if (string_count('@',user)>=1){
   is_valid_at=true;
   }
   else{
   output_msg +=("#Password Does not contain @");
   }

   show_message(output_msg);

   if (is_valid_length && is_valid_letters && is_valid_digits && is_valid_at ==true) {
   show_message("correct");

   }
   }

   until 
   is_valid_length = true;
   is_valid_letters = true;
   is_valid_digits = true;
   is_valid_at = true;
   }
4

1 回答 1

0

好吧,我可以回答你的部分问题。要制作一个表达式来评估所有布尔值,您将执行以下操作:

if (is_valid_length && is_valid_letters){
    if (is_valid_digits && is_valid_at){
       show_message("correct");
    }
}

我不认为游戏制造商允许多个 && 或 ||。您不需要 == true 部分,因为只需输入它们即可评估它们。如果你做了类似的事情:

if (!is_valid_length){}

这 !符号正在评估以查看它是否不正确。

至于你的第二个问题, output_msg 是一个未知变量的原因是因为你删除了 output_msg 的声明。

要使其仅显示“正确”,请在 4 个布尔检查的末尾添加一个 else,如下所示:

if (is_valid_length && is_valid_letters){
    if (is_valid_digits && is_valid_at){
       show_message("correct");
    }
}
else show_message(output_msg);

我会像这样做整个街区:

 var output_msg;
 var is_valid_length = false;
 var is_valid_letters = false;
 var is_valid_digits = false;
 var is_valid_at = false;
 var all_true = false; //variable for all true
 var user;
 var length,char;
 length = 0;  
 char = 0;

 do{
 output_msg ="You must follow these rules";
 user=get_string("Enter password:","")
 if (string_length(user)>=6 && string_length(user)<=10){
 is_valid_length = true;
 }
 else{
 output_msg +=("#Password is not 5-10 characters long");
 is_valid_length = false; //resetting if they get it wrong second try
 }


 if (string_length(string_digits(user))>=1){
 is_valid_digits = true;
 }
 else{
 output_msg +=("#Password Does not contain 1 digit");
 is_valid_digits = false;
 }



 if (string_length(string_letters(user))>=1){
 is_valid_letters = true;
 }
 else{
 output_msg +=("#Password Does not contain 1 letter");
 is_valid_letters = false;
 }



 if (string_count('@',user)>=1){
 is_valid_at=true;
 }
 else{
 output_msg +=("#Password Does not contain @");
 is_valid_at=false;
 }

 if (is_valid_length && is_valid_letters){
     if (is_valid_digits && is_valid_at){
        show_message("correct");
        all_true = true; //exits out of do loop
     }
 }
 else {
     show_message(output_msg);
     all_true = false;

 }
 }
 until all_true == true;

希望这可以帮助

于 2014-11-20T18:02:42.847 回答