猫史档案馆


【Python作品分享】石头剪刀布(人工喵1.0)

用户:亦风007亦风007查看:0 回复:0 评论:0 创建时间:2021-05-11T14:10:38


【作品展示】

center_image

 

【作品介绍】

在海龟编辑器里面运行代码,然后会弹个框框出来,按提示输入1,2,3,表示石头剪刀布。AI使用了极大似然法+一些特殊判断

 

【作品源代码】

import turtle
import random

print("这是一个没有感情的猜拳机器")
print("略微有些智能")
print("放心,电脑没有作弊,不信的话,你可以看代码")
cnt = 0
robot = 0
player = 0
flag = 0
c=["石头","剪刀","布"]
p=[0,0,0]
mt=[[0,0,0],[0,0,0],[0,0,0]]
last=0
sc = turtle.Screen()
while True:
    print("---------------------------------------------------------------------")
    print("输入数字1(石头),2(剪刀),3(布),数字分别代表出啥拳")
    a=int(sc.textinput("猜拳","输入一个数字表示你要出的拳(1-3)"))
    if cnt==0:
        b=3
    if a<1 or a>3:
        continue
    print("")
    print("你出的  ",c[a-1])
    print("电脑出的",c[b-1])
    print("")
    #判断谁获胜
    if a == b:
        print("平局")
    elif (a == 1 and b == 2) or (a == 2 and b == 3) or (a == 3 and b == 1):
        print("算你赢一局")
        player = player + 1
    else:
        print("这局电脑赢了")
        robot = robot + 1
    cnt += 1
    print("总局数", cnt)
    print("玩家胜", player)
    print("电脑胜", robot)

    #记录上一局,改变策略
    #在极大似然法的基础上加了几个特殊判断
    flag = 1
    mt[last][a-1]+=1
    last=a-1
    i=0
    m=0
    while i<3:
        if mt[last][i]>mt[last][m]:
            m=i
        i+=1
    b=m
    p[cnt%3]=a
    if (p[0] == 1 and p[1] == 2 and p[2] == 3) or (p[0] == 2 and p[1] == 3 and p[2] == 1) or (p[0] == 3 and p[1] == 1 and p[2] == 2):
        b = p[cnt % 3]
    if (p[0] == 3 and p[1] == 2 and p[2] == 1) or (p[0] == 2 and p[1] == 1 and p[2] == 3) or (p[0] == 1 and p[1] == 3 and p[2] == 2):
        b = p[(cnt-1) % 3]
    if b==0:
        b=3
    

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 0下一页