PDA

View Full Version : کمک در مورد پروژه شطرنج



saied-jackson
چهارشنبه 18 خرداد 1390, 21:04 عصر
سلام من تا قسمت مهره ها کار کردم و الان تو حرکت دادن مهره ها نمیدونم از چی استفاده کنم میخوام به این صورت باشه اول موقیت مبدا مهره رو وارد کنیم مثلا a2 سرباز بعد موقیت مقصد بزنیم a3 تا یک خانه به سمت جلو حرکت کنه . فکر کنم راحترین راه برای حرکت دادن مهره ها همین باشه .
70906

saied-jackson
جمعه 20 خرداد 1390, 00:31 صبح
هیچ کس نیست کمک کنه ؟

unknown.unforgiven
جمعه 20 خرداد 1390, 09:06 صبح
سلام
اگر میتونستی با استفاده از موس جا به جاشون بکنی معرکه میشد، اما زیاد کار داره. راحت ترین روش همینه که گفتی. فقط باید حرکت های مجاز رو هم بررسی بکنی که مثلاً آیا مهره x از فلان جا میتونه بره فلان جا یا نه؟ در رابطه با کدوم تیکه کمک میخوای؟

saied-jackson
جمعه 20 خرداد 1390, 15:28 عصر
مثلا الان میخایم سرباز رو به جلو حرکت بدیم پلیر 1 میزنه a2 به a3 اون قسمت a2 باید cls بشه و در خانه بعدی چاپ بشه و اگه اشتباه زدیم پیام بده . if else if این تیکه رو چجوری بزارم ؟ میشه برا if else if یا دستور switch از ماکرو استفاده کرد ؟ قسمت سختش اینکه وقتی مهره ها حرکت کردن باید تشخیص بدیم مهره مورد نظر میتونه حرکت کنه یا نه .

unknown.unforgiven
شنبه 21 خرداد 1390, 10:44 صبح
از ماکرو استفاده کنی کارت راحت تر میشه. باید اون مختصاتی رو که طرف وارد کرده (مبدا) پاک بکنی. واسه این کار باید ببینی تو اون مختصات از چه رنگی استفاده کردی، بعد با همون رنگ یه کاراکتر space تو مختصات مبدا چاپ بکنی. واسه بررسی حرکت مجاز هم از ماکرو استفاده کن. ورودیش نوع مهره و مبدا و مقصد باشه و خروجیش 0 یا 1 باشه که به برنامه حالی کنه که حرکت مجاز هست یا نیست

saied-jackson
شنبه 21 خرداد 1390, 14:28 عصر
یه مشکل دیگه هم هست . اونم مختصاته اون مختصاتی که از کاربر میگیرم a2-a3 با مختصات خود صفحه فرق داره و مهره جایه دیگه میپره . اگه مایل هستین من سورس رو بزارم شما 1-2 مهره رو ok کنید بقیه رو خودم ردیف میکنم .

unknown.unforgiven
شنبه 21 خرداد 1390, 14:34 عصر
فکر کنم خودت روش کار کنی سریعتر به نتیجه برسی. وقتی کاربر a2 رو وارد کرد باید a2 رو تبدیل کنی به مختصات عددی، حالا میخوای با ماکرو، پروسیجر یا کد. باید واسه هر کدی یه عدد متناسب با اون کد اختصاص بدی، مثلاً وقتی دیدی طرف a رو وارد کرد y=10 قرار بدی و ....

saied-jackson
شنبه 21 خرداد 1390, 21:43 عصر
در مورد این قسمتش اصلا تجربه ندارم نمیتونم اگه یه مهره ok شه بقیه رو میتونم .

unknown.unforgiven
شنبه 21 خرداد 1390, 21:58 عصر
الآن وقت امتحاناست، نمیتونم زیاد کمکت بکنم. تنها کاری که الآن میتونم برات بکنم اینه که زیر برنامه تبدیل مختصات رو بنویسم. اگه میخوای سورس برنامه رو آپ کن

saied-jackson
یک شنبه 22 خرداد 1390, 00:44 صبح
http://h1.ripway.com/uploading/SHN.asm
http://h1.ripway.com/uploading/o.asm (http://h1.ripway.com/uploading/o.asm)
فایل دوم include هست . اگه به غیر از اون ماکروها بازهم ماکرو دیگه نیاز هست اونم اضافه کنید خیلی ممنون .

saied-jackson
دوشنبه 23 خرداد 1390, 19:33 عصر
دوست عزیز زیاد طول میکشه ؟

unknown.unforgiven
دوشنبه 23 خرداد 1390, 21:03 عصر
دوست عزیز زیاد طول میکشه ؟

امروز امتحان داشتم اصلاً وقت نکردم نگاه کنم. این از زیر برنامه تبدیل مختصات به عدد (مثلاً a2 رو به عدد قابل فهم برای برنامه تبدیل کنه). فرض کردم کاراکتر حرف رو گذاشته باشی تو ah و کاراکتر عدد رو گذاشته باشی تو al. نتیجه عددی متناظراً تو همون رجیسترا ریخته میشه. اگر هم ورودی نامعتبر باشه تو ax عدد 1- رو میریزه

convertScale proc
cmp ah,'a'
jne n1
mov ah,10
jmp next
n1:
cmp ah,'A'
jne n2
mov ah,10
jmp next
n2:
cmp ah,'b'
jne n3
mov ah,15
jmp next
n3:
cmp ah,'B'
jne n4
mov ah,15
jmp next
n4:
cmp ah,'c'
jne n5
mov ah,20
jmp next
n5:
cmp ah,'C'
jne n6
mov ah,20
jmp next
n6:
cmp ah,'d'
jne n7
mov ah,25
jmp next
n7:
cmp ah,'D'
jne n8
mov ah,25
jmp next
n8:
cmp ah,'e'
jne n9
mov ah,30
jmp next
n9:
cmp ah,'E'
jne n10
mov ah,30
jmp next
n10:
cmp ah,'f'
jne n11
mov ah,35
jmp next
n11:
cmp ah,'F'
jne n12
mov ah,35
jmp next
n12:
cmp ah,'g'
jne n13
mov ah,40
jmp next
n13:
cmp ah,'G'
jne n14
mov ah,40
jmp next
n14:
cmp ah,'h'
jne n15
mov ah,45
jmp next
n15:
cmp ah,'H'
jne n16
mov ah,45
jmp next
n16:
mov ax,-1
ret
next:
cmp al,'1'
jne m1
mov al,25
ret
m1:
cmp al,'2'
jne m2
mov al,22
ret
m2:
cmp al,'3'
jne m3
mov al,19
ret
m3:
cmp al,'4'
jne m4
mov al,16
ret
m4:
cmp al,'5'
jne m5
mov al,13
ret
m5:
cmp al,'6'
jne m6
mov al,10
ret
m6:
cmp al,'7'
jne m7
mov al,7
ret
m7:
cmp al,'8'
jne finish
mov al,4
ret
finish:
mov ax,-1
ret
endp
بقیش دیگه با خودت

saied-jackson
چهارشنبه 25 خرداد 1390, 14:15 عصر
ممنون از بابت این زیر برنامه فکر کنم چند تا زیر برنامه دیگه هم برای اتک دادن و حرکتهای مجاز و غیره مجاز مهره ها لازم هست . راستی من میتونم از این ماکرو استفاده کنم ؟ و مقداری که تو al ,ah هست رو اینجا مقایسه کنم


;;== IF_ ENDIF_ ================================================== =========;
; This Macros Has No Need To Another Macros..............
; NOTE :................................................. ..
; This Macro Change DX , BX , BP......................
; The ARG_1 And ARG_2 Are Tow Words ,And So ARG_0 is...
; One Of This Symbols ( >=< )...........................
; EXAPMPLE :................................................. ....
;;;;;;;;;;;;M DB 15
;;;;;;;;;;;;N DB 14
;;;;;;;;;;;;
;;;;;;;;;;;;IF_ M,'=',N
;;;;;;;;;;;;ENDIF_
;;;;;;;;;;;;
;;;;;;;;;;;;IF_ M,'>',N
;;;;;;;;;;;;ENDIF_
;;;;;;;;;;;;
;;;;;;;;;;;;IF_ M,'<',N
;;;;;;;;;;;;ENDIF_

IF_ MACRO ARG_1 , ARG_0 , ARG_2
LOCAL VAR , EXIT , JMP_1 , NOT_E , LOOP1 , E , G , L , START
MOV DL ,ARG_0
CMP DL ,'='
JE E
CMP DL ,'>'
JE G
CMP DL ,'<'
JE L
JMP EXIT
E:
MOV DX ,ARG_1
CMP DX ,ARG_2
JE EXIT
JMP START
G:
MOV DX ,ARG_1
CMP DX ,ARG_2
JG EXIT
JMP START
L:
MOV DX ,ARG_1
CMP DX ,ARG_2
JL EXIT
START:
LEA BX ,EXIT
JMP JMP_1
VAR DB "ENDIF"
JMP_1:
MOV CX ,5
LEA BP ,VAR
LOOP1:
MOV DL ,BYTE PTR [BX]
CMP DL ,BYTE PTR [BP]
JNE NOT_E
INC BP
INC BX
LOOP LOOP1
JMP BX
NOT_E:
INC BX
JMP JMP_1
EXIT :
ENDM
ENDIF_ MACRO
LOCAL VAR , EXIT
JMP EXIT
VAR DB "ENDIF"
EXIT:
ENDM

unknown.unforgiven
چهارشنبه 25 خرداد 1390, 15:40 عصر
میتونم از این ماکرو استفاده کنم ؟ و مقداری که تو al ,ah هست رو اینجا مقایسه کنم
ah و al یه بایتی هستن، اما این ماکرو با داده های 2 بایتی کار میکنه. هم میتونی ماکرو رو جوری تغییر بدی که با داده های یه بایتی کار کنه هم اینکه میتونی ah و al رو تبدیل به دو بایتی کنی بعد پاس بدی به ماکرو

saied-jackson
سه شنبه 31 خرداد 1390, 01:10 صبح
سلام دوباره متاسفانه من هنوز نتونستم این زیر برنامه رو پیاده کنم درست منتقل نمیشه . هرچی a3,a4,a5 میزنم همش میپره به یه نقطه که اون نطقه هم درس نیست . مگه نباید بعد از گرفتن حرف و عدد زیر برنامه رو کال کنیم ؟


;go to location
print msg5
gotol 14,50
print msg2
getch ;mov to ah
call converts
gotol 15,50
print msg3
getnum ;mov to al
call converts

gotol ah,al
print sarbaz1