Boggle Clone


Generate a boggle puzzle - including a countdown timer.

'** 12/30/2002 5:29:54 PM
'** Boogle - a boggle clone
'** by Thomas and Alyce Watson

    True = 1 : False = 0
    Dim cubes$(25,6)
    Dim grid$(5,5)

[InitCubes]
    For i=1 to 25
        For j=1 to 6
            Read a$
            cubes$(i,j)=a$
        Next j
    Next i

m$="This is a boggle board simulator. "
m$=m$+"Click the NEW Button to create a puzzle. "
m$=m$+"A Timer will count down 300 seconds. "
m$=m$+"Grab a pencil and paper and write down as "
m$=m$+"many words as you can. Each word must have at "
m$=m$+"three letters. You can't reuse the tiles, but "
m$=m$+"you can go in any direction to make the words. "
m$=m$+"If you prefer, you can print a hard-copy of "
m$=m$+"the puzzle."
notice m$

[WindowSetup]
    NoMainWin
    WindowWidth = 432 : WindowHeight = 359
    UpperLeftX = Int((DisplayWidth-WindowWidth)/2)
    UpperLeftY = Int((DisplayHeight-WindowHeight)/2)

[ControlSetup]

Menu        #1, "&File", "&New", [new], | ,_
    "&Print", [print], | , "E&xit", [quit]
Graphicbox  #1.g, 1, 1, 302, 302
Statictext  #1.label, "Time Left:", 326, 90, 100, 24
Statictext  #1.count, "300", 346, 120, 100, 24
Button      #1.new, "New",[new],UL, 312, 5, 105, 25
Button      #1.exit, "Exit",[quit],UL, 312, 35, 105, 25

Open "Boogle" For Window_nf As #1

    Print #1, "trapclose [quit]"
    Print #1.g, "down; fill White; flush"
    Print #1, "font ms_sans_serif 10"
    Print #1.g, "font courier_new 30 37"

[loop]
    Wait

[quit]
    Close #1 : End

[new]
    GoSub [doLetters]
    GoSub [drawGrid]
    secondsLeft=300
    Print #1.count, Str$(secondsLeft)
    Timer 1000, [activateTimer]    'initialize the timer
    Wait

[activateTimer]
    secondsLeft=secondsLeft-1
    Print #1.count, Str$(secondsLeft)
    If secondsLeft=0 Then [endGame]
    GoTo [loop]

[endGame]
    Timer 0
    Notice "Time is up."
    Wait

[print]
    #1.g "getbmp boogle 0 0 300 300"
    BmpSave "boogle", "boogle.bmp"
    RunFile$=GetShortPathName$(DefaultDir$+"\boogle.bmp")
    Run "mspaint.exe " + RunFile$ + " /p", HIDE
    UnloadBmp "boogle"
    Wait

[drawGrid]
    #1.g "cls; color black"
    For i = 60 to 300 step 60
        #1.g "Line ";i;" 0 ";i;" 300"
    Next
    For j = 60 to 300 step 60
        #1.g "Line 0 ";j;" 300 ";j
    Next

    For x=1 to 5
        For y=1 to 5
            lx=(x-1)*60+15
            ly=(y-1)*60+45
            #1.g, "place ";lx;" ";ly
            #1.g, "\";grid$(x,y)
        Next
    Next
    Return

Function GetShortPathName$(lPath$)
     sPath$=Space$(256)    'create string buffer
     lenPath=Len(sPath$)   'length of buffer
     CallDLL #kernel32, "GetShortPathNameA",_
         lPath$ As ptr,_    'long pathname
         sPath$ As ptr,_    'buffer to receive short path name
         lenPath As long,_  'length of buffer
         r As long          'length of returned string
     GetShortPathName$=Left$(sPath$,r)
     End Function

[doLetters]
    GoSub [clearGrid]
    For i=1 to 25
        n=Int(Rnd(0)*6+1)
        x=Int(Rnd(0)*5+1)
        y=Int(Rnd(0)*5+1)
        While grid$(x,y)<>""
            x=Int(Rnd(0)*5+1)
            y=Int(Rnd(0)*5+1)
        Wend
        grid$(x,y)=cubes$(i,n)
    Next
    Return

[clearGrid]
    For x=1 to 5
        For y=1 to 5
            grid$(x,y)=""
        Next
    Next
    Return

[dataStuff]
    Data i,t,c,s,e,p
    Data a,r,a,s,a,f
    Data e,e,e,e,a,a
    Data o,d,h,n,t,h
    Data r,w,v,o,g,r
    Data o,u,o,t,w,n
    Data r,a,s,a,i,f
    Data qu,x,z,k,j,b
    Data r,i,s,p,y,f
    Data n,d,l,o,h,r
    Data p,l,e,t,c,i
    Data t,w,s,c,n,c
    Data o,l,d,h,r,h
    Data n,n,e,n,d,a
    Data e,e,e,e,a,m
    Data e,t,m,t,t,o
    Data m,n,n,e,g,a
    Data l,d,n,r,d,o
    Data m,g,a,e,u,e
    Data p,r,i,y,h,r
    Data e,t,i,l,c,i
    Data n,s,s,s,u,e
    Data r,f,s,y,a,i
    Data o,t,t,u,o,o
    Data e,t,i,t,i,i


Home

Source Code

Utilities

Internet

Games

Graphics

Media Demos

Snippets

DLL's

API Resources

Freeware

LB 4 Companion

Mastering LB 3

LB Workshop

Game Workshop

Links

Index