⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 三子棋.htm

📁 VBSCRIPT的源码,相信很多html程序员都会用到,这些源码小小变动一下,可以用在很多地方,尤其在DHTML中!
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<HTML>
<HEAD>
<META name="VI60_DefaultClientScript" Content="VBScript">
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>三子棋</TITLE>
</HEAD>
<script LANGUAGE="VBScript">
<!--
Option Explicit
Const NUM_SQUARES = 9
'定义棋盘
dim Board(9)
'表示是否正处于游戏进程中的变量
dim GameInProgress 
'玩家的常数
Const PLAYER_DRAW = -1
Const PLAYER_NONE = 0
Const PLAYER_HUMAN = 1
Const PLAYER_COMPUTER = 2
Const NUM_PLAYERS = 2
'下一步该谁
dim NextPlayer 
'谁执X  
dim PlayerX    
'谁执0
dim PlayerO  
'游戏难度
dim SkillLevel 
'初始化
Sub Initialize()
    '置难度
    SkillLevel = 1
    '缺省玩家执X
    PlayerX = PLAYER_HUMAN
    '缺省计算机执0
    PlayerO = PLAYER_COMPUTER
     '重开一局
    StartNewGame
End Sub

'重新开始一局
Sub StartNewGame()
Dim i
    '重置棋盘
    For i = 1 To NUM_SQUARES
        Board(i) = PLAYER_NONE
        document.square(i-1).src="blank.jpg"
    Next 
    '执X先下
    NextPlayer = PlayerX
    '游戏开始
    GameInProgress = True
    '第一步
    PlayerHasMoved
End Sub
'看看是谁赢了棋
Function GameOver()
Dim pl
	'找出胜者
    pl = Winner()
    '如果没有胜者
    If pl = PLAYER_NONE Then
        '则游戏不能结束
        GameOver = False
        Exit Function
    End If
    '否则,游戏结束
    GameInProgress = False
    '是谁胜利给出信息
    If pl = PlayerX Then
        Msg.value="下黑子的人胜."
    ElseIf pl = PlayerO Then
        Msg.value="下蓝子的人胜"
    Else
        Msg.value="两人平手."
    End If
    '游戏结束
    GameOver = True
End Function

'返回是谁胜利了
Function Winner()
 Dim i
    '找到胜利者 
    For i = 1 To 7 Step 3
        If Board(i) <> PLAYER_NONE Then
            If Board(i) = Board(i + 1) And Board(i) = Board(i + 2) Then
                Winner = Board(i)
                Exit Function
            End If
        End If
    Next 

    '找行胜利者 
    For i = 1 To 3
        If Board(i) <> PLAYER_NONE Then
            If Board(i) = Board(i + 3) And Board(i) = Board(i + 6) Then
                Winner = Board(i)
                Exit Function
            End If
        End If
    Next 

    '找对角线胜利者 
    If Board(1) <> PLAYER_NONE Then
        If Board(1) = Board(5) And Board(1) = Board(9) Then
            Winner = Board(1)
            Exit Function
        End If
    End If
    If Board(3) <> PLAYER_NONE Then
        If Board(3) = Board(5) And Board(3) = Board(7) Then
            Winner = Board(3)
            Exit Function
        End If
    End If

    '如果没有胜利者,看看是否平局
    Winner = PLAYER_NONE    
    For i = 1 To NUM_SQUARES
        If Board(i) = PLAYER_NONE Then Exit Function
    Next 
    Winner = PLAYER_DRAW
End Function
'计算机下子
Sub MakeComputerMove()
Dim Square
    
    '准备好
    Msg.value = "计算机现下"
    
    '计算机思考下哪一步
    Square = PickComputerMove
    
    '下出此棋
    Board(Square) = NextPlayer

    '更新棋盘显示
    DrawSquare Square

    '玩家准备好
    NextPlayer = PLAYER_HUMAN
End Sub

