游戏机器人

#! python3
# -*- coding:utf-8 -*-
# robotPlay.py

import pyautogui, time, needBuy

# 食材和案板的位置
food = {'rice': (450, 460), 'nori': (392, 520), 'fishegg': (452, 517), 'desktop': (563, 514)}

# 空盘子的位置
plate = [(439, 338), (538, 339), (637, 336), 
		 (736, 333), (839, 339), (942, 334)]
pyautogui.PAUSE = 0.05
		 
print("-----你有3秒钟的时间调整好游戏界面-----")
print('\n ')
print('按下Ctrl-C 可以手动中止。')

try:
	time.sleep(3)	# 给3秒的准备时间
	# 如果游戏没结束就一直循环
	while pyautogui.locateOnScreen('robotToPlayGame\\end.png') == None and pyautogui.locateOnScreen('robotToPlayGame\\youWin.png') == None: 
		# 如果画面上有第一种寿司出现
		if pyautogui.locateOnScreen('robotToPlayGame\\shousi1.png') != None:
			pyautogui.click(food['rice'][0], food['rice'][1])
			pyautogui.click(food['nori'][0], food['nori'][1])
			pyautogui.click(food['rice'][0], food['rice'][1])
			pyautogui.click(food['desktop'][0], food['desktop'][1])
		# 如果画面上有第二种寿司出现
		if pyautogui.locateOnScreen('robotToPlayGame\\shousi2.png') != None:
			pyautogui.click(food['rice'][0], food['rice'][1])
			pyautogui.click(food['nori'][0], food['nori'][1])
			pyautogui.click(food['fishegg'][0], food['fishegg'][1])
			pyautogui.click(food['desktop'][0], food['desktop'][1])

		# 如果画面上有第三种寿司出现
		if pyautogui.locateOnScreen('robotToPlayGame\\shousi3.png') != None:
			pyautogui.click(food['rice'][0], food['rice'][1])
			pyautogui.click(food['fishegg'][0], food['fishegg'][1])
			pyautogui.click(food['nori'][0], food['nori'][1])
			pyautogui.click(food['fishegg'][0], food['fishegg'][1])
			pyautogui.click(food['desktop'][0], food['desktop'][1])
		
		# 收空盘子了
		for i in range(len(plate)):
			pyautogui.click(plate[i][0], plate[i][1]) 
			
		# 检查是否需要补充材料
		needBuy.buy()
		
	print('GG')
except KeyboardInterrupt:
	print('\n玩家主动中断游戏')
	

#! python3
# -*- coding:utf-8 -*-
# needBuy.py - 材料不够需要购买

import pyautogui, time

# 借助moveMouse.py获得打电话补充食材各个button的点击位置
phonecall = {'position': (942, 492), 
			 'Topping': {'position': (891, 401), 
						 'nori': {'position': (840, 399), 
								  'normal': (849, 425),
								  'close': (941, 463)}, 
						 'fishegg': {'position': (929, 409), 
						             'normal': (849, 425),
									 'close': (941, 463)}, 
						 'back': (914, 460), 
						 'close': (948, 461)},
			 'Rice': {'position': (883, 422), 
					  'rice': {'position': (900, 416),
							   'normal': (849, 425),
							   'close': (941, 463)},
					  'back': (863, 460), 
					  'close': (939, 467)},
			 'close': (943, 469)}

