Welcome, Guest
You have to register before you can post on our site.

Username/Email:
  

Password
  





Search Forums

(Advanced Search)

Forum Statistics
» Members: 714
» Latest member: HenryG
» Forum threads: 3,569
» Forum posts: 31,909

Full Statistics

Latest Threads
QB64PE v 4.4.0
Forum: Announcements
Last Post: madscijr
2 hours ago
» Replies: 8
» Views: 674
4x4 Square Elimination Pu...
Forum: bplus
Last Post: bplus
5 hours ago
» Replies: 12
» Views: 410
Container Data Structure
Forum: Utilities
Last Post: bplus
6 hours ago
» Replies: 3
» Views: 126
Accretion Disk
Forum: Programs
Last Post: bplus
6 hours ago
» Replies: 11
» Views: 288
QBJS v0.10.0 - Release
Forum: QBJS, BAM, and Other BASICs
Last Post: Unseen Machine
Today, 04:14 AM
» Replies: 13
» Views: 1,296
Arrays inside Types?
Forum: General Discussion
Last Post: hsiangch_ong
Today, 03:24 AM
» Replies: 47
» Views: 1,442
Has anybody experience wi...
Forum: Help Me!
Last Post: Rudy M
Yesterday, 08:47 AM
» Replies: 31
» Views: 1,937
Sorting numbers - FiliSor...
Forum: Utilities
Last Post: PhilOfPerth
03-11-2026, 12:48 AM
» Replies: 11
» Views: 362
Quick Sort for variable l...
Forum: Utilities
Last Post: SMcNeill
03-10-2026, 03:14 PM
» Replies: 3
» Views: 99
Ready for Easter!
Forum: Holiday Code
Last Post: bplus
03-10-2026, 12:15 PM
» Replies: 0
» Views: 58

 
  Bubble Universe by Samuel Gomes
Posted by: Magdha - 01-25-2026, 11:08 AM - Forum: In-Form - Replies (8)



Attached Files Thumbnail(s)
   

.zip   BubbleUniverse.zip (Size: 114.78 KB / Downloads: 7)
Print this item

  A drawing program
Posted by: Frederick - 01-24-2026, 08:15 PM - Forum: Programs - Replies (8)

A drawing program in the works.



Attached Files
.zip   alphap.zip (Size: 673.27 KB / Downloads: 22)
Print this item

  Fahrenheit-Celsius Converter - Referenced to Elsewhere
Posted by: Magdha - 01-24-2026, 03:58 PM - Forum: In-Form - No Replies



Attached Files Thumbnail(s)
   
Print this item

  Forum Change To Quotes
Posted by: SMcNeill - 01-24-2026, 11:20 AM - Forum: Announcements - Replies (2)

If you guys notice the Help Me area, last night I was asking for folks to test the changes to how quotes are displayed in a few specific themes.  Those tests seemed to pass without breaking anything, and most folks seem to appreciate the change, so I've now updated that behavior to work across all themes.

Quotes now only show a maximum of 140 pixels of information.   No longer will anyone have to scroll past three pages of long replies just to see where somebody left a smiley face as a response.  

ALL the information is preserved, same as always.  It's just all collapsed inside a quote box now, which you have to expand by using the SHOW MORE button.  Once you're done reading the quotes, you can compress them back down with SHOW LESS as the button toggles, if you want to.

We lose nothing.  Everything is here just like always.  For the people who need those quotes to track information flow, the info is all still there.  Just expand those SHOW MORE fully and presto, you're golden.  For everyone else, you get enough info to see who posted, who the new poster is replying to, and the link back to the original conversation if you're really curious and don't want to expand the conversation.

I think this should be a win-win for everyone, with nobody finding anything to really dislike about this little change.   The forums have now became a little less cluttered, a little easier to navigate, and now have a lot less crap to scroll past.

You're welcome.  I'll take my milk and cookies now, please.  Praise me!  Praise me!   .css and javascript are normally a bit outside my wheelhouse, so I only failed about a bazillion times before I got this zoomed in properly for us.  Even @Pete should say, "GOOD JOB VARMIT!!" over this change!  Big Grin



One note:  This storm is coming fast this way and they're calling for a couple of inches of ice with it now.  Steve the Amazing may be without power soon, and if so, I probably won't have it again for a week or so.  If you guys notice anything off with this, or need any changes, you'd best post them quickly because Steve may just disappear and not be around for multiple days to make any correction for you guys.  You may have to live with posts being misaligned or something odd, for a while, if the css is off on your browser/system, unless you speak up early and tell me *NOW* if you see anything unusual.

Print this item

  Forum Test #2
Posted by: SMcNeill - 01-24-2026, 03:34 AM - Forum: Help Me! - Replies (8)

Okies guys.  Same deal.  Try the Twilight Theme once more for testing.  I've made a minor change or two to how it was, and this seems more like how I'd envision it working better.   Look for that Show More in the post and see where it's hiding at for us.  It's no longer down below the area like it was.  See if you can finds it.  Smile

Print this item

  Forum Testers Test My Changes!!
Posted by: SMcNeill - 01-23-2026, 11:16 PM - Forum: Help Me! - Replies (8)

Ok guys, help me help you by making this a better little home on the web.

Folks complain over having to scroll past pages of quotes.   I've tried to fix that.

Scroll ALLLLLL the down and in the bottom right corner of any screen, you'll see a way to change themes.   

Kindly swap over to the TWILIGHT THEME and then just browse the forums and see if anything seems overly broken with it.  It was the least used theme, so one I used for testing my changes on.

Here is what one image of a long ass quote looks like, as they're currently rendered.
 
[Image: image.png]


And here is the image of how these quotes would look with the changes, provided they work on all broswers and don't break anything:


[Image: image.png]


If you look, that's a much smaller quote, but there's an "SHOW MORE" link which you can link to expand the collapsed quote if you really need to see what the heck the person was referring to.

It quotes it.  It saves the original quote.  It's still referenceable.  

But it defaults to being collapsed so folks don't have to scroll past a whole page of quote just for somebody to give a smiley face or "Good job" or whatever

Test the TWILIGHT THEME, tell me how it behaves on your system and browser, and if all works as advertised, I'll push the change into everything else soon(tm).   

Maybe quotes won't be the issue for folks that they've been in the past, with a little fix like this for the forums.  Wink

Print this item

  PUT YOUR INFORM PROGRAMS HERE
Posted by: Magdha - 01-23-2026, 12:28 PM - Forum: In-Form - Replies (14)

Now there is a distinct InForm Section, put your old programs here.  If you've already posted them, create a thread here with a URL reference

@bplus
@TempodiBsic
@SpriggsySpriggs
@boxgaming
@bobalooie

@a740g I got these InForm project creators from the github.  Could we also put the work from Samuel Gomes, Terry Ritchie, George McGinn, & Fellippe?

When projects have been loaded here, we can delete this temporary thread.  We'll have a worthy section here.

Print this item

  Crossword Maker InForm Program - Referenced to Elsewhere
Posted by: Magdha - 01-23-2026, 11:54 AM - Forum: In-Form - No Replies



Attached Files Thumbnail(s)
       
Print this item

  Me, AI and C++
Posted by: Unseen Machine - 01-23-2026, 04:57 AM - Forum: General Discussion - Replies (5)

I wont stop my route but do you guys feel bemused, annoyed or anything else with my new methodology? I.e. I Architect now over coding for hours on end! I have to analyse, debug, edit mod etc as I used to but now I've got no limits DEV is lightning fast, i'm once again LEARNING coding and hope it'll benefit us all. 

Me

Print this item

  Bogglish - another Boggle look-alike
Posted by: PhilOfPerth - 01-23-2026, 04:28 AM - Forum: PhilofPerth - No Replies

Apologies to B+ et al, for not entering this sooner; I wrote my first version of this game quite a while ago, and since then, several, (ok, much better) renditions of Boggle have been produced.
But as my version has a couple of added "features", I thought I'd present it anyway. So here it is:

Code: (Select All)
Common Shared CPR, Plr, Name$(), Score(), Wd$, NP, WdVal, NumWds, Words$(), Fail, TimeLeft, TimeAdj

SW = 1040: sh = 720
Screen _NewImage(SW, sh, 32)
SetFont: f& = _LoadFont("C:\WINDOWS\fonts\courbd.ttf", 20, "monospace"): _Font f&
CPR = SW / _PrintWidth("X")
_ScreenMove (_DesktopWidth - SW) / 2, 100

Randomize Timer

Dim Cons$(21), Vwls$(5), Name$(4), Score(4)

FreeTime = 10

OK: Instructions

GetNames
If NP < 2 Then Red: Bad: Centre "Minimum 2 players", 15: Sleep 1: System
Plr = Int(Rnd * NP) + 1
OK: Cls
LetterDistribution: '
Data "B","C","D","F","G","H","J","K","L","M","N","P","Q","R","S","T","V","W","X","Y","Z"
For a = 1 To 21: Read Cons$(a): Next
Data "A","E","I","O","U"
For a = 1 To 5: Read Vwls$(a): Next

GetBoxSize:
_KeyClear
Yellow
Centre "Box size (1=4 dice, 2=9 dice, 3=16 dice, 4=25 dice)?", 14 '                    size 1 very quick, 4 can give a very long game
While size$ = "": size$ = InKey$: Wend
Size = Val(size$): If Size < 1 Or Size > 4 Then Size = 2
Centre Str$(Size), 16
_Delay .5: OK: Cls

GeMode:
_KeyClear
WIPE "141516": Centre "Choose Mode 1 or 2", 14
Centre "Mode 1: multiple use of dice, 2: single use of dice; default 1", 15 '        mode 2 allows more and longer words and higher scores
While Mode$ = "": Mode$ = InKey$: Wend
Mode = Val(Mode$): If Mode < 1 Or Mode > 2 Then Mode = 1
txt$ = "Multiple use of dice selected": If Mode = 2 Then txt$ = "Single use of dice selected"
Centre txt$, 16
Sleep 1: OK: Cls

SetUpBox:
BoxV = 176: Row = 8
RowSize = Size + 1
NumDice = RowSize * RowSize
ReDim Dice$(RowSize, RowSize)
Colm = 36 - 3 * Size
BoxH = 492 - 40 * Size
Yellow
PSet (BoxH, BoxV)
For a = 1 To RowSize
    For b = 1 To RowSize
        Draw "r65d60l65u60r65"
    Next
    nxtrow$ = "l" + Str$(65 * RowSize) + "d60"
    Draw nxtrow$
Next

ShowDicePos:
White
For a = 1 To RowSize
    For b = 1 To RowSize
        Locate Row + a * 3, Colm + b * 5
        Print "*"
    Next
    Print
Next

Shake:
Yellow
Centre "Press any key to shake the Box ", 31
Sleep
For a = 1 To 15: Play "v100w8l32o5t240l64c": _Delay .1: Next
_Delay .5: WIPE "31"

GetDice:
NumWds = 1: Letters$ = ""
Passes = 0
Dim Words$(75)
White
For a = 1 To RowSize
    For b = 1 To RowSize
        Dice$(a, b) = Cons$(Int(Rnd * 21) + 1) '                                      get random consonant for each die
    Next
Next
For a = 1 To Size
    Dice$(Int(Rnd * RowSize + 1), Int(Rnd * RowSize + 1)) = Vwls$(Int(Rnd * 5) + 1) ' include 1 vowel per grid Size to ensure words always available
Next
For a = 1 To RowSize: For b = 1 To RowSize
        Letters$ = Letters$ + Dice$(a, b)
        Locate Row + a * 3, Colm + b * 5
        Print Dice$(a, b)
    Next
Next

PlayerUp:
WIPE "29"
Wd$ = "": Ltrs = 0: WdVal = 0
If Passes = NP Then EndGame
txt$ = "": For a = 1 To NP: txt$ = txt$ + Name$(a) + ":" + Str$(Score(a)) + "     ": Next: WIPE "1": Centre txt$, 1
Yellow: txt$ = "Passes:" + Str$(Passes): Centre txt$, 3
Plr = Plr + 1: If Plr > NP Then Plr = 1
txt$ = Name$(Plr) + " Playing": WIPE "06": Centre txt$, 6

T1 = Timer '                                                                             start timing player's turn

GetEntry:
Yellow
WIPE "26": txt$ = " Type your word": Centre txt$, 26
_KeyClear: k$ = ""
While k$ = "" '                                                                          wait for key press
    k$ = InKey$
    TimeLeft = Int(T1 - Timer + FreeTime)
    If TimeLeft < 0 Then Red Else Yellow
    txt$ = " Free Time remaining:" + Str$(TimeLeft) + " ": Centre txt$, 8: White
Wend
k$ = UCase$(k$) '                                                                        convert alpha to caps    (Chr$(13) is unchanged)

CheckEntry:
Fail = 0
KeyCheck:
If k$ <> Chr$(13) And (k$ < "A" Or k$ > "Z") Then Fail = 1: Bad: GoTo GetEntry '        only accept Enter or alpha
If k$ >= "A" And k$ < "Z" Then
    Ltrs = Ltrs + 1
    WdVal = WdVal + Ltrs
    Wd$ = Wd$ + k$: Centre Wd$, 29
    GoTo GetEntry
End If

CheckForPass: '                                                                         Ltrs is length of wd$, WdVal is points value of Wd$
If Ltrs < 1 Then
    Bad: Fail = 1: Red: Centre "Player passed their turn", 30: Sleep 1
    Yellow: WIPE "30": Passes = Passes + 1: Evaluate: GoTo PlayerUp '                                                           if no letters, set Fail flag,count as pass and evaluate
    '                                                                                   after evaluating, always get next player
End If
Passes = 0 '                                                                            letters were entered, Passes is zeroed, continue checks

CheckLetters: '                                                                          check all letters are available in this mode
For a = 1 To Len(Wd$)
    L$ = Mid$(Wd$, a, 1) '                                                               get each letter of Wd$
    Po = InStr(Letters$, L$) '                                                         find its position in the list of dice-letters, if any
    If Po = 0 Then
        Bad: Fail = 1: Red: txt$ = "Illegal letter (" + Mid$(Wd$, a, 1) + ")": Centre txt$, 30
        Sleep 1:: Yellow: Evaluate: GoTo PlayerUp '                                       if not found, set Fail flag, evaluate;
    Else '                                                                               but if found,
        If Mode = 2 Then Mid$(Letters$, Po, 1) = LCase$(Mid$(Letters$, Po, 1)) '     if mode 2, make dice-letter lower-case to hide it
    End If
Next '                                                                                   get next Wd$ letter
Letters$ = UCase$(Letters$) '                                                        all letters were valid, back to Upper-case for next check

DupWord: '                                                                               check if word already used
For a = 1 To NumWds '                                                                    check in list of used words for duplicate
    If Wd$ = Words$(a) Then
        Bad: Fail = 1: Red: Centre "This word has already been used", 30
        Sleep 1: Yellow: WIPE "30": Evaluate: GoTo PlayerUp '                            this word is already used, set fail flag, stop checking
    End If
Next

LegalWord::
Found = 0
Open "R_ALL15" For Random As #1 Len = 19 '                                           list of words up to 15 letters
FL = LOF(1) \ 19 + 1 '                                                               get length of file
bot = 0: top = FL '                                                                  set bottom as 0 and top as FileLength for search area
While Abs(top - bot) > 1
    srch = Int((top + bot) / 2)
    Get #1, srch, A$ '                                                               get middle word of search area
    Select Case A$
        Case Is = Wd$
            Found = 1: Exit While '                                                  word matched, set Found flag, stop searching
        Case Is < Wd$
            bot = srch '                                                             word-list word lower is too low, move bottom up to middle
        Case Is > Wd$
            top = srch '                                                             word-list word is too high move top to middle
    End Select
Wend '                                                                               repeat until gap is 1 or word is found
Close
If Found = 0 Then
    Bad: Fail = 1: WIPE "30": Red: Centre "Your word was not found in the Dictionary", 30
    Sleep 1: Yellow: WIPE "30": Evaluate: GoTo PlayerUp
End If
OK: Evaluate: GoTo PlayerUp

Sub Evaluate:
    If Fail = 1 Then '                                                                if word failed a test,
        If TimeLeft > 0 Then
            TimeLeft = 0
            TimeLeft = -TimeLeft '                     no credits for unused time (over-time still penalized),
        End If
        WdVal = -WdVal '                                                              and deduct word value
    End If
    Points = WdVal + TimeLeft
    Score(Plr) = Score(Plr) + Points
    Announce:
    Sleep 1
    WIPE "3031"
    txt$ = "Word value: " + Str$(WdVal) + " points"
    Yellow: Centre txt$, 30
    txt$ = "Time adustment: " + Str$(TimeLeft) + " points"
    Centre txt$, 31
    txt$ = "": For a = 1 To NP: txt$ = txt$ + Name$(a) + ":" + Str$(Score(a)) + "     ": Next: WIPE "1": Centre txt$, 1
    Sleep 3
    WIPE "3031"
    If Fail = 1 Then Wd$ = LCase$(Wd$) '                                                 change failed words to lower-case for display
    NumWds = NumWds + 1: Words$(NumWds) = Wd$ '                                          add to found-words list (whether good or bad)
    For a = 0 To 4
        Locate a + 32, 1
        For b = 1 To 15 '                                                                show 10 words per row
            If Words$(a * 10 + b) > "Z" Then Red Else White '                            if word is lower-case, show in red, otherwise white
            Print " "; Words$(a * 10 + b);
        Next
    Next
    Wd$ = ""