'玩家下子
Sub MakeHumanMove()
	'给出信息
	Msg.value = "你先下"
End Sub

'准备接收下一步棋
Private Sub PlayerHasMoved()
    '如果下一步轮到计算机下,则让计算机下
    If NextPlayer = PLAYER_COMPUTER Then MakeComputerMove
    '如果游戏结束了,则退出过程
    If GameOver() Then Exit Sub
    '否则让玩家下
    MakeHumanMove
End Sub
'玩家点击棋盘,准备下子
Sub clicksquare(index)
    '判断是否正处于游戏中,而不是捣乱
    If Not GameInProgress Then Exit Sub
    '看看该不该玩家下
    If NextPlayer <> PLAYER_HUMAN Then Exit Sub
    '看看这个位置是否为空
    If Board(index) <> PLAYER_NONE Then Exit Sub
    '把这个位置赋给玩家
    Board(index) = NextPlayer
    '画棋子
    DrawSquare index
	'如果游戏结束,则退出过程
    If GameOver() Then Exit Sub
    '否则准备下一步让计算机下
    NextPlayer = PLAYER_COMPUTER
    '调用下一步过程
    PlayerHasMoved
End Sub

'画双方的棋子
Sub DrawSquare(i)
    Select Case Board(i)
        Case PlayerX
            document.square(i-1).src="x.jpg"
        Case PlayerO
            document.square(i-1).src="o.jpg"
    End Select
End Sub

'选择执0
Sub PlayO_onClick()
	'分配棋子双方
    PlayerX = PLAYER_COMPUTER
    PlayerO = PLAYER_HUMAN
    '重开一局
    StartNewGame
End Sub

'选择执X
Sub PlayX_onClick()
	'分配棋子双方
    PlayerX = PLAYER_HUMAN
    PlayerO = PLAYER_COMPUTER
    '重开一局
    StartNewGame
End Sub
-->
</script>

<script language="VBS">
<!--
'------------------------------------
'下面的代码是计算机智能决定棋子的部分
'------------------------------------
Function PickComputerMove()
Dim pick
Select Case SkillLevel
   
   '如果是第一级水平
   Case 1  
	 '计算机走出随机的一步  
     PickComputerMove = MakeRandomMove
     '退出函数
     Exit Function
   '如果是第二级水平
   Case 2 
      '找到制胜子
       pick = MakeWinningMove
          '如果没有制胜子
          If pick = 0 Then
			 '则寻找救命子
             pick = MakeSavingMove
          Else
             '否则下一步将下制胜子
             PickComputerMove = pick
             '退出函数
             Exit Function
          End If
		  '如果没有救命子可下      
          If pick = 0 Then
			 '下出随机子
             PickComputerMove = MakeRandomMove
          Else
             '否则下出这个计算出来的救命子
             PickComputerMove = pick
          End If
   '如果是第三级水平
   Case 3 
    '找出制胜子
    pick = MakeWinningMove
      '没有制胜子
      If pick = 0 Then
         '找出一步以内的救命子
         pick = MakeSavingMove
      Else
		 '下出制胜子
         PickComputerMove = pick
         '退出函数
         Exit Function
      End If  
	  '没有一步内的救命子    
      If pick = 0 Then
		 '找出两步内的救命子
         pick = MakeSavingMove2
      Else
         '下出一步内的救命子
         PickComputerMove = pick
         '退出函数
         Exit Function
      End If    
      '没有两步内的救命子
      If pick = 0 Then
         '下出标准步
         PickComputerMove = MakeStandardMove
      Else
         '下出两步内的救命子
         PickComputerMove = pick
      End If    
End Select
End Function
'如何下出标准步,标准步是按照一定的规律去下的,棋盘上的棋子的重要性分为三等:中央、边角和其他
Function MakeStandardMove()
'定义临时变量
Dim Square 
Dim pick   
  '如果中央子空着没下,则下中央子  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -