پروژه: بازی حدس عدد
پروژه عملی: بازی حدس عدد با حلقه، شرط، عدد تصادفی و شمارش تلاش.
پروژه ۲: بازی حدس عدد
بازی کلاسیک: کامپیوتر عددی انتخاب میکند، شما حدس میزنید، برنامه راهنمایی میکند (بزرگتر/کوچکتر) تا پیدا شود!
نیازمندیها
- عدد تصادفی بین ۱ تا ۱۰۰
- حدسهای آماده (شبیهسازی بازیکن)
- راهنمایی: «بزرگتر» یا «کوچکتر»
- شمارش تلاشها و اعلام پیروزی
عدد تصادفی در Go
import "math/rand"
rand.Intn(100) ← ۰ تا ۹۹
rand.Intn(100) + 1 ← ۱ تا ۱۰۰ ✓
منطق بازی
target := rand.Intn(100) + 1
attempts := 0
for _, guess := range guesses {
attempts++
switch {
case guess < target:
fmt.Println("بزرگتر!")
case guess > target:
fmt.Println("کوچکتر!")
default:
fmt.Println("آفرین! پیدا شد")
}
}
جستجوی دودویی — بازیکن هوشمند!
بهترین راهبرد حدس زدن: همیشه وسط بازه را حدس بزنیم:
low, high := 1, 100
for {
guess := (low + high) / 2 ← وسط بازه
if guess == target {
break ← پیدا شد!
} else if guess < target {
low = guess + 1 ← نیمه بالایی
} else {
high = guess - 1 ← نیمه پایینی
}
}
جستجوی دودویی عدد ۱ تا ۱۰۰ را حداکثر در ۷ تلاش پیدا میکند (log₂ 100 ≈ 7) — در مقابل حدس تصادفی که میانگین ~۵۰ تلاش!
ساختار پروژه
func playGuessGame(target, maxAttempts int) int
← تعداد تلاش را برمیگرداند
func binarySearchGuess(target int) int
← بازی با راهبرد دودویی
نکات آموزشی
- math/rand: تولید اعداد تصادفی
- حلقه بینهایت با break: تا زمان پیروزی
- switch بدون عبارت: مقایسه سهگانه
- الگوریتم دودویی: کارایی log n
پیشنهاد توسعه
- سطح سختی (بازههای مختلف)
- محدودیت تعداد تلاش
- امتیازدهی بر اساس سرعت
- ورودی واقعی کاربر با bufio (روی سیستم)
تبریک! با پایان این پروژه، دوره کامل Go را به پایان رساندید! 🐹🎉
این مبحث بخشی از دوره آموزش کامل گو است.