با یک تیر دو نشان بزنید🎯 یک هدیه ۳ میلیون تومانی به همراه ۲۵٪ تخفیف روی همه دوره‌های متخصص😍
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ Mohammad Hasan Habibi
اشکال کد کجاست
جامعه مبانی و اصول برنامه نویسی ایجاد شده در ۱۲ شهریور ۱۴۰۱

من کد زیر رو نوشتم برای اینکه کاربر عدد رندومی که کامپیوتر داره رو حدس بزنه و براش هم محدودیت گذاشتم که اگه امتیاز هاش به 0 برسه، بازی دیگه اجرا نشه اما بازی اجرا میشه و بجاش امتیاز منفی به کاربر میده. چرا بازی با اینکه امتیاز کاربر به صفر رسیده هنوز ادامه داره؟

mag = Math.floor(Math.random() * 15)
var mem, tries = 0, score = 100;
if (score != 0){
    while (mem != mag){
        mem = prompt("enter your guess")
        score = score - 10
        tries++;
        if (mem == mag){
            console.log("Good Job, you won by " + tries + " tries and you catch " + score + " score!")
        }else if (mem < mag){
            console.log("your guess is less than magic number")
        }else{
            console.log("your guess is greater than magic number")
        }
    }
}

درود

ببینید وقتی کد وارد حلقه while میشه، ازش بیرون نمیاد تا شرط دورنش false شه.

الان شرط درون while اینه: mem != mag

درنتیجه اصلا کاری به امتیاز نداره، تا زمانی که این دوتا مثل هم نشدند این برنامه ادامه پیدا میکنه. کافیه برای اصلاحش چنین کاری کنید:

mag = Math.floor(Math.random() * 15)
var mem=0, tries = 0, score = 100;
    while ((mem != mag) && (score !==0)){
        mem = parseInt((prompt("enter your guess")))
        score = score - 10
        tries++;
        if (mem == mag){
            console.log("Good Job, you won by " + tries + " tries and you catch " + score + " score!")
        }else if (mem < mag){
            console.log("your guess is less than magic number")
        }else{
            console.log("your guess is greater than magic number")
        }
}

این کد رو با دقت مطالعه کنید و اگر جایی سوال داشتید حتما بپرسید. ورودی یه تبدیل رشته به عدد هم میخواست که در کد اصلاحی اضافه شده.

بهترین پاسخ
نازنین کریمی مقدم ۱۳ شهریور ۱۴۰۱، ۰۵:۰۱

ممنون

Mohammad Hasan Habibi ۱۳ شهریور ۱۴۰۱، ۰۸:۰۷