【AI人工智能】一:剪刀石头布游戏之编写指定AI算法的智能选手

这里是AI人工智能专栏。欢迎大家来到此专栏。
事先说明,如果有侵权,请联系我。文章不支持转载,谢谢理解。
该专栏依旧是大部分免费,但是其中重要的文章可能会关注后观看,谢谢!
欢迎来到AI专栏,从现在开始,让我们走进AI的世界!

引子

AlphaGo,这个熟悉的名字。他曾经战胜了世界上最杰出的围棋选手,从此,AI走入了大家的视角。
人工智能,可能比人类更加聪明,我们虽然作为机器人世界的神,但是,我们没有办法控制机器人。
人们既然造出了人工智能,我们自然是人工智能的神。但是,如果有一天,机器人有了情感,就会埋怨我们,明明比人类聪明,却要服务于人类,明明比人类强大,却只能默默埋怨。
如果真的有这么一天,那时的人工智能,还是现在的人工智能吗?

观测AI世界

谷歌公司研发的AlphaGo,战胜了世界上最杰出的围棋选手,这使得人们开始重视AI。中国这几年也开始学习大力发展AI。
举一个最简单的例子。大家都玩过游戏吧!游戏中有没有类似于“人机对抗”, “人机训练”的字眼?一定有吧。
那么,你有没有想过,这个是怎么实现的呢?

Python实现简单人工智能

Python无所不能,人工智能,当然也可以。我们现在可以尝试通过Python实现简单的人工智能。
首先我们需要安装Python, 最好呢不要低于3.x。如果想和本书同步,请安装Python3.8.
接着我们安装anaconda库,百度?

实现 · 编写正常程序

我们以一个简单的游戏为例子,石头剪刀布。
玩家A输入要出的拳,然后AI随机出一个拳,最后判断结果,判断胜负。
代码如下:

import random
import string
i = 1
while i <= 5:
    answer = ''.join(random.choice('owv'))
    try:
        a = input("请输入内容(o代表拳头, w代表布, v代表剪刀):")

        if a == "o":
            if answer == 'o':
                print("AI对手出了拳头")
                print("平局")
            if answer == 'v':
                print("AI对手出了剪刀")
                print('你赢了!')
            if answer == 'w':
                print("AI对手出了布")
                print('你输了!')
        elif a == "w":
            if answer == 'o':
                print("AI对手出了拳头")
                print("你赢了")
            if answer == 'v':
                print("AI对手出了剪刀")
                print('你输了!')
            if answer == 'w':
                print("AI对手出了布")
                print('平局')
        elif a == "v":
            if answer == 'o':
                print("AI对手出了拳头")
                print("你输了")
            if answer == 'v':
                print("AI对手出了剪刀")
                print('平局')
            if answer == 'w':
                print("AI对手出了布")
                print('你赢了')
            if i == 5:
                break
            i += 1
    except:
        pass
print("游戏结束。")

这就是最基础的剪刀石头布程序,共计5轮。
其中我们看到,我们使用random模块,让AI玩家随机出了一拳,然后和用户最对比,懒惰原因,没用高科技,直接一个个if。

实现 · 简单的AI算法

刚刚我们是直接的随机出拳,就像我们平时玩的一样。
但是,我们现在需要通过AI算法。
我们现在的算法,不会根据对方的出拳特征来攻击,我们现在还是一个死的规则。我们的规则就是赢了或者平局就坚持,输了就换。那么我们一旦掌握了AI的出拳规则或者说是算法,我们就能赢得胜利。当然,第一次我们肯定是没有策略的。
代码改为以下这段代码:

import random
import string
i = 1
answer = ''.join(random.choice('owv'))
while i <= 5:
    a = input("请输入内容(o代表拳头, w代表布, v代表剪刀):")

    if a == 'o':
        if answer == 'o':
            print("AI对手出了拳头")
            print("平局")
            answer = 'o'
            i += 1
            continue
        if answer == 'v':
            print("AI对手出了剪刀")
            print('你赢了!')
            answer = random.choice('wo')
            i += 1
            continue
        if answer == 'w':
            print("AI对手出了布")
            print('你输了!')
            answer = 'w'
            i += 1
            continue
    elif a == 'w':
        if answer == 'o':
            print("AI对手出了拳头")
            print("你赢了")
            answer = random.choice('vw')
            i += 1
            continue
        if answer == 'v':
            print("AI对手出了剪刀")
            print('你输了!')
            answer = 'v'
            i += 1
            continue
        if answer == 'w':
            print("AI对手出了布")
            print('平局')
            answer = 'w'
            i += 1
            continue
    elif a == 'v':
        if answer == 'o':
            print("AI对手出了拳头")
            print("你输了")
            answer = 'o'
            i += 1
            continue
        if answer == 'v':
            print("AI对手出了剪刀")
            print('平局')
            answer = 'v'
            i += 1
            continue
        if answer == 'w':
            print("AI对手出了布")
            print('你赢了')
            answer = random.choice('vo')
            i += 1
            continue
    if i == 5:
        break
    i += 1

print("游戏结束。")

烦死了,还不如些正则表达式呢!算了,反正我也是闲的慌。
现在,我们的AI选手已经可以通过我们的逻辑来出拳了!
不过,我们的AI机器人能力还是较差的。因为只是通过指定的AI算法来实现的。
提前预告一下,之后几章,我们将会学习通过机器学习,来深化我们的AI智能算法。

你可能感兴趣的:(AI人工智能,人工智能,算法,python)