Office97 Assistant Plays Games!!!

By | 2002-06-01

This code makes the irritating office assistant a fun playmate, he play games of Paper, Scissors, Stone…and his expressions change according to your actions!!!!

Original Author: Ed Hockaday

Assumptions

You will need the ietimer.ocx (from ie4) to get this working, a none timer version can be easily built using this code…

API Declarations

Code

'This bit goes in a form
'To create the form follow these instructions
'1 Open word, go to the "tools" menu, select "macros" then "Visual Basic Editor"
'2 Make a form, call the form frmFight
'3 Add three Option buttons, call these optPaper, optScissors and optStone
'make sure the text on them says Paper, Scissors and Stone respectively
'4 Add two labels, call these lblWinsLossesDraws and lblTimerObject
'5 Add two Command buttons, call these cmdChosen and cmdExit
'6 Add the additional control "Timer Object" (ietimer.ocx)
'7 Add a timer control to the form call this tmrTimer
'8 Add the following code to the form
'Note1: This was designed to play against clipit assistant but you can use any,
'it is simple to change the animations and office97 has a full help file on this
'Note2: To convert in to Visual Basic just remove all reference to Assistant in the form
'code, and follow instructions above (for 6 just use the normal VBtimer)
'Note3: You will need the ietimer ocx to get this to work in office97 (it works in VB without)
'Note4: If you like this code please tell me at edhockaday@hotmail.com, have fun with it!!!
Option Explicit
Dim gVar1
Dim gVar2
Dim gDraw As Boolean
Dim gMessage
Dim gWins
Dim gLosses
Dim gDraws
Dim gTimerObject
Dim OptionChosen
'**************************************
'*    Macros by Ed Hockaday    *
'*       151298        *
'**************************************
Public Sub sDraw()
If gVar1 = gVar2 Then
  sConvertNumberToText
  MsgBox "You both chose " & gVar1
  gDraws = gDraws + 1
  gDraw = True
  Assistant.Visible = True
  Assistant.Animation = msoAnimationLookUp
End If
End Sub
Public Sub sConvertTextToNumber()
If gVar1 = "Paper" Then
  gVar1 = 1
ElseIf gVar1 = "Scissors" Then
  gVar1 = 2
ElseIf gVar1 = "Stone" Then
  gVar1 = 3
End If
If gVar2 = "Paper" Then
  gVar2 = 1
ElseIf gVar2 = "Scissors" Then
  gVar2 = 2
ElseIf gVar2 = "Stone" Then
  gVar2 = 3
End If
End Sub
Public Sub sConvertNumberToText()
If gVar1 = 1 Then
  gVar1 = "Paper"
ElseIf gVar1 = 2 Then
  gVar1 = "Scissors"
ElseIf gVar1 = 3 Then
  gVar1 = "Stone"
End If
If gVar2 = 1 Then
  gVar2 = "Paper"
ElseIf gVar2 = 2 Then
  gVar2 = "Scissors"
ElseIf gVar2 = 3 Then
  gVar2 = "Stone"
End If
End Sub
Public Sub sVar1Win()
Assistant.Visible = True
Assistant.Animation = msoAnimationGetArtsy
MsgBox "You win"
gWins = gWins + 1
End Sub
Public Sub sVar2Win()
Assistant.Visible = True
Assistant.Animation = msoAnimationCharacterSuccessMajor
MsgBox "You lose"
gLosses = gLosses + 1
End Sub
Public Sub sReconcile()
If gVar1 = 1 Then
  If gVar2 = 3 Then
    gMessage = " wraps "
    sVar1Win
  ElseIf gVar2 = 2 Then
    gMessage = " gets cut by "
    sVar2Win
  End If
ElseIf gVar1 = 2 Then
  If gVar2 = 1 Then
    gMessage = " cuts "
    sVar1Win
  ElseIf gVar2 = 3 Then
    gMessage = " is blunted by "
    sVar2Win
  End If
ElseIf gVar1 = 3 Then
  If gVar2 = 2 Then
    gMessage = " blunts "
    sVar1Win
  ElseIf gVar2 = 1 Then
    gMessage = " gets wrapped by "
    sVar2Win
  End If
End If
End Sub
Public Sub sTimerObject()
If gTimerObject = "Paper" Then
  gTimerObject = "Stone"
ElseIf gTimerObject = "Stone" Then
  gTimerObject = "Scissors"
ElseIf gTimerObject = "Scissors" Then
  gTimerObject = "Paper"
End If
End Sub
Public Sub sLanding()
gVar2 = Int((3 * Rnd) + 1)
If gVar2 = 1 Then
  gVar2 = "Paper"
ElseIf gVar2 = 2 Then
  gVar2 = "Scissors"
ElseIf gVar2 = 3 Then
  gVar2 = "Stone"
End If
lblTimerObject.Caption = "Clipit chooses " & gVar2
End Sub
Private Sub cmdChosen_Click()
Assistant.Visible = True
Assistant.Animation = msoAnimationIdle
gTimerObject = "Paper"
gDraw = False
gMessage = ""
gVar1 = ""
'gVar2 = Int((3 * Rnd) + 1)
If gWins = "" Then gWins = "0"
If gLosses = "" Then gLosses = "0"
If gDraws = "" Then gDraws = "0"
If optPaper.Value = True Then
  gVar1 = 1
ElseIf optScissors.Value = True Then
  gVar1 = 2
