نمایش نتایج 1 تا 35 از 35

نام تاپیک: بازی شطرنج در اسمبلی

  1. #1
    کاربر جدید
    تاریخ عضویت
    تیر 1385
    محل زندگی
    karaj
    پست
    25

    Question بازی شطرنج در اسمبلی

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

  2. #2
    اول اینکه باید محل قرار گرفتن مهره ها رو داشته باشی(مثلا تو یه آرایه 8*8) و از روی اون صفحه شطرنج رو بکشی. در این صورت حرکت مهره هات میشه تغییر در اون آرایه و رسم دوباره شکل صفحه از روی آرایه.

  3. #3
    کاربر جدید
    تاریخ عضویت
    تیر 1385
    محل زندگی
    karaj
    پست
    25
    ممنون از راهنماییتون ولی اینو خودم هم می دونستم مشکل اینجاست که در این بازی کاربر باید با ماوس مهرها رو حرکت بده و من از لحاظ گرافیکی نمی دونم که باید چطوری یک وقفه بندازم تا این حرکت رو شبیه سازی کنم البته ناگفته نماند که وقفه های ماوس رو می دونم و بلدم باهاشون کار کنم ولی اینکه مهررو بدون رنگ کنم ودوباره رنگ کنم(منظورم همون حرکتش)کار سختی و اصلا نمی دونم باید از کجا شروع کنم ، میدونید اینکه چطوری میشه یک شکل خمیده کشید و داخل اون رو رنگ کرد برام شده یه سئوال اگر لطف کنید و تو این زمینه ها من رو راهنمایی بفرمایید کمک بزرگی میکنید

  4. #4
    اینکه مهررو بدون رنگ کنم ودوباره رنگ کنم(منظورم همون حرکتش)کار سختی و اصلا نمی دونم باید از کجا شروع کنم
    چرا اینقدر مساله رو برای خودت پیچیده میکنی؟ خوب کل صفحه جدید رو یک بار روی قبلی بکش! اینجوری قبلی هم پاک میشه. یه کمی کند تر هست ولی خیلی راحت تره.

    میدونید اینکه چطوری میشه یک شکل خمیده کشید و داخل اون رو رنگ کرد برام شده یه سئوال
    اگر قضیه کشیدن شکل منحنیه که باید با استفاده از توابع ریاضی این کار رو خودت انجام بدی. مثلا فرض کن یه منحنی میخوای که از 3 تا نقطه بگذره؛ این میشه دقیقا یکی از مسایلی که تو محاسبات عددی با فرمول بهت یاد میدن یا همون کشیدن دایره که باید از روی فرمولهی مربوط به دایره مختصات نقاتش رو حساب کرد. البته فرمولهای سریعتر و بهتر هم هست که من بلد نیستم.
    اگرم مشکلت رنگ کردن یه شکل بسته است (مثل اون آیکون سطل رنگ توی برنامه paint) که با یه تابع بازگشتی کارت راه میافته. کافیه برای یه نقطه توی منحنی فراخونی بشه و به ازای هر خونه ای که فراخونی شده، خودش رو رنگ کنه و اگر همسایه هاش همرنگ خودش(قبل از رنگ جدید) هستند، برای اونها هم فراخونی بشه. البته بجای تابع بازگشتی با یه حلقه معمولی و استفاده از یک صف یا پشته هم کار راه میافته.

  5. #5
    کاربر جدید
    تاریخ عضویت
    تیر 1385
    محل زندگی
    karaj
    پست
    25
    بازم ممنون از راهنماییتون راستش اینکه یک بار صفحه رو بکشیم و پاک کنیم رو یکی از بچه ها پیشنهاد کرد ولی استدمون گفت نه این کارو انجام ندید
    و در ضمن میشه در باره ی این فراخوانی که در مورد رنگ کردن فرمودید بیشتر توضیح بدید البته خودم هم سعی می کنم روش فکر کنم
    بازم ممنون

  6. #6
    کاربر جدید
    تاریخ عضویت
    تیر 1385
    محل زندگی
    karaj
    پست
    25
    مرسی از راهنماییتون روی پیشنهادتون کار می کنم و اگر به نتیجه نرسیدم بازم مزاحمتون می شم
    خیلی ممنون

  7. #7
    سلام،
    اگر به نتیجه نرسیدی اینو یه نگاهی بکن. یه چیزی تو این مایه ها میشه:
    paint(x, y, newColor)
    {
    oldColor = Image[x][y].color;
    Image[x][y].color = newColor;
    if(Image[x][y+1].color == oldColor){
    paint(x, y+1, newColor);
    }
    if(Image[x][y-1].color == oldColor){
    paint(x, y-1, newColor);
    }
    if(Image[x+1][y].color == oldColor){
    paint(x+1, y, newColor);
    }
    if(Image[x-1][y].color == oldColor){
    paint(x-1, y, newColor);
    }
    }

  8. #8
    برای اینکه یک ماتریس تعریف کنیم از دستور زیر استفاده می کنیم :
     mat db 8 dup(8 dup(?))

    ولی من نمی دونم وقتی بخواهیم مقدار دهی کنیم چه طور باید ماتریس رو تعریف کنیم.
    مثلا" ماتریس زیر:
     2 3 4 5 6 4 3 2
    1 1 1 1 1 1 1 1
    0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0
    7 7 7 7 7 7 7 7
    8 9 10 11 12 10 9 8

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

  9. #9
    mat db 2,3,4,5,6,4,3,2,1,1,1,1,1,1,1,1,0,0,...

    بقیه اش رو جای ... بنویس

  10. #10
    کاربر دائمی آواتار aidinwashere
    تاریخ عضویت
    فروردین 1384
    محل زندگی
    پشته سرت
    پست
    632
    سلام
    میشه استاد و دانشگاهتون رو معرفی کنید؟
    علاقه مند شدم با استادتون آشنا بشم. (اگه مایل بودید پیغام خصوصی بدید)
    مرسی.

  11. #11
    کاربر جدید
    تاریخ عضویت
    تیر 1385
    محل زندگی
    karaj
    پست
    25
    سلام اگر بخواهیم این ماتریس رو به گرافیک مرتبط کنیم باید چیکار کنیم ؟ منظورم اینه که مهر ه های صفحه ی شطرنج را چطوری به ماتریسی که ساختیم مرتبط کنیم
    ممنون میشم اگر زودتر راهنمایی کنید

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

    حالا بگو دقیقا کجاشو مشکل داری؟

  13. #13

  14. #14
    ممنون می شوم اگر جواب را به ایمیل من هم ارسال کنید چون به دلیل گرفتاری زیاد به سایت برنامه نویس نمایم
    amir_changizi2003@yahoo.com

  15. #15
    نقل قول نوشته شده توسط Emir New مشاهده تاپیک
    ممنون می شوم اگر جواب را به ایمیل من هم ارسال کنید چون به دلیل گرفتاری زیاد به سایت برنامه نویس نمایم
    amir_changizi2003@yahoo.com
    هر دم از این باغ، بری می رسد!

  16. #16
    نقل قول نوشته شده توسط someCoder مشاهده تاپیک
    هر دم از این باغ، بری می رسد!
    حافظاااااااااااااا.........!!!! ؟؟

  17. #17
    سلام
    مثلا" کاربر با موس رو نقطه ای به مختصات(40و50)کلیک می کنه برای جابه جا یی مهره .
    خوب ما نمی دونیم که رو کدوم مهره کلیک کرده ماتریس رو هم به همین دلیل ایجاد کردیم .حالا نمی دونیم ماتریس رو چه طور به مهره ها ربط بدیم.

  18. #18
    نقل قول نوشته شده توسط simonet مشاهده تاپیک
    سلام
    مثلا" کاربر با موس رو نقطه ای به مختصات(40و50)کلیک می کنه برای جابه جا یی مهره .
    خوب ما نمی دونیم که رو کدوم مهره کلیک کرده ماتریس رو هم به همین دلیل ایجاد کردیم .حالا نمی دونیم ماتریس رو چه طور به مهره ها ربط بدیم.
    مختصاتی که کاربر کلیک کرده که معلومه کجای صغحه شطرنج میشه. از روی آرایه ببین تو اون خونه چی داری

  19. #19
    کاربر دائمی آواتار aidinwashere
    تاریخ عضویت
    فروردین 1384
    محل زندگی
    پشته سرت
    پست
    632
    عمل Drag & Drop رو چطوری میشه انجام داد؟

  20. #20
    نقل قول نوشته شده توسط someCoder مشاهده تاپیک
    مختصاتی که کاربر کلیک کرده که معلومه کجای صغحه شطرنج میشه. از روی آرایه ببین تو اون خونه چی داری
    همین دیگه نمی دونیم چه طور مهره ها رو به ماتریس ربط بدیم.

  21. #21
    کجاشو نمیدونی؟
    مختصاتی که کاربر کلیک کرده که معلومه کجای صغحه شطرنج میشه
    یا
    از روی آرایه ببین تو اون خونه چی داری

  22. #22
    سلام
    من از شما ممنونم که قانون سایت رو به من یاد داید
    هیچ وقت فکر نمی کردم یک برنامه نویس بتونه شعر حفظ کنه یا اینکه اصلا ذوق شعر داشته باشه

    دیشب با دنیا حرفم شد.پشتم را به آسمان کردم، شانه هایم از سنگینی نگاه ماه وستاره که از
    .پشت ابرها نگاه می کردند بی طاقت شدند
    نمی دانستم که حرفم را باید به که بگویم ، یا اصلا" از چه بگویم .

    و ایــــن حقــــــــیقتی ســـــت مـــــــاندنی .............

  23. #23
    آقای امیر چنگیزی(Emir New)، حالا که صحبت از قوانین کردی، فکر میکنم لازمه یک سری از قوانین رو بهتون یادآوری کنم. هرچند موقع ثبت نام همه اینها رو خوندین و طبق همین قوانین من حق ندارم بهتون تذکر بدم! اما چون صحبت رو به اینجا کشوندین، لازم شد:

    قانون شماره 27
    درخواست و حل تمرین پروژه های دانشجویی اکیداً ممنوع بوده و تنها استفاده از مباحث و درخواست راهنمایی در این راستا مجاز می باشد.


    قانون شماره 9
    از ایجاد گفتگوهای یکسان در بخش های مختلف پرهیز کنید.
    ضمنا یاد آوری میکنم شما همین سوال رو در ۲ جای دیگه هم (بجز اینجا) عینا تکرار کرده اید:
    https://barnamenevis.org/showth...597#post302596
    https://barnamenevis.org/showth...601#post302601

    قانون شماره 8
    لطفاً در هنگام طرح سوالات خود آن ها را به صورت جداگانه مطرح فرمایید.

    قانون شماره 14
    از ارسال مطالب بی ارتباط به گفتگوی مطرح شده توسط دیگر کاربران خودداری فرمایید.


    ضمنا من اول به این دلیل تذکر ندادم:
    قانون شماره 24
    کاربران عادی سایت حق دخالت در مسائل مدیریتی سایت را ندارند

    لیست کامل قوانین رو هم اینجا میتونین ببینین.

    فکر میکنم شکستن این همه قانون فقط با ارسال ۷ پست کار ساده ای نباشه! ماجرای ؛هر دم از این باغ بری میرسد هم این بود که ما همیشه مینالیدیم که قوانین رو رعایت نمیکنند و شما یک دفعه کولاک کردین در مورد قانون شکنی!

  24. #24
    ما یک ماتریس برای حرکت مهره ها ساختیم حالا من نمی تونم چه طوری اون ماتریس رو به مهره ها ربط بدم. مثلا" وقتی موس رو یک نقطه کلیک می شه برنامه از کجا بفهمه اونجا کدوم مهره وجود داره که دوباره همون مهره رو جایی که موس برای دومین بار کلیک می شه بکشه. حالا شما فرمودید از رو آرایه می بینیم تو اون خونه چه مهره ای وجود داره.
    درسته.
    ولی من نمی تونم این رو در برنامه ایجاد کنم.

  25. #25
    نقل قول نوشته شده توسط simonet مشاهده تاپیک
    ما یک ماتریس برای حرکت مهره ها ساختیم حالا من نمی تونم چه طوری اون ماتریس رو به مهره ها ربط بدم. مثلا" وقتی موس رو یک نقطه کلیک می شه برنامه از کجا بفهمه اونجا کدوم مهره وجود داره که دوباره همون مهره رو جایی که موس برای دومین بار کلیک می شه بکشه. حالا شما فرمودید از رو آرایه می بینیم تو اون خونه چه مهره ای وجود داره.
    درسته.
    ولی من نمی تونم این رو در برنامه ایجاد کنم.
    یا من بد توضیح میدم، یا شما منظورمو نمیگیرین و یا هردوش!

    جایی که کلیک شده، از روی مختصاتش، مختصات خونه شطرنج رو بدست بیارید. (کجای صفحه 8*8) Ok؟

    از تو آرایه ببینید اونجا چه مهره ای هست. ok؟

    والسلام!

  26. #26
    شما به نظرتون دارید توضیح می دید یا همون حرف های قبلی تون رو تکرار می کنید؟
    در هر حال احتمال رو به این بدید که من منظورتون رو نمی گیرم .
    از اینکه تا الآن پیگیر این تاپیک بودید ممنون.

  27. #27
    نقل قول نوشته شده توسط simonet مشاهده تاپیک
    شما به نظرتون دارید توضیح می دید یا همون حرف های قبلی تون رو تکرار می کنید؟
    در هر حال احتمال رو به این بدید که من منظورتون رو نمی گیرم .
    از اینکه تا الآن پیگیر این تاپیک بودید ممنون.
    منم میدونم که منظورم رو نمیتونم برسونم. فقط نمیدونم کجاشو نمیتونم. به هر حال موفق باشی

  28. #28
    با سلام
    ببخشید که من وسط توضیحات someCoder وارد شدم ولی فکر می کنم اگر نویسنده برنامه که صفحه شطرنج را روی مونیتور رسم کرده جایی نگه دارد(یا از رو ی یک قانون کلی بتواند بدست آورد ) که از چه مختصاتی تا چه مختصاتی (y,x) مربوط به مثلا خانه اول شطرنج است بعد وقتی کاربر کلیک می کند می تواند با گرفتن مختصات محل کلیک و مقایسه آن ( ویا یک محاسبه بر اساس قانون موجود ) بفهمد که در کدام خانه شطرنج است. اینطوری رابطه بین خانه های شطرنج روی صفحه مونیتور با ماتریس تعریف شده بدست می آید.

  29. #29
    یونس جان! اصلا بقیه اش با تو! والله simonet عزیز که حتما خوشحال میشه کس دیگه ای هم بهش کمک کنه. چون من منظورم رو نمیتونم برسونم.

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

  31. #31
    کاربر جدید
    تاریخ عضویت
    تیر 1385
    محل زندگی
    karaj
    پست
    25
    سلام somecoder عزیز من می دونم که شما از لحاظ اطلاعاتی خیلی بالا هستید به همین دلیل خواهش می کنم صحبتهای simonet را به دل نگیرید .
    خوب پس سئوال رو اینطور مطرح می کنم که من رایطه ی بین ماتریس و صفحه کلید رو پیدا کردم و تمامی توابع حرکت مهر ها رو نوشتم ولی مشکل اینجاست که نمی دونم چطور با ماوس کار کنم البته می دونم که ماوس چطور فعال میشه و مختصات x,y را در cx,dx ذخیره میکنه ولی هر کاری که می کنم تا ماوس یکی از مهرها رو برداره و به جای دیگه ی حرکت بده نمیشه واقعا دیگه نمی دونم چی کار کنم هر الگوریتمی که به ذهنم رسید رو امتحان کردم ولی نشد خواهش می کنم زودتر جواب من رو بدید.....
    البته خوشحال میشم اگر به جز somecoder هر کس دیگه ی به من کمک کنه و پیشاپیش ازش تشکر می کنم

  32. #32
    نقل قول نوشته شده توسط merelin مشاهده تاپیک
    سلام somecoder عزیز من می دونم که شما از لحاظ اطلاعاتی خیلی بالا هستید به همین دلیل خواهش می کنم صحبتهای simonet را به دل نگیرید .
    خوب پس سئوال رو اینطور مطرح می کنم که من رایطه ی بین ماتریس و صفحه کلید رو پیدا کردم و تمامی توابع حرکت مهر ها رو نوشتم ولی مشکل اینجاست که نمی دونم چطور با ماوس کار کنم البته می دونم که ماوس چطور فعال میشه و مختصات x,y را در cx,dx ذخیره میکنه ولی هر کاری که می کنم تا ماوس یکی از مهرها رو برداره و به جای دیگه ی حرکت بده نمیشه واقعا دیگه نمی دونم چی کار کنم هر الگوریتمی که به ذهنم رسید رو امتحان کردم ولی نشد خواهش می کنم زودتر جواب من رو بدید.....
    البته خوشحال میشم اگر به جز somecoder هر کس دیگه ی به من کمک کنه و پیشاپیش ازش تشکر می کنم
    اولا که خواهش میکنم، بالا کجا بود؟ من کجا بودم؟ اینجا کجاست؟ ...
    ثانیا دلگیر چیه؟ دلگیر کیه؟ اینجا کجاست؟ ...
    اما از شوخی گذشته، اصلا از این فکرا نکن! و همچنین از این حرفا نزن

    بذار برات با شکل توضیح بدم:
    فرض کن تو صفحه شطرنج رو با فاصله a از پایین صفحه رسم کردی و همینطور هر خونه ای هم از صفحه شطرنج ارتفاعش b باشه. حالا موس در نقطه x و y کلیک کرده. ما الان فقط با ارتفاعش (y) کار داریم.
    حالا میخوایم ببینیم کجای صفحه شطرنج شده. دیگه ساده است. از y مقدار a رو کم میکنیم تا فاصله از گوشه صفحه شطرنج باشه (بجای گوشه مانیتور) بعد بر b تقسیم میکنیم تا ببینیم چند خونه از پایین صفحه جلوتر بوده. میشه [y-a)/b)] همینطوری مختصات افقی رو هم حساب میکنی تا ببینی کدوم خونه شطرنج بوده. بعد این خونه select میشه و یه بار دیگه کاریر رو خونه مقصد هم کلیک میکنه.

  33. #33
    کاربر جدید
    تاریخ عضویت
    تیر 1385
    محل زندگی
    karaj
    پست
    25
    سلام
    ببخشید من قبلا به این روابط رسیدم ولی مشکل سر به دست آوردن مختصات نیست مشکل اینجاست که من دستور cmp bx,01h رو برای کلیک چپ نوشتم ولی اجرا نمیشه حتی با emu این رو debug کردم ولی وقتی کلیک چپ می کنم به فرمان مربوطه پرش نمی کنه و از همه بدتر اینکه من یه تابع update برای اینکه بعد از هر تغییری که در ماتریس داده شد صفحه را با مهرهایش رسم کند نوشتم ولی بی نهایت بار مهرها رو می کشه وخطای unmatched macro nesting می ده در حالی که debug ش کردم مشکلی نداشت واقعا نمی دونم دیگه باید چی کار کنم!!!!!!!؟؟؟؟؟.........

  34. #34
    use this interupt:
    mov ax,5h
    int 33h
    cmp bx,0

  35. #35
    کاربر جدید
    تاریخ عضویت
    تیر 1385
    محل زندگی
    karaj
    پست
    25
    سلام simonet عزیز دستت درست مرسی .....

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •