【Java 重命名源码】【requests获取源码】【opencv算法源码】幼儿智力游戏APP源码_幼儿智力游戏app源码大全

1.vb 井字过三关
2.小孩子学编程到底有什么好处?要不要给孩子报个编程班呢?
3.vb6 五子棋
4.40个Python小游戏,幼儿游戏P源源码上班摸鱼我能玩一天内附源码
5.论丧心病狂 所有平台跳跃游戏都赶不上它

幼儿智力游戏APP源码_幼儿智力游戏app源码大全

vb 井字过三关

       ã€è®¾è®¡æ€è·¯ã€‘

       é¦–先,我们要知道,“井字棋”游戏是一款典型的棋类游戏,游戏时一方式是电脑,另一方是玩家。所以,这类游戏在开始时有两种方式:一种是玩家先走;另一种是电脑先走。这是我们要考虑的第一个问题。

       å…¶æ¬¡ï¼Œç”±äºŽä¸ŽçŽ©å®¶å¯¹æˆ˜çš„是计算机,所以我们要编写一个过程(出棋),它可以使程序模拟人的思维与人下棋(其实就是“人工智能”的体现),这个Chuqi过程也是本游戏软件的关键。此外,我们还要编写两个过程(连线和输赢),连线过程用来时刻判断棋盘中是否有三个棋子连成一线;输赢过程用来判断如果有三个棋子连成一线,是哪一方连成一线的,即判断哪一方获胜。

       ä»¥ä¸Šå‡ ä¸ªé—®é¢˜å°±æ˜¯è¯¥â€œäº•å­—棋”游戏实现的关键思路

       å®šä¹‰æ£‹ç›˜æ ¼å­æ•°æ®ç»“æž„

       Private Type Wells

        Wells_X As Long

        Wells_Y As Long

        Wells_Value As Integer

       End Type

       å®šä¹‰æ£‹ç›˜æ ¼å­çš„实例数组

       Private usrWells(1 To 9) As Wells

       å®šä¹‰å“åº”点击操作的逻辑棋盘格子代号数组

       Private intWellsIndex(1 To 3,智力 1 To 3) As Integer

       å®šä¹‰çŽ©å®¶çš„玩过的盘数和积分

       Private lngPlayerTurn As Integer, lngPlayerScore As Long

       å®šä¹‰æ¸¸æˆå¼€å§‹æ ‡å¿—

       Private blnGameStart As Boolean

       å®šä¹‰çŽ©å®¶èƒœåˆ©å’Œå¤±è´¥æ ‡å¿—

       Private blnPlayerWin As Boolean, blnPlayerLost As Boolean

       å®šä¹‰æžšä¸¾å¸¸é‡æ ‡è¯†çŽ©å®¶ç±»åž‹

       Private Enum Player

        MAN = 0

        COMPUTER = 1

       End Enum

       è¯¥è¿‡ç¨‹ç”¨äºŽæ˜¾ç¤ºæ¸¸æˆä¿¡æ¯

       Private Sub Form_Load()

        Me.Show

        Me.Caption = "BS井字游戏 — (版本 " & App.Major & "." & App.Minor & "." & App.Revision & ")"

       End Sub

       è¯¥è¿‡ç¨‹ç”¨äºŽé‡æ–°å¼€å§‹å¼€å§‹æ¸¸æˆ

       Private Sub cmdGameStart_Click()

        blnGameStart = True

        lngPlayerTurn = lngPlayerTurn + 1

        Me.picWells.Cls

        Call subGameInitialize

        Call subScreenRefresh

       End Sub

       è¯¥è¿‡ç¨‹ç”¨äºŽæ˜¾ç¤ºæ¸¸æˆè§„则

       Private Sub CmdGameRules_Click()

        Beep

        MsgBox " BS井字游戏:一个最简单的智力游戏,您将与机" & Chr() & _

        "器在9个格子大小的棋盘上一决高下。由您先开始" & Chr() & _

        "和机器轮流,每次在任意的空格上下一枚棋子。先" & Chr() & _

        "在棋盘上横向、纵向或对角线上排成三枚相同棋子" & Chr() & _

        "的一方即可获得游戏的胜利,祝您好运!!", 0 + , "游戏规则"

       End Sub

       è¯¥è¿‡ç¨‹ç”¨äºŽæ˜¾ç¤ºæ¸¸æˆå¼€å‘信息

       Private Sub cmdAbout_Click()

        Beep

        MsgBox "BS井字游戏" & "(V-" & App.Major & "." & App.Minor & "版本)" & Chr() & Chr() & _

        "" & Chr() & Chr() & _

        "由PigheadPrince设计制作" & Chr() & _

        "CopyRight(C),BestSoft.TCG", 0, "关于本游戏"

       End Sub

       è¯¥è¿‡ç¨‹ç”¨äºŽé€€å‡ºæ¸¸æˆ

       Private Sub cmdExit_Click()

        Beep

        msg = MsgBox("您要退出本游戏吗?", 4 + , "BS井字游戏")

        If msg = 6 Then End

       End Sub

       è¯¥è¿‡ç¨‹ç”¨äºŽå®žçŽ°çŽ©å®¶å‘井字棋盘中下棋子

       Private Sub picWells_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

        Dim lngGetWells_X As Long, lngGetWells_Y As Long

        Dim blnWellsNotFull As Boolean

        If Not blnGameStart Then Exit Sub

        lngGetWells_X = Int(Y / (Me.picWells.Height / 3)) + 1

        lngGetWells_Y = Int(X / (Me.picWells.Width / 3)) + 1

        If usrWells(intWellsIndex(lngGetWells_X, lngGetWells_Y)).Wells_Value = 0 Then

        usrWells(intWellsIndex(lngGetWells_X, lngGetWells_Y)).Wells_Value = 1

        Me.picWells.PaintPicture Me.imgChequer(MAN).Picture, _

        usrWells(intWellsIndex(lngGetWells_X, lngGetWells_Y)).Wells_X, _

        usrWells(intWellsIndex(lngGetWells_X, lngGetWells_Y)).Wells_Y, _

        Me.picWells.Width / 3, Me.picWells.Height / 3

        If funPlayerWinIF(MAN) Then

        Beep

        MsgBox "恭喜,您胜利了!", , "BS井字游戏"

        lngPlayerScore = lngPlayerScore +

        Call subScreenRefresh

        blnGameStart = False

        Else

        blnPlayerTurn = False

        For i = 1 To 9

        If usrWells(i).Wells_Value = 0 Then blnWellsNotFull = True

        Next i

        If blnWellsNotFull Then

        Call subComputerDoing

        Else

        Beep

        MsgBox "和局!", , "BS井字游戏"

        blnGameStart = False

        End If

        End If

        End If

       End Sub

       è¯¥è‡ªå®šä¹‰å­è¿‡ç¨‹ç”¨äºŽæ¸¸æˆæ•°æ®åˆå§‹åŒ–

       Private Sub subGameInitialize()

        intWellsIndex(1, 1) = 1

        intWellsIndex(1, 2) = 2

        intWellsIndex(1, 3) = 3

        intWellsIndex(2, 1) = 4

        intWellsIndex(2, 2) = 5

        intWellsIndex(2, 3) = 6

        intWellsIndex(3, 1) = 7

        intWellsIndex(3, 2) = 8

        intWellsIndex(3, 3) = 9

        For i = 1 To 7 Step 3

        usrWells(i).Wells_X = 0

        Next i

        For i = 2 To 8 Step 3

        usrWells(i).Wells_X = Me.picWells.Width * (1 / 3)

        Next i

        For i = 3 To 9 Step 3

        usrWells(i).Wells_X = Me.picWells.Width * (2 / 3)

        Next i

        For i = 1 To 3 Step 1

        usrWells(i).Wells_Y = 0

        Next i

        For i = 4 To 6 Step 1

        usrWells(i).Wells_Y = Me.picWells.Height * (1 / 3)

        Next i

        For i = 7 To 9 Step 1

        usrWells(i).Wells_Y = Me.picWells.Height * (2 / 3)

        Next i

        For i = 1 To 9

        usrWells(i).Wells_Value = 0

        Next i

       End Sub

       è¯¥è‡ªå®šä¹‰å­è¿‡ç¨‹ç”¨äºŽæ¸¸æˆå¼€å§‹æ—¶åˆ·æ–°å±å¹•

       Private Sub subScreenRefresh()

        Me.lblPlayerTurns.Caption = lngPlayerTurn

        Me.lblPlayerScore.Caption = lngPlayerScore

        Me.picWells.Line (0, Me.picWells.Height * (1 / 3))-(Me.picWells.Width, Me.picWells.Height * (1 / 3)), vbBlack

        Me.picWells.Line (0, Me.picWells.Height * (2 / 3))-(Me.picWells.Width, Me.picWells.Height * (2 / 3)), vbBlack

        Me.picWells.Line (Me.picWells.Width * (1 / 3), 0)-(Me.picWells.Width * (1 / 3), Me.picWells.Height), vbBlack

        Me.picWells.Line (Me.picWells.Width * (2 / 3), 0)-(Me.picWells.Width * (2 / 3), Me.picWells.Height), vbBlack

       End Sub

       è¯¥è‡ªå®šä¹‰å­è¿‡ç¨‹ç”¨äºŽæ‰§è¡Œæœºå™¨çš„下子

       Private Sub subComputerDoing()

        Randomize

        Dim lngGetWells_X As Long, lngGetWells_Y As Long

        Dim intPCFirstWells As Integer

        Dim blnPCWellsExists As Boolean

        Dim intPCWells As Integer

        For i = 1 To 9 Step 1

        If usrWells(i).Wells_Value = -1 Then

        blnPCWellsExists = True

        End If

        Next i

        If Not blnPCWellsExists Then

        GoTo GetPCFirstWells:

        Else

        GoTo GetPCNextWells:

        End If

       GetPCFirstWells: 随机获得机器的第一个落子位置

        intPCFirstWells = Int((9 - 1 + 1) * Rnd + 1)

        If usrWells(intPCFirstWells).Wells_Value <> 0 Then

        GoTo GetPCFirstWells:

        Else

        intPCWells = intPCFirstWells

        End If

        GoTo GoOn:

       GetPCNextWells: 获得机器下一步的落子位置

        intPCWells = funGetPCWells

       GoOn: 绘制落子并判断胜利

        usrWells(intPCWells).Wells_Value = -1

        lngGetWells_X = usrWells(intPCWells).Wells_X

        lngGetWells_Y = usrWells(intPCWells).Wells_Y

        Me.picWells.PaintPicture Me.imgChequer(COMPUTER).Picture, lngGetWells_X, lngGetWells_Y, _

        Me.picWells.Width / 3, Me.picWells.Height / 3

        If funPlayerWinIF(COMPUTER) Then

        Beep

        MsgBox "抱歉,您失败了!", , "BS井字游戏"

        lngPlayerScore = lngPlayerScore -

        If lngPlayerScore < 0 Then lngPlayerScore = 0

        Call subScreenRefresh

        blnGameStart = False

        Else

        blnPlayerTurn = True

        End If

       End Sub

       è¯¥è‡ªå®šä¹‰å‡½æ•°ç”¨äºŽåˆ¤æ–­çŽ©å®¶æ˜¯å¦èƒœåˆ©

       Private Function funPlayerWinIF(PlayerType As Integer) As Boolean

        Dim intWinCase(1 To 8) As Integer

        intWinCase(1) = usrWells(1).Wells_Value + usrWells(2).Wells_Value + usrWells(3).Wells_Value

        intWinCase(2) = usrWells(4).Wells_Value + usrWells(5).Wells_Value + usrWells(6).Wells_Value

        intWinCase(3) = usrWells(7).Wells_Value + usrWells(8).Wells_Value + usrWells(9).Wells_Value

        intWinCase(4) = usrWells(1).Wells_Value + usrWells(4).Wells_Value + usrWells(7).Wells_Value

        intWinCase(5) = usrWells(2).Wells_Value + usrWells(5).Wells_Value + usrWells(8).Wells_Value

        intWinCase(6) = usrWells(3).Wells_Value + usrWells(6).Wells_Value + usrWells(9).Wells_Value

        intWinCase(7) = usrWells(1).Wells_Value + usrWells(5).Wells_Value + usrWells(9).Wells_Value

        intWinCase(8) = usrWells(3).Wells_Value + usrWells(5).Wells_Value + usrWells(7).Wells_Value

        Select Case PlayerType

        Case MAN

        If intWinCase(1) = 3 Or intWinCase(2) = 3 Or intWinCase(3) = 3 Or intWinCase(4) = 3 Or _

        intWinCase(5) = 3 Or intWinCase(6) = 3 Or intWinCase(7) = 3 Or intWinCase(8) = 3 Then

        blnPlayerWin = True

        blnPlayerLost = False

        funPlayerWinIF = blnPlayerWin

        End If

        Case COMPUTER

        If intWinCase(1) = -3 Or intWinCase(2) = -3 Or intWinCase(3) = -3 Or intWinCase(4) = -3 Or _

        intWinCase(5) = -3 Or intWinCase(6) = -3 Or intWinCase(7) = -3 Or intWinCase(8) = -3 Then

        blnPlayerWin = False

        blnPlayerLost = True

        funPlayerWinIF = blnPlayerLost

        End If

        End Select

       End Function

       è¯¥è‡ªå®šä¹‰å‡½æ•°ç”¨äºŽè¿”回机器的落子

       Private Function funGetPCWells() As Integer

        Dim intWells(1 To 8) As Integer, intPCRandomWells As Integer

        intWells(1) = usrWells(1).Wells_Value + usrWells(2).Wells_Value + usrWells(3).Wells_Value

        intWells(2) = usrWells(4).Wells_Value + usrWells(5).Wells_Value + usrWells(6).Wells_Value

        intWells(3) = usrWells(7).Wells_Value + usrWells(8).Wells_Value + usrWells(9).Wells_Value

        intWells(4) = usrWells(1).Wells_Value + usrWells(4).Wells_Value + usrWells(7).Wells_Value

        intWells(5) = usrWells(2).Wells_Value + usrWells(5).Wells_Value + usrWells(8).Wells_Value

        intWells(6) = usrWells(3).Wells_Value + usrWells(6).Wells_Value + usrWells(9).Wells_Value

        intWells(7) = usrWells(1).Wells_Value + usrWells(5).Wells_Value + usrWells(9).Wells_Value

        intWells(8) = usrWells(3).Wells_Value + usrWells(5).Wells_Value + usrWells(7).Wells_Value

        如果任何一线已有机器的两个子并且另外一格仍空,机器方即将成一线

        机器落子的结果等于该空格

        If intWells(1) = -2 Then

        For i = 1 To 3 Step 1

        If usrWells(i).Wells_Value = 0 Then

        funGetPCWells = i

        Exit Function

        End If

        Next i

        ElseIf intWells(2) = -2 Then

        For i = 4 To 6 Step 1

        If usrWells(i).Wells_Value = 0 Then

        funGetPCWells = i

        Exit Function

        End If

        Next i

        ElseIf intWells(3) = -2 Then

        For i = 7 To 9 Step 1

        If usrWells(i).Wells_Value = 0 Then

        funGetPCWells = i

        Exit Function

        End If

        Next i

        ElseIf intWells(4) = -2 Then

        For i = 1 To 7 Step 3

        If usrWells(i).Wells_Value = 0 Then

        funGetPCWells = i

        Exit Function

        End If

        Next i

        ElseIf intWells(5) = -2 Then

        For i = 2 To 8 Step 3

        If usrWells(i).Wells_Value = 0 Then

        funGetPCWells = i

        Exit Function

        End If

        Next i

        ElseIf intWells(6) = -2 Then

        For i = 3 To 9 Step 3

        If usrWells(i).Wells_Value = 0 Then

        funGetPCWells = i

        Exit Function

        End If

        Next i

        ElseIf intWells(7) = -2 Then

        For i = 1 To 9 Step 4

        If usrWells(i).Wells_Value = 0 Then

        funGetPCWells = i

        Exit Function

        End If

        Next i

        ElseIf intWells(8) = -2 Then

        For i = 3 To 7 Step 2

        If usrWells(i).Wells_Value = 0 Then

        funGetPCWells = i

        Exit Function

        End If

        Next i

        End If

        如果任何一线已有玩家方两个子并且另外一格仍空,防止玩家方作成一线

        机器落子的结果等于该空格

        If intWells(1) = 2 Then

        For i = 1 To 3 Step 1

        If usrWells(i).Wells_Value = 0 Then

        funGetPCWells = i

        Exit Function

        End If

        Next i

        ElseIf intWells(2) = 2 Then

        For i = 4 To 6 Step 1

        If usrWells(i).Wells_Value = 0 Then

        funGetPCWells = i

        Exit Function

        End If

        Next i

        ElseIf intWells(3) = 2 Then

        For i = 7 To 9 Step 1

        If usrWells(i).Wells_Value = 0 Then

        funGetPCWells = i

        Exit Function

        End If

        Next i

        ElseIf intWells(4) = 2 Then

        For i = 1 To 7 Step 3

        If usrWells(i).Wells_Value = 0 Then

        funGetPCWells = i

        Exit Function

        End If

        Next i

        ElseIf intWells(5) = 2 Then

        For i = 2 To 8 Step 3

        If usrWells(i).Wells_Value = 0 Then

        funGetPCWells = i

        Exit Function

        End If

        Next i

        ElseIf intWells(6) = 2 Then

        For i = 3 To 9 Step 3

        If usrWells(i).Wells_Value = 0 Then

        funGetPCWells = i

        Exit Function

        End If

        Next i

        ElseIf intWells(7) = 2 Then

        For i = 1 To 9 Step 4

        If usrWells(i).Wells_Value = 0 Then

        funGetPCWells = i

        Exit Function

        End If

        Next i

        ElseIf intWells(8) = 2 Then

        For i = 3 To 7 Step 2

        If usrWells(i).Wells_Value = 0 Then

        funGetPCWells = i

        Exit Function

        End If

        Next i

        End If

        如果任何一线已有机器方一个子并且另外两格仍空,作成机器方的两个子

        机器落子的结果等于该空格

        If intWells(1) = -1 Then

        For i = 1 To 3 Step 1

        If usrWells(i).Wells_Value = 0 Then

        funGetPCWells = i

        Exit Function

        End If

        Next i

        ElseIf intWells(2) = -1 Then

        For i = 4 To 6 Step 1

        If usrWells(i).Wells_Value = 0 Then

        funGetPCWells = i

        Exit Function

        End If

        Next i

        ElseIf intWells(3) = -1 Then

        For i = 7 To 9 Step 1

        If usrWells(i).Wells_Value = 0 Then

        funGetPCWells = i

        Exit Function

        End If

        Next i

        ElseIf intWells(4) = -1 Then

        For i = 1 To 7 Step 3

        If usrWells(i).Wells_Value = 0 Then

        funGetPCWells = i

        Exit Function

        End If

        Next i

        ElseIf intWells(5) = -1 Then

        For i = 2 To 8 Step 3

        If usrWells(i).Wells_Value = 0 Then

        funGetPCWells = i

        Exit Function

        End If

        Next i

        ElseIf intWells(6) = -1 Then

        For i = 3 To 9 Step 3

        If usrWells(i).Wells_Value = 0 Then

        funGetPCWells = i

        Exit Function

        End If

        Next i

        ElseIf intWells(7) = -1 Then

        For i = 1 To 9 Step 4

        If usrWells(i).Wells_Value = 0 Then

        funGetPCWells = i

        Exit Function

        End If

        Next i

        ElseIf intWells(8) = -1 Then

        For i = 3 To 7 Step 2

        If usrWells(i).Wells_Value = 0 Then

        funGetPCWells = i

        Exit Function

        End If

        Next i

        End If

        面临和局,随机在空白的格子内落子

       GetRandomWells:

        Randomize

        intPCRandomWells = Int((9 - 1 + 1) * Rnd + 1)

        If usrWells(intPCRandomWells).Wells_Value = 0 Then

        funGetPCWells = intPCRandomWells

        Else

        GoTo GetRandomWells:

        End If

       End Function

小孩子学编程到底有什么好处?要不要给孩子报个编程班呢?

       小孩子学编程到底有什么好处,真的码幼能学到东西吗?对于逻辑思维强的孩子来说,编程能锻炼人的儿智思维缜密,逻辑严谨,力游做事有条理,大全Java 重命名源码对事情安排和解决问题有非常大的幼儿游戏P源源码好处,但是智力对于抽象思维不好的孩子来说,尽量不要去学编程,码幼这个首先要征求孩子的儿智意见,主要看他们是力游否有兴趣,我们知道兴趣是大全最好的老师,如果没有兴趣,幼儿游戏P源源码则多好的智力老师和教学条件都没有用的,所以孩子是码幼主体,应该以孩子的兴趣为主。

了解自己最重要:我们经常听到孩子们讨论“一对笨鸟,自己飞不高,然后就下了个蛋,然后想尽办法让这个蛋去飞”,“还有这样讲笑话的,让孩子好好学习,将来好给下一代提供更好的生活条件,孩子反问,你为什么不好好学习”,其实这都是我们当下家长存在的普遍问题,一方面是望子成龙,另一个方面总希望跟其他人去比较,比如:别人的孩子学编程,自己的孩子也要去学,根本不考虑孩子的兴趣。记得十几年前,钢琴还是稀罕物,有的暴富家长非要让自己的孩子培养艺术才华,买回来,小的时候花上钱,逼着孩子去学习,结果长大后,不仅没有任何收获,还让孩子对家长的安排和钢琴嗤之以鼻,几乎不再碰乐器。

       我们在做一件事情前首先要做评估,很多事情不是一个培训班就能搞定的,也不是花钱就可以买到的,尤其是学习编程这种,更是如此,不是简单写几段程序,处理几个小算法,其实编程最主要的是逻辑思维,因为“平衡点”就是一个这方面的学生,并不是特别出色,只能读懂linux和dos的源码,改改驱动程序啥的,应用软件写过无数,并不觉得有多难,但是对于不同的人来说,这些就是天书,因为他们理解不了所谓的机器语言,机器的逻辑,所以这就注定一个人是否适合学习编程,如果适合,则收获满满,提高逻辑性、完整性、统筹都会有很大的提高,反之则是自取其辱,暴露智商(短板)。

       以锻炼思维为目标:孩子学习编程,最重要的是锻炼思维,其实国外早就有这样的网站,千万不要去那种培训机构,网上有很多这样好的网站,需要家长具备一定的引导能力,否则就没有必要了,千万不要学那个笨鸟,让孩子自己去飞,或者别人带着飞,会很危险的,要不学点皮毛,要不误入歧途。

       做自己擅长的事,这是一定要遵守的,否则就是自取其辱,给自己添乱,我有一个同事就是requests获取源码如此,硬是被清华高材的父亲逼着学了理科,最后学习和工作上一塌糊涂,人生了无生趣,父母要切记,兴趣才是最好的老师。