def buy():
	# 如果图片显示米饭为1,2或3
	if pyautogui.locateOnScreen('robotToPlayGame\\item12(2).png') != None\
	or pyautogui.locateOnScreen('robotToPlayGame\\item12.png') != None\
	or pyautogui.locateOnScreen('robotToPlayGame\\item12(3).png') != None\
	or pyautogui.locateOnScreen('robotToPlayGame\\item12(0).png') != None:
		print('缺少米饭, 购买中...')
		pyautogui.click(phonecall['position'][0], phonecall['position'][1])
		pyautogui.click(phonecall['Rice']['position'][0], phonecall['Rice']['position'][1])
		pyautogui.click(phonecall['Rice']['rice']['position'][0], phonecall['Rice']['rice']['position'][1])
		pyautogui.click(phonecall['Rice']['rice']['normal'][0], phonecall['Rice']['rice']['normal'][1])
		time.sleep(0.1)
		pyautogui.click(phonecall['Rice']['rice']['close'][0], phonecall['Rice']['rice']['close'][1])
	# 如果图片显示海苔为1,2或3
	if pyautogui.locateOnScreen('robotToPlayGame\\item21(2).png') != None\
	or pyautogui.locateOnScreen('robotToPlayGame\\item21.png') != None\
	or pyautogui.locateOnScreen('robotToPlayGame\\item21(3).png') != None\
	or pyautogui.locateOnScreen('robotToPlayGame\\item21(0).png') != None:
		print('缺少海苔, 购买中...')
		pyautogui.click(phonecall['position'][0], phonecall['position'][1])
		pyautogui.click(phonecall['Topping']['position'][0], phonecall['Topping']['position'][1])
		pyautogui.click(phonecall['Topping']['nori']['position'][0], phonecall['Topping']['nori']['position'][1])
		pyautogui.click(phonecall['Topping']['nori']['normal'][0], phonecall['Topping']['nori']['normal'][1])
		pyautogui.click(phonecall['Topping']['nori']['close'][0], phonecall['Topping']['nori']['close'][1])
		time.sleep(0.1)
	# 如果图片显示鱼子为1,2或3
	if pyautogui.locateOnScreen('robotToPlayGame\\item22(2).png') != None\
	or pyautogui.locateOnScreen('robotToPlayGame\\item22.png') != None\
	or pyautogui.locateOnScreen('robotToPlayGame\\item22(3).png') != None\
	or pyautogui.locateOnScreen('robotToPlayGame\\item22(0).png') != None:
		print('缺少鱼子, 购买中...')
		pyautogui.click(phonecall['position'][0], phonecall['position'][1])
		pyautogui.click(phonecall['Topping']['position'][0], phonecall['Topping']['position'][1])
		pyautogui.click(phonecall['Topping']['fishegg']['position'][0], phonecall['Topping']['fishegg']['position'][1])
		pyautogui.click(phonecall['Topping']['fishegg']['normal'][0], phonecall['Topping']['fishegg']['normal'][1])
		pyautogui.click(phonecall['Topping']['fishegg']['close'][0], phonecall['Topping']['fishegg']['close'][1])
		time.sleep(0.1)
		
	pyautogui.click(phonecall['Topping']['fishegg']['close'][0], phonecall['Topping']['fishegg']['close'][1])


#! python3
# mouseNow.py - Displays the mouse cursor's current position.
import pyautogui
print('Press Ctrl-C to quit.')

try:
	while True:
		# Get and print the mouse coordinates
		x, y = pyautogui.position()
		positionStr = 'X: ' + str(x).rjust(4) + ' Y: ' + str(y).rjust(4)
		pixelColor = pyautogui.screenshot().getpixel((x, y))
		positionStr += ' RGB: (' + str(pixelColor[0]).rjust(3) + ', '\
		+ str(pixelColor[1]).rjust(3) + ', '\
		+ str(pixelColor[2]).rjust(3) + ')'
		print(positionStr, end = '')
		print('\b' * len(positionStr), end = '', flush = True)
except KeyboardInterrupt:
	print('\nDone.')

游戏地址:https://www.miniclip.com/games/sushi-go-round/cs/focus/

游戏地址:Sushi Go Round

使用的图像都是从游戏中截取的, 通过第一关没有问题

后面的关卡只要增加寿司种类配方和截图就好

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QFiver 功能简介: 1. 针对QQ游戏平台五子棋:能够代替人进行思考和落子,替你战胜对手。同时支持无禁手和禁手规则。 2. 具有四个不同的“大脑”:就是四个不同的引擎,各具特色,可以应对不同的对手! 3. 设置难度:机器人下棋当然也需要进行“思考”,和人一样,思考得越久,下的水平越高。所以你要设置合适的难度,如果碰到水平并不是特别优秀的玩家设置较低的难度就可以,这样落子的速度较快,反之如果碰到难得一见的高手,就应设置较高的难度,虽然想的时间会变长一些,但战胜的把握更大。 4. 获胜预提示:当机器人觉得你即将获胜的时候,它会进行提示! 5. 走子延时:机器人有时会下得很快,最快可以在对手落子后的0.5秒内出击。但如果总是这么快容易让对手发现不是真人在下棋,所以适当延长走棋时间。 6. 人机模式:你可以把机器人当作你的一个小军师,让他帮你下一步,有时候合作也很有意思哦,注意:点击一次“人机模式”或按一次F6,软件只帮你走一步棋,下棋过程中要用这种模式,必须按F12停止“自动模式”。 7. 收拾残局(仅“推荐”引擎有此功能):即在游戏已经开始的情况下继续替你战斗,这是一个非常实用的功能。另外有一个特殊用法:如果你同意悔棋,这个时候棋盘上的棋子就改变了,可以中止机器人操作然后再点“自动模式”。 8.关于悔棋功能:如果你要同意别人悔棋,请按F12中止机器人操作,然后再点“同意”悔棋,之后可按F5实现自动模式或按F6实现人机模式。 9.随开:就是执黑子时随机任意开局,不选它时,执黑开局的第一子都是走中心。 10.挂机:在无人值守的情况下自动对战。试想,如果你将房间设置改为只同“分差不超过100的玩家”进行游戏,找一个热闹的房间和抢手的桌子,也许几个小时后你就升了好几段(当然前提是这个过程中你没有被蓝钻踢掉)!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值