My Holiday CD Player by Anonymous Coder21st Nov 2004 23:58
|
---|
Summary A CD player that was built and tested in a Windows XP environment using DB v.1.13 enhanced. I designed it to be totally automated and operated via mouse. It only runs from DB edito Description Code ` This code was downloaded from The Game Creators ` It is reproduced here with full permission ` http://www.thegamecreators.com Rem * Title : MY HOLIDAY CD PLAYER Rem * Author : TIMOTHY J. SAUNDERS Rem * Date : NOVEMBER 2004 REMSTART ********************************************* *** PRESS "F5" TO START THE CD PLAYER *** *** CLICK "EXIT" TO QUIT *** ********************************************* ********************************** * MY HOLIDAY CD PLAYER * ********************************** * WRITTEN BY TIMOTHY J. SAUNDERS * ********************************** * NOVEMBER 2004 * ********************************** CODE REM'S EXCLUDED ON PURPOSE... YOU LEARN BETTER BY FIGURING IT OUT YOURSELF. REMEND SYNC ON : SYNC RATE 0 : HIDE MOUSE AUTOCAM OFF : POSITION CAMERA 0,0,-0.01 : POINT CAMERA 0,0,0 BACKDROP ON : COLOR BACKDROP 0 RANDOMIZE TIMER() LOAD IMAGE "Tree.bmp",1 LOAD IMAGE "Top.bmp",2 LOAD IMAGE "stop.bmp",3 LOAD IMAGE "prev.bmp",4 LOAD IMAGE "next.bmp",5 LOAD IMAGE "play.bmp",6 LOAD IMAGE "star.bmp",7 LOAD IMAGE "starfield.bmp",8 LOAD IMAGE "exit.bmp",9 LOAD IMAGE "party.bmp",10 LOAD SOUND "startparty.wav",1 LOAD SOUND "stopparty.wav",2 LOAD SOUND "buttons.wav",3 MAKE OBJECT PLAIN 1,0.2,0.2 SET OBJECT 1,1,0,1 POSITION OBJECT 1,-0.04,1.05,2 TEXTURE OBJECT 1,7 SET SPOT LIGHT 0,15,30 POSITION LIGHT 0,-0.04,1.05,1 POINT LIGHT 0,-0.04,1.05,2 LOAD OBJECT "tunnel.x",2 SCALE OBJECT 2,500,1000,500 POSITION OBJECT 2,0,0,0 XROTATE OBJECT 2,90 LOAD OBJECT "lense.x",3 YROTATE OBJECT 3,180 SCALE OBJECT 3,130,130,100 POSITION OBJECT 3,-0.04,0,2 GHOST OBJECT ON 3 SET AMBIENT LIGHT 5 MAKE LIGHT 1 : MAKE LIGHT 2 SET SPOT LIGHT 1,45,90 : SET SPOT LIGHT 2,45,90 POSITION LIGHT 1,-0.04,0,0 : POSITION LIGHT 2,-0.04,0,0 POINT LIGHT 1,-0.04,0,2 : POINT LIGHT 2,-0.04,0,2 MAKE LIGHT 3 SET POINT LIGHT 3,-500,0,500 SET LIGHT RANGE 3,3000 COLOR LIGHT 3,RGB(255,255,255) FOG DISTANCE -500 HIDE OBJECT 2 : HIDE LIGHT 3 SPRITE 1,170,50,1 SPRITE 2,291,52,2 : HIDE SPRITE 2 SPRITE 3,1,430,3 : HIDE SPRITE 3 SPRITE 4,180,430,4 : HIDE SPRITE 4 SPRITE 5,360,430,5 : HIDE SPRITE 5 SPRITE 6,540,430,6 : HIDE SPRITE 6 SPRITE 7,1,1,9 : HIDE SPRITE 7 SPRITE 8,540,1,10 : HIDE SPRITE 8 WHITE=RGB(255,255,255) RESET=1 : MUSIC=1 : TS=1 : SCANNER=1 STEPPER=1 PZ=2000 : PZSTEP=-2 FD=-500 : FDSTEP=2 TZD#=-2.5 GOSUB CHECKFORCD DO IF MOUSEMOVEX()<>0 OR MOUSEMOVEY()<>0 THEN BUTTONTIME=300 IF BUTTONTIME=300 SHOW SPRITE 3 : SHOW SPRITE 4 : SHOW SPRITE 5 : SHOW SPRITE 6 SHOW SPRITE 7 : SHOW SPRITE 8 : SHOW MOUSE ENDIF IF BUTTONTIME>0 BUTTONTIME=BUTTONTIME-1 IF BUTTONTIME=0 HIDE SPRITE 3 : HIDE SPRITE 4 : HIDE SPRITE 5 : HIDE SPRITE 6 HIDE SPRITE 7 : HIDE SPRITE 8 : HIDE MOUSE ENDIF MX=MOUSEX() : MY=MOUSEY() IF MY<51 AND MOUSECLICK()=1 IF MX<101 OFFSET SPRITE 7,-5,-5 : PLAY SOUND 3 REPEAT : WAIT 1 : UNTIL MOUSECLICK()=0 OFFSET SPRITE 7,0,0 GOTO SHUTDOWN ENDIF IF MX>539 IF PARTY=0 THEN OFFSET SPRITE 8,-5,-5 : PARTY=1 : PLAY SOUND 1 : GOTO TOGGLEP IF PARTY=1 THEN OFFSET SPRITE 8,0,0 : PARTY=0 : PLAY SOUND 2 TOGGLEP: REPEAT : WAIT 1 : UNTIL MOUSECLICK()=0 IF PARTY=1 SHOW OBJECT 2 : SHOW LIGHT 3 : FOG ON : TEXTURE BACKDROP 8 ELSE HIDE OBJECT 2 : HIDE LIGHT 3 : FOG OFF : COLOR BACKDROP 0 ENDIF ENDIF ENDIF IF MY>429 AND MOUSECLICK()=1 IF MX<101 OFFSET SPRITE 3,-5,-5 : PLAY SOUND 3 REPEAT : WAIT 1 : UNTIL MOUSECLICK()=0 OFFSET SPRITE 3,0,0 SCANNER=0 : MUSIC=0 HIDE OBJECT 1 : HIDE LIGHT 1 : HIDE LIGHT 2 : HIDE SPRITE 2 GOSUB CDPLAYER ENDIF IF MUSIC=1 IF MX<281 AND MX>179 OFFSET SPRITE 4,-5,-5 : PLAY SOUND 3 REPEAT : WAIT 1 : UNTIL MOUSECLICK()=0 OFFSET SPRITE 4,0,0 TS=-1 : GOSUB CDPLAYER : TS=1 ENDIF IF MX<461 AND MX>359 OFFSET SPRITE 5,-5,-5 : PLAY SOUND 3 REPEAT : WAIT 1 : UNTIL MOUSECLICK()=0 OFFSET SPRITE 5,0,0 TS=1 : GOSUB CDPLAYER ENDIF ENDIF IF MUSIC=0 IF MX<641 AND MX>539 OFFSET SPRITE 6,-5,-5 : PLAY SOUND 3 REPEAT : WAIT 1 : UNTIL MOUSECLICK()=0 OFFSET SPRITE 6,0,0 IF PATH EXIST(DRIVE$)=0 THEN GOSUB CHECKFORCD SCANNER=1 : MUSIC=1 SHOW OBJECT 1 : SHOW LIGHT 1 : SHOW LIGHT 2 : SHOW SPRITE 2 GOSUB CDPLAYER ENDIF ENDIF ENDIF ENDIF IF MUSIC=1 SWITCH=SWITCH+1 IF SWITCH>25 CR=RND(245)+10 : CG=RND(245)+10 : CB=RND(245)+10 TCOLORA=RGB(CR,CG,CB) CR=RND(245)+10 : CG=RND(245)+10 : CB=RND(245)+10 TCOLORB=RGB(CR,CG,CB) SWITCH=0 ENDIF TOGGLE=TOGGLE+1 IF TOGGLE>25 IF ANGEL=1 THEN SHOW SPRITE 2 : ANGEL=0 : GOTO SKIP IF ANGEL=0 THEN HIDE SPRITE 2 : ANGEL=1 SKIP: TOGGLE=0 ENDIF BDY=BDY-1 SCROLL BACKDROP 0,BDY POINT=POINT+1 IF POINT>4 THEN POINT=1 IF POINT=1 THEN PX=500 : PY=0 IF POINT=2 THEN PX=0 : PY=-500 IF POINT=3 THEN PX=-500 : PY=0 IF POINT=4 THEN PX=0 : PY=500 PZ=PZ+PZSTEP IF PZ<-2000 THEN PZSTEP=2 IF PZ>2000 THEN PZSTEP=-2 POSITION LIGHT 3,PX,PY,PZ TZ#=CURVEVALUE(TZD#,TZ#,50) IF TZ#<-2.4 THEN TZD#=7 IF TZ#>6.9 THEN TZD#=-2.5 POSITION OBJECT 2,0,0,TZ# FD=FD+FDSTEP IF FD<-500 THEN FDSTEP=2 IF FD>500 THEN FDSTEP=-2 FOG DISTANCE FD : FOG COLOR TCOLORA STAR=STAR+STEPPER IF STAR>100 THEN STEPPER=-1 IF STAR<50 THEN STEPPER=1 SCALE OBJECT 1,STAR,STAR,STAR XYZA#=WRAPVALUE(XYZA#+1) : XYZB#=WRAPVALUE(XYZA#+180) ZROTATE OBJECT 1,XYZA# : YROTATE OBJECT 2,XYZA# ROTATE LIGHT 1,0,XYZA#,0 : ROTATE LIGHT 2,XYZB#,0,0 IF XYZA#=180 THEN COLOR LIGHT 1,TCOLORA IF XYZB#=180 THEN COLOR LIGHT 2,TCOLORB IF PATH EXIST(DRIVE$)=0 SCANNER=1 : GOSUB CHECKFORCD ELSE SCANNER=0 ENDIF RUNTIME#=(TIMER()-STARTTIME#) COUNTDOWN#=TOTALTIME#-RUNTIME# CONVERTH#=INT(((COUNTDOWN#/1000)/60)/60) : CONVERTH$=STR$(CONVERTH#) CONVERTM#=INT((COUNTDOWN#/1000)/60) : CONVERTM$=STR$(CONVERTM#) CONVERTS#=INT(((((COUNTDOWN#/1000)/60)-CONVERTM#)*100)*0.6) CONVERTS$=STR$(CONVERTS#) INK TCOLORA,0 TEXT 1,410,CONVERTH$+" : "+CONVERTM$+" : "+CONVERTS$+" " TEXT 510,410,TRACKS$+" TRACKS TO GO " IF COUNTDOWN#<0 THEN TS=1 : GOSUB CDPLAYER ENDIF IF TEXTTIME>0 TEXTTIME=TEXTTIME-1 IF TEXTTIME=0 AND MUSIC=0 THEN INFO$="" ENDIF IF SCANNER=1 AND SEEK>0 SEEK=SEEK-1 IF SEEK=0 THEN GOSUB CHECKFORCD ENDIF INK TCOLORB,0 : CENTER TEXT 320,410,INFO$ SYNC LOOP CHECKFORCD: T=0 : TS=1 : MUSIC=1 : RESET=1 SHOW OBJECT 1 : SHOW SPRITE 2 : SHOW LIGHT 1 : SHOW LIGHT 2 PERFORM CHECKLIST FOR DRIVES FOR D=1 TO CHECKLIST QUANTITY() DRIVE$=CHECKLIST STRING$(D) CD DRIVE$ FIND FIRST FT=GET FILE TYPE() IF FT=-1 OR FT=1 THEN GOTO NEXTDRIVE FN$=GET FILE NAME$() EXT$=RIGHT$(FN$,3) IF EXT$="CDA" OR EXT$="cda" THEN GOTO CDPLAYER NEXTDRIVE: NEXT D INFO$="AUDIO CD NOT DETECTED." : TCOLORB=WHITE TEXTTIME=300 RESET=0 HIDE SPRITE 2 : HIDE OBJECT 1 : HIDE LIGHT 1 : HIDE LIGHT 2 DRIVE$="" : MUSIC=0 IF SCANNER=1 THEN SEEK=1000 RETURN CDPLAYER: IF RESET=1 PERFORM CHECKLIST FOR FILES TT=CHECKLIST QUANTITY() RESET=0 ENDIF IF MUSIC EXIST(1)=1 STOP MUSIC 1 DELETE MUSIC 1 ENDIF IF MUSIC=1 T=T+TS IF T>TT THEN T=1 IF T<1 THEN T=TT TN$=CHECKLIST STRING$(T) IF FILE EXIST(TN$)=1 FS=FILE SIZE(TN$) OPEN TO READ 1,TN$ FOR HEADER=1 TO FS READ BYTE 1,A IF HEADER=FS-2 THEN SECONDS=A IF HEADER=FS-1 THEN MINUTES=A IF HEADER=FS THEN HOURS=A NEXT HEADER CLOSE FILE 1 REPEAT : WAIT 1000 : UNTIL FILE OPEN(1)=0 TOTALTIME#=(((((HOURS*60)+MINUTES)*60)+SECONDS)*1000)+5000 LOAD CDMUSIC T,1 SET MUSIC VOLUME 1,100 PLAY MUSIC 1 STARTTIME#=TIMER() INFO$="PLAYING TRACK # "+STR$(T)+" " TRACKS=TT-T : TRACKS$=STR$(TRACKS) ELSE MUSIC=0 : T=0 : TS=1 : RESET=0 INFO$="AUDIO CD NOT DETECTED." : TCOLORB=WHITE HIDE SPRITE 2 : HIDE OBJECT 1 : HIDE LIGHT 1 : HIDE LIGHT 2 DRIVE$="" TEXTTIME=300 ENDIF ELSE MUSIC=0 : TS=0 : TCOLORB=WHITE IF PATH EXIST(DRIVE$)=1 THEN INFO$="MUSIC IS OFF." HIDE SPRITE 2 : HIDE OBJECT 1 : HIDE LIGHT 1 : HIDE LIGHT 2 TEXTTIME=300 ENDIF RETURN REM FANCY-WANCY WAY TO END PROGRAM AND FREE-UP RESOURCES SHUTDOWN: HIDE MOUSE : CLS : INK WHITE,0 SYNC OFF : BACKDROP OFF : FOG OFF CENTER TEXT 320,1,"SHUTDOWN IN PROGRESS..." IF MUSIC EXIST(1)=1 THEN STOP MUSIC 1 : DELETE MUSIC 1 : WAIT 500 FOR CLEAN=1 TO 3 : DELETE OBJECT CLEAN : DELETE LIGHT CLEAN : DELETE SOUND CLEAN CLS : CENTER TEXT 320,1,"SHUTDOWN IN PROGRESS..." : WAIT 500 : NEXT CLEAN FOR CLEAN=1 TO 8 : DELETE SPRITE CLEAN CENTER TEXT 320,1,"SHUTDOWN IN PROGRESS..." : WAIT 500 : NEXT CLEAN FOR CLEAN=1 TO 10 : DELETE IMAGE CLEAN CENTER TEXT 320,1,"SHUTDOWN IN PROGRESS..." : NEXT CLEAN CLS CENTER TEXT 320,240,"HO! HO! HO! HAPPY HOLIDAY'S EVERYBODY!!!" END REM END OF SHUTDOWN |