Как создать массив из квадратиков, по типу шахматной доски? - VB

Узнай цену своей работы

Формулировка задачи:

Здравствуйте!

Очень прошу помощи. Мечтаю слиться с Visual Basic 6.0 в одно целое, ощущать его сердцем. Не знаю, подскажите пожалуйста: как осуществить план (замысел) по созданию двумерного массива 5х5 из клеток (каждая размером 1000х1000 — квадратики). В основе лежит функция "

Shape

" из стандартного набора Visual Basic 6.0. Надо, чтобы каждая ячейка-клетка могла становиться активной.

Заранее прошу прощения за свою тупость

, вкупе с ограниченностью. Напишу правду о моих впечатлениях от поиска аналогов по форуму. Например: Посмотрел тему Нарисовать листок в клетку, скачал три вложения:

1) Сетка.rar; 2) Project1.rar; 3) Н.rar

— потрясён (!!) до умопомрачения (до глубины души). Какие ужасные и отвратительные проекты! Сочувствую ТС, сам не знал: как избавиться от "

несуразной Сетки

". Руки хотелось оторвать автору. Замучился удалять. Пришлось гасить процесс через (!) "

Диспетчер задач

", картинки ниже.

Решение задачи: «Как создать массив из квадратиков, по типу шахматной доски?»