End Sub

Sub EndGame
    Cls
    OK
    Yellow: Centre "Game Finished", 10: Sleep 1
    Centre "Final Scores", 12: White
    For a = 1 To NP
        Print Tab(33); Name$(a); Tab(46); Score(a)
    Next
    Winr = 1 '                                                                           assume player 1 is winner
    For a = 1 To NP
        If Score(a) > Score(Winr) Then Winr = a '                                        if player 2 score higher, change winner to player 2
    Next
    txt$ = "Congratulations, " + Name$(Winr)
    Yellow: Centre txt$, 18: Sleep: System
End Sub

Sub Bad
    Play "w1o2l16gc"
End Sub

Sub OK
    Play "w1o3l64ceg"
End Sub

Sub Centre (txt$, linenum) '                                                             centre Txt$ on Line Number
    ctr = Int(CPR / 2 - Len(txt$) / 2) + 1
    Locate linenum, ctr
    Print txt$
End Sub

Sub WIPE (ln$)
    If Len(ln$) = 1 Then ln$ = "0" + ln$
    For a = 1 To Len(ln$) - 1 Step 2
        wl = Val(Mid$(ln$, a, 2))
        Locate wl, 1: Print Space$(CPR); '                                               print line of spaces on Line WL (2 digit line numbers)
    Next
End Sub

Sub White
    Color _RGB(255, 255, 255)
End Sub

Sub Yellow
    Color _RGB(255, 255, 0)

End Sub
Sub Red
    Color _RGB(255, 0, 0)
End Sub

Sub GetNames
    GetOne:
    _KeyClear
    NP = 0
    Do
        If NP = 4 Then Exit Do
        NP = NP + 1
        Locate 14, 18
        Yellow: Print "Name for player"; NP; "(or just <ENTER> to finish) ";: White
        Input Plr$
        If Plr$ = "" And NP < 2 Then
            Red: Bad: Centre "Minimum 2 players", 15: Sleep 1: WIPE "1415": Sleep 1: GoTo GetOne
        End If
        If Plr$ = "" Then NP = NP - 1: Exit Sub
        Plr$ = UCase$(Plr$)
        If Plr$ < "A" Or Plr$ > "Z" Then Plr$ = "Player" + Str$(NP)
        If Len(Plr$) > 8 Then Plr$ = Left$(Plr$, 7)
        Name$(NP) = Plr$
        Centre Name$(NP), 16: _Delay .5
        OK
        WIPE "1416"
    Loop
    Plr = Int(Rnd * NP) + 1
    Cls
End Sub

Sub Instructions:
    Yellow: Centre "Bogglish", 5
    Centre "A game for 2 to 4 players", 6: White: Print
    Print "  This game is loosely based around the dice game of Boggle. It uses 9, 16,"
    Print "  25 or 36 virtual dice. Players take turns to form words from the letters"
    Print "  revealed when the dice are shaken. Each letter is worth 1 point.": Print
    Print "  Before the game starts, players select how many dice to use. The box of"
    Print "  dice is then shaken, and players take turns to find words of two or more"
    Print "  letters that they can form using the revealed letters. Points are earned"
    Print "  for valid words, or lost for invalid ones, based on their length.": Print
    Print "  Points can also be earned or lost depending on the time spent entering the"
    Print "  word, with 30 seconds of free time before a time penalty of 1 point per"
    Print "  second is applied. Unused time earns credits, but only on valid words.": Print
    Print "  There are two modes of play. In Mode 1, dice can only be used once in each"
    Print "  word, while in Mode 2, they can be re-used any number of times. Words can"
    Print "  not be repeated. If a player can't find a new word they may pass, but may"
    Print "  continue to submit words they find later. The game ends when all players"
    Print "  pass consecutively."
    Yellow: Centre "Press any key to start", 27
    Sleep: OK: Cls
End Sub



Attached Files
.zip   R_ALL15.zip (Size: 1.05 MB / Downloads: 12)
Print this item