PDA

View Full Version : سوال: هوش مصنوعی بازی دوز



jafar2012
جمعه 04 آذر 1390, 23:33 عصر
کسی می تونه درباره ی هوش مصنوعی بازی دوز کمکم کنه منظورم بازی با کامپیوتره

Cancer
پنج شنبه 10 آذر 1390, 10:01 صبح
سلام
من زیاد در مورد این بازی فکر نکردم.
ولی
حواست باشه که حالات تکراری رو چک نکنی.
مثلا:
برای شروع فقط 3 تا حالته.
باقیه حالات شروع حالت rotate شده ی همین سه حالتن.
....
یه چی دیگه:
چک کردن حالات رو بی خیال. وقت تلفیه.
بجای بیا چند تا if بزار و بهش دوز بازی کردن رو یاد بده.
چون تعداد حالات دوز اون قدر زیاد نیست.
.....
اگه برای استادی، درسی یا یه همچین چیزی می نویسی که هیچ.
else
بی خیال دوز.
برو یه چیزه خفن تر بنویس مثلاً یه بازی دیگه
دوز خیلی ضعیفه.

mr-adler
جمعه 11 آذر 1390, 13:20 عصر
سلام
خب میتونیم با 8 تا دستور if به برنامه بگیم وقتی 2 تا مهره پشت سر هم بود سومیش رو خودش بزاره و برنده بشه.اما...
1.بازی شروع شده و اولین مهره رو برنامه گذاشته از کجا بدونه مهره دوم رو کجا باید قرار بده.در واقع منظورم زمانی هست که هیچ دو مهره ای پشت سر هم نباشند(اوایل بازی)
2.
برای شروع فقط 3 تا حالته.
باقیه حالات شروع حالت rotate شده ی همین سه حالتن.
اگه امکانش براتون هست چند خط مختصر و ساده در رابطه با این موضوع توضیح بدید و یه نمونه سورس ساده قرار بدید.
در ضمن من خیلی تلاش کردم با حلقه ها این کارو انجام بدم اما راه به جایی نبردم...
راهنمایی کنید ممنون میشم...

Cancer
شنبه 12 آذر 1390, 15:24 عصر
سلام
من برنامه این رو ننوشتم.
اما:
چیزایی که تو کتابا نوشتن تعداد حالات اولیه 9تا
78677
خب حالا خوب نگاه کنی می بینی که 1 و 3 و 7 و 9 حالت یک حالت هستند فقط rotate شدن.
و همین طور 2 و 4 و 6 و 8 هم یک حالت.
و نهایتاً 5 هم یک حالت.
پس تا اینجا ما از حالت های تکراری جلوی گیری کریدم به همین ترتیب مراحل بعدی را هم می توانیم از حالات تکراری جلوگیری کنیم.
.............
ولی به نظر من اگه به برنامه دوز بازی کردن رو یاد بدین زودتر به نتیجه می رسین.
تاره در حالت هایی که کاربر کمی باهوش باشد و از روش های طرح ریزی استفاده کند هم حالات معلوم است (اگه کمی دوز بازی کنید پیدا می کنید) شما می توانید با یک if از این حملات جلوگیری کنید.
بدین وسیله شما میتوانید حتی تضمین کنید که برنامه شما می توانید همیشه برنده یا مساوی بازی را به پایان برساند (هیچ وقت بازنده نباشد).

در کل اگه برای خودتون می خواین بنویسین بنظره من بی خیالش.
دنباله یه چیزه قوی تر برین، حتی چیزی که توی ذهنتون جا نگیره. این طوری شیب پیشرفتتون تندتره.
هر چیزی رو هم زود قبول نکنید، همیشه راه بهتری هم هست.:چشمک:

mr-adler
یک شنبه 13 آذر 1390, 21:51 عصر
سلام

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

تشکر ....

amir_saniyan
یک شنبه 13 آذر 1390, 22:21 عصر
شما باید الگوریتم جستجو (جستجوی اول سطح یا جستجوی عمقی) رو در مباحث هوش‌مصنوعی مطالعه کنید.

jafar2012
دوشنبه 14 آذر 1390, 12:22 عصر
hi
من اين بازي روقرارشده به عنوان پروژه تحويل بدم من اين سورس ها روگيراوردم توجه كنيد
سورس انتخاب بازي كن و چك كردن پايان بازي
If i < 9 Then
If a = 1 Then
sender.Text = "X"
a = 0
sender.Enabled = False
sender.BackColor = Color.NavajoWhite
Else
sender.Text = "0"
a = 1
sender.Enabled = False
sender.BackColor = Color.LightYellow
End If
i = i + 1
End If
سورس چك كردن برد وباخت
If b1.Text = "X" And b2.Text = "X" And b3.Text = "X" Then
MsgBox("Player 1 Win")
clear()
ElseIf b1.Text = "X" And b4.Text = "X" And b7.Text = "X" Then
MsgBox("Player 1 Win")
clear()
ElseIf b1.Text = "X" And b5.Text = "X" And b9.Text = "X" Then
MsgBox("Player 1 Win")
clear()
ElseIf b3.Text = "X" And b5.Text = "X" And b7.Text = "X" Then
MsgBox("Player 1 Win")
clear()
ElseIf b3.Text = "X" And b6.Text = "X" And b9.Text = "X" Then
MsgBox("Player 1 Win")
clear()
ElseIf b7.Text = "X" And b8.Text = "X" And b9.Text = "X" Then
MsgBox("Player 1 Win")
clear()
ElseIf b2.Text = "X" And b5.Text = "X" And b8.Text = "X" Then
MsgBox("Player 1 Win")
clear()
ElseIf b4.Text = "X" And b5.Text = "X" And b6.Text = "X" Then
MsgBox("Player 1 Win")
clear()
End If

If b1.Text = "0" And b2.Text = "0" And b3.Text = "0" Then
MsgBox("Player 2 Win")
clear()
ElseIf b1.Text = "0" And b4.Text = "0" And b7.Text = "0" Then
MsgBox("Player 2 Win")
clear()
ElseIf b1.Text = "0" And b5.Text = "0" And b9.Text = "0" Then
MsgBox("Player 2 Win")
clear()
ElseIf b3.Text = "0" And b5.Text = "0" And b7.Text = "0" Then
MsgBox("Player 2 Win")
clear()
ElseIf b3.Text = "0" And b6.Text = "0" And b9.Text = "0" Then
MsgBox("Player 2 Win")
clear()
ElseIf b7.Text = "0" And b8.Text = "0" And b9.Text = "0" Then
MsgBox("Player 2 Win")
clear()
ElseIf b2.Text = "0" And b5.Text = "0" And b8.Text = "0" Then
MsgBox("Player 2 Win")
clear()
ElseIf b4.Text = "0" And b5.Text = "0" And b6.Text = "0" Then
MsgBox("Player 2 Win")
clear()
End If
If i = 9 Then
MsgBox("Tie Has Been Created...!")
clear()
End If
حالاسوال من اينه چطوري بدون اينكه بخام داخل هر label اين كدها رابنويسم هر دو سورس چك بشند لطفا اگر مي خاهيد توضيح بدهيد كامل توضيح دهيد زبان برنامه نويسي كه باهاش كارمي كنم vb.net است درضمن اين clear() براي چيه ياچرابايدباشه
از همتون ممنونم:تشویق: