خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را


پروژه دانشجویی رایگان : بازی جورچین

پروژه دانشجویی رایگان : بازی جورچین
نویسنده : امیر انصاری
در این آموزش یک پروژه بازی تحت ویندوز که با زبان برنامه نویسی VB.NET طراحی شده است ارائه می دهیم. البته توضیحاتی نیز در مورد کدهای مختلف این پروژه و الگوریتم های آن ارائه می دهیم تا اگر تمایل داشتید با هر زبان برنامه نویسی دیگر نیز این پروژه را طراحی کنید، امکانش را داشته باشید. در قدم اول از فایل اجرایی برنامه و چگونگی اجرای برنامه شروع می کنیم.

سیستم یکپارچۀ سازمانی راهکار



دانلود پروژه


برای دانلود سورس کد این پروژه بر روی لینک زیر کلیک کنید :


آموزش کار با بازی جورچین


بعد از اینکه این بازی را اجرا کنید صفحه زیر را خواهید دید که محیط اصلی اجرای بازی جورچین می باشد.

پروژه دانشجویی رایگان : بازی جورچین
بر روی منوی "بازی جورچین" کلیک کنید و سپس "مرحله یک" را انتخاب نمایید.

پروژه دانشجویی رایگان : بازی جورچین
محیط اجرای بازی نمایش داده می شود.

پروژه دانشجویی رایگان : بازی جورچین
در قسمت "انتخاب تصویر" می توانید از بین گزینه های موجود تصویر دیگری را نیز انتخاب نمایید.

پروژه دانشجویی رایگان : بازی جورچین
با کلیک بر هر روی هر تکه از پازل، آن تکه به سمت خانه خالی کنار آن حرکت می کند و در واقع جابجا می شود. در نهایت با انجام این جابجایی ها باید تصویر را مشابه راهنمای آن که در سمت راست آمده است، تکمیل نمایید.

پروژه دانشجویی رایگان : بازی جورچین
بعد از اینکه تصویر را تکمیل کنید، به صورت اتوماتیک آن یک تکه خالی هم پر می شود و آهنگی برای شما پخش می شود. همچنین رکورد زمانی شما نیز در پایین صفحه درج می شود.

پروژه دانشجویی رایگان : بازی جورچین
بعد از اتمام بازی می توانید با کلیک بر روی دکمه "بازی جدید"، بازی را مجددا از نو شروع کنید.

پروژه دانشجویی رایگان : بازی جورچین

کد مربوط به ایجاد بازی جدید


برای چینش تصاویر از یکسری Label استفاده کرده ایم و در واقع به تعداد 9 کنترل Label دقیقا در خانه های 1 تا 9 چیده ایم. هنگامیکه در برنامه می خواهیم محل تصاویر را تعیین کنیم و یا تصاویر را حرکت بدهیم، از ویژگی Location این Label ها استفاده کرده ایم.

پروژه دانشجویی رایگان : بازی جورچین
به کدهای زیر توجه کنید، رویه ResetPicturesPositions کار ایجاد یک بازی جدید را انجام می دهد :

Private Sub ResetPicturesPositions()
'ایجاد بازی جدید
pic1.Location = lbl8.Location
pic2.Location = lbl7.Location
pic3.Location = lbl6.Location
pic4.Location = lbl5.Location
pic5.Location = lbl4.Location
pic6.Location = lbl3.Location
pic7.Location = lbl2.Location
pic8.Location = lbl1.Location
pic1.Visible = True
pic2.Visible = True
pic3.Visible = True
pic4.Visible = True
pic5.Visible = True
pic6.Visible = True
pic7.Visible = True
pic8.Visible = True
lbl1.Tag = "0"
lbl2.Tag = "0"
lbl3.Tag = "0"
lbl4.Tag = "0"
lbl5.Tag = "0"
lbl6.Tag = "0"
lbl7.Tag = "0"
lbl8.Tag = "0"
lbl9.Tag = "1"
PicHelp.Left = (lbl3.Left + lbl3.Width) + 10
lblSecond.Text = "0"
Timer1.Start()
End Sub

همانطور که می بینید، به این شکل موقعیت PictureBox ها را از روی موقعیت Label ها گرفته ایم. ضمن اینکه از ویژگی Tag در کنترلهای Label نیز در طول بازی استفاده کرده ایم. در بخشی از این کد کنترل Timer را آغاز می کنیم.

کد مربوط به کلیک روی تصاویر


تکه کد زیر، هنگام کلیک بر روی تصاویر فراخوانی می گردد :

Private Sub pic1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles pic1.Click, pic2.Click, pic3.Click, pic4.Click, pic5.Click, pic6.Click, pic7.Click, pic8.Click
'------------------------------------
'حركت تصاوير به جاي خالي
Dim nullLabel As Label = ReturnNullLabel()
If IsPicCanMove(sender) = True Then
playMoveSound("WHOOSH.WAV")
nullLabel.Tag = "0"
Dim AcoardingLabel As Label = ReturnAcoardinLabel(sender)
AcoardingLabel.Tag = "1"
sender.location = nullLabel.Location
End If
IsGameWin()
'--------------------------------
End Sub

نکته اول در مورد این تکه کد اینست که با استفاده از فراخوانی رویداد Click سایر کنترل های PictureBox همه را در یک رویه مجتمع کرده ایم. یعنی کاربر روی هر کدام از تصاویر که کلیک کند برنامه شما وارد این تکه کد می شود.

در خط اول این کد یک کنترل Label با نام nullLabel معرفی شده است و توسط یک Function با نام ReturnNullLabel مقدار دهی شده است. بیایید نگاهی به فانکشن مربوطه بیندازیم :

Private Function ReturnNullLabel() As Label
'کنترل برچسب خالي را برميگرداند
If lbl1.Tag = 1 Then
Return lbl1
Exit Function
End If
'--------------------------
If lbl2.Tag = 1 Then
Return lbl2
Exit Function
End If
'--------------------------
If lbl3.Tag = 1 Then
Return lbl3
Exit Function
End If
'--------------------------
If lbl4.Tag = 1 Then
Return lbl4
Exit Function
End If
'--------------------------
If lbl5.Tag = 1 Then
Return lbl5
Exit Function
End If
'--------------------------
If lbl6.Tag = 1 Then
Return lbl6
Exit Function
End If
'--------------------------
If lbl7.Tag = 1 Then
Return lbl7
Exit Function
End If
'--------------------------
If lbl8.Tag = 1 Then
Return lbl8
Exit Function
End If
'--------------------------
If lbl9.Tag = 1 Then
Return lbl9
Exit Function
End If
'--------------------------
Return Nothing
End Function

فانکشن ReturnNullLabel کار ساده ای را انجام می دهد. این فانکشن تک تک کنترلهای Label را بررسی می کند و هر کدام از آنها که مقدار ویژگی تگ آن برابر با 1 باشد، برمیگرداند.

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

