그림판

paint.bas

원래 파일
LAN/QB/D2.BAS
날짜
1992-01-10
크기
3,936바이트, 164줄
저장 형식
QB 4.5 바이너리 저장본("Fast Load and Save")을 QB에서 텍스트로 다시 저장한 뒤 UTF-8로 바꿈
웹 버전
그림판
내려받기
paint.bas (UTF-8)

설명

허큘리스 그래픽(SCREEN 3, 720×348 흑백)용 그림판을 만들다 멈춘 소스입니다.
FILE, TOOLS, EDIT, OPTION 네 메뉴를 DATA로 정의하고 ←/→, ↑/↓로 옮겨 다니며 고른 항목을 반전시킵니다.
항목을 골라도 아무 기능이 없습니다.

웹 버전은 메뉴 배치와 동작을 그대로 두고 기능을 메뉴 이름에 맞춰 새로 만들었습니다.

소스

DECLARE SUB jp ()DECLARE SUB sbload (f$)DECLARE SUB readpic (f$)ON ERROR GOTO erDIM mn$(4, 8), mg(4), mx(4), my(8), ym(4)mg(1) = 6mg(2) = 7mg(3) = 8mg(4) = 4FOR i = 1 TO 4 FOR j = 0 TO mg(i)  READ mn$(i, j)   DATA FILE    ,Load    ,Save    ,Load(Dr),Kill    ,Rename  ,Exit   DATA TOOLS   ,Glasses ,Paint   ,Line    ,Box     ,Circle  ,write   ,Spray  |   DATA EDIT    ,Erase  |,Inverse|   DATA ,   DATA Copy    ,Move    ,P-Save  ,P-Load   DATA OPTION  ,White   ,Part    ,Pattern ,Step   NEXT j, imn$(3, 3) = "Change" + CHR$(24) + "|"mn$(3, 4) = "Change" + CHR$(26) + "|"mx = 2my = 1FOR i = 1 TO 4ym(i) = 1NEXT iDIM m1%(497), m2%(567), m3%(637), m4%(357)m1%(0) = 75: m1%(1) = 99m2%(0) = 75: m2%(1) = 113m3%(0) = 75: m3%(1) = 127m4%(0) = 75: m4%(1) = 71SCREEN 3CLSDIM mn%(77)a$ = CHR$(0) + CHR$(75)main:DO GET (9 + (mx - 1) * 72, my * 14)-(9 + mx * 72, my * 14 + 14), mn% PUT (9 + (mx - 1) * 72, my * 14), mn%, PRESET WHILE a$ = "" a$ = INKEY$ WEND IF LEN(a$) = 2 THEN PUT (9 + (mx - 1) * 72, my * 14), mn%, PSET IF a$ = CHR$(0) + CHR$(75) OR a$ = CHR$(0) + CHR$(77) THEN   ym(mx) = my   IF mx = 1 THEN PUT (8 + (mx - 1) * 72, 0), m1%, PSET   IF mx = 2 THEN PUT (8 + (mx - 1) * 72, 0), m2%, PSET   IF mx = 3 THEN PUT (8 + (mx - 1) * 72, 0), m3%, PSET   IF mx = 4 THEN PUT (8 + (mx - 1) * 72, 0), m4%, PSET  IF a$ = CHR$(0) + CHR$(77) THEN   mx = mx + 1   IF mx = 5 THEN mx = 1  END IF  IF a$ = CHR$(0) + CHR$(75) THEN   mx = mx - 1   IF mx = 0 THEN mx = 4  END IF  my = ym(mx)  FOR i = 0 TO mg(mx)   LOCATE i + 1, 8 * mx - 6   PRINT mn$(mx, i)  NEXT i  LINE (8 + (mx - 1) * 72, 14)-(10 + mx * 72, 14 * (mg(mx) + 1)), , B END IF IF a$ = CHR$(0) + CHR$(80) THEN  my = my + 1  IF my > mg(mx) THEN my = 1 END IF IF a$ = CHR$(0) + CHR$(72) THEN my = my - 1 IF my = 0 THEN my = mg(mx) END IF a$ = ""LOOPENDer:IF ERR = 5 OR ERR = 53 THEN CLOSE #1IF ERR = 5 THEN DEF SEGGOTO mainSUB jpFOR e = 1 TO 24LOCATE 25, 1PRINTNEXT eEND SUBSUB msg (ty, tx, c, me$)IF c = 0 THEN COLOR 0, 7LOCATE ty, txPRINT me$END SUBSUB readpic (f$)DIM buffer(511)DEF SEG = &HB000OPEN f$ FOR BINARY AS #1Count = 10SCREEN 3: CLSChangePlane:FOR getdata = 0 TO 511buffer(getdata) = ASC(INPUT$(1, #1))NEXT getdataIF Count = 10 THENIF (buffer(0) <> &H41) OR (buffer(1) <> &H48) THEN GOTO quitIF buffer(7) <> 7 THEN GOTO quitEND IFLoopStart:flag = buffer(Count)Count = Count + 1SELECT CASE flagCASE &H80Count = 0GOTO ChangePlaneCASE 0GOTO quitCASE ELSESELECT CASE (flag AND &H80)CASE 0FOR loop1 = 1 TO (flag AND &H7F)POKE MemCount, buffer(Count)Count = Count + 1MemCount = MemCount + 1NEXT loop1CASE &H80Dummy = buffer(Count)IF Dummy <> 0 THENFOR loop1 = 1 TO (flag AND &H7F)POKE MemCount, DummyMemCount = MemCount + 1NEXT loop1ELSEMemCount = MemCount + (flag AND &H7F)END IFCount = Count + 1END SELECTEND SELECTGOTO LoopStartquit:CLOSE : DEF SEGEND SUBSUB sbload (f$)DEF SEG = &HB000BLOAD f$, 0DEF SEGEND SUBSUB SBSAVE (f$)DEF SEG = &HB000BSAVE f$, 0, &H8000DEF SEGEND SUB