TGC Codebase Backup



Little Stopwatch / Timer by Anonymous Coder

23rd Nov 2004 7:32
Summary

A handy stopwatch / timer. It is mouse controlled and has an audible alarm when time runs out. Standard "flat 2D" buttons also report with an audible verification when cl



Description



Code
                                    ` This code was downloaded from The Game Creators
                                    ` It is reproduced here with full permission
                                    ` http://www.thegamecreators.com
                                    
                                    Rem * Title  : STOPWATCH / TIMER
Rem * Author : TIMOTHY J. SAUNDERS
Rem * Date   : APRIL 2004
REM Created by Timothy J. Saunders
REM April of 2004
REM A stop watch / timer that can be used to aid in
REM cooking, testing, racing...etc
REM Features countdown alarm and windowing
REM v.1.5

WAIT 1000
SYNC ON : SYNC RATE 0
SET WINDOW ON
SET WINDOW TITLE "SWtimer"
SET WINDOW LAYOUT 1,1,0
SET WINDOW SIZE 170,110
SET WINDOW POSITION 2,460
ALWAYS ACTIVE ON

LOAD SOUND "select.wav",1
LOAD SOUND "scifi1.wav",2

SET TEXT FONT "arial"

RED=RGB(255,0,0)
YELLOW=RGB(255,200,0)
GREEN=RGB(0,255,0)
BLUE=RGB(0,150,255)
BLACK=RGB(0,0,0)
WHITE=RGB(255,255,255)
GRAY=RGB(100,100,100)

REM MODE SELECTION
MENU:
SET TEXT SIZE 20
SYNC : CLS
INK RED,BLACK
BOX 260,220,380,235
INK GREEN,BLACK
BOX 260,245,380,260
INK BLACK,BLACK
SET TEXT TO BOLD
CENTER TEXT 320,220,"STOPWATCH"
CENTER TEXT 320,245,"TIMER"
SET TEXT TO NORMAL
INK WHITE,BLACK
CENTER TEXT 320,200,"select mode"
SET TEXT SIZE 16
CENTER TEXT 320,265,"press 'esc' to kill program"
REDOSM:
REPEAT
MX=MOUSEX() : MY=MOUSEY()
SYNC
UNTIL MOUSECLICK()=1
IF MX<381 AND MX>259
	IF MY<236 AND MY>219
		PLAY SOUND 1
		REPEAT : SYNC : UNTIL MOUSECLICK()=0 : GOTO STOPWATCH
	ENDIF
	IF MY<261 AND MY>244
		PLAY SOUND 1
		REPEAT : SYNC : UNTIL MOUSECLICK()=0 : GOTO TIMER
	ENDIF
ENDIF
GOTO REDOSM

REM STOPWATCH MODE
STOPWATCH:
SYNC : CLS

LAP=0 : TF=0 : TFF=0 : MS=0 : SS=0 : MM=0 : HH=0 : RUN=0

DO
INK BLUE,BLACK
CENTER TEXT 320,215,"hh : mm : ss : mss"
TEXT 240,230,"run"
IF LAP=1
	INK BLUE,BLACK
	TEXT 240,245,"lap"
	TEXT 240,260,"dif"
	INK WHITE,BLACK
	SET CURSOR 265,245
	IF HHL<10
		PRINT "0",HHL;
	ELSE
		PRINT HHL;
	ENDIF
	PRINT " : ";

	IF MML<10
		PRINT "0",MML;
	ELSE
		PRINT MML;
	ENDIF
	PRINT " : ";

	IF SSL<10
		PRINT "0",SSL;
	ELSE
		PRINT SSL;
	ENDIF
	PRINT " : ";

	IF MSL<100
		IF MSL>9 THEN PRINT "0",MSL
		IF MSL<10 THEN PRINT "00",MSL
	ELSE
		PRINT MSL
	ENDIF

	SET CURSOR 265,260
	IF HHD<10
		PRINT "0",HHD;
	ELSE
		PRINT HHD;
	ENDIF
	PRINT " : ";

	IF MMD<10
		PRINT "0",MMD;
	ELSE
		PRINT MMD;
	ENDIF
	PRINT " : ";

	IF SSD<10
		PRINT "0",SSD;
	ELSE
		PRINT SSD;
	ENDIF
	PRINT " : ";

	MSD=ABS(MS-MSL)
	IF MSD<100
		IF MSD>9 THEN PRINT "0",MSD
		IF MSD<10 THEN PRINT "00",MSD
	ELSE
		PRINT MSD
	ENDIF
ENDIF

INK WHITE,BLACK
SET CURSOR 265,230
IF HH<10
	PRINT "0",HH;
ELSE
	PRINT HH;
ENDIF
PRINT " : ";

IF MM<10
	PRINT "0",MM;
ELSE
	PRINT MM;
ENDIF
PRINT " : ";

IF SS<10
	PRINT "0",SS;
ELSE
	PRINT SS;
ENDIF
PRINT " : ";

IF MS<100
	IF MS>9 THEN PRINT "0",MS
	IF MS<10 THEN PRINT "00",MS
ELSE
	PRINT MS
ENDIF

SET TEXT TO BOLD
IF RUN=0
	INK GREEN,BLACK : BOX 240,195,290,210
	INK BLACK,BLACK : CENTER TEXT 265,195,"GO"
ELSE
	INK RED,BLACK : BOX 240,195,290,210
	INK BLACK,BLACK : CENTER TEXT 265,195,"STOP"
ENDIF
INK GREEN,BLACK : BOX 295,195,345,210
INK BLACK,BLACK : CENTER TEXT 320,195,"LAP"
IF LAP=1 AND RUN=1
	COLORR=RND(200) : COLORG=RND(200) : COLORB=RND(200)
	COLOR=RGB(COLORR,COLORG,COLORB)
	INK COLOR,BLACK : CENTER TEXT 320,195,"LAP"
ENDIF
INK BLUE,BLACK : BOX 350,195,400,210
INK BLACK,BLACK : CENTER TEXT 375,195,"RESET"
INK GRAY,BLACK : BOX 380,223,400,273
INK BLACK,BLACK : CENTER TEXT 390,223,"M"
CENTER TEXT 390,235,"O" : CENTER TEXT 390,247,"D" : CENTER TEXT 390,259,"E"
IF RUN>0 THEN INK YELLOW,BLACK : LINE 380,223,400,273 : LINE 400,223,380,273
SET TEXT TO NORMAL
INK WHITE,BLACK : CENTER TEXT 320,275,"press 'esc' to kill program"

IF RUN>0
	TT$=STR$(TIMER())
	TD$=RIGHT$(TT$,4)
	TF$=LEFT$(TD$,1)
	TF=VAL(TF$)
	MS$=RIGHT$(TD$,3)
	MS=VAL(MS$)
	IF TF<>TFF THEN TFF=TF : SS=SS+1 : SSD=SSD+1

	IF SS>59 THEN SS=0 : MM=MM+1
	IF SSD>59 THEN SSD=0 : MMD=MMD+1

	IF MM>59 THEN MM=0 : HH=HH+1
	IF MMD>59 THEN MMD=0 : HHD=HHD+1
ELSE
	TT$=STR$(TIMER())
	TD$=RIGHT$(TT$,4)
	TF$=LEFT$(TD$,1)
	TF=VAL(TF$)
	TFF=TF
ENDIF

MX=MOUSEX() : MY=MOUSEY()
IF MOUSECLICK()=1
	IF MY<211 AND MY>194
		IF MX<291 AND MX>239
			PLAY SOUND 1
			IF RUN=0 THEN RUN=1 : GOTO DELAY
			IF RUN=1 THEN RUN=0 : GOTO DELAY
			DELAY:
			REPEAT : SYNC : UNTIL MOUSECLICK()=0
		ENDIF
		IF MX<346 AND MX>294
			PLAY SOUND 1 : LAP=1
			HHL=HH : MML=MM : SSL=SS : MSL=MS
			HHD=0 : MMD=0 : SSD=0 : MSD=0
			REPEAT : SYNC : UNTIL MOUSECLICK()=0
		ENDIF
		IF MX<401 AND MX>349
			PLAY SOUND 1
			HH=0 : MM=0 : SS=0 : MS=0 : RUN=0 : LAP=0 : TF=0 : TFF=0
			HHL=0 : MML=0 : SSL=0 : MSL=0
			HHD=0 : MMD=0 : SSD=0 : MSD=0
			REPEAT : SYNC : UNTIL MOUSECLICK()=0
		ENDIF
	ENDIF
	IF MY<274 AND MY>222 AND RUN=0
		IF MX<401 AND MX>379
			PLAY SOUND 1
			REPEAT : SYNC : UNTIL MOUSECLICK()=0
			GOTO MENU
		ENDIF
	ENDIF
ENDIF

REM to check for cursor positioning, un-rem the following line
REM INK WHITE,BLACK : SET CURSOR 320,205 : PRINT MX,"-",MY

SYNC : CLS
LOOP

REM TIMER MODE
TIMER:
SYNC : CLS

RUN=0 : TF=0 : TFF=0 : HH=0 : MM=0 : SS=0 : MS=0

DO
INK BLUE,BLACK
TEXT 265,210,"hh : mm : ss"

INK WHITE,BLACK
SET CURSOR 265,240
IF HH<10
	PRINT "0",HH;
ELSE
	PRINT HH;
ENDIF
PRINT " : ";

IF MM<10
	PRINT "0",MM;
ELSE
	PRINT MM;
ENDIF
PRINT " : ";

IF SS<10
	PRINT "0",SS;
ELSE
	PRINT SS;
ENDIF

IF RUN>0
	TT$=STR$(TIMER())
	TD$=RIGHT$(TT$,4)
	TF$=LEFT$(TD$,1)
	TF=VAL(TF$)
	IF TF<>TFF
		TFF=TF
		IF HH>0 OR MM>0 OR SS>0 THEN SS=SS-1
	ENDIF

	IF SS<0
		IF MM>0 OR HH>0 THEN SS=59 : MM=MM-1
	ENDIF

	IF MM<0 AND HH>0 THEN MM=59 : HH=HH-1

	IF HH<0 THEN HH=0

	COLORR=RND(200) : COLORG=RND(200) : COLORB=RND(200)
	COLOR=RGB(COLORR,COLORG,COLORB)
	INK COLOR,BLACK : ELLIPSE 301,248,52,18
ENDIF

IF HH=0 AND MM=0 AND SS=0 AND RUN>0
	IF SOUND LOOPING(2)=0 THEN LOOP SOUND 2
ELSE
	IF SOUND LOOPING(2)=1 THEN STOP SOUND 2
ENDIF

MX=MOUSEX() : MY=MOUSEY()

SET TEXT TO BOLD
IF RUN=0
	INK GREEN,BLACK : BOX 240,195,290,210
	INK BLACK,BLACK : CENTER TEXT 265,195,"GO"
ELSE
	INK RED,BLACK : BOX 240,195,290,210
	INK BLACK,BLACK : CENTER TEXT 265,195,"STOP"
ENDIF
INK BLUE,BLACK : BOX 350,195,400,210
INK BLACK,BLACK : CENTER TEXT 375,195,"RESET"
INK GRAY,BLACK : BOX 380,223,400,273
INK BLACK,BLACK : CENTER TEXT 390,223,"M"
CENTER TEXT 390,235,"O" : CENTER TEXT 390,247,"D" : CENTER TEXT 390,259,"E"
IF RUN>0 THEN INK YELLOW,BLACK : LINE 380,223,400,273 : LINE 400,223,380,273
SET TEXT TO NORMAL
INK WHITE,BLACK : CENTER TEXT 320,275,"press 'esc' to kill program"

IF MOUSECLICK()=1
	IF MY<211 AND MY>194
		IF MX<291 AND MX>239
			PLAY SOUND 1
			IF RUN=0 THEN RUN=1 : GOTO DELAY2
			IF RUN=1 THEN RUN=0 : GOTO DELAY2
			DELAY2:
			REPEAT : SYNC : UNTIL MOUSECLICK()=0
		ENDIF
		IF MX<401 AND MX>349
			PLAY SOUND 1
			HH=0 : MM=0 : SS=0 : RUN=0 : TF=0 : TFF=0
			REPEAT : SYNC : UNTIL MOUSECLICK()=0
		ENDIF
	ENDIF
	IF MY<274 AND MY>222 AND RUN=0
		IF MX<401 AND MX>379
			PLAY SOUND 1
			REPEAT : SYNC : UNTIL MOUSECLICK()=0
			IF SOUND LOOPING(2)=1 THEN STOP SOUND 2
			GOTO MENU
		ENDIF
	ENDIF
ENDIF

IF RUN=0
	SET TEXT TO BOLD
	SET TEXT SIZE 20
	INK GREEN,BLACK
	BOX 265,228,280,238
	BOX 293,228,308,238
	BOX 321,228,336,238
	BOX 265,257,280,267
	BOX 293,257,308,267
	BOX 321,257,336,267
	INK BLACK,BLACK
	CENTER TEXT 273,225,"+"
	CENTER TEXT 301,225,"+"
	CENTER TEXT 329,225,"+"
	CENTER TEXT 273,252,"-"
	CENTER TEXT 301,252,"-"
	CENTER TEXT 329,252,"-"
	SET TEXT SIZE 16
	SET TEXT TO NORMAL

	IF MOUSECLICK()=1
		IF MY<239 AND MY>227
			IF MX<281 AND MX>264
				PLAY SOUND 1
				HH=HH+1
				IF HH>99 THEN HH=0
				REPEAT : SYNC : UNTIL MOUSECLICK()=0
			ENDIF
			IF MX<309 AND MX>292
				PLAY SOUND 1
				MM=MM+1
				IF MM>59 THEN MM=0
				REPEAT : SYNC : UNTIL MOUSECLICK()=0
			ENDIF
			IF MX<337 AND MX>320
				PLAY SOUND 1
				SS=SS+1
				IF SS>59 THEN SS=0
				REPEAT : SYNC : UNTIL MOUSECLICK()=0
			ENDIF
		ENDIF
		IF MY<268 AND MY>256
			IF MX<281 AND MX>264
				PLAY SOUND 1
				HH=HH-1
				IF HH<0 THEN HH=99
				REPEAT : SYNC : UNTIL MOUSECLICK()=0
			ENDIF
			IF MX<309 AND MX>292
				PLAY SOUND 1
				MM=MM-1
				IF MM<0 THEN MM=59
				REPEAT : SYNC : UNTIL MOUSECLICK()=0
			ENDIF
			IF MX<337 AND MX>320
				PLAY SOUND 1
				SS=SS-1
				IF SS<0 THEN SS=59
				REPEAT : SYNC : UNTIL MOUSECLICK()=0
			ENDIF
		ENDIF
	ENDIF
ENDIF

REM to check for cursor positioning, un-rem the following line
REM INK WHITE,BLACK : SET CURSOR 320,205 : PRINT MX,"-",MY

SYNC : CLS
LOOP

END