ورود

View Full Version : پازل اعداد



سيد مجتبي هاشمي
یک شنبه 03 آبان 1388, 19:29 عصر
دوستان عزیز سلام. من میخوام یه برنامه پازل بنویسم(با دلفی 7) که 9 یا 15 خانه داشته باشه و در داخل خانه های اون اعداد 1 تا 8 یا 1 تا 14 قرار داده بشه و یک خانه خالی هم داشته باشه و پس از به هم ریختن آنها با حرکت دادن اعداد آنها رو مرتب کنیم. گفتند باید از الگوریتمهای هوش مصنوعی و گرافها استفاده کنم. در این مورد تا حالا کار نکردم.
لطفا هر کدوم از دوستان که میتونن بهم کمک کنند تا این برنامه رو بنویسم. یا اگر کد آماده ای دارن اینجا بذارن تا بتونم ازش استفاده کنم. ممنون.

hadisalahi2
دوشنبه 04 آبان 1388, 08:51 صبح
بهتره توی گوگل یه جستجو بزنی ، خیلی سریعتر میتونی اون چیزی رو که میخوای بدست بیاری
در ضمن در همین سایت در مورد پازل قبلا بحث شده ، فقط کافیه یک جستجو انجام بدی.
یا حق

AliReza Vafakhah
دوشنبه 04 آبان 1388, 13:20 عصر
دوستان عزیز سلام. من میخوام یه برنامه پازل بنویسم یا اگر کد آماده ای دارن اینجا بذارن تا بتونم ازش استفاده کنم. ممنون.

این دیگه کپی پیست هست و اصلا خوب نیست، اگه می خواهید خودتون بنویسید از آرایه های 2 بعدی استفاده کنید .

موفق باشید

سيد مجتبي هاشمي
دوشنبه 04 آبان 1388, 18:46 عصر
این دیگه کپی پیست هست و اصلا خوب نیست


منظورم این بود که اگه کسی کدی داره اینجا بذاره تا با بررسی کدهاش چیزی از اون یاد بگیرم.
ممنون از توجهتون.

دلفــي
سه شنبه 05 آبان 1388, 09:30 صبح
منظورم این بود که اگه کسی کدی داره اینجا بذاره تا با بررسی کدهاش چیزی از اون یاد بگیرم.
ممنون از توجهتون.


این یه نمونه از برنامه ای هست که در بالا توضیح دادید .

khoshblagh
سه شنبه 05 آبان 1388, 10:58 صبح
این یه نمونه از برنامه ای هست که در بالا توضیح دادید .
با سلام
ظاهرا فایل ضمیمه ویرس دارد! متشکرم

سيد مجتبي هاشمي
سه شنبه 05 آبان 1388, 14:35 عصر
این یه نمونه از برنامه ای هست که در بالا توضیح دادید .

ممنون از فایلی که گذاشتین، ولی این فقط فایل اجرایی بود. کدش رو نداشتین؟

در ضمن فایلتون ویروس هم نداشت. با Eset Smart Security 4 به روز شده تستش کردم.

سيد مجتبي هاشمي
چهارشنبه 20 آبان 1388, 09:57 صبح
دوستان كسي راهنمايي جديدي نداره كه من بتونم اين پازل رو طراحي كنم؟ خيلي ضروريه !!!!!!!!

دلفــي
پنج شنبه 21 آبان 1388, 09:30 صبح
دوستان كسي راهنمايي جديدي نداره كه من بتونم اين پازل رو طراحي كنم؟ خيلي ضروريه !!!!!!!!

كار زياد سختي نيست !

شما مي تونيد از 14 تا Lebel استفاده كرده و با مديريت Left و Top اونا اين بازي رو بنويسيد .

سيد مجتبي هاشمي
پنج شنبه 21 آبان 1388, 10:47 صبح
كار زياد سختي نيست !

شما مي تونيد از 14 تا Lebel استفاده كرده و با مديريت Left و Top اونا اين بازي رو بنويسيد .

حرف شما درسته ولي چه طوري بفهمم كه پازل درست شده يا اينكه هنوز به هم ريخته است؟

Felony
پنج شنبه 21 آبان 1388, 10:55 صبح
حرف شما درسته ولي چه طوري بفهمم كه پازل درست شده يا اينكه هنوز به هم ريخته است؟
بر اسا مختصات و نام عکستون به این صورت که میگی اگر Image1 در مختصات Point1 و Image2 در Point2 و الی آخر ... بود یعنی پازل درست شده .

دلفــي
پنج شنبه 21 آبان 1388, 12:45 عصر
حرف شما درسته ولي چه طوري بفهمم كه پازل درست شده يا اينكه هنوز به هم ريخته است؟

شما ابتدا بايد Label ها رو به صورت صحيح در جاي خودشون قرار بدي در اين صورت Left و Top اصلي Label ها رو در دست داري ؛ سپس به صورت رندم اونها رو در روي فرمت بچين ،
در هنگام بازي كاربر كافيه شما فقط مقادير Left و Top در اون لحظه رو با مقادير بدست اومده در ابتداي برنامه مقايسه كني ، اگه باهم برابر بودن كار تمومه يا به عبارتي : Game Over

AliReza Vafakhah
پنج شنبه 21 آبان 1388, 13:00 عصر
راه دیگه ای هم هست نیاز به حرکت کلیده ها ندارید ! می تونید فقط Caption آنها را جابه جا کنید و سپس بررسی کنید که آیا Button1.Caption=X هست

سيد مجتبي هاشمي
شنبه 30 آبان 1388, 17:04 عصر
راه دیگه ای هم هست نیاز به حرکت کلیده ها ندارید ! می تونید فقط Caption آنها را جابه جا کنید و سپس بررسی کنید که آیا Button1.Caption=X هست

دوست عزیز لطف میکنید بیشتر توضیح بدین؟

سيد مجتبي هاشمي
شنبه 30 آبان 1388, 17:11 عصر
شما ابتدا بايد Label ها رو به صورت صحيح در جاي خودشون قرار بدي در اين صورت Left و Top اصلي Label ها رو در دست داري ؛ سپس به صورت رندم اونها رو در روي فرمت بچين

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

سيد مجتبي هاشمي
شنبه 30 آبان 1388, 17:16 عصر
با سلام. دوستان اگه بخواهیم این پازل رو برای تصاویر طراحی بکنیم باید چی کار بکنیم؟

Felony
شنبه 30 آبان 1388, 17:57 عصر
با سلام. دوستان اگه بخواهیم این پازل رو برای تصاویر طراحی بکنیم باید چی کار بکنیم؟

به جای دکمه ها از Image استفاده کنید و توسط متد Canvas.CopyRect عکس مورد نظر رو به تعداد مورد نیاز تقسیم کنید و بریزید داخل Image ها .

sobhangh
شنبه 30 آبان 1388, 18:31 عصر
دوست عزیز برنامه رو است گذاشتم.
یک راندم بزنی راه می افته
امیدوارم مشکلت رو حل کنه

دلفــي
شنبه 30 آبان 1388, 18:36 عصر
با تشکر از شما.
من نمونه برنامه رو که نوشتم اینجا میذارم لطفا ببینید و مشکلاتش رو بهم بگید.
این پازل همه کارها رو انجام میده، فقط نتونستم با کلیک روی دکمه شروع اعداد رو بهم بریزم و همه دکمه ها سر جای اصلی خودشون هستن. حالا میخوام بدونم چه طور باید این دکمه ها رو بهم بریزم. در صورت امکان برای راهنمایی یک نمونه کد بنویسید.
ممنون از شما دوستان.
نکته: پس از وارد کردن نام باید دکمه اینتر رو فشار بدین چون هیچ دکمه دیگه ای کار نمیکنه فقط دکمه اینتر.

از کد زیر استفاده کنید البته این فقط یه قسمت از کل کد است ، بقیه به عهده خودتون !



ListBox1.Items.Clear;
while ListBox1.Items.Count < 14 do
begin
Randomize;
i := RandomRange(1,15);
if ListBox1.Items.IndexOf(IntToStr(i)) = -1 then
ListBox1.Items.Add(IntToStr(i));
end;
for I := 0 to ListBox1.Count - 1 do
begin
if ListBox1.Items.Strings[i] = '1' then
begin Button1.Top := 2; Button1.Left := 2; end else
if ListBox1.Items.Strings[i] = '2' then
begin Button2.Top := 42; Button2.Left := 2; end else
if ListBox1.Items.Strings[i] = '3' then
begin Button3.Top := 82; Button3.Left := 2; end else
if ListBox1.Items.Strings[i] = '4' then
begin Button4.Top := 122; Button4.Left := 2; end else
if ListBox1.Items.Strings[i] = '5' then
begin Button5.Top := 2; Button5.Left := 42; end else
if ListBox1.Items.Strings[i] = '6' then
begin Button6.Top := 42; Button6.Left := 42; end else
if ListBox1.Items.Strings[i] = '7' then
begin Button7.Top := 82; Button7.Left := 42; end else
if ListBox1.Items.Strings[i] = '8' then
begin Button8.Top := 122; Button8.Left := 42; end else
if ListBox1.Items.Strings[i] = '9' then
begin Button9.Top := 2; Button9.Left := 82; end else
if ListBox1.Items.Strings[i] = '10' then
begin Button10.Top := 42; Button10.Left :=82; end else
if ListBox1.Items.Strings[i] = '11' then
begin Button11.Top := 82; Button11.Left := 82; end else
if ListBox1.Items.Strings[i] = '12' then
begin Button12.Top := 122; Button12.Left := 82; end else
if ListBox1.Items.Strings[i] = '13' then
begin Button13.Top := 2; Button13.Left := 122; end else
if ListBox1.Items.Strings[i] = '14' then
begin Button15.Top := 42; Button14.Left := 122; end;
end;

سيد مجتبي هاشمي
یک شنبه 01 آذر 1388, 17:32 عصر
دوست عزیز با تشکر از شما.
من کد رو به صورت زیر نوشتم که درست کار میکنه اما تنها مشکلش اینه که اعداد رو به ترتیب از بالا به پایین قرار میده.



ListBox1.Items.Clear;
while ListBox1.Items.Count < 15 do
begin
Randomize;
x := RandomRange(1,16);
if ListBox1.Items.IndexOf(IntToStr(x)) = -1 then
ListBox1.Items.Add(IntToStr(x));
end;
for y := 0 to ListBox1.Count - 1 do
begin
if ListBox1.Items.Strings[y] = '1' then
begin
Button1.Top := 2;
Button1.Left := 2;
end
else
if ListBox1.Items.Strings[y] = '2' then
begin
Button2.Top := 42;
Button2.Left := 2;
end
else
if ListBox1.Items.Strings[y] = '3' then
begin
Button3.Top := 82;
Button3.Left := 2;
end
else
if ListBox1.Items.Strings[y] = '4' then
begin
Button4.Top := 122;
Button4.Left := 2;
end
else
if ListBox1.Items.Strings[y] = '5' then
begin
Button5.Top := 2;
Button5.Left := 42;
end
else
if ListBox1.Items.Strings[y] = '6' then
begin
Button6.Top := 42;
Button6.Left := 42;
end
else
if ListBox1.Items.Strings[y] = '7' then
begin
Button7.Top := 82;
Button7.Left := 42;
end
else
if ListBox1.Items.Strings[y] = '8' then
begin
Button8.Top := 122;
Button8.Left := 42;
end
else
if ListBox1.Items.Strings[y] = '9' then
begin
Button9.Top := 2;
Button9.Left := 82;
end
else
if ListBox1.Items.Strings[y] = '10' then
begin
Button10.Top := 42;
Button10.Left :=82;
end
else
if ListBox1.Items.Strings[y] = '11' then
begin
Button11.Top := 82;
Button11.Left := 82;
end
else
if ListBox1.Items.Strings[y] = '12' then
begin
Button12.Top := 122;
Button12.Left := 82;
end else
if ListBox1.Items.Strings[y] = '13' then
begin
Button13.Top := 2;
Button13.Left := 122;
end
else
if ListBox1.Items.Strings[y] = '14' then
begin
Button14.Top := 42;
Button14.Left := 122;
end
else
if ListBox1.Items.Strings[y] = '15' then
begin
Button15.Top := 82;
Button15.Left := 122;
end;
end;


اگر لطف کنید و بهم بگین که چه طور میشه به جای شماره دکمه نام متغیر رو نوشت ممنون میشم. مثل کد زیر. البته باید این رو در نظر گرفت که شماره دکمه جزء نام دکمه است.



Button1 ---------> button[i]

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



Tbutton(components[i]).top := '42';

سوال دیگه ای هم داشتم و اون هم اینکه وقتی کد زیر رو مینویسیم باید چی کار کرد که عدد تکراری ایجاد نکنه.



Randomize;
x := RandomRange(1,16);

sobhangh
یک شنبه 01 آذر 1388, 18:22 عصر
سلام
مگه توی برنامه ای که واست گذاشتم نبود؟

دلفــي
دوشنبه 02 آذر 1388, 10:02 صبح
من کد رو به صورت زیر نوشتم که درست کار میکنه اما تنها مشکلش اینه که اعداد رو به ترتیب از بالا به پایین قرار میده.



خوب این کد باید هم اینطوری عمل کنه !
شما شروطی رو که گذاشتید رو باید برای تمام Button هاتون تکرار کنید
مثلا برای Butto1 از شروط زیر استفاده کنید :


ListBox1.Items.Clear;
while ListBox1.Items.Count < 14 do
begin
Randomize;
i := RandomRange(1,15);
if ListBox1.Items.IndexOf(IntToStr(i)) = -1 then
ListBox1.Items.Add(IntToStr(i));
end;
for I := 0 to ListBox1.Count - 1 do
begin
if ListBox1.Items.Strings[i] = '1' then
begin Button1.Top := 2; Button1.Left := 2; end else
if ListBox1.Items.Strings[i] = '2' then
begin Button1.Top := 42; Button1.Left := 2; end else
if ListBox1.Items.Strings[i] = '3' then
begin Button1.Top := 82; Button1.Left := 2; end else
if ListBox1.Items.Strings[i] = '4' then
begin Button1.Top := 122; Button1.Left := 2; end else
if ListBox1.Items.Strings[i] = '5' then
begin Button1.Top := 2; Button1.Left := 42; end else
if ListBox1.Items.Strings[i] = '6' then
begin Button1.Top := 42; Button1.Left := 42; end else
if ListBox1.Items.Strings[i] = '7' then
begin Button1.Top := 82; Button1.Left := 42; end else
if ListBox1.Items.Strings[i] = '8' then
begin Button1.Top := 122; Button1.Left := 42; end else
if ListBox1.Items.Strings[i] = '9' then
begin Button1.Top := 2; Button1.Left := 82; end else
if ListBox1.Items.Strings[i] = '10' then
begin Button1.Top := 42; Button1.Left :=82; end else
if ListBox1.Items.Strings[i] = '11' then
begin Button1.Top := 82; Button1.Left := 82; end else
if ListBox1.Items.Strings[i] = '12' then
begin Button1.Top := 122; Button1.Left := 82; end else
if ListBox1.Items.Strings[i] = '13' then
begin Button1.Top := 2; Button1.Left := 122; end else
if ListBox1.Items.Strings[i] = '14' then
begin Button1.Top := 42; Button1.Left := 122; end;
end;





سوال دیگه ای هم داشتم و اون هم اینکه وقتی کد زیر رو مینویسیم باید چی کار کرد که عدد تکراری ایجاد نکنه.
Randomize;
i := RandomRange(1,16);



این کد همین کار رو انجام میده !


Randomize;
i := RandomRange(1,15);
if ListBox1.Items.IndexOf(IntToStr(i)) = -1 then
ListBox1.Items.Add(IntToStr(i));

سيد مجتبي هاشمي
دوشنبه 02 آذر 1388, 15:09 عصر
خوب این کد باید هم اینطوری عمل کنه !
شما شروطی رو که گذاشتید رو باید برای تمام Button هاتون تکرار کنید

منظورتون اینه که روی هر کدوم از این 15 دکمه دوبار کلیک کنم و این کد رو برای هر کدوم از دکمه ها بنویسم؟
من میخوام با کلیک کردن روی دکمه "شروع" جای دکمه ها رو به هم بریزه.

سيد مجتبي هاشمي
دوشنبه 02 آذر 1388, 15:12 عصر
سلام
مگه توی برنامه ای که واست گذاشتم نبود؟

دوست عزیز با تشکر از برنامه ای که فرستادی. اما کدهایی که نوشته بودین گیجم کرد و هر کاری کردم درست کار نکرد.
ممنون میشم اگه یه کم در مورد کدتون توضیح بدین.
با تشکر از شما.

سيد مجتبي هاشمي
دوشنبه 02 آذر 1388, 15:30 عصر
لطفا در مورد کد زیر و کلمه IndexOf میشه توضیح بدین؟



if ListBox1.Items.IndexOf(IntToStr(i)) = -1 then

sobhangh
دوشنبه 02 آذر 1388, 16:10 عصر
سلام
کار نمیکنه یعنی توی زمان کامپایل خطا میده؟
اگه بالا بیاد می زنه راندم و شروع می کنه و مشکلی نداره.
دوست عزیز فقط به جای دکمه از پنل استفاده شده. یک پروسیجر برای چک کردن این که ردیف شده یا نه.یکی هم برای پخش کردنش.
بعضی از کدها هم برای بهتر کار کردن و مواقع خاصن که اگر حذف هم بشن به اصل برنامه صدمه ی زیادی وارد نمیشه.
یه آرایه Point داریم.
من احساس کردم این ساده تره و خیلی هم حجم نداره. شما پنل رو دکمه کن راحتتر باشی.

دلفــي
دوشنبه 02 آذر 1388, 18:30 عصر
منظورتون اینه که روی هر کدوم از این 15 دکمه دوبار کلیک کنم و این کد رو برای هر کدوم از دکمه ها بنویسم؟
من میخوام با کلیک کردن روی دکمه "شروع" جای دکمه ها رو به هم بریزه.

نخیر نیازی نیست تو تک تک Button ها بنویسی !!!

فقط در Button شروع میاری تا Buttonهای بازی به صورت رندم چیده بشن ، فقط باید این کد رو 14 بار برای هر Button تکرار کنی .

دلفــي
دوشنبه 02 آذر 1388, 18:33 عصر
لطفا در مورد کد زیر و کلمه IndexOf میشه توضیح بدین؟



if ListBox1.Items.IndexOf(IntToStr(i)) = -1 then


اگه تو لیست مقدار i وجود نداشته باشد خروجی ItemIndex برابر 1- خواهد بود و شما می تونید مقدار i رو به لیست اضافه کنی در غیر این صورت i در لیست وجود دارد و مقدار ItemIndex بزرگتر از 1- خواهد بود .

سيد مجتبي هاشمي
دوشنبه 02 آذر 1388, 23:08 عصر
فقط باید این کد رو 14 بار برای هر Button تکرار کنی .

دوست عزيز من هم همين رو ميگم. آيا من بايد اين كد رو فقط يكبار براي دكمه شروع بنويسم؟
من اين كد رو يك بار براي دكمه شروع نوشتم اما به صورتي كه گفتم تغييرش دادم كه يك مشكل داشت و اون هم اينكه دكمه ها رو به صورت عمودي مرتب ميكنه و بهم ريختن دكمه ها فقط به همين صورت هست. اين هم كد برنامه. من يه Listbox هم تو برنامه گذاشتم كه فقط براي ديدن نتيجه كدي هست كه نوشته شده. لطفا بررسي كنيد. با تشكر از شما.

سيد مجتبي هاشمي
دوشنبه 02 آذر 1388, 23:15 عصر
سلام
کار نمیکنه یعنی توی زمان کامپایل خطا میده؟
اگه بالا بیاد می زنه راندم و شروع می کنه و مشکلی نداره.
دوست عزیز فقط به جای دکمه از پنل استفاده شده. یک پروسیجر برای چک کردن این که ردیف شده یا نه.یکی هم برای پخش کردنش.
بعضی از کدها هم برای بهتر کار کردن و مواقع خاصن که اگر حذف هم بشن به اصل برنامه صدمه ی زیادی وارد نمیشه.
یه آرایه Point داریم.
من احساس کردم این ساده تره و خیلی هم حجم نداره. شما پنل رو دکمه کن راحتتر باشی.

نه دوست عزيز. اتفاقا برنامه ات خيلي هم خوب بود. فقط من خيلي ازش سر در نياوردم. باز هم ممنون.
من فقط قسمتي رو كه براي پخش كردنش نوشته بودي تو برنامه اي كه خودم نوشته بودم استفاده كردم اما موقع كامپايل يه پيام خطا مربوط به يك آدرس حافظه ميداد.

دلفــي
سه شنبه 03 آذر 1388, 11:17 صبح
دوست عزيز من هم همين رو ميگم. آيا من بايد اين كد رو فقط يكبار براي دكمه شروع بنويسم؟
من اين كد رو يك بار براي دكمه شروع نوشتم اما به صورتي كه گفتم تغييرش دادم كه يك مشكل داشت و اون هم اينكه دكمه ها رو به صورت عمودي مرتب ميكنه و بهم ريختن دكمه ها فقط به همين صورت هست. اين هم كد برنامه. من يه Listbox هم تو برنامه گذاشتم كه فقط براي ديدن نتيجه كدي هست كه نوشته شده. لطفا بررسي كنيد. با تشكر از شما.


برنامه اصلاح شد

سيد مجتبي هاشمي
سه شنبه 10 آذر 1388, 19:13 عصر
با تشکر از همه دوستان که کمک کردند این برنامه رو کامل کنم. فقط یه مشکل دیگه داره؟؟؟؟؟؟؟؟؟؟؟؟

وقتی برنامه رو اجرا میکنید پس از انجام تعدادی حرکت(هر بار تعداد این حرکات متفاوت است) برنامه فقل میشود یعنی روی هر دکمه ای که کلیک کنیم حرکت نمیکنند.

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

khazaie01
پنج شنبه 12 آذر 1388, 08:39 صبح
سلام دوستان


دوستان عزیز سلام. من میخوام یه برنامه پازل بنویسم(با دلفی 7) که 9 یا 15 خانه داشته باشه و در داخل خانه های اون اعداد 1 تا 8 یا 1 تا 14 قرار داده بشه و یک خانه خالی هم داشته باشه و پس از به هم ریختن آنها با حرکت دادن اعداد آنها رو مرتب کنیم. گفتند باید از الگوریتمهای هوش مصنوعی و گرافها استفاده کنم. در این مورد تا حالا کار نکردم.
لطفا هر کدوم از دوستان که میتونن بهم کمک کنند تا این برنامه رو بنویسم. یا اگر کد آماده ای دارن اینجا بذارن تا بتونم ازش استفاده کنم. ممنون.

دوست عزیز 2 حالت داره
1 : خود کاربر پازل را حل کند (که هیچ ربطی به هوش مصنوعی ندارد)
2 : کامپیوتر پازل را حل کند .

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

این دو لینک کمکتون میکنند ...
http://www.8puzzle.com/
http://www.cs.princeton.edu/courses/archive/spr08/cos226/assignments/8puzzle.html

سيد مجتبي هاشمي
پنج شنبه 12 آذر 1388, 09:24 صبح
با تشکر از شما. اما این فقط یه فایل اجرایی بود و احتمالا با زبان C یا C++‎ نوشته شده. من یه برنامه به زبان دلفی میخواستم.

در ضمن اگه لطف کنید و برنامه ای رو که توی پست 32 گذاشتم رو تست کنید و مشکلش رو بهم بگید چی بوده ممنون میشم.

شبیر کریمی
پنج شنبه 12 آذر 1388, 14:03 عصر
سلام
برای خانه های پازل از Stringgrid و رویداد onkeypress اون استفاده کن.
برای چیدن اعداد بصورت تصادفی در هر یک از خونه ها من این کد رو نوشتم:
var
str:string;
begin
str:='123456789ABCDEF'
حالا هر یک از کاراکترهای رشته بالا رو بصورت تصادفی با کد زیر در خونه های یک تا پانزده بریز:
for i:=1 to 4 do
for j:=1 to 4 do begin
randomnum:=str[random(length(str))];
if (i<>4) and (j<>4) then begin
stringgrid1.cells[i,j]:=randomnum;
delete(str;pos(randomnum),1);
end;
end;
در واقع هر بار یکی از کاراکترهای str رو به طور تصادفی خوندم و در یکی از خونه ها قرار دادم
و همون کاراکتر رو از رشته str پاک کردم.

سيد مجتبي هاشمي
یک شنبه 15 آذر 1388, 15:38 عصر
دوستان برنامه ای که در پست 32 گذاشتم یه مشکل دیگه هم داره و اون هم اینکه غیره از اینکه بعضی مواقع دکمه ها قفل میشن و حرکت نمیکنن بعضی وقتا که روی یه دکمه کلیک میکنیم بع جای اینکه در جهت درست حرکت کنه زیر یه دکمه دیگه قرار میگیره و دو خانه خالی به وجود میآد.

لطفا پس از بررسی برنامه مشکلش رو بهم بگین. ممنون.

سيد مجتبي هاشمي
دوشنبه 23 آذر 1388, 17:16 عصر
دوستان عزیز کسی نتونست مشکل برنامه رو حل کنه؟ فایل برنامه در پست 32 است.