من میخواستم برای بازیم 2 ماشین داشته باشم به صورتی که یکیشو خودم کنترل کنم و یکیشو کامپیوتر کنترل کنه. یعنی خودش حرکت کنه (بازی با کامپیوتر باشه) میشه راهنماییم کنید؟
توضیحات اضافه:
برنده اون فردی است که زود تر از خط پایان عبور می کند و عواملی مانند تغیرات سرعت ،مانع ها،سکه و .... باعث تاخیر در رسیدن می شود.
پاسخ:
نوشتن مسابقه انسان و ماشین نیاز به نوشتن برنامه هوشمند داره و کار سختیه برا همین اگر از توضیحات زیر چیزی نفهمیدین، می تونید بازی مسابقه انسان با انسان رو بنویسید که در اون ماشین بازیکن اول با دکمه های بالا، پائین، چپ و راست کنترل بشه و ماشین بازیکن دوم با دکمه های W , S , A , D کار کنه.
روش نوشتن بازیهای هوشمند:
در کلیه بازیهایی که در اون یک انسان داره با کامپیوتر مسابقه میده،در هر دور حلقه بازی:
ساختار برنامه های مسابقه انسان و کامپیوتر
علاوه براینکه فرامین کنترل ماشین بازیکن، از بازیکن دریافت میشه «این یعنی دریافت وضعیت چهار کلید چپ (حرکت به چپ) راست (حرکت به راست) بالا (برای افزایش سرعت) و پائین (برای ترمز)» و حرکت ماشین بازیکن بسته به وضعیت فشرده شدن یا فشرده نشدن هر یک از این کلیدها تغییر می کنه، باید در هر دور بازی، برای هدایت ماشین تحت کنترل کامپیوتر، با تعدادی دستور if تصمیم بگیری که با توجه به موانع و پیچهای پیش رو، ماشین تحت کنترل کامپیوتر در اون دور بازی کدوم طرف بره. هر چقدر این if ها دقیقتر هوشمندتر نوشته بشن، ماشین تحت کنترل کامپیوتر بهتر رانندگی میکنه و شکست دادن اون توسط بازیکن کار سخت تری میشه.
مثالهایی از قوانین هوشمندانه رانندگی کامپیوتر
اصل پایه ای رانندگی اینه که رانندگان ماهر با بیشترین سرعتی رانندگی می کنند که بتونند به موقع و با دیدن موانع یا پیچها، کنترل ماشین رو از دست ندن پس ساده ترین قانون برای این تابع اینه که اگر مانعی جلوت ظاهر شد به طرفی برو که مانعی جلوت نباشه.
مثال اول - اگر جلوت ماشین نیست سرعتت رو بیشتر کن ولی اگر ماشین هست، اگر سمت چپت ماشین نیست سرعتت رو کمتر کن و به سمت چپ برو وگرنه سرعتت رو کم کن و به سمت راست برو. برنامه این قانون این شکلیه:
if(Joloye moshine Computer mashini nist)
{
Sorate mashine Computero bishtar kon;
}
else
{
if(Samte chape mashine Computer mashini nist)
{
Sorate mashine Computero kam kon;
Boro be samte chap;
}
else
{
Sorate mashine Computero kam kon;
Boro be samte rast;
}
}
با همین یه قانون می بینی که کامپیوتر شروع میکنه به بازی خوب. البته یه عالمه تغییر میشه توی این قانون داد تا بهتر و بهترش کرد مثلا به گرفتن جایزه ها هم توجه کرد:
مثال دوم -
if(Joloye moshine Computer mashini nist)
{
if(Jayezei dar samte chape mashine computer hast)
{
Sorate mashine computero kam kon;
Va Boro be samte chap;
}
else
{
if(Jayezei dar samte chape mashine computer hast)
{
Sorate mashine computero kam kon;
Va Boro be samte rast;
}
else
{
Sorate mashine computero ziad kon;
}
}
}
else
{
if(Samte chape mashine computer mashini nist)
{
Sorate mashine computero kam kon;
Va Boro be samte chap;
}
else
{
Sorate mashine computero kam kon;
Va Boro be samte rast;
}
}
به همین ترتیب میتونی بسته به خلاقیتت بازی کامپیوتر رو هوشمندتر و هوشمندتر کنی مثلا حتی اگه جلوی کامپیوتر ماشینی هم هست بازم اول به چپ نره بلکه به طرف جایزه بره اگه جایزه ای در صفحه هست. یا بجای اینکه هی سرعتشو کم و زیاد کنه، سرعتش رو همواره در حدی نگه داره که با ظاهر شدن یه مانع بتونه بدون نیاز به کم کردن سرعتش، از سر راه اون مانع بره کنار و ... هر کدوم از این قوانین بازی رو سخت تر میکنن و میتونی اصلا اول بازی در صفحه تنظیمات، میزان سختی بازی رو از بازیکن بپرسی تا بسته به شدت سختی دلخواه بازیکن، از دستورات هوشمندتر یا خنگ تری برای کنترل ماشین کامپیوتر استفاده کنی.