_TITLE "Qbasic 64"
SCREEN _NEWIMAGE(700, 740, 256)
_DELAY .25
_SCREENMOVE 20, 30

'Moldura...
LINE (0, 0)-(699, 739), 11, B 'Moldura inteira
LINE (1, 1)-(698, 738), 11, B
LINE (2, 2)-(697, 737), 11, B
LINE (3, 3)-(696, 736), 11, B
LINE (4, 4)-(695, 735), 11, B

LINE (699, 43)-(2, 43), 11, B 'Linha Horizontal
LINE (699, 44)-(2, 44), 11, B

LINE (536, 737)-(536, 44), 11, B 'Linha Vertical
LINE (535, 737)-(535, 44), 11, B

'Mostra Data
d$ = MID$(DATE$, 1, 3)
c$ = MID$(DATE$, 4, 3)
e$ = MID$(DATE$, 7, 4)
f$ = c$ + d$ + e$

COLOR 11: LOCATE 2, 35: PRINT "* * * LOTOFACIL * * *"
LOCATE 2, 78: PRINT TIME$
LOCATE 2, 4: PRINT f$: COLOR 7

'------------------------------------------------------------------------
DIM cor1(80) AS _INTEGER64
DIM nt(1 TO 3000) AS STRING
DIM pesquisa AS LONG

_CONTROLCHR OFF

OPEN "loto.txt" FOR INPUT AS #1
pesquisa = LOF(1) \ 46
FOR t = 1 TO pesquisa
    LINE INPUT #1, nt$(t)
NEXT
CLOSE

COLOR 15: LOCATE 4, 3: PRINT "N" + CHR$(163); "meros de concursos =>"; pesquisa

DO
    COLOR 30
    'PRINT ExtendedInput$
    LOCATE 6, 14: PRINT "_______________________________"
    LOCATE 6, 3: PRINT "Dezenas => ";
    a$ = ExtendedInput$

    K$ = INKEY$ ' ASCII code number

    FOR i = 1 TO 30 STEP 2
        x$ = x$ + MID$(a$, i, 2) + " "
    NEXT
    Pes$ = _TRIM$(x$)

    IF LEN(Pes$) = 44 THEN
        LOCATE 8, 3: PRINT "Dezenas => "; Pes$; " ="; LEN(Pes$)
        g = 0
        h = 9
        onze = 0
        doze = 0
        trez = 0
        quat = 0

        'COLOR 13: LOCATE 44, 3: PRINT "Digite [ S ] para SAIR..."
        ' COLOR 15
        'LOCATE 44, 34: PRINT "                                 "
        'LOCATE 6, 14: PRINT "____________________________________________"
        ' LOCATE 6, 3: INPUT "Dezenas => ", pes$
        'COLOR 13: LOCATE 44, 3: PRINT "                         "

        '---------------------------------------------------------------------------

        FOR rs = 1 TO pesquisa
            IF h > 41 THEN
                COLOR 13: LOCATE 44, 34: PRINT "Pressione Enter para continuar..."
                DO
                    _LIMIT 30
                LOOP UNTIL INKEY$ = CHR$(13)
                FOR S = 9 TO 43
                    LOCATE S, 2: PRINT "                                                                 "
                    LOCATE S, 70: PRINT "                "
                NEXT S
                h = 9
            END IF
            h = h + 1
            x = 3
            COLOR 15: LOCATE h, x: PRINT RIGHT$("0000" + LTRIM$(STR$(rs)), 4); " => "

            FOR i = 1 TO 44 STEP 3
                x = x + 3
                tt$ = MID$(nt$(rs), i, 2)
                FOR r = 1 TO LEN(Pes$) STEP 3
                    O$ = MID$(Pes$, r, 2)
                    IF tt$ = O$ THEN
                        g = g + 1
                        cor1(g) = i
                        EXIT FOR
                    ELSE
                        COLOR 7: LOCATE h, x + 5: PRINT tt$
                    END IF
                NEXT r
            NEXT i

            IF g <= 10 THEN
                LOCATE h, 2: PRINT "                                                        "
                h = h - 1
                g = 0
            END IF

            IF g = 11 THEN
                onze = onze + 1
                COLOR 48
                LOCATE h, x + 8: PRINT "=>";: PRINT " Onze"
                FOR ag = 1 TO 11
                    LOCATE h, 10 + cor1(ag): PRINT MID$(nt$(rs), cor1(ag), 2)
                NEXT ag
                COLOR 7
            END IF

            IF g = 12 THEN
                doze = doze + 1
                COLOR 52
                LOCATE h, x + 8: PRINT "=>";: PRINT " Doze"
                FOR ag = 1 TO 12
                    LOCATE h, 10 + cor1(ag): PRINT MID$(nt$(rs), cor1(ag), 2)
                NEXT ag
                COLOR 7
            END IF

            IF g = 13 THEN
                trez = trez + 1
                COLOR 36
                LOCATE h, x + 8: PRINT "=>";: PRINT " Treze"
                FOR ag = 1 TO 13
                    LOCATE h, 10 + cor1(ag): PRINT MID$(nt$(rs), cor1(ag), 2)
                NEXT ag
                COLOR 7
            END IF

            IF g = 14 THEN
                quat = quat + 1
                COLOR 40
                LOCATE h, x + 8: PRINT "=>";: PRINT " Quatorze"
                FOR ag = 1 TO 14
                    LOCATE h, 10 + cor1(ag): PRINT MID$(nt$(rs), cor1(ag), 2)
                NEXT ag
                COLOR 7
            END IF

            IF g = 15 THEN
                COLOR 68
                LOCATE h, x + 8: PRINT "=>";: PRINT " Quinze"
                FOR ag = 1 TO 15
                    LOCATE h, 10 + cor1(ag): PRINT MID$(nt$(rs), cor1(ag), 2)
                NEXT ag
                COLOR 7
            END IF

            g = 0


            LOCATE 18, 69: PRINT "k$ ASCII code "; K$ 'ASCII code
            LOCATE 20, 69: PRINT "k$ ASCII code "; ASC(K$) 'Shows ASCII code number


            COLOR 48
            LOCATE 8, 70: PRINT "N11:"; RIGHT$("000" + LTRIM$(STR$(onze)), 3); " - Vezes"
            COLOR 52
            LOCATE 10, 70: PRINT "N12:"; RIGHT$("000" + LTRIM$(STR$(doze)), 3); " - Vezes"
            COLOR 36
            LOCATE 12, 70: PRINT "N13:"; RIGHT$("000" + LTRIM$(STR$(trez)), 3); " - Vezes"
            COLOR 40
            LOCATE 14, 70: PRINT "N13:"; RIGHT$("000" + LTRIM$(STR$(quat)), 3); " - Vezes"
        NEXT
    ELSE
        BEEP
    END IF
    x$ = ""
    'Scrn$ = INKEY$
