Post Reply 
Z LIGHTS: Prime's answer to mobile phone torches
11-07-2015, 11:56 PM
Post: #3
RE: Z LIGHTS: Prime's answer to mobile phone torches
Version 0.3 includes a cheat mode (edit the HINTS BOOLEAN as you wish)
Code:

 LOCAL CRID:="Z LIGHTS V0.3 © 2015 StephenG1CMZ";
 LOCAL NL:=CHAR(10);

 //CUSTOMISE
 LOCAL HINTS:=1; //CHEAT

 EXPORT ACT_TIME;//:={};
 EXPORT ACT_TIME_SOS;//:={};
 EXPORT WPM:=3;

 LOCAL DOTT;

 LOCAL COLRNAME:={"RED","GREEN","BLUE","WHITE"};
 LOCAL COLRGB:={#FF0000h,#00FF00h,#0000FFh,#FFFFFFh};
 
 LOCAL LIGHTON:=" ON: Tap Esc to exit";
 LOCAL LIGHTT:="Tap a key to see elapsed time s";
 LOCAL WABTHLP:={"ABOUT/Help"};
 LOCAL WBCN:={"Beacon"};//UNUSED
 LOCAL WBLNKLIGHT:={"Blink Light"};
 LOCAL WCOLR:={"Colour"};
 LOCAL WSTDYLIGHT:={"Steady Light"};
 LOCAL WWPM:={"Words Per Minute (WPM)"};
 LOCAL CHOICES:={WABTHLP(1),"INFO",WSTDYLIGHT(1),WCOLR(1),WBLNKLIGHT(1),"SOS",WWPM(1)};
 LOCAL LGL:="No liability is accepted.";
 LOCAL COLR:=#FFFFFFh;
 LOCAL TS;

 CLS()
 BEGIN
  RECT_P(0,0,320-45,240,COLR);
  RECT_P(0,20,320,240,COLR);
 END;

 SCRID()
 BEGIN
  IF 1 THEN
   TEXTOUT_P(CRID,0,0,0,0,320,COLR);
  END;
 END;

  LIGHTELF()
  BEGIN
   LOCAL ELFST:={"Use of lights may have health and legal consequences.
The user is responsible.
"+LGL};
   RETURN MSGBOX(ELFST(1),1);
  END;

 EXPORT ABOUT()
 BEGIN
  LOCAL ST:="StephenG1CMZ is a programmer and can work to your requirements."+NL;
  LOCAL SZ:="LIGHTS provides useful practical results.
Ask, if you have specific requirements."+NL;
  LOCAL THANX:=""; 
  
  PRINT(); PRINT(CRID);
  PRINT(ST+NL+SZ);
  PRINT(THANX);
  PRINT(LGL);
  WAIT;

  LIGHTELF();
 END;

 EXPORT INFO()
 BEGIN
  LIGHTELF();
 END;

 AT(TS)
 BEGIN 
  //RETURN {HH,MM,SS} ; 
  RETURN TS;
 END;

 EXPORT LIGHTCOLR()
 BEGIN
  LOCAL CHS;

  CHOOSE(CHS,"",COLRNAME);
  IF CHS THEN
    COLR:=COLRGB(CHS);
  END;
 END;

 EXPORT LIGHTSTEADY()
 BEGIN
  LOCAL WR;
  LOCAL DUN:=0;
 
  CLS();
  TS:=Time;
  ACT_TIME:={WSTDYLIGHT,AT(TS)};//MUST CONTAIN LIST
  SCRID();
  TEXTOUT_P(TS+LIGHTON,0,180);
  TEXTOUT_P(LIGHTT,0,220);
  TEXTOUT_P("DEMO TEXT",0,100,7);
  
  REPEAT
   TEXTOUT_P((Time-TS),0,200,0,#FFFFFFh,320,0);
   WR:=WAIT(−1);
   IF TYPE(WR)==0 THEN 
    IF WR==4 THEN
     DUN:=1;
    END;
   END;
  UNTIL DUN; //WR==4;
 END;

 EXPORT LIGHTBLINK()
 BEGIN
  TS:=Time;
  ACT_TIME:={WBLNKLIGHT,AT(TS)};//MUST CONTAIN LIST
  REPEAT
   RECT_P(0,20,320,240,0,COLR);
   TEXTOUT_P(TS+LIGHTON,0,180);
   TEXTOUT_P(Time-TS,0,200,0,#FFFFFFh,320,0);
   TEXTOUT_P("DEMO TEXT",0,100,7);
   SCRID();
   WAIT(1);
   RECT_P(0,20,320,240,0,0);
   WAIT(1);
  UNTIL GETKEY==4;//CHECK BOTH TBD
 END;

 SIGOFF()
 BEGIN
  LOCAL WD:=GROBW_P();
  LOCAL HT:=GROBH_P();

  RECT_P(0,20,WD,HT,0,0);
 END;

 SIGON()
 BEGIN
  LOCAL WD:=GROBW_P();
  LOCAL HT:=GROBH_P();
  
  RECT_P(0,20,WD,HT,0,COLR);
 END;

 DAH()
 BEGIN
  LOCAL WDC:=GROBW_P/2;
  LOCAL HTC:=GROBH_P/2;
  SIGON();
  IF HINTS THEN
   RECT_P(WDC-15,HTC-5,WDC+15,HTC+5,0,0);
  END;
  WAIT(3*DOTT);
  SIGOFF();
  WAIT(DOTT);
 END;

 DIT()
 BEGIN
  LOCAL WDC:=GROBW_P/2;
  LOCAL HTC:=GROBH_P/2;
  SIGON();
  IF HINTS THEN
   ARC_P(WDC,HTC,5,0);
  END;
  WAIT(DOTT);
  SIGOFF();
  WAIT(DOTT); 
 END;

 EXPORT LIGHT_SOS()
 BEGIN
  LOCAL OK;
  LOCAL OKC:="OK TO CONFIRM?";
  LOCAL MYWPM:=MAX(MIN(WPM,50),1);
  //LOCAL BAUD:=ROUND(0.83*MYWPM,0);//APPROX
  DOTT:=1.2/MYWPM;
 
  OK:=MSGBOX(MYWPM+" WPM"+NL+".="+DOTT+" s"+NL+OKC,1);
  IF OK THEN
   TS:=Time;
   ACT_TIME_SOS:={{"SOS"},AT(TS)};//MUST CONTAIN LIST
   CLS();
   TEXTOUT_P(TS,0,0);
   //INTERWORD GAP
   //SEPERATES , REPOSITION
   SIGOFF();
   OK:=WAIT(7*DOTT);
   REPEAT
    DIT(); DIT(); DIT(); //S
    DAH(); DAH(); DAH(); //O
    DIT(); DIT(); DIT(); //S
    OK:=WAIT(3*DOTT); //INTERLETTER GAP
   UNTIL GETKEY==4; 
  END;
 END;

 ASK_WPM()
 BEGIN
  LOCAL OK;
  LOCAL TTL:=WWPM(1);
  LOCAL LBL:="WPM";
  LOCAL HLP:="1..25 RECOMMENDED";
  OK:=INPUT(WPM,TTL,LBL,HLP,5,5);
  IF OK THEN
   WPM:=MAX(WPM,1);
  END;
 END;

HELP()
 BEGIN
  LOCAL CHS;
  //LOCAL HLPCHC:=CONCAT(CHOICES,{"VARIABLES"});
  LOCAL HLPCOLR:="Red light may help preserve night vision";
  LOCAL CNW:="Connectivity Not Working";
  LOCAL HLPVARS:="
ACT_TIME:
ACT_TIME_SOS:
 Activation time

WPM: "+WWPM(1)+"
 @Home:
 WPM:=n [n==1..25]";
 
  LOCAL SEL:={1,1,0,1,0,1,0};//SELECT CHOICES W HLP
  LOCAL SELCHOICES:=EXECON("IFTE(&2,&1,CHAR(0))",CHOICES,SEL);//SYN:DIDIER
  LOCAL HLPCHC:=CONCAT(SELCHOICES,{"VARIABLES"});

  REPEAT
   PRINT(); 
   CHOOSE(CHS,WABTHLP(1),HLPCHC);
   IF CHS THEN
    PRINT(HLPCHC(CHS));
    CASE
     IF CHS==1 THEN ABOUT(); WAIT END;
     IF CHS==2 THEN INFO(); WAIT END;
     IF CHS==4 THEN PRINT(HLPCOLR); WAIT END;
     IF CHS==6 THEN PRINT(CNW); WAIT END;
     IF CHS==8 THEN PRINT(HLPVARS); WAIT END;
     DEFAULT
     END;
    END;
   UNTIL CHS==0;
  WAIT;
 END;

 EXPORT Z_LIGHTS()
 BEGIN
  LOCAL CHS;
  //SCRID();
  REPEAT
   CHOOSE(CHS,CRID,CHOICES);
   CASE
    IF CHS==1 THEN HELP()   END;
    IF CHS==2 THEN INFO()   END;
    IF CHS==3 THEN LIGHTSTEADY() END;
    IF CHS==4 THEN LIGHTCOLR()   END;
    IF CHS==5 THEN LIGHTBLINK()  END;
    //IF CHS==6 THEN LIGHTBLINK()  END;
    IF CHS==6 THEN LIGHT_SOS()   END;
    IF CHS==7 THEN ASK_WPM()     END;
 
    DEFAULT
   END;
  UNTIL CHS==0;

//FINALLY
//I HAD CONSIDERED A WAKEUP ALARM. BUT AUTO DIMMING OFSCREEN
//MUST CONTAIN LIST:
//SO LIST ED CAN BE USED TO SHOW OLD CONTENTS

 END;

Stephen Lewkowicz (G1CMZ)
https://my.numworks.com/python/steveg1cmz
Visit this user's website Find all posts by this user
Quote this message in a reply
Post Reply 


Messages In This Thread
RE: Z LIGHTS: Prime's answer to mobile phone torches - StephenG1CMZ - 11-07-2015 11:56 PM



User(s) browsing this thread: 1 Guest(s)