Private Function IsPicCanMove(ByVal picName As PictureBox) As Boolean
'اين روال نام كنترل تصوير را مي گيرد و مشخص مي كند كه آيا مي تواند حركت كند يا نه
Dim acordingLabel As Label
acordingLabel = ReturnAcoardinLabel(picName) 'برچسب فعال
Dim NullLabel As Label = ReturnNullLabel() 'برچسب خالي
Select Case acordingLabel.Name
Case lbl1.Name '2 , 4
'----------------------------------
If NullLabel.Name = lbl2.Name Then
Return True
Exit Function
End If
'----------------------------------
If NullLabel.Name = lbl4.Name Then
Return True
Exit Function
End If
'----------------------------------
Case lbl2.Name '1,3,5
'----------------------------------
If NullLabel.Name = lbl1.Name Then
Return True
Exit Function
End If
'----------------------------------
If NullLabel.Name = lbl3.Name Then
Return True
Exit Function
End If
'----------------------------------
If NullLabel.Name = lbl5.Name Then
Return True
Exit Function
End If
'----------------------------------
Case lbl3.Name '2,6
'----------------------------------
If NullLabel.Name = lbl2.Name Then
Return True
Exit Function
End If
'----------------------------------
If NullLabel.Name = lbl6.Name Then
Return True
Exit Function
End If
'----------------------------------
Case lbl4.Name '1,5,7
'----------------------------------
If NullLabel.Name = lbl1.Name Then
Return True
Exit Function
End If
'----------------------------------
If NullLabel.Name = lbl5.Name Then
Return True
Exit Function
End If
'----------------------------------
If NullLabel.Name = lbl7.Name Then
Return True
Exit Function
End If
'----------------------------------
Case lbl5.Name '2,4,6,8
'----------------------------------
If NullLabel.Name = lbl2.Name Then
Return True
Exit Function
End If
'----------------------------------
If NullLabel.Name = lbl4.Name Then
Return True
Exit Function
End If
'----------------------------------
If NullLabel.Name = lbl6.Name Then
Return True
Exit Function
End If
'----------------------------------
If NullLabel.Name = lbl8.Name Then
Return True
Exit Function
End If
'----------------------------------
Case lbl6.Name '5,3,9
'----------------------------------
If NullLabel.Name = lbl5.Name Then
Return True
Exit Function
End If
'----------------------------------
If NullLabel.Name = lbl3.Name Then
Return True
Exit Function
End If
'----------------------------------
If NullLabel.Name = lbl9.Name Then
Return True
Exit Function
End If
'----------------------------------
Case lbl7.Name '8,4
'----------------------------------
If NullLabel.Name = lbl8.Name Then
Return True
Exit Function
End If
'----------------------------------
If NullLabel.Name = lbl4.Name Then
Return True
Exit Function
End If
'----------------------------------
Case lbl8.Name '7,5,9
'----------------------------------
If NullLabel.Name = lbl7.Name Then
Return True
Exit Function
End If
'----------------------------------
If NullLabel.Name = lbl5.Name Then
Return True
Exit Function
End If
'----------------------------------
If NullLabel.Name = lbl9.Name Then
Return True
Exit Function
End If
'----------------------------------
Case lbl9.Name '8,6
'----------------------------------
If NullLabel.Name = lbl8.Name Then
Return True
Exit Function
End If
'----------------------------------
If NullLabel.Name = lbl6.Name Then
Return True
Exit Function
End If
'----------------------------------
End Select
'------------------------------------
Return False
End Function

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

Private Sub playMoveSound(ByVal SoundFileName As String)
'پخش اهنگ موقع حركت
Try
My.Computer.Audio.Play(Application.StartupPath & "\Snd\" & SoundFileName, AudioPlayMode.WaitToComplete)
Catch ex As Exception

End Try
End Sub

فانکشن playMoveSound با استفاده از متد Play در Audio که جزء کلاسهای پیش فرض موجود در دات نت می باشد، عملیات پخش صدا را انجام می دهد. فایلهای صوتی مربوطه در مسیر برنامه موجود می باشند.

بعد از انجام کارهای بالا ابتدا ویژگی Tag مربوط به کنترل خالی با تصویر فعلی که قرار است جابجا شود، تغییر می کند، تا در مراجعات بعدی تشخیص کنترل Label خالی توسط نرم افزار ساده تر صورت پذیرد. سپس با استفاده از ویژگی Location محل قرار گیری تصویر به کنترل خالی منتقل می شود.

در هر بار کلیک شما بر روی تصاویر رویه IsGameWin فراخوانی می شود. کار این رویه اینست که بررسی کند که آیا بازی خاتمه یافته است و همه تصاویر به درستی چیده شده اند یا نه. در صورت تکمیل بازی صدای نهایی برنده شدن در بازی پخش می گردد و تصویر نیز کامل می شود.

Private Sub IsGameWin()
If pic1.Location = lbl1.Location And pic2.Location = lbl2.Location And _
pic3.Location = lbl3.Location And pic4.Location = lbl4.Location _
And pic5.Location = lbl5.Location And pic6.Location = lbl6.Location _
And pic7.Location = lbl7.Location And pic8.Location = lbl8.Location Then
'----------------------------------
cboPics.Enabled = False
PicHelp.Location = lbl1.Location
PicHelp.BringToFront()
Timer1.Stop()
Application.DoEvents()
playMoveSound("LoopyMusic.wav")
cboPics.Enabled = True
End If
End Sub


نمایش دیدگاه ها (0 دیدگاه)

دیدگاه خود را ثبت کنید:

انتخاب تصویر ویرایش حذف
توجه! حداکثر حجم مجاز برای تصویر 500 کیلوبایت می باشد.


دسته بندی مطالب خوش آموز