LOOP UNTIL Scrn$ = CHR$(27)


'--------------------------------------------------------------------------------

FUNCTION ExtendedInput$
    PCOPY 0, 1
    A = _AUTODISPLAY: X = POS(0): Y = CSRLIN
    CP = 0: OldCP = 0 'Cursor Position
    _KEYCLEAR
    DO
        PCOPY 1, 0
        IF _KEYDOWN(100307) OR _KEYDOWN(100308) THEN AltDown = -1 ELSE AltDown = 0
        k = _KEYHIT
        IF AltDown THEN
            SELECT CASE k 'ignore all keypresses except ALT-number presses
                CASE 48 TO 57: AltWasDown = -1: alt$ = alt$ + CHR$(k)
            END SELECT
        ELSE
            SELECT CASE k 'without alt, add any keypresses to our input
                CASE 8
                    oldin$ = in$
                    IF CP > 0 THEN OldCP = CP: CP = CP - 1
                    in$ = LEFT$(in$, CP) + MID$(in$, CP + 2) 'backspace to erase input
                CASE 9
                    oldin$ = in$
                    in$ = LEFT$(in$, CP) + SPACE$(4) + MID$(in$, CP + 1) 'four spaces for any TAB entered
                    OldCP = CP
                    CP = CP + 4
                CASE 32 TO 128
                    IF _KEYDOWN(100305) OR _KEYDOWN(100306) THEN
                        IF k = 118 OR k = 86 THEN
                            oldin$ = in$
                            in$ = LEFT$(in$, CP) + _CLIPBOARD$ + MID$(in$, CP + 1) 'ctrl-v paste
                            'CTRL-V leaves cursor in position before the paste, without moving it after.
                            'Feel free to modify that behavior here, if you want it to move to after the paste.
                            CP = CP + LEN(_CLIPBOARD$)
                        END IF
                        IF k = 122 OR k = 90 THEN SWAP in$, oldin$: SWAP OldCP, CP 'ctrl-z undo
                    ELSE
                        oldin$ = in$
                        in$ = LEFT$(in$, CP) + CHR$(k) + MID$(in$, CP + 1) 'add input to our string
                        OldCP = CP
                        CP = CP + 1
                    END IF
                CASE 18176 'Home
                    CP = 0
                CASE 20224 'End
                    CP = LEN(in$)
                CASE 21248 'Delete
                    oldin$ = in$
                    in$ = LEFT$(in$, CP) + MID$(in$, CP + 2)
                CASE 19200 'Left
                    CP = CP - 1
                    IF CP < 0 THEN CP = 0
                CASE 19712 'Right
                    CP = CP + 1
                    IF CP > LEN(in$) THEN CP = LEN(in$)
            END SELECT
        END IF
        alt$ = RIGHT$(alt$, 3)
        IF AltWasDown = -1 AND AltDown = 0 THEN
            v = VAL(alt$)
            IF v >= 0 AND v <= 255 THEN in$ = in$ + CHR$(v)
            alt$ = "": AltWasDown = 0
        END IF
        blink = (blink + 1) MOD 30
        LOCATE Y, X
        PRINT LEFT$(in$, CP);
        IF blink \ 15 THEN PRINT " "; ELSE PRINT "_";
        PRINT MID$(in$, CP + 1)

        _DISPLAY
        _LIMIT 30
    LOOP UNTIL k = 13

    PCOPY 1, 0
    LOCATE Y, X: PRINT in$
    ExtendedInput$ = in$
    IF A THEN _AUTODISPLAY
END FUNCTION



