home *** CD-ROM | disk | FTP | other *** search
File List | 1995-08-15 | 4.5 KB | 226 lines |
- ' color.gfa
- ' Programmed by Seymour Shlien in GFA Basic 3.5
- ' 624 Courtenay Avenue
- ' Ottawa, Ontario
- ' Canada, K2A 3B5
- ' Feb 21 1993
- DIM deskcolors%(15)
- DIM xbs_files$(20)
- rez%=XBIOS(4)
- IF rez%<>0
- ALERT 3," Please switch to | low resolution! ",1,"Oops",b%
- STOP
- ENDIF
- number_of_xbs_files%=0
- @read_put
- @read_sound
- @set_standard_colors
- @dosound
- @instructions
- @get_deskcolors
- file_num%=1
- d__load_degas_pi1("color"+STR$(file_num%)+".pi1")
- IF found%=0
- @box_pattern
- ENDIF
- @color_bar
- fillpattern%=8
- GRAPHMODE 2
- REPEAT
- IF MOUSEK=1
- IF MOUSEY>20
- IF POINT(MOUSEX,MOUSEY)<>1
- FILL MOUSEX,MOUSEY
- PAUSE 14
- ENDIF
- ELSE IF MOUSEX<180
- IF MOUSEX<40
- INC fillpattern%
- IF fillpattern%>24
- fillpattern%=1
- ENDIF
- DEFFILL 0,1
- PBOX 1,1,39,16
- DEFFILL col%,2,fillpattern%
- FILL MOUSEX,MOUSEY
- PAUSE 15
- ELSE
- col%=MOUSEX/20
- IF MOUSEY>8
- col%=col%+7
- ENDIF
- DEFFILL 0,1
- PBOX 1,1,39,16
- DEFFILL col%,2,fillpattern%
- FILL 10,10
- PAUSE 15
- ENDIF
- ELSE IF MOUSEX<230
- SPUT s$
- @color_bar
- PAUSE 30
- ELSE IF MOUSEX<270
- INC file_num%
- IF found%=0
- file_num%=1
- ENDIF
- @dosound
- d__load_degas_pi1("color"+STR$(file_num%)+".pi1")
- IF found%=0
- @box_pattern
- ENDIF
- fillpattern%=8
- @color_bar
- ENDIF
- ENDIF
- UNTIL ((MOUSEK=1) AND (MOUSEX>270) AND (MOUSEY<20))
- @restore_deskcolors
- > PROCEDURE read_put
- ' the house
- IF EXIST("color.put")
- OPEN "i",#1,"color.put"
- house$=INPUT$(CVI(INPUT$(2,#1)),#1)
- CLOSE #1
- ELSE
- PRINT "color.put was not found."
- PAUSE 100
- ENDIF
- RETURN
- > PROCEDURE d__load_degas_pi1(file$)
- '
- LOCAL loop%
- IF EXIST(file$)
- OPEN "i",#1,file$
- s$=INPUT$(2,#1)
- m__current_colors$=INPUT$(32,#1)
- FOR loop%=1 TO 15
- SETCOLOR loop%,CVI(MID$(m__current_colors$,loop%*2+1,2))
- NEXT loop%
- s$=INPUT$(32000,#1)
- CLOSE #1
- SPUT s$
- found%=1
- ELSE
- CLS
- LOCATE 1,15
- PRINT file$+" was not found."
- found%=0
- PAUSE 50
- ENDIF
- RETURN
- > PROCEDURE color_bar
- COLOR 1
- FOR i=2 TO 8
- DEFFILL i,1
- PBOX i*20,0,(i+1)*20,8
- BOX i*20,0,(i+1)*20,8
- DEFFILL i+7
- PBOX i*20,9,(i+1)*20,16
- BOX i*20,9,(i+1)*20,17
- NEXT i
- DEFTEXT 1
- LINE 0,0,319,0
- TEXT 184,14,"CLEAR"
- LINE 180,0,180,17
- TEXT 230,14,"NEXT"
- LINE 228,0,228,17
- TEXT 270,14,"QUIT"
- LINE 268,0,268,17
- LINE 319,0,319,17
- DEFMOUSE 0
- LINE 0,17,319,17
- BOX 0,0,39,17
- RETURN
- > PROCEDURE get_deskcolors
- LOCAL i%
- FOR i%=0 TO 15
- deskcolors%(i%)=XBIOS(7,i%,-1)
- NEXT i%
- RETURN
- > PROCEDURE restore_deskcolors
- LOCAL i%
- FOR i%=0 TO 15
- SETCOLOR i%,deskcolors%(i%)
- NEXT i%
- RETURN
- > PROCEDURE read_sound
- LOCAL a%
- IF EXIST("color.xbs")
- OPEN "i",#1,"color.xbs"
- a%=LOF(#1)
- DIM music_data&(a%/2)
- BLOAD "color.xbs",VARPTR(music_data&(0))
- CLOSE #1
- number_of_xbs_files%=1
- ELSE
- LOCATE 1,18
- PRINT "color.xbs was not found"
- number_of_xbs_files%=0
- ENDIF
- RETURN
- > PROCEDURE dosound
- LOCAL i%
- IF number_of_xbs_files%>0
- ' SPOKE &H484,PEEK(&H484) AND NOT 1
- addr%=V:music_data&(0)
- ~XBIOS(32,L:addr%)
- ENDIF
- RETURN
- > PROCEDURE box_pattern
- LOCAL i%,ix1%,ix2%,iy1%,iy2%
- CLS
- COLOR 1
- FOR i%=0 TO 8
- x=COSQ(i%*40)+SINQ(i%*40)
- y=-SINQ(i%*40)+COSQ(i%*40)
- ix%=140+40*x
- iy%=80+40*y
- BOX ix%,iy%,ix%+50,iy%+50
- NEXT i%
- SGET s$
- PAUSE 50
- RETURN
- > PROCEDURE instructions
- CLS
- PRINT " COLOR"
- PRINT
- PRINT "Using the mouse pointer, click on"
- PRINT "any color in the pallette on top"
- PRINT "of the screen and then click in"
- PRINT "any area in the outlined picture."
- PRINT "Once your picture is colored, add"
- PRINT "textures by clicking in the white box"
- PRINT "in the top left until the desired"
- PRINT "texture is found."
- PRINT
- PRINT "Seymour Shlien 17-January-93"
- PRINT
- PRINT "Click mouse button to continue."
- PUT 200,150,house$
- REPEAT
- UNTIL MOUSEK<>0
- RETURN
- > PROCEDURE set_standard_colors
- LOCAL i%,j%
- FOR i%=0 TO 15
- READ j%
- SETCOLOR i%,j%
- NEXT i%
- DATA 4095
- DATA 3840
- DATA 240
- DATA 4080
- DATA 15
- DATA 3855
- DATA 255
- DATA 1365
- DATA 819
- DATA 3891
- DATA 1011
- DATA 4083
- DATA 831
- DATA 3901
- DATA 1023
- DATA 0
- RETURN
-