' *** LASVEGAS
CLS : OPTION BASE 1: DEFSTR A-Z
SCREEN 12: WINDOW SCREEN (1, 1)-(640, 480)
DIM V.Bit&(16) ' Valeurs des 16 bits (sur 2 octets) en numérique
V.Bit&(1) = 1
FOR I% = 2 TO 16: V.Bit&(I%) = V.Bit&(I% - 1) * 2: NEXT I%
DIM V.Style&(16) ' Valeurs successives du style en numérique
Debut! = TIMER
DO
Tempo& = Tempo& + 1
LOOP UNTIL TIMER > Debut! + 1
' ***** Definition des traits doubles
H = CHR$(205): V = CHR$(186): Chg = CHR$(201): Chd = CHR$(187)
Cbg = CHR$(200): Cbd = CHR$(188 ): Vd = CHR$(204)
Vg = CHR$(185): Hb = CHR$(203): Hh = CHR$(202): Crx = CHR$(206)
Ccv% = 9 ' CADRE VIDE
Cct% = 14: Cte% = 15 ' CADRE/TITRE
E01: Titre = " ** > SFLPMEA < ** ": L% = 4: GOSUB GS06G
Cr% = 1: GOSUB GS06.REMPLI
Titre = " ** > LAS VEGAS < ** ": L% = 4: GOSUB GS06D
GOSUB GS06.REMPLI
Titre = " * * * Mon Beau Sapin, Roi des Forets ..... * * * "
Cct% = 9: Cte% = 11: L% = 15: GOSUB GS06C
Cr% = 4: GOSUB GS06.REMPLI
Titre = " * POUR SORTIR: Esc ou Ctrl + Break . . . . . * * * "
Cct% = 9: Cte% = 11: L% = 10: GOSUB GS06C
Cr% = 5: GOSUB GS06.REMPLI
ON TIMER(8 ) GOSUB GS07.LasVegas
E02: Titre = " Style de Ligne choisi (espace ou -) : ( ) "
LOCATE 24, 1: PRINT SPACE$(400)
Cct% = 11: Cte% = 15: L% = 25: GOSUB GS06C
Cr% = 1: GOSUB GS06.REMPLI
LOCATE 25, 51: LINE INPUT S.d.L
IF LEN(S.d.L) < 16 THEN S.d.L = S.d.L + SPACE$(16 - LEN(S.d.L))
E03: IF LEN(S.d.L) <> 16 OR S.d.L = SPACE$(16) THEN
FOR Son% = 400 TO 800 STEP 5: SOUND Son%, .182: NEXT Son%
GOTO E02
END IF
Cebon = "OUI"
FOR I% = 1 TO 16
IF MID$(S.d.L, I%, 1) <> "-" AND MID$(S.d.L, I%, 1) <> " " THEN
Cebon = "": EXIT FOR
END IF
NEXT I%
IF Cebon <> "OUI" THEN S.d.L = "": GOTO E03
ERASE V.Style&
FOR Valeur.Style% = 1 TO 16
IF Valeur.Style% > 1 THEN
S.d.L = RIGHT$(S.d.L, 15) + LEFT$(S.d.L, 1)
END IF
V.Style& = 0
FOR I% = 1 TO 16
IF MID$(S.d.L, I%, 1) = "-" THEN
V.Style& = V.Style& + V.Bit&(I%)
END IF
NEXT I%
V.Style&(Valeur.Style%) = V.Style&
NEXT Valeur.Style%
TIMER ON
DO
LOOP UNTIL INKEY$ = CHR$(27)
END
GS07.LasVegas: Cvegas% = 11
FOR Nb% = 1 TO 48
FOR I% = 1 TO 16
LINE (103, 207)-(524, 256), 0, B
LINE (101, 205)-(526, 258 ), 0, B
LINE (99, 203)-(528, 260), 0, B
IF V.Style&(I%) < 32768 THEN
LINE (103, 207)-(524, 256), Cvegas%, B, V.Style&(I%)
LINE (101, 205)-(526, 258 ), Cvegas%, B, V.Style&(I%)
LINE (99, 203)-(528, 260), Cvegas%, B, V.Style&(I%)
ELSE
V.Style& = V.Style&(I%) - 32768
LINE (103, 207)-(524, 256), Cvegas%, B, V.Style&
LINE (103, 207)-(524, 256), Cvegas%, B, &H8000
LINE (101, 205)-(526, 258 ), Cvegas%, B, V.Style&
LINE (101, 205)-(526, 258 ), Cvegas%, B, &H8000
LINE (99, 203)-(528, 260), Cvegas%, B, V.Style&
LINE (99, 203)-(528, 260), Cvegas%, B, &H8000
END IF
FOR A& = 1 TO Tempo&: NEXT
NEXT I%, Nb%
RETURN
' ***** TITRE ENTOURE
GS06G: L% = L% - 1: C% = 4: GOTO GS06.TITRE
GS06C: L% = L% - 1: C% = 39 - LEN(Titre) / 2: GOTO GS06.TITRE
GS06D: L% = L% - 1: C% = 76 - LEN(Titre)
GS06.TITRE: Lg% = LEN(Titre): COLOR Cct%
LOCATE L%, C%: PRINT Chg; STRING$((Lg%), H); Chd;
LOCATE L% + 1, C%: PRINT V; : LOCATE L% + 1, C% + Lg% + 1: PRINT V;
LOCATE L% + 2, C%: PRINT Cbg; STRING$((Lg%), H); Cbd;
LOCATE L% + 1, C% + 1: COLOR Cte%: PRINT Titre; : RETURN
GS06.REMPLI: Lg% = LEN(Titre)
Xg% = C% * 8 + 1: Xd% = (C% + Lg%) * 8 + 1
Yh% = (L%) * 16 - 6: Yb% = Yh% + 26
FOR X% = Xg% TO Xd%: FOR Y% = Yh% TO Yb%
IF POINT(X%, Y%) = 0 THEN PSET (X%, Y%), Cr%
NEXT Y%, X%
RETURN