vb6 五子棋

       五子棋简介

        五子棋是一种两人对弈的纯策略型棋类游戏,是起源于中国古代的传统黑白棋种之一。发展于日本,流行于欧美。

        五子棋容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。

        传统五子棋:

        传统五子棋的棋子分为黑白两色,采用围棋棋盘,棋子放置于棋盘线交叉点上。两人对局,各执一色,轮流下一子,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。

        因为传统五子棋在落子后不能移动或拿掉,所以也可以用纸和笔来进行游戏。

        称谓:

        五子棋,日文亦有“连五子、五子连、串珠、五目、五目碰、五格、五石、五法、五联、京棋”等多种称谓,英文则称之为“FIR (Five In A Row的缩写)、Gomoku(日语“五目”的罗马拼音)、Gobang、connect 5、mo-rphion”。捷克语piskvorky,韩语omok……

        许多国家的人对五子棋都有不同的爱称,例如,韩国人把五子棋称为“情侣棋”,暗示情人之间下五子棋有利于增加情感的交流;欧洲人称其为“绅士棋”,代表下五子棋的君子风度胜似绅士;日本人则称其为“中老年棋”,说明五子棋适合中老年人的生理特点和思维方式;美国人喜欢将五子棋称为“商业棋”,也就是说,商人谈生意时可边下棋边谈生意,棋下完了生意也谈成了。

        起源:

        五子棋相传起源于四千多年前的尧帝时期,比围棋的历史还要悠久,可能早在“尧造围棋”之前,民间就已有五子棋游戏。有关早期五子棋的文史资料与围棋有相似之处,因为古代五子棋的棋具与围棋是完全相同的。在上古的神话传说中有“女娲造人,伏羲做棋”一说,《增山海经》中记载:“休舆之山有石焉,名曰帝台之棋,五色而文状鹑卵。”李善注引三国魏邯郸淳《艺经》中曰:“棋局,纵横各十七道,合二百八十九道,白黑棋子,各一百五十枚”。可见,五子棋颇有渊源。亦有传说,五子棋最初流行于少数民族地区,以后渐渐演变成围棋并在炎黄子孙后代中遍及开来。

        在古代,五子棋棋具虽然与围棋相类同,但是下法却是完全不同的。正如《辞海》中所言,五子棋是“棋类游戏,棋具与围棋相同,两人对局,轮流下子,先将五子连成一行者为胜。”。

       [编辑本段]五子棋的opencv算法源码发展

        日本

        据日本史料文献记载,中国古代的五子棋先由中国传到高丽(朝鲜),然后于公元年至年日本的元禄时代再从高丽传到日本,最初在皇宫和贵族大家庭中流行,到元禄末期,开始在民间盛行。年,对传统五子棋进行规则改良后,经过公开征名,“联珠”这一名称才被正式确定下来。取意于“日月如合璧,五星如联珠”。现写做“连珠”。

        欧洲

        世纪初传统五子棋及连珠从日本传入欧洲,五子棋称为“Five In A Row”(缩写为FIR),同时根据日语的罗马拼音,“五目、五目碰”称为"Gomoku、Gobang",“连珠”则称之为“Renju”。

        年以及年,瑞典和前苏联分别成立了连珠联盟。年,日本、前苏联以及瑞典三个国家的连珠组织在瑞典成立国际连珠联盟(Renju International Federation,简称RIF).

        世纪年代欧洲一些国家将传统五子棋引入“交换”等规则后,经过发展逐渐形成一系列的Gomoku新规则,中欧一些国家成立了Gomoku组织,并和六子棋共同成立了国际联盟(GCIF)。

        世纪初在举办世界连珠(renju)锦标赛的同时也举办世界Gomoku锦标赛(GT)及六子棋国际公开赛(CT)。

        年8月在捷克共和国(CzechRepublic)帕尔杜比采市(Pardubice)将举行第届世界连珠锦标赛和第3届世界Gomoku锦标赛。

        中国

        长久以来五子棋在中国一直没有得到发展。

        年,国家体育总局批准中国棋院试办全国性五子棋比赛。

        年8月2-4日,中国棋院举办了首届全国五子棋个人邀请赛,此后每年举办一次。

        年,国家体育总局批准了中国棋院审定的《中国五子棋竞赛规则》(试行)(参考资料[1])和《中国五子棋段级位制》(试行)(参考资料[2])。

        年2月,国家体育总局对五子棋正式立项,作为围棋下的一个二级项目。全国各地相继成立了新的五子棋俱乐部。

        年5月和月中国棋院先后举办了首届全国五子棋团体锦标赛和首届全国五子棋个人锦标赛。

        年6月和月中国棋院先后举办了第二届全国五子棋团体锦标赛和第二届全国五子棋个人锦标赛。

        年5月-日中国棋院举办了第三届全国五子棋团体锦标赛。

        年月,首届全国智力运动会将五子棋作为的正式比赛项目(参考资料[3])。

       [编辑本段]现代五子棋

        随着五子棋的发展,逐步发现先手优势非常大,最后得出“先手必胜”。五子棋要成为竞技运动,核心问题是怎样解决传统五子棋下法中“先手必胜”的问题。

        “交换”思维

        “交换”思维有个形象的比喻:一个人切蛋糕,一个人选蛋糕。即:一人开局,另一人选择黑方还是白方。此方法最为公平、最有效率,且最为简洁实用。不过此方法使开局者不走已知的必胜,把棋艺的较量演化为对局者开局的博弈,而“先手必胜”依然存在。

        如:欧洲的Swap2、Swap1;中国的Swap3、第一手交换规则等。

        “禁手”思维

        禁止以某种手段取胜。为了平衡先后手之间的差距,削弱先手优势,日本连珠提出“禁手”。后来连珠的发展证明禁手并不能平衡先后手之间的差距,依然是“先手必胜”。

        “泡沫”原理

        像泡沫一样会破灭。如“吃子”五子棋。连成5个后消失,同时拿掉对方一个棋子,自己再补一子。此原理的的特点是:把五子棋金球制改成了“进球制”,同时也最大效率地利用了棋盘和棋子,带来了全新的思维。问题是怎样计算胜负。

        “井字游戏”原理

        井字游戏又叫圈叉棋,圈叉棋是和棋,原因是空间很小。

        通过缩小棋盘来抑制五子棋先手的优势。如:路棋盘,office激活源码路棋盘等等。问题是多大的棋盘才能是和棋,知道和棋后还能成为竞技运动吗。

        “跷跷板”原理

        五子棋始终是先手领先一子。如果双方轮流领先一子呢?

        台湾教授发明的六子棋,就如“跷跷板”一样。先手先下一子,然后双方轮流下两子,先连成6子者胜利。六子棋为第届奥林匹亚计算机游戏程序竞赛项目,验证其公平性与复杂性。

        综合效应

        “禁手”思维+“交换”思维+“井字游戏”原理=连珠

        如:RIF规则、Sakata规则、Yamaguchi规则Tarannikov规则等。

       现代五子棋的现状

        五子棋、六子棋、连珠已经成为欧洲现代五子棋的组成部分,举行了很多次大大小小的比赛,并且将三种棋的世界锦标赛联合举行。

        中国的现代五子棋还处于起步阶段。年中国棋院《中国五子棋竞赛规则》参考了RIF规则,同时兼顾发展传统五子棋。

       [编辑本段]五子棋段级位制

        中国五子棋段级位制 (试行) (具体内容见参考资料[2])

        五子棋的段级位对象:参加中国棋院认可的国内外五子棋比赛的五子棋爱好者。

        第四条 段位共分九个等级,最高是九段,以下分别是八段、七段、六段、五段、四段、三段、二段、初段。段位以下共分十个等级,最高是一级,以下分别是二级、三级、四级、五级、六级、七级、八级、九级、十级。

        第五条 根据中国五子棋爱好者在国内、国际交流中所体现出来的实际水平,在五子棋段级位制度实施初期,对爱好者授予的最高段位暂定为六段。随着中国棋手参与国内外交流机会的增加和技术水平的提高,逐步增加所授予段位的上限,直至九段。

       [编辑本段]棋盘、棋子与记谱方法

        相传中华民族的祖先轩辕黄帝无意之中画下了十七条横线十条竖线,这无意中的发明造就出了五子棋。早在公元年古人就用瓷来烧制五子棋盘了。千百年来,人们用各种材质来制造围棋的棋子,如:玻璃、瓷器、玉、玛瑙、铜等等。

        古代五子棋棋盘与围棋棋盘是通用的,汉魏时为十七路(×)棋盘,至南北朝时即已流行十九路(×)棋盘,直至年,才出现所谓五子棋专用棋盘,如图所示,为十五路(×)棋盘,形状近于正方形,平面上画横竖各条平行线,线路为黑色,构成个交叉点,邻近两个交点的距离纵线约为2.5厘米,横线约为2.4厘米。棋盘正中一点为“天元”。棋盘两端的横线称端线,棋盘左右最外边的两条纵线称边线。从两条端线和两条边线向正中发展而纵横交叉在第四条线形成的四个点称为“星”。天元和星应在棋盘上用直径约为0.5厘米的实心小圆点标出。

        五子棋棋子亦称“棋石”分黑、白两色,形状为扁圆形,有一面凸起或两面凸起等形状,winux病毒源码厚度不超过0.8厘米,直径为2.0~2.3厘米;一副棋子总数为枚,其中黑子枚,白子枚。按质地的不同,可分为玻璃、陶瓷、塑料、智石、磁铁、蛤贝、烧料、水晶、玛瑙、玉石等棋子。

        五子棋正规的记谱方法为用“五子棋稿纸”,即专供五子棋爱好者记录对局或着法的稿纸。其上印有正规专用棋盘图形,记录时只要按相应位置在纸上标明行棋的先后,即可反映对局的进行过程。非正规的记谱方法为用格子纸记录,即用单数1、3、5等记录黑方的走法,用双数2、4、6记录白方的走法,同样可反映对局的进行过程。另外还有北京京都五子棋协会为了推广盲人下五子棋,以及正常人下盲棋并背诵五子棋棋谱,专门设计的盲棋记谱法等。

       [编辑本段]相关术语

        对局相关术语

        〖黑方〗执黑棋一方的简称。

        〖白方〗执白棋一方的简称。

        〖胜局〗有一方获胜的对局。

        〖和局〗分不出胜负的对局。

        〖终局〗对局结束。

        〖复盘〗对局双方将本盘对局全过程的再现。

        行棋相关术语

        〖阳线〗即:直线,棋盘上可见的横纵直线。

        〖交叉点〗阳线垂直相交的点,简称“点”。

        〖阴线〗即:斜线,由交叉点构成的与阳线成°夹角的隐形斜线。

        〖落子〗棋子直接落于棋盘的空白交叉点上。

        〖轮走方〗即“行棋方”,有权利落子的黑方或白方。

        〖着〗在对局过程中,行棋方把棋子落在棋盘无子的点上,不论落子的手是否脱离棋子,均被视为一着。

        〖回合〗双方各走一着,称为一个回合。

        〖开局〗在对局开始阶段形成的布局。

        〖连〗同色棋子在一条阳线或阴线上相邻成一排。

        〖长连〗五枚以上同色棋子在一条阳线或阴线上相邻成一排。

        〖五连〗只有五枚同色棋子在一条阳线或阴线上相邻成一排。

        〖成五〗含有五枚同色棋子所形成的连,包括五连和长连。

        〖四〗在一条阳线或阴线上连续相邻的5个点上只有四枚同色棋子的棋型。

        〖活四〗有两个点可以成五的四。

        〖冲四〗只有一个点可以成五的四。

        〖死四〗不能成五的四。

        〖三〗在一条阳线或阴线上连续相邻的5个点上只有三枚同色棋子的棋型。

        〖活三〗再走一着可以形成活四的三。

        〖连活三〗即:连的活三(同色棋子在一条阳线或阴线上相邻成一排的活三)。简称“连三”。

        〖跳活三〗中间隔有一个空点的活三。简称“跳三”。

        〖眠三〗再走一着可以形成冲四的三。

        〖死三〗不能成五的三。

        〖二〗在一条阳线或阴线上连续相邻的5个点上只有两枚同色棋子的棋型。

        〖活二〗再走一着可以形成活三的二。

        〖连活二〗即:连的活二(同色棋子在一条阳线或阴线上相邻成一排的活二)。简称“连二”。

        〖跳活二〗中间隔有一个空点的活二。简称“跳二”。

        〖大跳活二〗中间隔有两个空点的活二。简称“大跳二”。

        〖眠二〗再走一着可以形成眠三的二。

        〖死二〗不能成五的二。

        〖先手〗对方必须应答的着法,相对于先手而言,冲四称为“绝对先手”。

        〖三三〗一子落下同时形成两个活三。也称“双三”。

        〖四四〗一子落下同时形成两个冲四。也称“双四”。

        〖四三〗一子落下同时形成一个冲四和一个活三。

        战术相关术语

        〖风车轮〗指在一定区域内来回地绕着连续进攻的战术或技巧,就像一个风车轮一直在转着似的,这样的取胜方法也称之为“风车胜”。

        〖二头蛇〗指某一方以活三进攻时,无论对方防守于哪一头都难免被蛇头咬伤,因为此时的活三如同二头蛇一样,两头都有厉害的杀着。也称“两头蛇”。

        〖一子双杀〗一子落下同时形成两种取胜方法而对方无法同时防守的取胜技巧。

        〖一子多杀〗一子落下同时形成两种以上取胜方法而对方无法同时防守的取胜技巧。

        〖一子双防〗一子落下同时形成防守两种取胜方法的防守技巧。

        〖八卦阵〗以“日”字的一组对角点为棋型,互为马步的防守阵型。构成五子棋八卦阵。

        〖VCF〗英文 Victory of Continuous Four 的字头缩写,是利用连续不断地冲四这种绝对先手,直至最终取得胜利的战术技巧。

        〖VCT〗英文 Victory of Continuous Threat 的字头缩写,是利用连续不断地活三、冲四、做杀等先手,直至最终取得胜利的战术技巧。

        比赛相关术语

        〖个人赛〗计算个人成绩的比赛。

        〖团体赛〗计算运动队团体成绩的比赛。

        〖轮空〗赛制中部分选手直接从中间某轮开始参加比赛,某轮未比赛的安排就叫轮空。

        〖节〗一个比较集中的比赛单位时间(如一个上午或一个下午或一个晚上)称一“节”。

        〖轮〗参赛的各队(团体赛)或各名棋手(个人赛)普遍出场比赛一次(个别轮空者除外)称一“轮”。

        〖次〗团体赛中的同一轮两队之间完成的比赛称为一“次”比赛。

        〖场〗两名棋手之间完成的两局制或多局制的一次比赛称为一“场”比赛。

        〖局〗两名棋手之间完成的一盘比赛称为一“局”比赛。

       [编辑本段]那氏五子兵法

        中国现代五子棋的开拓者那威荣誉九段,多年钻研五子棋,潜心发掘五子棋的中国民间阵法,他总结了五子棋行棋的要领和临阵对局的经验,得出一套“ 秘诀 ” ,谓之《那氏五子兵法》:

        先手要攻,后手要守,以攻为守,以守待攻。

        攻守转换,慎思变化,先行争夺,地破天惊。

        守取外势,攻聚内力,八卦易守,成角易攻。

        阻断分隔,稳如泰山,不思争先,胜如登天。

        初盘争二,终局抢三,留三不冲,变化万千。

        多个先手,细算次先,五子要点,次序在前。

        斜线为阴,直线为阳,阴阳结合,防不胜防。

        连三连四,易见为明,跳三跳四,暗剑深藏。

        己落一子,敌增一兵,攻其要点,守其必争。

        势已形成,败即降临,五子精华,一子输赢。

       [编辑本段]五子棋的开局

        五子棋的开局也称布局,一般在3~7手左右完成。五子棋的开局是十分重要的。一般情况下,一局五子棋的着数在至着之间,因此,它的开局阶段是非常短暂的,大约在七八着至十几着之间。在这一阶段的争夺中,双方的布局、应答将对以后的胜负起着关键的作用。一般来说,黑棋以攻为主,而白棋则以防为主。

        在开局阶段,双方主要是二的争夺。双方必须设法创造自己的连二、活二、跳二或大跳二等,同时要阻挡对方的活二。无论哪种开局,均体现出这一规律。

        可以说,哪一方的二做得多 ( 有两个以上的活二 ) ,或者有效地阻挡住对方的活二,那么,哪一方的胜率就比较大。另外,开局时每一个次序、每一种节奏都不能忽视,输赢就在一步之差。

        直止打法开局为了便于记忆、区分以及比赛。只对前3步组成的棋形进行了部分取名。

        中国五子棋竞赛规则的五子棋开局

        开局形状均以“星”和“月”命名。(参考资料[1]中“第三条”)

        斜止打法开局全国正式比赛均采用种开局,包括斜指开局的长星局、峡月局、恒星局、水月局、流星局、云月局、浦月局、岚月局、银月局、明星局、斜月局、名月局、慧星局和直指开局的寒星局、溪月局、疏星局、花月局、残月局、雨月局、金星局、松月局、丘月局、新月局、瑞星局、山月局、游星局。

        黑方必负开局

        可用《彭氏口诀》进行记忆:

        二十六局先弃二,直指游星斜慧星。

        寒星溪月疏星首,花残二月并白莲,

        雨月金星追黑玉,松丘新宵瑞山腥。

        星月长峡恒水流,白莲垂俏云浦岚,

        黑玉银月倚明星,斜月名月堪称朋。

       [编辑本段]五子棋的数学思考

        可能很少有人注意到,五子连珠游戏其中包含着一个极为深刻的数学问题。为什么不是四子连珠,或者是六子连珠?你可能会说,四子连珠,那就太容易啦,下几步就胜了。而六子连珠呢,则太难了,谁也别想连成。这就说明,五子连珠极可能是一个最佳攻守平衡值,一个达成连珠的最大值。增一子、减一子都会打破这个平衡。四子连珠太易,攻方处于绝对优势;而六子连珠太难,守方处于绝对优势。而游戏规则必须是让游戏双方处于平等的位置才可能进行,否则游戏就不成其为游戏。要想黑白棋连珠成为一种符合游戏规则的智力游戏,五子连珠无疑是一个最佳方案。中华民族的祖先在发明五子连珠的过程中,猜想肯定也不是一撮而就,而是极可能经历了四子连珠、六子连珠的尝试过程,最后才确定为五子连珠,并流行开来。

        这个问题,被当代科普作家傅小松称之为五子连珠问题,又称五子连珠猜想。其准确表述是:

        在以横线、竖线互相交叉(一般各为条)的方形平面(棋盘)中,黑白两种“点’(棋子)先后沿横线、竖线排列(行棋),在平面(棋盘)横线、竖线、斜线(无实线连接)上形成连续的同色“点”(棋子),五个“点”(棋子)为可能达成连珠的最大值。

        五子连珠是黑白棋连珠的一个最佳方案,这在实际中早已不会有人怀疑。并且,五子连珠已经存在并发展了几千年,成为了一种趣味性强,同时技巧比较复杂、竞争激烈的棋类游戏,与围棋、国际象棋、中国象棋的巧妙性、复杂性也有一拼。这似乎足以证明五子连珠的最佳性。但从科学真理的角度看,一万次实践的证明也不能代替逻辑和数学上的证明。要确定五子连珠是黑白棋连珠的一个最佳方案,五子连珠是一个最佳值、最大值,必须进行数学上的证明。

        “五子连珠问题”的证明可能非常复杂,这是因为,第一,它不是一个静态的问题,而是一个动态的问题。棋盘是一个静态的二维平面,但行棋博弈是一个的动态的过程。第二,这不是一个线性和确定性问题的,而是一个非线性和模糊性问题。所谓“五子连珠”的最佳值,是在千变万化的攻与防中达到的一种默契。因此,要解决“五子连珠猜想”,可能要运用到博弈论、模糊数学等工具。

       [编辑本段]五子棋攻防策略

        五子棋源于中国,后传入日本名为“连珠”。学从中国,传至中国。

        下五子棋须得法,法中变化有莫测;五子之变如水势,因势避高而趋下.战不过攻守,法不过奇正,奇正之法:往复循环,“不竭如江海,无穷如天地”。

        其祥法如下 :围、击虚、就实、寡众

        (围)由于五子棋源于围棋,故下五子棋若想立于不败之地,须以围棋之法行棋,说白了就是“包饺子”,试想:如果对方的棋子被围住了,左冲右突都不行,前闯后退更不见效,此时他心理极度郁闷,已无斗志,棋还能下好吗?只能是输的份了!!!此招用于防守。

        (击虚)兵法有云:“避实击虚”,下五子棋之精髓也在其理。不过此举贵在进攻,进攻若能攻其空虚之处,且得法,将会以迅雷不及掩耳之势而破竹将对手击败。此招用于进攻。

        (就实)老子《道德经》中讲了万物正反两个方面及消长之理,攻守亦不过如此,故有“避实击虚”则就有“就实让虚”。“就实让虚”就是对方往哪里走棋,咱就往哪里走棋,好比随形附影一般。这招要把握好火候,不能过度也不能失度,因为下棋很容易攻守易势(攻之极乃守时,守之极乃攻时;攻中生守,守中生攻),此招用于防守。

        (寡众)《孙子●虚实》中曰:“......备前则后寡,备后则前寡,备左则右寡,备右则左寡,无所不备,则无所不寡......”此招用在五子棋中则反其道而行,则会收到意想不到的效果,具体招法是“堵了前面则堵后面,堵了后面则堵前面,堵了左边则堵右边,堵了右边则堵左边”,前后左右四面八方都堵,则对方则无路可逃,无棋可下!此招和(围)连用。无所不胜,用在防守。

        另外,有时在有计算的前提下,连续冲三、冲四(vct、vcf)有可能创造新的进攻机会;反之,一味的VC,只能迟滞败亡的步伐,反而使自己被“围”陷入铁桶阵(一般叫马桶阵)中。除了这些外,八卦阵是防守的无二秘宝,只是明八卦太过明显,因此暗八卦(用部分八卦点做主力,少量杂子作障眼)的功底就成了衡量技术的重要指标。

        参考棋经十三篇

        五子棋贡献分析法

        五子棋作为民间游戏来说,也是颇有智力韵味的,下面介绍一下理论中的五子棋的贡献问题与法则:

        设以围棋棋盘左下角为坐标原点建立直角坐标系xOy,若(9,)(9,)(,)(,9)上有黑子,(8,)(,9)(,8)上有白子,现在到白棋走子,若走(,)(,)就属于斜向走子,但是通常直向的(紧贴着棋子走的)走子要比斜向的走子对防守的贡献大,若走(8,)(8,)(8,9)(9,9)其中一个的均属于单侧走子,而另一侧则空虚,所以也不好,若走(,)也不好,因为在(,8)的子已经对防守有了一定的贡献了,同理走(,)的也不好,因为(,9)的子也对防守有了一定的贡献.所以说此时最佳的走子方法就是走(9,)

        若(8,)有白子,(,)(,)(,)有黑子,到白子走,由于(8,)对防守贡献了一部分,所以应该走(,)而不走(9,)。若为黑走,就应该走(,)而不走(9,),因为白子的(8,)会削弱它对攻的贡献

个Python小游戏,上班摸鱼我能玩一天内附源码

       这里收集了个Python小游戏,让你在工作间隙也能畅享游戏时光!内附源码

       1. 剪刀石头布

       这款小游戏支持多局对决,统计得分与平局,适用于各种赛制,轻松开始你的游戏之旅。

       2. 吃金币

       这款简单易上手,只需动手操作,无需过多介绍,源码在这里等你。

       3. Flappy

       与知名游戏Flappy Bird类似,只需更换名称,挑战更高难度的点击控制。

       4. 迷宫

       探索迷宫,寻找出路,考验策略和耐心的经典小游戏。

       5. Memory

       记忆游戏考验记忆力,宫格中隐藏数字,寻找相同的数字组合,趣味无穷。

       6-. 小游戏合集

       小鸟管道

       是男人就下层

       打乒乓

       滑雪

       五子棋

       -. 更多经典游戏

       坦克大战

       超级玛丽

       贪吃蛇

       -. 智力挑战

       扫雷

       拼图

       走迷宫

       最强游戏

       通过Python和Pygame模块,你可以掌握基础原理,轻松制作属于自己的游戏世界。点击下方链接获取全部源码,重温童年的欢乐!

论丧心病狂 所有平台跳跃游戏都赶不上它

       挑战自我,平台跳跃类游戏爱好者们总能找到新乐趣。像《Geometry Dash》、《马里奥制造》这些游戏,都是关卡设计者与挑战者间的智力对决,但论难度,《I wanna be the guy》绝对独树一帜。

       这游戏中文译名《我想当爷们》的小男孩KID,看似普通,实则拥有二段跳与射击技能。不过,游戏中你最多的体验可能并非KID的英姿,而是被数百次五马分尸、血溅四方的场景所震撼。突如其来的机关令人防不胜防,关卡设计堪比五步一小坑,十步一大坑。存档点往往就在眼前,你却难以逃脱死亡的命运。

       《I wanna》的虐心程度令人难以承受,但比起机关的奇葩,更考验玩家的操作能力。有些地方可能连机关都没有,单纯依赖硬跳,跳不过去就是手残的结局,毫无乐趣可言。

       这款游戏给玩家带来的是无尽的挫折感,但如果你能通过难关,成就感也是不言而喻。通常情况下,半途而废是脱离苦海的最好选择。

       《I wanna》系列游戏已成庞大系列,除了初代之外还有众多同人作品。开发此作的Kayin,是一位美国人,灵感来自日本游戏《人生オワタ\(^o^)/の大冒険》。他利用一些倒刺和机关设计关卡,赋予主角简单的跳跃和移动模式,剩下的就靠玩家的智慧了。

       《I wanna》的设计理念完全背离一般游戏的思路,就是为了给玩家下绊儿。游戏的开发者Kayin并没选择闷声发大财,而是公开了游戏的创作源代码,让玩家能够自由创建关卡。虽然开发者众多,但依然遵循初代的规则,如主角KID、关卡模式、人物属性等。

       《I wanna》系列游戏的用户群体多为自虐者,但也成为“鬼畜游戏”名单下的热门作品。游戏难度分“中等”、“正常”、“很难”、“不可能”四个等级,还有本土化分级方式,从简单到非常困难,让玩家逐渐适应挑战。

       观看别人玩《I wanna》也是一种享受,比如Bilibili上的UP主小帅喵,虽然在LOL上有些忙,但其视频展示了游戏的趣味性。观看这类视频,能让人更轻松地欣赏游戏,而不是面对自己的失败。

       《I wanna》游戏虽然看似幼稚,但其核心是纯粹的跳跃和关卡设计,无需复杂画面或跌宕剧情。其设计让玩家在挑战中找到乐趣,这或许就是其魅力所在。

更多内容请点击【综合】专栏

精彩资讯