textual
Листинг программы
  1.     int 19h                       ; exit through bootstrap to reboot cpu
  2.     else                          ; else if .com 16-bit binary
  3.     int 20h                       ; dos 1+ - terminate program
  4.     end if                        ; end of exit methods (os load or shell)
  5. car:mov [bx+si],al                ; sav ascii val to move string (si=num)
  6. prt:pusha                         ; save game state snapshot
  7.     cwd                           ; curs location dx=(0,0)=(row,column)
  8.     mov ax,1301h                  ; function ega write str write mode 1
  9.     mov bl,7                      ; page 0 grey car attrib matching tty
  10.     mov cl,8                      ; src str lngth (curs updated horiz)
  11.     if gui=1                      ; minimalist no coordinate indexes ?
  12.     mov bp,bf1                    ; es:bp is "abcdefgh" ptr
  13.     else                          ; else show coordinate indexes                    
  14.     mov bp,bf1+16                 ; es:bp is dontcare ptr
  15.     end if                        ; end of conditional precompile
  16. lns:int 10h                       ; standard bios video api
  17.     add bp,16                     ; bp=para step siz separating strings
  18.     if gui=1                      ; minimalist no coordinate indexes ?  
  19.     push ax                       ; save old bios video api func params
  20.     mov ax,0e39h                  ; function teletype outp car=rank '9'
  21.     sub al,dh                     ; decrement right handside rank value
  22.     int 10h                       ; standard bios video api
  23.     pop ax                        ; restore old bios video api fx params
  24.     end if                        ; end of conditional precompile
  25.     if gui=1                      ; minimalist no coordinate indexes ?
  26.     cmp dh,cl                     ; src str total (curs updated vert)
  27.     inc dh                        ; preemptive off-by-one allows 9 verts
  28.     else                          ; else show coordinate indexes  
  29.     inc dh                        ; non-preemptive off-by-one for 8 verts
  30.     cmp dh,cl                     ; src str total (curs updated vert)
  31.     end if                        ; end of conditional precompile
  32.     jc lns                        ; all 9 brd min row strings printed ?
  33.     mov bp,si                     ; 10th row tail bp=move coords, cl=8
  34.     int 10h                       ; standard bios video api
  35.     popa                          ; restore game state snapshot
  36.     inc bx                        ; test if any more keys ?
  37.     cmp bl,4                      ; frFR format input string
  38.     jc kbd                        ; else continue input
  39. idx:loop idx                      ; ch=0 passive call load src/dst lin idx
  40. act:mov si,num                    ; reinit si to point to coord input str.
  41.     mov bx,[si]                   ; bx=src coord (pass#1)
  42.     cbw                           ; empty sqr val in logical 0x88 board
  43.     call put                      ; place param passed as fun pass#1
  44.     mov dx,[si+2]                 ; bx=dst idx dx=src idx
  45.     xchg bx,dx                    ; fall-through for second pass
  46.     push word mat                 ; test for checkmate and conforming
  47. put:xchg ax,bx                    ; bx|dx=[num+di]+16*((8-'0')-[num+di+1])
  48.     aad -10h                      ; shl ah,4/sub al,ah/xor ah,ah
  49.     add al,80h                    ; bx|dx=al-640%256-16*ah
  50.     xchg ax,bx                    ; bx|dx=al+128-16*ah
  51.     jcxz sim                      ; active call request or simulation ?
  52.     if p2q=1                      ; standard non-failsafe queening
  53.     cmp _b [si+3],'8'             ; validated dst rank is top-most ?    
  54.     jz qq                         ; if so then promote pawn to queen
  55.     cmp _b [si+3],'1'             ; validated dst rank is bottom-most ?
  56.     jnz prm                       ; if not no pawn queening promotion
  57. qq: sahf                          ; store piece nature in flag register
  58.     jnp prm                       ; no pawn queening promotion  
  59.     xor ah,01000110b              ; transform p to promoted queen
  60.     inc cx                        ; queen promotion p2q or P2Q
  61.     end if                        ; end of conditional queening
  62. prm:xchg ah,[si+bx+brd-num-'a'+8] ; update piece logical 0x88 board val
  63.     xchg cl,[si+bx+brd-num-'a']   ; update piece physical board ascii val
  64.     or ah,1                       ; update piece moved once (bit#0)
  65. sim:retn                          ; return to caller(s)
  66. mat:sahf                          ; catured piece king and mate ?
  67.     js xit                        ; if piece is king then game is over
  68.     call chk                      ; move src color conforming ?
  69.     jnz nok                       ; move src color not conforming
  70. chk:xchg bx,dx                    ; src idx <- dst idx
  71.     mov al,[si+bx+brd-num-'a']    ; pass#1:src idx pass#2:dst idx di=brd
  72.     xor _b [si+len-num],8         ; self-modif 8/26 val=[1;8]/[a(A);z(Z)]
  73.     mov cl,-'a'                   ; assert black piece car interval
  74.     test bp,bp                    ; test whose turn it is to play
  75.     jnz lim                       ; assert white piece car interval
  76.     mov cl,-'A'                   ; al=ascii value cl=-(lower boundery)
  77. lim:xadd al,cl                    ; tmp=al+cl cl=al al=tmp +fall-trough
  78.     db 0d4h                       ; aam <self-modified value>
  79. len:db 12h                        ; ah=al/8 al%=8
  80.     mov al,cl                     ; al=restored ascii value
  81.     test ah,ah                    ; set/clear zf=0 success zf=1 failure
  82.     retn                          ; return to caller(s) nb: destroys ah
  83. tab db p-tab,r-tab,n-tab,b-tab    ; piece type mov offset array
  84.     db q-tab,q-tab                ; note original 1K ZX Chess q=k trick
  85. br0 db "rnbqkbnr",8,16,32,64,128  ; end rank pattern + beg piece values
  86.     db 32,16,8,'p',4,'.',0,'.',0  ; end piece values + beg mid board reps
  87.     db '.',0,'.',0,'P',4          ; ... end mid board reps
  88. p   db 2,3,-10h,-15,-17,10h,15    ; bit#2 pf=04 p[6]=r[0] overlay
  89. r   db 17,4,10h,-1h,-10h          ; bit#3 ??=08 r[5]=n[0] overlay
  90. n   db 1,8,1fh,21h,12h,-0eh,-1fh  ; bit#4 af=16 n[9]=b[0] overlay
  91.     db -21h,-12h                  ; ... end of knight moves list
  92. b   db 0eh,4,-0fh,11h,-11h        ; bit#5 ??=32 b[5]=q[0] overlay
  93. q   db 0fh,8                      ; bit#6 zf=64 k=q except k[0]=1
  94. bf2 db 10h,11h,0fh,1h,-10h        ; queen/king moves list and gui base
  95.     db -11h,-0fh,-1h              ; ... end of queen/king moves list
  96.     if gui=1                      ; minimalist no coordinate indexes ?  
  97. bf3 db "abcdefgh"                 ; gui file index string
  98.     end if                        ; end of conditional queening
  99. num db "e2e4"                     ; hardcoded Ruy Lopez opening
  100.     if x86=1                      ; if x86 boot environment
  101.     if p2q=0                      ; if vbr signature failsafe
  102.     times 510-($-$$) db 0         ; nul padding if necessary
  103.     org 7df0h                     ; boot signature vbr/mbr standard offset
  104.     sig db 55h,0aah               ; magic number no-endian boot signature
  105.     else                          ; no vbr signature failsafe
  106.     times 512-($-$$) db 0         ; nul padding if necessary
  107.     end if                        ; end of conditional padding
  108.     end if                        ; end of conditional failsafe signature

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.25 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы