SIMON.DSM
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:5k
源码类别:

Windows编程

开发平台:

Visual C++

  1. Private Sub InitAgent()
  2.    Dim objGenie
  3.          
  4.    Agent.Connected = True
  5.    Agent.Characters.Load "Genie", "C:Program FilesMicrosoft AgentCharactersGenie.acs"
  6.    Set objGenie = Agent.Characters( "Genie" )
  7.    objGenie.Show
  8.    objGenie.Commands.Caption = "Simon"
  9.    objGenie.Commands.Add "Play", "Play", "play", True, True
  10.    objGenie.Commands.Add "Hello", "Hello", "hello", True, True
  11.    objGenie.Commands.Add "Red", "Red", "red", True, True
  12.    objGenie.Commands.Add "Blue", "Blue", "blue", True, True
  13.    objGenie.Commands.Add "Green", "Green", "green", True, True
  14.    objGenie.Commands.Add "Yellow", "Yellow", "yellow", True, True
  15. End Sub
  16. Dim intTick  ' How many timer ticks have gone by for this move?
  17. Dim intMoves  ' How many moves in this sequence?
  18. Dim blnRunning  ' Playing sequence for player
  19. Dim blnWaiting  ' Waiting for player to move
  20. Dim intHighlightedColor  ' Which color is currently highlighted
  21. Dim intMove  ' Current move
  22. Dim intSpeed  ' Number of ms in one timer tick
  23. Dim aintMoves( 20 )  ' The sequence of moves
  24. intTick = 0
  25. intMove = 0
  26. intMoves = 1
  27. intMaxMoves = 6
  28. intSpeed = 1000
  29. blnRunning = False
  30. blnWaiting = False
  31. intDoneTurn = 0
  32. intHighlightedColor = 0
  33. InitAgent
  34. Private Sub EndTurn()
  35.    Timer.Interval = 0
  36.    blnWaiting = False
  37.    If intMoves = intMaxMoves Then
  38.       EndGame( True )
  39.    Else
  40.       intMoves = intMoves+1
  41.       Agent.Characters( "Genie" ).Speak "My turn"
  42.       intTick = 0
  43.       intMove = 0
  44.       Timer.Interval = intSpeed
  45.       blnRunning = True
  46.    End If
  47. End Sub
  48. Private Sub EndGame( ByVal blnWin )
  49.    Timer.Interval = 0
  50.    blnWaiting = False
  51.    blnRunning = False
  52.    If blnWin Then
  53.       Agent.Characters( "Genie" ).Speak "You win!"
  54.       Agent.Characters( "Genie" ).Speak "Kick ass!"
  55.    Else
  56.       Agent.Characters( "Genie" ).Speak "You lose!"
  57.    End If
  58. End Sub
  59. Private Sub MakeMove( ByVal intColor )
  60.    If aintMoves( intMove ) = intColor Then
  61.       intMove = intMove+1
  62.       intTick = 0
  63.       If intMove = intMoves Then
  64.          intDoneTurn = 2
  65.       End If
  66.    Else
  67.       EndGame( False )
  68.    End If
  69. End Sub
  70. Sub Red_Click()
  71.    If blnWaiting Then
  72.       MakeMove( 0 )
  73.    End If
  74. End Sub
  75. Sub Green_Click()
  76.    If blnWaiting Then
  77.       MakeMove( 1 )
  78.    End If
  79. End Sub
  80. Sub Blue_Click()
  81.    If blnWaiting Then
  82.       MakeMove( 2 )
  83.    End If
  84. End Sub
  85. Sub Yellow_Click()
  86.    If blnWaiting Then
  87.       MakeMove( 3 )
  88.    End If
  89. End Sub
  90. Sub Play_Click()
  91.    If (Not blnRunning) And (Not blnWaiting) Then
  92.       intTick = 0
  93.       intMove = 0
  94.       Randomize()
  95.       blnRunning = True
  96.       Timer.Interval = intSpeed
  97.    End If
  98. End Sub
  99. Sub Agent_Command( ByVal objUserInput )
  100.    If objUserInput.Name = "Red" Then
  101.       Red_Click
  102.    ElseIf objUserInput.Name = "Green" Then
  103.       Green_Click
  104.    ElseIf objUserInput.Name = "Blue" Then
  105.       Blue_Click
  106.    ElseIf objUserInput.Name = "Yellow" Then
  107.       Yellow_Click
  108.    ElseIf objUserInput.Name = "Play" Then
  109.       Play_Click
  110.    ElseIf objUserInput.Name = "Hello" Then
  111.       Agent.Characters( "Genie" ).Speak "Hey, how's it going?"
  112.    End If
  113. End Sub
  114. Sub Timer_Timer()
  115.    Dim intColor
  116.    If intDoneTurn > 0 Then
  117.       intDoneTurn = intDoneTurn-1
  118.       If intDoneTurn = 0 Then
  119.          EndTurn
  120.       End If
  121.    ElseIf blnRunning Then
  122.       If intTick = 0 Then
  123.          If intMove < intMoves-1 Then
  124.             intColor = aintMoves( intMove )
  125.          Else
  126.             intColor = Int( 4*Rnd )
  127.          End If
  128.          Select Case intColor
  129.             Case 0
  130.                Red.BackColor = vbRed
  131.                intHighlightedColor = 0
  132.             Case 1
  133.                Green.BackColor = vbGreen
  134.                intHighlightedColor = 1
  135.             Case 2
  136.                Blue.BackColor = vbBlue
  137.                intHighlightedColor = 2
  138.             Case 3
  139.                Yellow.BackColor = vbYellow
  140.                intHighlightedColor = 3
  141.          End Select
  142.          aintMoves( intMove ) = intColor
  143.       ElseIf intTick = 1 Then
  144.          Select Case intHighlightedColor
  145.             Case 0
  146.                Red.BackColor = vbWhite
  147.             Case 1
  148.                Green.BackColor = vbWhite
  149.             Case 2
  150.                Blue.BackColor = vbWhite
  151.             Case 3
  152.                Yellow.BackColor = vbWhite
  153.          End Select
  154.          intMove = intMove+1
  155.       End If
  156.       intTick = intTick+1
  157.       If intTick >= 3 Then 
  158.          intTick = 0
  159.       End If
  160.       If intMove = intMoves Then
  161.          blnRunning = False
  162.          intMove = 0
  163.          Agent.Characters( "Genie" ).Speak "Your turn"
  164.          blnWaiting = True
  165.          intTick = 0
  166.       End If
  167.    ElseIf blnWaiting Then
  168.       intTick = intTick+1
  169.       If intTick = 6 Then
  170.          EndGame( False )
  171.       End If
  172.    End If
  173. End Sub