REM 944BASIC '黒板' REM ver. 2.0 REM 保存先のディレクトリを変更する REM 場合は、下記を修正してREMを外す REM SETDIRECTORY 'C2:\RAKUGAKI\' SETPAGE 0 LOCATE 10,8:PRINT 'しばしお待ちあれ・・・' GOSUB *DRAWTEXTURE REM 変数初期設定 WD=3 :REM 線の太さ(2,3,4) MODE=0:REM 描画/消去(0,1) DIM FL(255) :REM ファイル格納用一時変数 REM 画面の初期化 GOSUB *INIT COLORFG 0,111,0 *LOOP SYNC PX=PENX:PY=PENY REM 順-逆で線の太さ変更 IFBLK PADONB WD=WD-1 IF WD<2 THEN WD=4 ELSEIF PADONC WD=WD+1 IF WD>4 THEN WD=2 ELSEIF PADONA IF MODE=1 THEN MODE=0 ELSE MODE=1 GOSUB *STAT ENDIF REM ツールバー部のペンタッチ IF PY>=216 THEN GOSUB *TOOL REM 枠外の場合 IF (PX<=3)+(PX>=235) THEN GOTO *LOOP IF (PY<=3)+(PY>=211) THEN GOTO *LOOP REM ペンタッチした周辺のみREFRESH REM (SP 1が消え、黒板模様が現れる) IFBLK (PEN=2)*(MODE=0) REFRESH PX-1,PY-1,PX-1,PY-1,WD,WD ELSEIF (PEN=2)*(MODE=1) COLORFG 0,111,0:BOXFILL PX-1,PY-1,PX+2,PY+2 ENDIF GOTO *LOOP *TOOL IF PY>=241 THEN RETURN REM 線種 IFBLK (PX>=192)*(PX<=214)*(PEN=3) WD=WD+1 IF WD>4 THEN WD=2 REM ノ⇔ハ ELSEIF (PX>=216)*(PX<=239)*(PEN=3) IF MODE=1 THEN MODE=0 ELSE MODE=1 ENDIF REM 消 IF (PX>=1)*(PX<=24)*(PEN=3) THEN GOSUB *INIT REM 読込 IF (PX>=25)*(PX<=48)*(PEN=3) THEN GOSUB *READ REM 保存 IF (PX>=49)*(PX<=72)*(PEN=3) THEN GOSUB *SAVE GOSUB *STAT RETURN *STAT COLORFG 128,128,0 GCURSOR 196,220: PRINT TB(WD-2) GCURSOR 220,220: PRINT MD(MODE) REM FOOTER MODE RETURN *READ FILESEARCH '*.BMP',FL CNT=GETREADCNT FL(CNT)='キャンセル' GCURSOR 4,4:FONT 64 MENU FL,CNT+1,0 IF MENUNO=CNT THEN RETURN SETPAGE 2 BITMAP FL(MENUNO),240,0 GOSUB *INIT SPRITE 2,2,1, 0,0, 240,0, 240,240-24 REFRESH 0,0,0,0,240,240-24 SPRITE 2,2,0 RETURN *SAVE MESSAGE '画像をファイルに保存します。ファイル名を入力してください(8文字+.BMP)。' *ENTRY FONT 96: COLORFG 0,0,0 GCURSOR 75,218 F='.BMP' INPUT F,12,3 FILESEARCH F,FL IFBLK (GETREADCNT>=1) YN=YESNO('ファイルがすでに存在します。上書きしますか?') IF YN=0 THEN GOTO *ENTRY ENDIF SAVEBITMAP F,0,0,240,215,24 MESSAGE 'ファイルを保存しました。' RETURN REM ツールバーの描画 *DRAWTOOL DIM TB(2)='細','中','太' COLORFG 128,128,0 GCURSOR 192,216: FONT 144:PRINT '□' GCURSOR 196,220: FONT 96 PRINT TB(WD-2) DIM MD(1)='ノ','ハ' GCURSOR 216,216: FONT 144:PRINT '□' GCURSOR 220,220: FONT 96 PRINT MD(MODE) GCURSOR 1,216: FONT 144:PRINT '□' GCURSOR 5,220: FONT 96: PRINT '消' GCURSOR 25,216: FONT 144:PRINT '□' GCURSOR 29,220: FONT 96: PRINT '読' GCURSOR 49,216: FONT 144:PRINT '□' GCURSOR 53,220: FONT 96: PRINT '保' LINE 73,238,186,238 RETURN *INIT REM 深緑のスプライト SPRITE 1,1,1, 0,0, 0,24, 240,240-24 SETPAGE 0 PX=280:PY=280 REFRESH 0,0,0,0,240,240-24 REM SPRITE 1を非表示(REFRESHはしない) SPRITE 1,0,0 GOSUB *DRAWTOOL FONT 96 RETURN *DRAWTEXTURE REM テクスチャ画面に黒板の模様を描く SETPAGE 2 X=0:Y=0:COLORFG 0,111,0 BOXFILL 0,0,240,320 FOR I=0 TO 24 FOR J=0 TO 24 R=255-(RND%5)*24: COLORFG R,R,R IF RND%3<>0 THEN PSET X+J,Y+I NEXT J NEXT I REM 額縁 COLORFG 64,64,0 BOX 0,24,239,239 LINE 2,26,237,26: LINE 2,26,2,237 COLORFG 128,128,0 BOX 1,25,238,238 LINE 237,26,237,237 COLORFG 160,160,0 LINE 2,237,237,237 LINE 0,24,239,24:LINE 0,24,0,238 REM 黒板模様スプライトを10x9に配置 FOR I=1 TO 9 FOR J=0 TO 9 SPRITE I*10+J,I*10+J,1, J*24,(I-1)*24, 0,0, 24,24 NEXT J NEXT I RETURN