python猜数字游戏和电脑自动猜数字

python猜数字游戏

def guss_number(n):

    while True:
        ret = dm.prompt("请输入出猜测的数字(1~1000000之间)", "猜数字")  # 302,203  右上角
        if ret != None :
            try:
                ret = int(ret)
            except:
                print('你输入的好像不是数字→_→')
                guss_number(n)
            if ret>MAX or ret<0 :
                print('你输入的数字超出范围')
                guss_number(n)
            elif int(ret) > integer:
                dm.alert("猜大了 ╮(╯▽╰)╭", "猜数字",'猜数字')
                n += 1
                print(n)
            elif int(ret) < integer:
                dm.alert('猜小了 ╮(╯▽╰)╭', '猜数字')
                n += 1
                print(n)

            else:
                dm.alert(f'恭喜你答对了!!!(*^▽^*)o( ̄▽ ̄)d,你一共用了{n}次')
                break
        else:
            print('正在退出猜数字游戏....')
            time.sleep(2)
            break


if __name__ == '__main__':
    MAX=1000000
    res = dm.confirm("是否要进入猜数字游戏", "猜数字")  # 811,444  右上角
    if res == 'OK':
        print('正在进入猜数字游戏....')
        time.sleep(3)
        integer = random.randint(1, MAX)
        guss_number(0)
    else:
        print('正在退出猜数字游戏....')
        time.sleep(3)

针对上面的代码自动猜数字

#!/usr/bin/python
# -*- coding: utf-8 -*-
# @Version  : 3.8
# @Author   : QQ3401855092
# @Datetime : 2023/1/14 17:05
# @Project  : smf
# @File     : 猜数字游戏对战复现.py
'''
等待弹窗弹出   @

第一步:
    点开游戏

判断大这个弹窗是否弹出
:return: bool

判断小这个弹窗是否弹出
:return: bool

判断正确这个弹窗是否弹出
:return:bool

相当于主函数,实现猜数字功能
:return:

把猜的数字写进去
'''
import math
import time

import pyautogui
import pyperclip

from csdn import copy_paste_pyperclip
from csdn.Keyspirit import my_pic, my_mouse, my_key


def wait_pic(x1, y1, x2, y2, path, degree=100):  ###@@@
    '''
    等待弹窗出现
    找的范围
        :param x1: 范围右上角的横向坐标
        :param y1: 范围右上角的纵向坐标
        :param x2: 范围右下角的横向坐标
        :param y2: 范围右下角的纵向坐标
    :param path:要找的图片路径
    :param degree:寻找次数
    :return:bool
    '''
    for j in range(degree):
        res = my_pic.FindPic(x1, y1, x2, y2, path)
        if res[0] != -1: return True
        time.sleep(1)
    return False


def spot():  ###@@@
    '''
    点开文件,并回答第一个弹窗(是否进入猜数字游戏)
    '''
    path = r'C:\Users\Administrator.USER-20200912KS\Desktop\guss\guss_n.bmp'
    x, y = my_pic.FindPic(0, 0, 1920, 1079, path)
    my_mouse.LeftDoubleClick(x, y)
    res = wait_pic(0, 0, 1920, 1079, r'C:\Users\Administrator.USER-20200912KS\Desktop\guss\iswindow.bmp')
    print(res)
    if res:
        my_key.KeyPress('enter')
        time.sleep(3)


def big():
    '''
    找图片,判断弹窗是否弹出'猜大了'
    '''
    x, y = my_pic.FindPic(0, 0, 1920, 1079, r'C:\Users\Administrator.USER-20200912KS\Desktop\guss\bag.bmp')
    if x > -1: return True
    return False


def small():
    '''
    找图片,判断弹窗是否弹出'猜小了'
    '''
    x, y = my_pic.FindPic(0, 0, 1920, 1079, r'C:\Users\Administrator.USER-20200912KS\Desktop\guss\small.bmp')
    if x > -1: return True
    return False


def guess_right():
    '''
    找图片,判断弹窗是否弹出'猜对了'
    '''
    x, y = my_pic.FindPic(0, 0, 1920, 1079, r'C:\Users\Administrator.USER-20200912KS\Desktop\guss\Guess_right.bmp')
    if x > -1: return True
    return False


def main():
    star = 0
    end = 1000000
    mid = end / 2
    # print(mid)
    c = 0
    wait_pic(310, 316, 510, 416, r'C:\Users\Administrator.USER-20200912KS\Desktop\guss\ok.bmp')
    pyautogui.write(str(round(mid)))
    time.sleep(1)
    my_key.KeyPress('enter')
    time.sleep(1)
    while True:
        time.sleep(1)
        if big():
            print("big")
            end = mid - 1
        elif small():
            print("small")
            star = mid + 1
        elif guess_right():
            c += 1
            print(f'答对啦!!!,用了{c}次')
            break
        my_key.KeyPress('enter')
        time.sleep(1)
        print(star, end)
        mid = math.floor((star + end) / 2)
        pyautogui.write(str(mid))
        time.sleep(1)
        my_key.KeyPress('enter')
        time.sleep(2)
        c += 1


if __name__ == '__main__':
    spot()
    main()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

光明有我16620122910

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值