PDA

View Full Version : سوال: بهم ريختن پازل براي شروع بازي مجدد



nightday
جمعه 03 دی 1389, 14:54 عصر
من مي خوام يك دكمه هاي يك پازل رو بهم بريزم. انتخاب دكمه ها به صورت رندمي باشه. بعد لوكيشن و ليبل دكمه ها رو عوض كنه.
تعداد دكمه هاي پازل رو هم بر اساس تعداد سطر و ستوني كه توي تكست باكس مي ديم، درست مي كنه
اين كد رو نوشتم ولي درست نيست.
اگه كسي روش ديگه اي داره به هم بگه.
مي شه به من كمك كنيد؟



a = CInt(TextBox1.Text) * (TextBox2.Text) - 1
ReDim mylab(a)
Dim obj1, obj2 As New Object
Dim i As Integer
For i = 0 To a
mylab(i) = i + 1
Next
For i = 0 To a

Dim r1 As New Random

q = r1.Next(0, a)

w = i
n1 = mylab(q)
n2 = mylab(w)
xn1 = myloc(0, n1)
xn2 = myloc(0, n2)
yn1 = myloc(1, n1)
yn2 = myloc(1, n2)

For Each obj1 In Panel1.Controls
If obj1.text = CStr(n1) Then
obj1.location = New Point(xn2, yn2)

End If
Next
For Each obj2 In Panel1.Controls
If obj2.text = CStr(n2) Then
obj2.location = New Point(xn1, yn1)

End If
Next


mylab(q) = n2
mylab(w) = n1
Next

End Sub

shask00l
جمعه 03 دی 1389, 15:39 عصر
w = i
n1 = mylab(q)
n2 = mylab(w)
xn1 = myloc(0, n1)
xn2 = myloc(0, n2)
yn1 = myloc(1, n1)
yn2 = myloc(1, n2)

1. در مورد این بخش از کدت بیشتر توضیح بده . myloc چیه ؟ اگه برای ذخیره ی موقعیت اشیاء بکار میره ساختارش چطوریه .
2. در مورد مدل پازل هم کمی بگو . از خانواده 8 پازن و این جور چیزاست یا فرق میکنه ؟
3. تا جایی که من از کدت فهمیدم هدفت اینه که یک توزیع نا مرتب از عناصر آرایه mylab ایجاد کنی . اگه هدفت اینه روش های ساده تری هم هست .

پ.ن : ضمنا بهتره کد هایی رو که میخای پست کنی با تگ code پست کنی تا مرتب بشه . :چشمک:

omid-vbAuto
جمعه 03 دی 1389, 16:12 عصر
من مي خوام يك دكمه هاي يك پازل رو بهم بريزم. انتخاب دكمه ها به صورت رندمي باشه. بعد لوكيشن و ليبل دكمه ها رو عوض كنه.
تعداد دكمه هاي پازل رو هم بر اساس تعداد سطر و ستوني كه توي تكست باكس مي ديم، درست مي كنه
اين كد رو نوشتم ولي درست نيست.
اگه كسي روش ديگه اي داره به هم بگه.
مي شه به من كمك كنيد؟



a = CInt(TextBox1.Text) * (TextBox2.Text) - 1
ReDim mylab(a)
Dim obj1, obj2 As New Object
Dim i As Integer
For i = 0 To a
mylab(i) = i + 1
Next
For i = 0 To a


Dim r1 As New Random


q = r1.Next(0, a)


w = i
n1 = mylab(q)
n2 = mylab(w)
xn1 = myloc(0, n1)
xn2 = myloc(0, n2)
yn1 = myloc(1, n1)
yn2 = myloc(1, n2)


For Each obj1 In Panel1.Controls
If obj1.text = CStr(n1) Then
obj1.location = New Point(xn2, yn2)


End If
Next
For Each obj2 In Panel1.Controls
If obj2.text = CStr(n2) Then
obj2.location = New Point(xn1, yn1)


End If
Next



mylab(q) = n2
mylab(w) = n1
Next


End Sub



اگه نمونه برنامتون رو بذارین شاید بتونم کمکتون کنم.

nightday
جمعه 03 دی 1389, 16:12 عصر
myloc(0,n) 1 مختصات xباتن و myloc(1,n) 2 مختصات y رو نشون مي ده. هر باتني يك لوكيشن و يك ليبل داره. كه با جابجايي اينها بهم مي ريزه.
خانواده 8 پازن نمي دونم چيه. اما اينطوريه كه يكسري باتن برحسب تكست باكس 1 و 2 چيده مي شه و لبيل مي خورده به ترتيب. براي اينكه ترتيب اين ها رو بهم بريزم نمي دونم چه بايد بكنم
شما راه حلي داريد كه بهم بگيد؟

پ.ن: مرسي كه گفتيد. بلد نبودم آخه:خجالت:

nightday
جمعه 03 دی 1389, 16:24 عصر
اينم نمونه برنامه
كمك كنيد:افسرده:64032

omid-vbAuto
جمعه 03 دی 1389, 16:38 عصر
اينم نمونه برنامه
كمك كنيد:افسرده:64032

دوست عزیزززززززززززززززززززززز ززززز نمونه برنامتون باز نمیشه!.ولی من EXE اون رو باز کردم و دیدم که یه تعداد دکمه می سازه و وقتی می خواهی قاطیش کنی ایراد میگره .آره؟

nightday
جمعه 03 دی 1389, 16:50 عصر
64039
اين كدشه.
اره نمي تونم بهم بريزم

shask00l
یک شنبه 05 دی 1389, 12:25 عصر
خب . فکر کنم شما تصمیم به پیاده سازی همین چیزی که گفتم دارید . البته 8 پازل نه . n پازل. برای این کار نیاز ندارید که کل کلیدها رو جابجا کنید . اصلا کلیدی نباید جابجا بشه . فرض کنید nXm کلید داریم . این میشه طول یک آرایه خطی . این کارو خودتون کردین .
برای تکمیل کردن کار باید یک خونه به عنوان خونه ی خالی مشخص کنید . این یعنی انتخاب یک خونه یا یک عدد شانسی بین اعداد 0 تا nXm .
این خونه رو که پیدا کردن hide کنید . بعد آرایه بهم ریختتون رو به ترتیب بریزید توی text این دکمه ها . برای تغییر مکان خانه ی خالی هم کافیه کلید جدید که خونه خالی قراره به اونجا منتقل بشه رو مخفی کنید و text اون کلید رو به کلید خالی قبلی منتقل کنید .

اگه توضیح بیشتر خاستی بگو .
موفق باشید