ElseIf optStone.Value = True Then
  gVar1 = 3
End If
tmrTimer.Interval = 1
End Sub
Private Sub cmdExit_Click()
If gWins < gLosses Then
  With Assistant
  .Visible = True
  .Animation = msoAnimationGetAttentionMajor
    With .NewBalloon
    .Heading = "Quit while you're ahead...chicken"
    .Text = "...come on have another go?"
    .Labels(1).Text = "Yes!"
    .Labels(2).Text = "No!"
    .Mode = msoModeModal
    OptionChosen = .Show
    End With
  End With
  If OptionChosen = 1 Then
    Exit Sub
  ElseIf OptionChosen = 2 Then
    Assistant.Animation = msoAnimationDisappear
    Assistant.Visible = False
    MsgBox "Macros by Ed Hockaday - 151298"
    ' Pass these macros on, but change my name and I will find you and kill you
    ' Thank you kindly!!!
    Unload frmFight
  End If
ElseIf gWins > gLosses Then
  With Assistant
  .Visible = True
  .Animation = msoAnimationGetAttentionMajor
    With .NewBalloon
    .Heading = "Hahaha I beat you..."
    .Text = "...don't you want another go?"
    .Labels(1).Text = "Yes!"
    .Labels(2).Text = "No!"
    .Mode = msoModeModal
    OptionChosen = .Show
    End With
  End With
  If OptionChosen = 1 Then
    Exit Sub
  ElseIf OptionChosen = 2 Then
    Assistant.Animation = msoAnimationDisappear
    Assistant.Visible = False
    Unload frmFight
  End If
ElseIf gWins = gLosses Then
    With Assistant
  .Visible = True
  .Animation = msoAnimationGetAttentionMajor
    With .NewBalloon
    .Heading = "Come on it's a draw..."
    .Text = "...lets finish it..."
    .Labels(1).Text = "Yes!"
    .Labels(2).Text = "No!"
    .Mode = msoModeModal
    OptionChosen = .Show
    End With
  End With
  If OptionChosen = 1 Then
    Exit Sub
  ElseIf OptionChosen = 2 Then
    Assistant.Animation = msoAnimationDisappear
    Assistant.Visible = False
    Unload frmFight
  End If
End If
End Sub
Private Sub tmrTimer_Timer()
sTimerObject
lblTimerObject.Caption = gTimerObject
tmrTimer.Interval = tmrTimer.Interval + 10
If tmrTimer.Interval > 350 Then
  tmrTimer.Interval = 0
  sLanding
  sConvertTextToNumber
  sDraw
  If gDraw = True Then
    lblWinsLossesDraws.Caption = gWins & " wins, " & gLosses & " losses, " & gDraws & " draws."
    Exit Sub
  End If
  sReconcile
  sConvertNumberToText
  lblWinsLossesDraws.Caption = gWins & " wins, " & gLosses & " losses, " & gDraws & " draws."
  MsgBox gVar1 & gMessage & gVar2
End If
End Sub

'***************************************
'This bit goes in the ThisDocument part (found in the Microsoft word object folder in the project window...)
'**************************************
'*    Macros by Ed Hockaday    *
'*       151298        *
'**************************************
Sub docstart()
Dim OptionChosen As Integer
With Assistant
.Visible = True
.Animation = msoAnimationGetAttentionMajor
  With .NewBalloon
  .Heading = "Hi..."
  .Text = "...what to have some fun?"
  .Labels(1).Text = Chr(34) & "Yeah, OK!" & Chr(34)
  .Labels(2).Text = Chr(34) & "Not really!" & Chr(34)
  .Mode = msoModeModal
  OptionChosen = .Show
  End With
End With
If OptionChosen = 1 Then
  frmFight.Show
ElseIf OptionChosen = 2 Then
  No1
End If
End Sub
Private Sub Document_Open()
docstart
End Sub
Sub No1()
With Assistant
.Visible = True
.Animation = msoAnimationCharacterSuccessMajor
  With .NewBalloon
  .Heading = "Oh come on..."
  .Text = "...play with me..."
  .Labels(1).Text = "Play..."
  .Labels(2).Text = "Leave..."
  .Mode = msoModeModal
  OptionChosen = .Show
  End With
End With
If OptionChosen = 1 Then
  frmFight.Show
ElseIf OptionChosen = 2 Then
  Assistant.Animation = msoAnimationDisappear
  Assistant.Visible = False
End If
End Sub
Sub Yes1()
With Assistant
.Visible = True
.Animation = msoAnimationGetWizardy
  With .NewBalloon
  .Heading = "Fuck you small balls..."
  .Text = "...are you starting with me?"
  .Labels(1).Text = "Fight"
  .Labels(2).Text = "Run away"
  .Mode = msoModeModal
  OptionChosen = .Show
  End With
End With
If OptionChosen = 1 Then
  Fight
ElseIf OptionChosen = 2 Then
  Assistant.Animation = msoAnimationCharacterSuccessMajor
End If
End Sub
Sub Fight()
With Assistant
.Visible = True
.Animation = msoAnimationLookUp
End With
'frmFight.Show
End Sub
'*******************************************

Author: dwirch

Derek Wirch is a seasoned IT professional with an impressive career dating back to 1986. He brings a wealth of knowledge and hands-on experience that is invaluable to those embarking on their journey in the tech industry.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.