Clan x86

Technical (Development, Security, etc.) => General Programming => Botdev => Topic started by: Ryan Marcus on December 19, 2005, 10:21:16 PM

Title: Making Trivia Bot Hints
Post by: Ryan Marcus on December 19, 2005, 10:21:16 PM
I'm adding a trivia feature to my bot... I just finished writing the code to create a hint based on a integer that is passed in called HintLevel.


  dim i, ii, iii as integer
  dim r as new Random
  dim Hint as string
 
  i = len(Answer)
  ii = 0
 
  while ii<>i + 1
    Hint = hint + "-"
    ii = ii + 1
  wend
 
  ii = 0
 
  while ii<>HintLevel + 1
    iii = r.InRange(1, i)
    Hint = left(hint, iii - 1) + mid(Answer, iii - 1, 1) + mid(hint, iii)
    ii = ii + 1
  Wend
 
  return hint


That should return dashs with HintLevel filled in characters... I have not tested it, but I am sure there is a better way to do it. Its in REALBasic, by the way.
Title: Re: Making Trivia Bot Hints
Post by: Joe on December 19, 2005, 11:09:01 PM
It seems more common to use I, J, K, L for loop counters than than I, II, III, IIII.

I don't know about realbasic, but VB is pretty nice with its Mid function, allowing it to be written to as well.

I tossed this together in about 10 minutes. Feel free to do whatever you want with it. Warning: The letters it hints are horribly off. =p

Option Explicit

Private Sub Form_Load()
    MsgBox CreateHint("Ryan is weird.", 1)
    MsgBox CreateHint("Ryan is weird.", 1)
    MsgBox CreateHint("Ryan is weird.", 2)
    MsgBox CreateHint("Ryan is weird.", 2)
    MsgBox CreateHint("Ryan is weird.", 3)
    MsgBox CreateHint("Ryan is weird.", 3)
    MsgBox CreateHint("Ryan is weird.", 4)
    MsgBox CreateHint("Ryan is weird.", 4)
    MsgBox CreateHint("Ryan is weird.", 5)
End Sub

Public Function CreateHint(p_sMessage As String, p_iHintLevel As Integer)
    Dim m_iLettersToHint As Integer, m_sRet As String, ary_m_bHinted(1 To 100) As Boolean
    m_sRet = p_sMessage
    Select Case p_iHintLevel
        Case 1: m_iLettersToHint = Len(p_sMessage) / 5
        Case 2: m_iLettersToHint = Len(p_sMessage) / 4
        Case 3: m_iLettersToHint = Len(p_sMessage) / 3
        Case 4: m_iLettersToHint = Len(p_sMessage) / 2
        Case 5: m_iLettersToHint = Len(p_sMessage)      'The should have lost by now, but eh?
    End Select
    m_iLettersToHint = Len(p_sMessage) - m_iLettersToHint
    Dim I As Long, m_iPositionToHint As Integer
    For I = 1 To 100
        ary_m_bHinted(I) = False
    Next I
    For I = 1 To m_iLettersToHint
        m_iPositionToHint = Int(Rnd * Len(p_sMessage)) + 1
        While ary_m_bHinted(m_iPositionToHint)
            m_iPositionToHint = (m_iPositionToHint Mod Len(p_sMessage)) + 1
        Wend
        ary_m_bHinted(m_iPositionToHint) = True
        Mid(m_sRet, m_iPositionToHint, 1) = "*"
    Next I
    CreateHint = m_sRet
End Function
Title: Re: Making Trivia Bot Hints
Post by: igimo1 on December 20, 2005, 02:46:18 AM
pseudo

Public Function createhint(hint As String, hintlen As Integer)
Dim i As Integer, place As Integer, char As String, L As Integer

i = Rnd(1 * hintlen)
char = Mid(hint, i, 1)
place = InStr(1, char, hint)

For L = 1 To hintlen
If Mid(hint, L, 1) <> char Then
Mid(hint, L, 1) = "-"
End If
Next
End Function
Title: Re: Making Trivia Bot Hints
Post by: FrOzeN on December 20, 2005, 02:58:20 AM
Quote from: Joe[e2] on December 19, 2005, 11:09:01 PM
Select Case p_iHintLevel
    Case 1: m_iLettersToHint = Len(p_sMessage) / 5
    Case 2: m_iLettersToHint = Len(p_sMessage) / 4
    Case 3: m_iLettersToHint = Len(p_sMessage) / 3
    Case 4: m_iLettersToHint = Len(p_sMessage) / 2
    Case 5: m_iLettersToHint = Len(p_sMessage) 'The should have lost by now, but eh?
End Select

m_iLettersToHint = Len(p_sMessage) / (6 - p_iHintLevel)

:)
Title: Re: Making Trivia Bot Hints
Post by: Ryan Marcus on December 20, 2005, 08:38:33 AM
Thanks everybody :)
Title: Re: Making Trivia Bot Hints
Post by: Joe on December 20, 2005, 06:39:06 PM
Haha @ frozen, you're the man.

@Ryan: Does RB support writing to MID?
Title: Re: Making Trivia Bot Hints
Post by: Ryan Marcus on December 22, 2005, 08:48:13 AM
Not by itself, but I wrote a method that lets me do it.
Title: Re: Making Trivia Bot Hints
Post by: Joe on December 22, 2005, 05:59:16 PM
Rock on.