#N88BASIC Dim XEND AS Integer Dim YEND AS Integer Dim I AS Double Dim J AS Double Dim X AS Double Dim Y AS Double Dim X1 AS Double Dim Y1 AS Double Dim X2 AS Double Dim Y2 AS Double Dim XS AS Double Dim YS AS Double Dim C1 AS Char Dim C2 AS Char Dim GR1(640,480) AS Char Dim GR2(640,480) AS Char Dim FLAG1 AS BYTE Dim Col AS Char Dim Col2 AS Char Dim TIME AS Long Dim TIME2 AS Long TIME=50000 ' TIME=0 XEND=255 YEND=191 LINE_TB(0,0,255,191,6) 'お絵かき開始 Col=1 160 LINE_T(123,90 , 89, 98 ,Col) 170 LINE_T_(101, 91 ,Col) 180 LINE_T_(116, 83 ,Col) 190 LINE_T_(135, 75 ,Col) 200 LINE_T_(147, 71 ,Col) 210 LINE_T_(159, 69 ,Col) 220 LINE_T_(173, 68 ,Col) 230 LINE_T_(189, 69 ,Col) 240 LINE_T_(207, 72 ,Col) 250 LINE_T_(220, 76 ,Col) 260 LINE_T_(229, 81 ,Col) 270 LINE_T_(238, 89 ,Col) 280 LINE_T_(246, 99 ,Col) 290 LINE_T_(253,109 ,Col) 300 LINE_T_(255,115 ,Col) 310 REM -------KAMI2 'Sleep(TIME) 320 LINE_T(104, 94 , 82,124 ,Col) 330 LINE_T_(101,114 ,Col) 340 LINE_T_( 97,129 ,Col) 350 LINE_T_( 78,144 ,Col) 360 LINE_T_( 98,143 ,Col) 370 LINE_T_( 99,156 ,Col) 380 LINE_T_(106,150 ,Col) 390 REM -------KAMI3 'Sleep(TIME) 400 LINE_T(123, 96 , 122,107 ,Col) 410 LINE_T_(122,114 ,Col) 420 LINE_T_(123,126 ,Col) 430 LINE_T_(128,117 ,Col) 440 LINE_T_(132,110 ,Col) 450 LINE_T_(141, 99 ,Col) 455 REM -------KAMI4 'Sleep(TIME) 460 LINE_T(144,82 , 140,111 ,Col) 470 LINE_T_(147,102 ,Col) 480 LINE_T_(154, 94 ,Col) 490 LINE_T_(164, 84 ,Col) 495 REM -------KAMI5 'Sleep(TIME) 496 LINE_T(162, 87 , 164, 84 ,Col) 500 LINE_T_(168, 95 ,Col) 510 LINE_T_(172,105 ,Col) 520 LINE_T_(178,117 ,Col) 530 LINE_T_(189, 81 ,Col) 540 REM -------KAMI6 'Sleep(TIME) 550 LINE_T(187, 89 , 202,114 ,Col) 560 LINE_T_(207, 81 ,Col) 570 REM -------KAMI7 'Sleep(TIME) 580 LINE_T(207, 88 , 225,127 ,Col) 590 REM -------KAMI8 'Sleep(TIME) 600 LINE_T(232,110 , 225,128 ,Col) 610 LINE_T_(221,138 ,Col) 620 LINE_T_(214,151 ,Col) 630 LINE_T_(231,149 ,Col) 640 LINE_T_(237,160 ,Col) 650 LINE_T_(243,151 ,Col) 660 LINE_T_(254,155 ,Col) 670 LINE_T_(255,148 ,Col) 680 REM -------HOHO 'Sleep(TIME) 690 LINE_T(121,108 , 115,117 ,Col) 700 LINE_T_(110,126 ,Col) 710 LINE_T_(108,132 ,Col) 720 LINE_T_(107,139 ,Col) 730 LINE_T_(107,149 ,Col) 740 LINE_T_(109,154 ,Col) 750 LINE_T_(111,156 ,Col) 760 LINE_T_(115,158 ,Col) 770 LINE_T_(122,159 ,Col) 780 LINE_T_(201,159 ,Col) 790 LINE_T_(212,158 ,Col) 800 LINE_T_(220,157 ,Col) 810 LINE_T_(225,155 ,Col) 820 LINE_T_(228,153 ,Col) 830 LINE_T_(231,150 ,Col) 840 REM -------HIDARIME 'Sleep(TIME) 850 LINE_TB(201,102 , 211,135 ,Col)',BF 860 REM -------MIGIME 'Sleep(TIME) 870 LINE_T(136,102 , 132,133 ,Col) 880 LINE_T_(141,133 ,Col) 890 LINE_T_(144,102 ,Col) 900 LINE_T_(136,102 ,Col) 902 PAINT_T(137,119 ,Col,Col) 904 PAINT_T(142,105 ,Col,Col) 906 PSET_T2(140,103 ,Col) 910 REM -------KUCHI 'Sleep(TIME) 920 LINE_T(156,140 , 179,140 ,Col) 930 LINE_T_(179,147 ,Col) 940 LINE_T_(178,150 ,Col) 950 LINE_T_(175,152 ,Col) 960 LINE_T_(171,153 ,Col) 970 LINE_T_(165,153 ,Col) 980 LINE_T_(160,152 ,Col) 990 LINE_T_(157,149 ,Col) 1000 LINE_T_(156,145 ,Col) 1010 LINE_T_(156,140 ,Col) Col2=2 1020 PAINT_T(166,146 ,Col2,Col) 1030 REM -------MIGITE 'Sleep(TIME) 1040 'COLOR 3 Col=1 1050 LINE_T(148,159 , 110,170 ,Col) 1060 LINE_T_(113,185 ,Col) 1070 LINE_T_(146,175 ,Col) 1080 LINE_T(116,168 , 119,183 ,Col) 1090 LINE_T(109,173 , 103,174 ,Col) 1100 LINE_T_(102,176 ,Col) 1110 LINE_T_(102,179 ,Col) 1120 LINE_T_(104,181 ,Col) 1130 LINE_T_(111,183 ,Col) 1140 REM -------HIDARITE 'Sleep(TIME) 1150 LINE_T(199,160 , 232,170 ,Col) 1160 LINE_T_(228,186 ,Col) 1170 LINE_T_(217,184 ,Col) 1180 LINE_T_(206,180 ,Col) 1190 LINE_T_(197,176 ,Col) 1200 LINE_T_(190,171 ,Col) 1210 LINE_T(224,168 , 220,184 ,Col) 1220 LINE_T(232,172 , 240,174 ,Col) 1230 LINE_T_(240,176 ,Col) 1240 LINE_T_(238,179 ,Col) 1250 LINE_T_(235,181 ,Col) 1260 LINE_T_(228,181 ,Col) 1270 REM -------SEIFUKU 'Sleep(TIME) 1280 LINE_T(148,159 , 147,167 ,Col) 1290 LINE_T_(146,176 ,Col) 1300 LINE_T_(145,191 ,Col) 1310 LINE_T(190,159 , 190,174 ,Col) 1320 LINE_T_(193,191 ,Col) 1330 LINE_T(146,173 , 190,173 ,Col) 1340 LINE_T(154,159 , 155,173 ,Col) 1350 LINE_T(182,159 , 181,173 ,Col) Col2=2 1360 PAINT_T(150,167 ,Col2,Col) 1370 PAINT_T(185,166 ,Col2,Col) 1380 PAINT_T(167,189 ,Col2,Col) 1390 'COLOR 3 Col=1 1400 LINE_T(152,173 , 151,191 ,Col) 1410 LINE_T(186,173 , 188,191 ,Col) 1420 LINE_TB(154,177 , 158,181 ,Col)',BF 1430 LINE_TB(180,177 , 184,181 ,Col)',BF 1440 REM -------ERI 'Sleep(TIME) 1450 LINE_T(154,159 , 161,167 ,Col) 1460 LINE_T_(168,159 ,Col) 1470 LINE_T_(174,167 ,Col) 1480 LINE_T_(181,160 ,Col) 1490 REM -------RIBBON 'Sleep(TIME) 1500 LINE_TB(161,165 , 175,170 ,Col)',BF 1510 LINE_T(166,170 , 160,186 ,Col) 1520 LINE_T(168,170 , 162,186 ,Col) 1530 LINE_T(168,170 , 174,186 ,Col) 1540 LINE_T(170,170 , 176,186 ,Col) 1590 REM -------KAMI''PAINT 'Sleep(TIME) Col2=2 1600 PAINT_T(174,77 ,Col2,Col) 1605 PSET_T2( 94, 96 ,Col) 1610 REM -------BATTEN R 'Sleep(TIME) 1620 'COLOR 3 Col=1 1630 LINE_T(104,116 , 110,126 ,Col) 1640 LINE_T(104,117 , 110,127 ,Col) 1650 LINE_T(104,118 , 110,128 ,Col) 1651 LINE_T(104,119 , 110,129 ,Col) 1652 LINE_T(104,120 , 110,130 ,Col) 1660 LINE_T( 98,135 , 110,124 ,Col) 1670 LINE_T(100,135 , 108,125 ,Col) 1680 LINE_T(102,135 , 108,126 ,Col) 1700 REM -------BATTEN L 'Sleep(TIME) 1710 LINE_T(248,112 , 232,139 ,Col) 1720 LINE_T(250,112 , 234,139 ,Col) 1730 LINE_T(252,112 , 236,139 ,Col) 1740 LINE_T(254,112 , 238,139 ,Col) 1750 LINE_T(238,111 , 255,138 ,Col) 1760 LINE_T(236,111 , 254,138 ,Col) 1770 LINE_T(234,111 , 252,138 ,Col) 1780 LINE_T(232,111 , 250,138 ,Col) 1840 REM -------HOHOSEN 'Sleep(TIME) 1850 'COLOR 4 Col=2 1860 LINE_T(117,134 , 112,140 ,Col) 1870 LINE_T(121,135 , 114,144 ,Col) 1880 LINE_T(125,137 , 120,141 ,Col) 1890 LINE_T(211,137 , 205,145 ,Col) 1900 LINE_T(216,137 , 210,145 ,Col) 1910 REM -------FUKIDASHI 'Sleep(TIME) 1920 'COLOR 3 Col=1 1930 LINE_T( 0, 94 , 5, 97 ,Col) 1940 LINE_T_( 12, 99 ,Col) 1950 LINE_T_( 30, 99 ,Col) 1960 LINE_T_( 41, 98 ,Col) 1970 LINE_T_( 50, 96 ,Col) 1980 LINE_T_( 55, 94 ,Col) 1990 LINE_T_( 74,104 ,Col) 2000 LINE_T_( 66, 87 ,Col) 2010 LINE_T_( 75, 85 ,Col) 2020 LINE_T_( 81, 82 ,Col) 2030 LINE_T_( 87, 77 ,Col) 2040 LINE_T_( 91, 71 ,Col) 2050 LINE_T_( 94, 62 ,Col) 2060 LINE_T_( 96, 49 ,Col) 2070 LINE_T_( 95, 37 ,Col) 2080 LINE_T_( 92, 26 ,Col) 2090 LINE_T_( 88, 18 ,Col) 2100 LINE_T_( 82, 11 ,Col) 2110 LINE_T_( 76, 5 ,Col) 2120 LINE_T_( 68, 0 ,Col) 2130 REM -------HAIKEI 'Sleep(TIME) Col2=4 2140 PAINT_T(100, 0,Col2,Col) 2150 PAINT_T(250,191,Col2,Col) 2160 REM -------PAPICOM 'Sleep(TIME) 2170 'COLOR 4 Color 2,6 2180 LOCATE 1,2:PRINT"こ ぱ" 2190 LOCATE 1,4:PRINT"ん ぴ" 2200 REM -------HITANYKEY Color 7,0 LOCATE 0,20:Input I END '*********************************************************************************************** '以下、自作描画関数 '----------------------------------------------------------------------- 'PAINT命令 '----------------------------------------------------------------------- Sub PAINT_T(x As Double , y As Double , c1 As Char ,c2 As Char) X1=x:Y1=y C1=c1:C2=c2 GR2(X1,Y1)=1 PAINT_T_SUB1() EndSub Sub PAINT_T_SUB1() *LOOP1 FLAG1=0 FOR I=0 TO XEND FOR J=0 TO YEND IF GR2(I,J)=1 THEN XS=I:YS=J:I=XEND+1:J=YEND+1:FLAG1=1 '描画フラグ=1ならば NEXT NEXT IF FLAG1=0 THEN EXITSUB J=XEND FOR I=XS TO J Step 1:PAINT_T_SUB1_S1():NEXT J=0 FOR I=XS-1 TO J Step -1:PAINT_T_SUB1_S1():NEXT GOTO *LOOP1 ENDSUB SUB PAINT_T_SUB1_S1() IF GR1(I,YS)=C2 or GR1(I,YS)=C1 THEN '座標が描画色か境界色ならば終了 GR2(I,YS)=0 I=J ELSE PSET_T(I,YS,C1)'GR1(I,YS)=C1 GR2(I,YS)=0 '描画セット、描画フラグリセット '描画色以外 and 境界色以外ならば描画フラグセット IF YSC1 and GR1(I,YS+1)<>C2 THEN GR2(I,YS+1)=1 IF YS>0 and GR1(I,YS-1)<>C1 and GR1(I,YS-1)<>C2 THEN GR2(I,YS-1)=1 ENDIF ENDSUB '----------------------------------------------------------------------- 'LINE命令 '----------------------------------------------------------------------- '通常 Sub LINE_T(x1 As Double , y1 As Double , x2 As Double , y2 As Double, c1 As Char) TIME2=TIME TIME=TIME*10 X1=x1:Y1=y1 X2=x2:Y2=y2 C1=c1 LINE_T_SUB1() TIME=TIME2 EndSub 'ひとつ前の描画座標から線を引く Sub LINE_T_(x2 As Double , y2 As Double, c1 As Char) TIME2=TIME TIME=TIME*10 X1=X2:Y1=Y2 X2=x2:Y2=y2 C1=c1 LINE_T_SUB1() TIME=TIME2 EndSub SUB LINE_T_SUB1() Dim X3 As Double Dim Y3 As Double Dim XP As Double Dim YP As Double X3=X1 Y3=Y1 XP=(X2-X1) YP=(Y2-Y1) IF Abs(XP)>Abs(YP) THEN YP=YP / Abs(XP):XP=Sgn(XP) FOR X3=X1 TO X2 Step XP PSET_T2(X3,Y3,C1) Y3=Y3+YP NEXT ELSE XP=XP / Abs(YP):YP=Sgn(YP) FOR Y3=Y1 TO Y2 Step YP PSET_T2(X3,Y3,C1) X3=X3+XP NEXT ENDIF PSET_T2(X2,Y2,C1) ENDSUB '----------------------------------------------------------------------- 'LINE_BOX命令 '----------------------------------------------------------------------- Sub LINE_TB(x1 As Double , y1 As Double , x2 As Double , y2 As Double, c1 As Char) Dim X3 As Double Dim Y3 As Double Dim XP As Double Dim YP As Double X1=x1:Y1=y1 X2=x2:Y2=y2 C1=c1 TIME2=TIME TIME=0 XP=Sgn(X2-X1) YP=Sgn(Y2-Y1) FOR X3=X1 TO X2 STEP XP FOR Y3=Y1 TO Y2 STEP YP PSET_T2(X3,Y3,C1) NEXT NEXT TIME=TIME2 EndSub '----------------------------------------------------------------------- 'ドット描画+VRAMセット '----------------------------------------------------------------------- SUB PSET_T(xpos As Double , ypos As Double, col As Char) Dim Cnt AS Long IF xpos>=0 and xpos<=XEND and ypos>=0 and ypos<=YEND THEN PSet(xpos,ypos),col GR1(xpos,ypos)=col For Cnt=0 to TIME:NEXT 'レトロPCみたく遅くする為のループ ENDIF ENDSUB SUB PSET_T2(xpos As Double , ypos As Double, col As Char) Dim Cnt AS Long IF xpos>=0 and xpos<=XEND and ypos>=0 and ypos<=YEND THEN PSet(xpos,ypos),col GR1(xpos,ypos)=col For Cnt=0 to TIME:NEXT 'レトロPCみたく遅くする為のループ ENDIF IF xpos+1>=0 and xpos+1<=XEND and ypos>=0 and ypos<=YEND THEN PSet(xpos+1,ypos),col GR1(xpos+1,ypos)=col ENDIF ENDSUB '----------------------------------------------------------------------- '画面描画 '----------------------------------------------------------------------- SUB PRT_SCREEN() FOR I=0 TO XEND FOR J=0 TO YEND PSet(I,J),GR1(I,J) NEXT NEXT ENDSUB