Learn Go Game
Программы играющие в Го, игра Го онлайн, электронные книги и лекции Го на видео

проверьте код, и иправьте ошибки

kit144 на rugo.ru Любитель Го
30, December, 2004 14:48   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

.const
Yes db 11111111b
No db 00000000b
LenPrSt dd 20
.data
StoneProperty struc
Xod dd ?
Color dd ?
NomPos dd ?
SvyazXL db ?
SvyazXR db ?
SvyazYT db ?
SvyazYB db ?
DameXL db ?
DameXR db ?
DameYT db ?
DameYB db ?
StoneProperty ends
PropStone StoneProperty 80 dup (<-1,-1,-1,0,0,0,0,1,1,1,1>) ; 20 byte*81=1620

GroupStn struc
Color dd ? ; |
Dame dw ? ; | -- 10 byte
Zvyaz dw ? ; |
NomerGr dw ? ; |
NomPosStn dd 20 dup (?); - 80 byte
GroupStn ends
StoneGroup GroupStn 80 dup (<>) ; Arrey of 90 byte * 81 = 7290 byte

PosStn struc
Xod dd ?
NomPos dd ?
Color dd ?
Dame dw ? ; 16 byte
Svyaz dw ?
PosStn ends
PosBoard PosStn 80 dup (<-1,-1,-1,4,0>) ; Arrey of 16 byte * 81 = 1296 byte

.code
comment ~

PosNew struc ; заполнение идет по - p - счетчику ходов (номер хода)
delX dd ?
delY dd ?
col dd ?
xod dd ?
nompos dd ?
PosNew ends
NewPos PosNew 81 dup ({?})

colBrush
PosStone
OldPos ; массив, заполняется в том случае когда съедают камень или группу камней,
;для перерисовки всех камней на доске после снятия пленных
oldp ;номер хода
NomPos ; номер позиции на доске
~
Filling_Stone_Bl_Wh_Prime proc uses edi esi ;заполнение начальных свойств камней, не зависимо от влияния других камней
; идет по NomPos - номеру позиции на доске

;.if oldp >= 0 || oldp <= 81

;************************************************************
mov eax, NomPos
mul LenPrSt ; NomPos*20 byte
mov esi,eax
mov eax, oldp
shl eax,4 ; oldp*16 byte
mov edi, eax
mov eax, NomPos
mov ecx, oldp

mov PropStone.NomPos[esi], eax ; PropStone заполняется по номеру позиции
mov PropStone.Xod[esi], ecx
mov PosBoard.NomPos[edi], eax ; PosBoard заполняется по номеру хода
mov PosBoard.Xod[edi], ecx
mov eax, colBrush
mov PropStone.Color[esi], eax
mov PosBoard.Color[edi], eax
;************************************************************
;.endif

ret
Filling_Stone_Bl_Wh_Prime endp

align 16
TestPosStn proc uses edi esi

.if oldp >= 1
mov eax, oldp
shl eax, 4
mov edi,eax
;******************************nompos -1= x-1 ******************************************
mov eax, PosBoard.NomPos[edi]
sub eax, 1
mul LenPrSt
mov esi,eax
mov eax, PosBoard.Color[edi]

.if PropStone.Color[esi] == -1

.elseif PropStone.Color[esi] == eax
mov PropStone.SvyazXR[esi], 1
mov PropStone.DameXR[esi], 0
push edi
mov edi,PropStone.Xod[esi]
shl edi,4
sub PosBoard.Dame[edi], 1
add PosBoard.Svyaz[edi], 1
pop edi
push esi
mov eax, PosBoard.NomPos[edi]
mul LenPrSt
mov esi,eax

mov PropStone.SvyazXL[esi], 1
mov PropStone.DameXL[esi], 0
sub PosBoard.Dame[edi], 1
add PosBoard.Svyaz[edi], 1
; call GroupProperty
pop esi
.elseif PropStone.Color[esi] != eax && PropStone.Color[esi] != -1
mov PropStone.SvyazXR[esi], 0
mov PropStone.DameXR[esi], 0
sub PosBoard.Dame[edi], 1
;test PosBoard.Dame[edi],0
;je EraseStone

push esi
mov eax, PosBoard.NomPos[edi]
mul LenPrSt
mov esi,eax

mov PropStone.SvyazXL[esi], 0
mov PropStone.DameXL[esi], 0
sub PosBoard.Dame[edi], 1
pop esi
.endif

;******************************nompos +1 = x+1 ******************************************
mov eax, PosBoard.NomPos[edi]
add eax, 1
mul LenPrSt
mov esi,eax
mov eax, PosBoard.Color[edi]

.if PropStone.Color[esi] == -1

.elseif PropStone.Color[esi] == eax
mov PropStone.SvyazXL[esi], 1
mov PropStone.DameXL[esi], 0
push edi
mov edi,PropStone.Xod[esi]
shl edi,4
sub PosBoard.Dame[edi], 1
add PosBoard.Svyaz[edi], 1
pop edi
push esi
mov eax, PosBoard.NomPos[edi]
mul LenPrSt
mov esi,eax

mov PropStone.SvyazXR[esi], 1
mov PropStone.DameXR[esi], 0
sub PosBoard.Dame[edi], 1
add PosBoard.Svyaz[edi], 1
; call GroupProperty
pop esi
.elseif PropStone.Color[esi] != eax && PropStone.Color[esi] != -1
mov PropStone.SvyazXL[esi], 0
mov PropStone.DameXL[esi], 0
sub PosBoard.Dame[edi], 1
;test PosBoard.Dame[edi],0
;je EraseStone
push esi
mov eax, PosBoard.NomPos[edi]
mul LenPrSt
mov esi,eax

mov PropStone.SvyazXR[esi], 0
mov PropStone.DameXR[esi], 0
sub PosBoard.Dame[edi], 1
pop esi
.endif

;******************************nompos -9 = y-9 ******************************************
mov eax, PosBoard.NomPos[edi]
sub eax, 9
mul LenPrSt
mov esi,eax
mov eax, PosBoard.Color[edi]

.if PropStone.Color[esi] == -1

.elseif PropStone.Color[esi] == edx
mov PropStone.SvyazYB[esi], 1
mov PropStone.DameYB[esi], 0
push edi
mov edi,PropStone.Xod[esi]
shl edi,4
sub PosBoard.Dame[edi], 1
add PosBoard.Svyaz[edi], 1
pop edi
push esi
mov eax, PosBoard.NomPos[edi]
mul LenPrSt
mov esi,eax

mov PropStone.SvyazYT[esi], 1
mov PropStone.DameYT[esi], 0
sub PosBoard.Dame[edi], 1
add PosBoard.Svyaz[edi], 1
; call GroupProperty
pop esi
.elseif PropStone.Color[esi] != eax && PropStone.Color[esi] != -1
mov PropStone.SvyazYB[esi], 0
mov PropStone.DameYB[esi], 0
sub PosBoard.Dame[edi], 1
;test PosBoard.Dame[edi],0
;je EraseStone
push esi
mov eax, PosBoard.NomPos[edi]
mul LenPrSt
mov esi,eax

mov PropStone.SvyazYT[esi], 0
mov PropStone.DameYT[esi], 0
sub PosBoard.Dame[edi], 1
pop esi
.endif

;******************************nompos +9 = y+9 ******************************************
mov eax, PosBoard.NomPos[edi]
add eax, 9
mul LenPrSt
mov esi,eax
mov eax, PosBoard.Color[edi]

.if PropStone.Color[esi] == -1

.elseif PropStone.Color[esi] == edx
mov PropStone.SvyazYT[esi], 1
mov PropStone.DameYT[esi], 0
push edi
mov edi,PropStone.Xod[esi]
shl edi,4
sub PosBoard.Dame[edi], 1
add PosBoard.Svyaz[edi], 1
pop edi
push esi
mov eax, PosBoard.NomPos[edi]
mul LenPrSt
mov esi,eax

mov PropStone.SvyazYB[esi], 1
mov PropStone.DameYB[esi], 0
sub PosBoard.Dame[edi], 1
add PosBoard.Svyaz[edi], 1
; call GroupProperty
pop esi
.elseif PropStone.Color[esi] != eax && PropStone.Color[esi] != -1
mov PropStone.SvyazYT[esi], 0
mov PropStone.DameYT[esi], 0
sub PosBoard.Dame[edi], 1
;test PosBoard.Dame[edi],0
;je EraseStone
push esi
mov eax, PosBoard.NomPos[edi]
mul LenPrSt
mov esi,eax

mov PropStone.SvyazYB[esi], 0
mov PropStone.DameYB[esi], 0
sub PosBoard.Dame[edi], 1
pop esi
.endif
;********************************************************************************************

.if PosBoard.Dame[edi] == 0 && PosBoard.Svyaz[edi] ==0
; jmp ();- На проверку правильности хода, так как этот ход самоубийственен
.elseif PosBoard.Svyaz[edi] != 0 && (PosBoard.Dame[edi] != 0 || PosBoard.Dame[edi] == 0)
; jmp () ;- На проверку группы камней
;.elseif PosBoard.Svyaz[edi] !=0 && PosBoard.Dame[edi] == 0
; jmp () ;- На проверку группы камней
.endif

.endif

ret
TestPosStn endp






Вызов идет из этой процедуры:


.elseif uMsg == WM_LBUTTONDBLCLK
;****************************************************************
;создаем растровый рисунок игрового поля в памяти
; эту функцию можно вызывать в любом месте программы, где удобно,
; но до цикла обработки сообщений
;invoke CreateBoard,memHDC
;*****************************************************************
;invoke InvalidateRect,hWnd,NULL,FALSE
; Сохраним текущие координаты мыши
mov eax,lParam
and eax,0ffffh
mov hitpoint.x, eax
;****************************************************************************
; Здесь идет проверка на не выход курсора за пределы разлиновки игрового поля
;****************************************************************************

.if eax <= RXRight

.if eax >= RXLeft
mov eax,lParam
shr eax,16
mov hitpoint.y, eax
.if eax <= RYBottom

.if eax >= RYTop

invoke LoadCursor,0,IDC_HAND
mov NewCur, eax
invoke SetCursor,NewCur

invoke testPOS ;тест позиции установки камня на доске
mov eax, p
mov oldp, eax
;****************************************************************************
;invoke PosStone,colBrush,oldp
invoke xod, p, hWnd ; проверка очередности хода
invoke PosStone,colBrush,oldp
invoke Filling_Stone_Bl_Wh_Prime ; заполнение свойств камня
invoke TestPosStn
;****************************************************************************
invoke OffsetRgn,HEllips,deltaX,0
invoke OffsetRgn,HEllips,0,deltaY
invoke PaintRgn,memHDC, HEllips
inc p

.endif
.endif
.endif
.endif
invoke InvalidateRect,hWnd,NULL,FALSE



Ну что это за Жизнь... без примеси сумасшествия совсем не интересно......
[www2.psy.uq.edu.au]
[www.mercury.csse.unimelb.edu.au] - Крутой Меркурий
[habrahabr.ru]
[shogi.by] - Shuogi

Re: проверьте код, и иправьте ошибки
Олег Попов на rugo.ru Любитель Го
30, December, 2004 15:52   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

а скомпилить это что, не получается? или гордость не даёт?


Re: проверьте код, и иправьте ошибки
kit144 на rugo.ru Любитель Го
30, December, 2004 16:36   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

Олег!
Все скомпилировано, но есть одно сомнение
1)по поводу правильного размещения строк кода.
2) Ситаксический анализ

Я могу ошибиться в написании символов и строк кода.
Трудно одному человеку отслеживать 5 487 строк кода.



Ну что это за Жизнь... без примеси сумасшествия совсем не интересно......
[www2.psy.uq.edu.au]
[www.mercury.csse.unimelb.edu.au] - Крутой Меркурий
[habrahabr.ru]
[shogi.by] - Shuogi

Re: проверьте код, и иправьте ошибки
Окружор на rugo.ru Любитель Го
30, December, 2004 16:56   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

"Математический текст такого стиля , внушенный , несомненно , дьяволом , не может не содержать опечаток" (с) Дж. Литлвуд



Отсутствие закона не освобождает от ответственности (c) народное
Новые турнирные схемы

Re: проверьте код, и иправьте ошибки
Олег Попов на rugo.ru Любитель Го
30, December, 2004 17:28   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

%))))))


Re: проверьте код, и иправьте ошибки
Les на rugo.ru Любитель Го
31, December, 2004 16:16   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

>> Я могу ошибиться в написании символов и строк кода.
Трудно одному человеку отслеживать 5 487 строк кода.

Вообще-то, это одна из причин существования языков программирования. Мне самому сейчас приходится иногда переписывать код с С на ассемблер (не PC), но делаю я это только в крайнем случае.

Re: проверьте код, и иправьте ошибки
kit144 на rugo.ru Любитель Го
02, January, 2005 16:20   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

Да.............
Похоже и Илья Ветров тут бессилен............
Спасибо Лес.



Ну что это за Жизнь... без примеси сумасшествия совсем не интересно......
[www2.psy.uq.edu.au]
[www.mercury.csse.unimelb.edu.au] - Крутой Меркурий
[habrahabr.ru]
[shogi.by] - Shuogi

Re: проверьте код, и иправьте ошибки
D на rugo.ru Гость
03, January, 2005 12:36   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

subj==LOL



Извините, только зарегистрированные пользователи могут писать в этом форуме.

  cassino online brasil   apuestas online en chile   Go game in Russia   Online Go lessons   How to Play Go