1 2 3 | 1 2 6 3 5 7 4 8 9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | DECLARE SUB TakeFont () DECLARE SUB PrintCharXY (x%, y%, ASCII%, cv%) DECLARE SUB PrintTextXY (x%, y%, Text$, cv%) DECLARE SUB PrintMatrixXY (x%, y%, Matr() AS INTEGER , HorizR%, VertR%, HSpacing!, VSpacing!, cv%) DIM SHARED Smb%( 255 , 15 ), TwoPOW%( 7 ) DIM M( 10 , 10 ) AS INTEGER , f%( 10 ) SCREEN 13 TakeFont LINE ( 0 , 0 )-( 319 , 199 ), 199 , BF FOR i% = 25 TO 0 STEP - 1 PrintCharXY 0 + i% * 4 , 20 + i% * 4 , 65 + i%, 31 + (i% AND 15 ) + 1 NEXT FOR iy% = 1 TO 10 : FOR ix% = 1 TO 10 : M(ix%, iy%) = RND * 10 : NEXT: NEXT PrintTextXY 10 , 10 , "Proverka pechati matric!", 15 PrintMatrixXY 90 , 30 , M(), 10 , 10 , 20 , 10 , 151 SUB PrintCharXY (x%, y%, ASCII%, cv%) FOR GY% = 0 TO 15 FOR GX% = 0 TO 7 IF (Smb%(ASCII%, GY%) AND TwoPOW%(GX%)) = TwoPOW%(GX%) THEN PSET (GX% + x%, GY% + y%), cv% NEXT NEXT END SUB SUB PrintMatrixXY (x%, y%, Matr() AS INTEGER , HorizR%, VertR%, HSpacing!, VSpacing!, cv%) DIM Zn$ FOR iy% = 1 TO VertR% FOR ix% = 1 TO HorizR% Zn$ = STR$(Matr(ix%, iy%)) PrintTextXY x% + ix% * HSpacing!, y% + iy% * VSpacing!, Zn$, cv% NEXT NEXT END SUB SUB PrintTextXY (x%, y%, Text$, cv%) xn% = x% IF Text$ = "" THEN EXIT SUB FOR xp% = 1 TO LEN(Text$) CH% = ASC(MID$(Text$, xp%, 1 )) PrintCharXY xn%, y%, CH%, cv% xn% = xn% + 8 NEXT END SUB SUB TakeFont ' Таблица степеней двойки для скорости FOR i% = 0 TO 7 : TwoPOW%(i%) = 2 ^ i%: NEXT ' Копируем побитно системный шрифт FOR i% = 0 TO 255 LINE ( 0 , 0 )-( 7 , 15 ), 0 , BF LOCATE 1 , 1 : PRINT CHR$(i%) FOR GY% = 0 TO 15 ST% = 0 FOR GX% = 0 TO 7 IF POINT(GX%, GY%) = 15 THEN ST% = ST% + TwoPOW%(GX%) NEXT Smb%(i%, GY%) = ST% NEXT NEXT END SUB |
Тестирование выполнено в программе QB64 ( Скачать )