基于百度图像识别api的游戏(coc)辅助工具分析

news/2024/10/30 19:36:17/

基于百度图像识别api的游戏(coc)辅助工具分析

(本代码仅供参考学习使用)
去年国庆放假,没事干,刚学了python 于是就找了这个小项目来练练手
总体来说 难度不大 内容也不多 几百行搞定 (删了部分功能 还有些功能没实现 比较懒 )操作界面也没写 (我估摸着这玩意应该没几个人用) 本人水平有限 写的比较垃圾(现在让我读我都读不懂w) 望海涵。

ok 开始看看luo

coc就不用介绍了 应该都玩过(什么? 没玩过? 自己下个玩玩) 主要是有很多的捐兵的需求 但是部落不可能24都有人在 而且不好管理(重点 圈起来)
捐兵界面主要通过发请求的方式 所以就设计到了图像转文字识别 此处用了百度的api接口(可以去百度一下这个)

图像对比函数:
进行隔时间在指定位置截图 截图后与标准捐兵标准图片对比 这个对比相关的算法是我自己写的 主要的思路就是对图片进行分块 然后将分块的rgb颜色通过相应的的公式转化为单个数值(灰度值) Gray = R0.299 + G0.587 + B*0.114 最后将取出的分块灰度值按照大小进行排列 以数量为纵坐标形成 最后将这些离散点连接起来 (正确的操作应该是用高阶多项式的插点法进行拟合 此处应该受到严重批评.jpg 太懒了 没去做这个 精度应该要高一点 此法拟合后可以分解成比离散数据点更多的对比点) 然后将标准的与截图的函数图像进行对比 当然此处是基于对比点的数量和数据数量一致的前提下 然后将对比点带入公式计算两图的重合度即可 此算法的精确度不太好 但是对于我的需求完全足够 (只需设定相识度阀值即可) 改进意见:1.灰度对比法本身的精度不算太好 我最近想到一种奇怪的方法 通过rgb的三个值进行相应的模糊运算(结果有一定的偏差) 形成一个域(反正我是这么叫的w) 最后进行函数对比时 是对域的对比 (避免两相近的数据被认为不相似) 只要是量数据的域有交点(当然 可以提高阀值 比如将此条件改为 两个域的交点需要达到一定的要求) 就认为这是两个相似的域 在进行图像对比时 相似的域记作相等就行)
2. 灰度法的优化:上边提到过插点法拟合 然后通过取较多的对比点来计算
3. 更加优秀的方法当然是用机器学习了(不会 所以不多说)

上代码:`在这里插入代码片#name:coctet.py
#by David
#v2.0 on 2018/10/10
#退出窗口: 1733,89
import jieba
from PIL import Image
from PIL import ImageGrab
from PIL import Image
from aip import AipOcr
import pyautogui
import numpy
import math
import json
import time

#语句对应字典:
juanbing_yuju_zidian={
‘随意’:‘suiyi’,
‘随便’:‘suiyi’,
‘增援’:‘suiyi’,
‘都行’:‘suiyi’,
‘野蛮人’:‘yemanren’,
‘蛮子’:‘yemanren’,
‘弓箭’:‘gongjianshou’,
‘弓箭手’:‘gongjianshou’,
‘弓’:‘gongjianshou’,
‘胖子’:‘pangzi’,
‘巨人’:‘pangzi’,
‘巨’:‘pangzi’,
‘哥布林’:‘gebulin’,
‘炸弹人’:‘zhadanren’,
‘炸弹’: ‘zhadanren’,
‘气球兵’: ‘qiqiu’,
‘气球’: ‘qiqiu’,
‘球’: ‘qiqiu’,
‘黑球’:‘qiqiu’,
‘法师’: ‘fashi’,
‘法’: ‘fashi’,
‘天使’: ‘tianshi’,
‘龙’: ‘long’,
‘皮卡’: ‘pika’,
‘龙宝’: ‘longbao’,
‘矿工’: ‘kuanggong’,
‘矿’: ‘kuanggong’,
‘雷龙’: ‘leilong’,
‘电龙’: ‘leilong’,
‘蓝龙’:‘leilong’,
‘亡灵’: ‘wanglin’,
‘野猪’: ‘yezhu’,
‘猪’: ‘yezhu’,
‘女武’: ‘nvwushen’,
‘女武神’: ‘nvwushen’,
‘石头’: ‘shitou’,
‘女巫’: ‘nvwu’,
‘狗’: ‘tiangou’,
‘天狗’: ‘tiangou’,
‘蓝胖’: ‘lanpang’,
‘巨石投手’: ‘lanpang’,
#添加的名词:
‘地面’:‘fashi’,
‘天空’:‘qiqiu’,
‘地’:‘fashi’,
‘天’:‘qiqiu’
}

juanfashu_yuju_zidian={
‘闪电’: ‘leidian’,
‘雷电’: ‘leidian’,
‘治疗’: ‘zhiliao’,
‘狂暴’: ‘kuangbao’,
‘弹跳’: ‘tantiao’,
‘跳墙’: ‘tantiao’,
‘冰冻’: ‘bingdong’,
‘镜像’: ‘jingxiang’,
‘毒’: ‘duyao’,
‘毒药’: ‘duyao’,
‘地震’: ‘dizhen’,
‘极速’: ‘jisu’,
‘骷髅’: ‘kulou’
}
#造兵字典:记录造兵坐标
zaobing_zidian={
‘suiyi’:(820,660),#默认为法师
‘yemanren’:(324,651),
‘gongjianshou’:(320,825),
‘pangzi’:(480,666),
‘gebulin’:(500,825),
‘zhadanren’:(660,650),
‘qiqiu’:(645,829),
‘fashi’:(811,648),
‘tianshi’:(817,832),
‘long’:(982,661),
‘pika’:(982,832),
‘longbao’:(1150,653),
‘kuanggong’:(1150,832),
‘leilong’:(1300,664),
#后半部分
‘wanglin’:(1100,653),
‘yezhu’:(1100,823),
‘nvwushen’:(1265,653),
‘shitou’:(1265,823),
‘nvwu’:(1430,653),
‘tiangou’:(1430,823),
‘lanpang’:(1600,653)
}
#造法术字典
zaofashu_zidian={
‘suiyi’: (500,660),#默认为狂暴
‘leidian’:(325,660),
‘zhiliao’:(325,833),
‘kuangbao’:(500,660),
‘tantiao’: (500,833),
‘bingdong’: (660,660),
‘jingxiang’: (660,833),
‘duyao’: (825,660),
‘dizhen’: (825,833),
‘jisu’: (990,660),
‘kulou’: (990,833)
}
#捐兵截图字典:
juanbing_jietu_zidian={
‘1’: (845,255,947,359),
‘2’: (958,255,1060,359),
‘3’: (1071,255,1173,359),
‘4’: (1184,255,1286,359),
‘5’: (1297,255,1399,359),
‘6’: (1410,255,1512,359),
‘7’: (1523,255,1625,359),
#第二行
‘8’: (845,402,947,505),
‘9’: (958,402,1060,505),
‘10’: (1071,402,1173,505),
‘11’: (1184,402,1286,505),
‘12’: (1297,402,1399,505),
‘13’: (1410,402,1512,505),
‘14’: (1523,402,1625,505)
}

juanfashu_jietu_zidian={
‘1’: (845,598,947,702),
‘2’: (958,598,1060,702),
‘3’: (1071,598,1173,702),
‘4’: (1184,598,1286,702),
‘5’: (1297,598,1399,702),
‘6’: (1410,598,1512,702),
‘7’: (1523,598,1625,702)
}

#图片路径字典
binglujing_zidian={
#写上名称以及对应路径 如pangzi
‘yemanren’:‘E:\初学\编程python\测试专用\coc_img\标准兵01.png’,
‘gongjianshou’:‘E:\初学\编程python\测试专用\coc_img\标准兵02.png’,
‘pangzi’:‘E:\初学\编程python\测试专用\coc_img\标准兵03.png’,
‘gebulin’:‘E:\初学\编程python\测试专用\coc_img\标准兵04.png’,
‘zhadanren’:‘E:\初学\编程python\测试专用\coc_img\标准兵05.png’,
‘qiqiu’:‘E:\初学\编程python\测试专用\coc_img\标准兵06.png’,
‘fashi’:‘E:\初学\编程python\测试专用\coc_img\标准兵07.png’,
‘tianshi’:‘E:\初学\编程python\测试专用\coc_img\标准兵08.png’,
‘long’:‘E:\初学\编程python\测试专用\coc_img\标准兵09.png’,
‘pika’:‘E:\初学\编程python\测试专用\coc_img\标准兵10.png’,
‘longbao’:‘E:\初学\编程python\测试专用\coc_img\标准兵11.png’,
‘kuanggong’:‘E:\初学\编程python\测试专用\coc_img\标准兵12.png’,
‘leilong’:‘E:\初学\编程python\测试专用\coc_img\标准兵13.png’,
#后半部分
‘wanglin’:‘E:\初学\编程python\测试专用\coc_img\标准兵14.png’,
‘yezhu’:‘E:\初学\编程python\测试专用\coc_img\标准兵15.png’,
‘nvwushen’:‘E:\初学\编程python\测试专用\coc_img\标准兵16.png’,
‘shitou’:‘E:\初学\编程python\测试专用\coc_img\标准兵17.png’,
‘nvwu’:‘E:\初学\编程python\测试专用\coc_img\标准兵18.png’,
‘tiangou’:‘E:\初学\编程python\测试专用\coc_img\标准兵019.png’,
‘lanpang’:‘E:\初学\编程python\测试专用\coc_img\标准兵20.png’
}

fashulujing_zidian={
‘leidian’:‘E:\初学\编程python\测试专用\coc_img\标准法术01.png’,
‘zhiliao’:‘E:\初学\编程python\测试专用\coc_img\标准法术02.png’,
‘kuangbao’:‘E:\初学\编程python\测试专用\coc_img\标准法术03.png’,
‘tantiao’: ‘E:\初学\编程python\测试专用\coc_img\标准法术04.png’,
‘bingdong’: ‘E:\初学\编程python\测试专用\coc_img\标准法术05.png’,
‘jingxiang’: ‘E:\初学\编程python\测试专用\coc_img\标准法术06.png’,
‘duyao’: ‘E:\初学\编程python\测试专用\coc_img\标准法术07.png’,
‘dizhen’: ‘E:\初学\编程python\测试专用\coc_img\标准法术08.png’,
‘jisu’: ‘E:\初学\编程python\测试专用\coc_img\标准法术09.png’,
‘kulou’: ‘E:\初学\编程python\测试专用\coc_img\标准法术10.png’
}

#捐兵法术位置字典:
#字符数字1到n
juanbing_position_zidian={
‘1’:(902 ,320),
‘2’:(1000,320),
‘3’:(1127,320),
‘4’:(1242,320),
‘5’:(1353,320),
‘6’:(1465,320),
‘7’:(1587,320)
}
juanfashu_position_zidian={
‘1’:(902 ,661),
‘2’:(1000,661),
‘3’:(1127,661),
‘4’:(1242,661),
‘5’:(1353,661),
‘6’:(1465,661),
‘7’:(1587,661)
}

def cheak_pic(path1,path2,Debug=False,value=1000,cheak_value=0.40):#图片对比函数 输入两个图片路径(字符串) 返回相识值0-1 包含测试输出百分之相识度
#最后一个参数表示阀值
image1=Image.open(path1).resize((value,value),Image.ANTIALIAS).convert(‘L’)
image2=Image.open(path2).resize((value,value),Image.ANTIALIAS).convert(‘L’)
image_arry1=numpy.array(image1)
image_arry2=numpy.array(image2)
dic1={}
dic2={}
result1=0
result2=False
for k in range(0,255):
dic1[k]=0
dic2[k]=0
for i in range(0,100):
for j in range(0,100):
try:
dic1[image_arry1[i][j]]+=1
dic2[image_arry2[i][j]]+=1
except:
pass
for l in range(0,255):
try:
result1+=(1-(abs(dic1[l]-dic2[l]))/max(dic1[l],dic2[l]))/255
except ZeroDivisionError:
pass
if result1>cheak_value:
result2=True
if Debug:
print(dic1)
print(dic2)
print(result1)
return (result1,result2)

def pic(pic_position,path):#输入的是一个四位元素有序集
im = ImageGrab.grab(pic_position)
im.save(path)

def aip(path,APP_ID = ‘14321825’,API_KEY = ‘eRksQhs1HwiffEkV8HXrikEa’,SECRET_KEY = 'x5Fu7cWs5SwjO5k6YlfeALsAe0pTd4fR '):
#注意设置账号密码接口 与GUI对应 增加密码记住功能
try:
# 初始化AipFace对象
aipOcr = AipOcr(APP_ID, API_KEY, SECRET_KEY)
filePath = path

    def get_file_content(filePath):with open(filePath, 'rb') as fp:return fp.read()options = {'detect_direction': 'true','language_type': 'CHN_ENG',}# 调用通用文字识别接口result = aipOcr.basicGeneral(get_file_content(filePath), options)list1=result['words_result']list2=[]try:for m in list1:list2.append(m['words'])except:passprint(list2)return list2
except:print('aip  Error')return []

def yuju_duizhao(list,swich,fashu=juanfashu_yuju_zidian,bing=juanbing_yuju_zidian):
#输入对照list 选择为兵或者为法术 bing or fashu 输出匹配list元素所成new_list
if swich==‘bing’:
a=[]
for i in list:
try:
a.append(bing[i])
except KeyError:
pass
return a
if swich==‘fashu’:
b=[]
for j in list:
try:
b.append(fashu[j])
except KeyError:
pass
return b
else:
raise IndexError

def mouse(mouse_postion_lift,mouse_position_right):
pyautogui.moveTo(mouse_postion_lift,mouse_position_right)
pyautogui.click()

def create_bing(bingzong=‘suiyi’,num=10,IsTuodong=False):#造兵

position_x = zaobing_zidian[bingzong][0]
position_y = zaobing_zidian[bingzong][1]
mouse(815,505)
time.sleep(0.1)
mouse(225,770)
time.sleep(0.1)
mouse(620,164)
time.sleep(0.1)
if IsTuodong:tuodongpingmu()
for i in range(0,num):mouse(position_x, position_y)time.sleep(0.1)
mouse(1660,160)
mouse(190,508)

def create_fashu(fashumingcheng=‘kuangbao’,num=1):#造法术

position_x = zaofashu_zidian[fashumingcheng][0]
position_y = zaofashu_zidian[fashumingcheng][1]
mouse(815, 505)
time.sleep(0.1)
mouse(225, 770)
time.sleep(0.1)
mouse(900,160)mouse(position_x,position_y)
if num==2:mouse(position_x,position_y)mouse(1660, 160)
mouse(190,508)#回到原位

def suijijuan():#随机捐兵捐法术 优化 设置两个接口 用于设定要捐的兵和法术
zhineng_juanbing([‘fashi’])
zhineng_juanfashu([‘kuangbao’])

def tuodongpingmu(position1_x=1317,position1_y=841,position2_x=806,position2_y=850):#造兵拖动屏幕函数
pyautogui.moveTo(position1_x,position1_y)
print(m)
pyautogui.mouseDown()
pyautogui.moveTo(position2_x,position2_y)
pyautogui.mouseUp()
time.sleep(0.2)

def cut(list):#分句输出列表
try:
a=[]
for i in list:
a+=jieba.lcut(i)
return a
except:
return []

def zhineng_juanbing(list,cheak_value=7,number=5):#第二个参数为需要检测的数量 对应GUI接口 第三个参数为默认的捐兵点击次数
if list==[]:
return []
jilu=[]#用于记录成功实现的list元素
pathlist=[]#用于记录截图路径
mouse(675, 847)#打开捐兵界面
time.sleep(0.5)
for i in range(1,cheak_value+1):#截图捐兵界面
pic(juanbing_jietu_zidian[str(i)],‘E:\初学\编程python\测试专用\coc_img\’+str(i)+‘bing.png’)
pathlist.append(‘E:\初学\编程python\测试专用\coc_img’+str(i)+‘bing.png’)
#注意对比标准图片命名: cheak_bing_i.png
#cheak_fashu_i.png
for m in list:#函数主体
s=1
n=binglujing_zidian[m]#n 为标准截图路径
for path in pathlist:
if cheak_pic(path,n)[1]:
for i in range(0,number):
mouse(juanbing_position_zidian[str(s)][0],juanbing_position_zidian[str(s)][1])
jilu.append(m)
break
s+=1
mouse(1618,216)#关闭捐兵界面
return jilu

def zhineng_juanfashu(list,cheak_value=7,number=5):#第二个参数为需要检测的数量 对应GUI接口 第三个参数为默认的捐兵点击次数
if list==[]:
return []
jilu=[]#用于记录成功实现的list元素
pathlist=[]#用于记录截图路径
mouse(675,847)#打开捐兵界面
time.sleep(0.2)
for i in range(1,cheak_value+1):#截图捐法术界面
pic(juanfashu_jietu_zidian[str(i)],‘E:\初学\编程python\测试专用\coc_img\’+str(i)+‘fashu.png’)
pathlist.append(‘E:\初学\编程python\测试专用\coc_img\’+str(i)+‘fashu.png’)
#注意对比标准图片命名: cheak_bing_i.png
#cheak_fashu_i.png
for m in list:#函数主体
s=1
n = fashulujing_zidian[m] # n 为标准截图路径
for path in pathlist:
if cheak_pic(path, n)[1]:
for i in range(0, number):
mouse(juanfashu_position_zidian[str(s)][0], juanfashu_position_zidian[str(s)][1])
jilu.append(m)
break
s += 1
mouse(1618, 216) # 关闭捐法术界面
return jilu

def zineng_creat(list1,list2):  #传入两个字典 兵的名称 兵的数量 分优先级

def main_doing(second_want=5):#第一个参数设置每次循环休眠时间
time.sleep(5)
print(‘程序启动!’)
mouse(186,505) #打开聊天界面

id_jilu='None'            #初始化参数设置
juanbing_tongji = 0pic_path = "E:\\初学\\编程python\\测试专用\\coc_img\\a.png"
pic_path2 = "E:\\初学\\编程python\\测试专用\\coc_img\\b.png"
pic_path3="E:\\初学\\编程python\\测试专用\\coc_img\\c.png"
pic_zhengyuanbiaozhun="E:\\初学\\编程python\\测试专用\\coc_img\\标准对照01.png"
position_1 = (242, 727, 333, 758)
position_2 = (236, 781, 586, 831)
position_3 = (590,819,760,883)    #增援按键截图位置
while True:time_start=time.time()time.sleep(second_want)suiji_swich = False#开关pic(position_1, pic_path2)  # 截屏idpic(position_2,pic_path)  # 截屏语句pic(position_3, pic_path3)#截图增援按键mouse(1700, 166)#防休眠#主判定结构if cheak_pic(pic_path3,pic_zhengyuanbiaozhun)[1]:print('有增援按键')#cheaktry:id_jietu=aip(pic_path2)[0]except:id_jietu=id_jiluif id_jietu!=id_jilu:print('id不相同')#cheakid_jilu=id_jietuyuju_list_bing=yuju_duizhao(cut(aip(pic_path)),'bing')#yuju_list为语句的分句结果在对照后的暂存yuju_list_fashu=yuju_duizhao(cut(aip(pic_path)),'fashu')#判定是否为随机:print('输出对照后语句')print(yuju_list_bing,yuju_list_fashu)if 'suiyi' in yuju_list_bing:print('随意开关打开')suiji_swich=Trueif suiji_swich:print('为随机捐')suijijuan()time.sleep(0.2)create_bing()create_fashu()juanbing_tongji+=1print('第'+str(juanbing_tongji)+'次增援'+'/随机')else: #当不是随机情况时if yuju_list_bing==[] and yuju_list_fashu==[]:print('空语句,到下一次循环')continuejuanbing_jilu_list_bing=zhineng_juanbing(yuju_list_bing)juanfashu_jilu_list_fashu=zhineng_juanfashu(yuju_list_fashu)if juanbing_jilu_list_bing != []:create_bing(juanbing_jilu_list_bing[0])  # 只补充第一个成功捐的法术与兵种if juanfashu_jilu_list_fashu !=[]:create_fashu(juanfashu_jilu_list_fashu[0])juanbing_tongji+=1print('第' + str(juanbing_tongji) + '次增援'+'/非随机')#留一个接口用于gui显示捐兵次数time_end=time.time()print('用时'+str(time_end-time_start)+'s')

#测试单元

main_doing(3)

#以下为除智能捐兵外的其余辅助功能:

#定时关闭程序
‘’'def zinengshouqian():
#记录点击的三个位置:
time_witing=3600#设置收钱间隔 不使用函数传参 使用GUI来修改

#mouse使用设置间隔'''

‘’'def zinengdiaobei(mubiao):#输入目标杯数
mouse(818,506)#关闭聊天界面

time.sleep(2)tuodongpingmu()
time.sleep(2)
tuodongpingmu(356,502,1917,502)

zinengdiaobei(1)
‘’’

#提醒最好使用最大视角
#设置掉杯到达数量 使用GUI#调用识别函数 到检测到王  两个:标准02与标准03:'''

#原test部分:
‘’'def doing_test(word_list=word_list,juanbing_tongji=juanbing_tongji):
list_word=[{‘words’:None}]
position_1=(242,727,333,758)
position_2=(236,781,586,831)
while True:
mouse(756, 144)#到空白 防止退出
time.sleep(0.1)
mouse(1700,166)
swich=None
time.sleep(2)
pic(position_1,path=pic_path2)#截屏id
pic(position_2)#截屏语句
list_word_before=list_word
list_word=aip()
list_id=aip(pic_path2)
try:
a=[]
for i in range(0,10):
a+=cut(list_word[i][‘words’])
except:
pass
try:
for j in range(0,10):
if a[j] in word_list:
swich=True
except IndexError:
pass
try:
if list_word[0][‘words’]!=list_word_before[0][‘words’]:
if swich:
mouse(678,854)
time.sleep(1)
for m in range(0,10):
mouse(900,323)
time.sleep(0.1)
mouse(1620,218)
create_bing()
create_fashu()
juanbing_tongji+=1

    except IndexError or TypeError:pass'''

‘’’
文档思路:
需要的函数:造兵函数(兵种x位置,y位置,点击次数,是否拖动)并且设置默认值 制造法术函数系(同造兵函数) 图像对比函数 捐兵与捐法术函数务必调用图像对比函数 智能对比捐兵与捐法术 任意捐兵捐法术统一函数
注意:
捐兵识别后一定要调用相应捐兵与捐法术函数 先在cut列表中查找捐兵再查找捐法术 建立截图位置字典 :造兵字典位置 法术制造位置字典 语句对应字典 其他操作字典;id与语句截图 打开关闭窗口
使用另一个py项目并且调用位置字典来生成标准截图 用这个函数对比两次截图相似度
造兵须知:调用的字典分两部分 后一部分要拖动光标后使用 后一部分为所有黑油兵种
文字中有不要等词汇 不执行操作
main函数思路:
1.等待10s
2.打开聊天界面 初始化id记录参数=None 初始化其他参数
3.开始循环
4.截图识别1 检测id与id记录参数对比 若一致则不执行余下操作 进入下一个循环
5.若id不一致 截图识别语句
6.语句分段加入一个list
7.list元素分别与作为键传入两个字典,有对应的值时输出为两个存在的列表 若兵种列表中有suiyi 则执行随意捐兵捐法术函数
8.如果兵种列表为空 跳过 不为空则传入此列表到智能捐兵函数 智能捐兵函数构造:定义一个循环 对每一个元素进行检测 打开捐兵界面进行截图 多位置截图
如果有则调用mouse函数传入此位置参数进行捐兵 此捐兵函数要有位置记录参数 如第一个位置参数为1 以此类推 并且需要一个参数对应的位置的字典(内建在
智能捐兵函数中 捐兵函数功能;内建截图位置列表 进行遍历取出 位置参数初始为1,每次进行下个循环则+1 传入pic函数 截出一张图片后 与智能捐兵函数得到的参数对应的图片进行对比(调用图片
对比函数) 若不一致 到下个循环 若一致 break 并且取得此时的位置参数 将位置参数传入字典 得到位置 将位置传入mouse并且多次点击(10次快速) 此函数
有一个返回值为成功执行鼠标点击的传入参数(如shitouren之类的字符串)不成功就返回None 建立一个记录列表把返回值记录下来

    总的来说是两层循环结构:语句列表的循环 智能捐兵中的截图检查循环9.同8的方式来捐法术10.两种造兵与造法术方式(1)1)使用成功执行列表 如果列表只有一个非None值 则将这个值传入造兵函数(当然是要调用字典后) 设置造兵函数点击10次2)有多个非None值则传入这些值到造兵函数 设置点击5次(2)自己设置要捐的兵种  可以使用gui11.GUI要考虑的接口: 设置每次捐兵后要造的兵种以及数量 设置部落战或者屏蔽功能 设置定时收资源 设置脚本开关以及快捷键 设置捐兵计数器显示(在开始时使用)效率提升  设置智能对比中检索的数量接口  如可以设置一次检索3个兵种   

‘’’
`
先睡觉了 明日更


http://www.ppmy.cn/news/325604.html

相关文章

JS 射击游戏

Js 的射击小游戏 玩法按下求 技能准备 点击左键射击,射击到后面的球得分 代码如下:直接粘到html文件中即可畅玩: <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset="…

组装计算机的游戏,4850元i5 4590/R9 370畅玩游戏组装电脑高配置清单

今天华海电脑网给大家带来的是中高端畅玩3D游戏配置单&#xff0c;由于现在很多游戏对于电脑配置比较苛刻&#xff0c;所以一款中高端配置是少不了的&#xff0c;这款配置选用的是Intel酷睿i5 4590处理器、技嘉B85-HD3主板以及迪兰恒进R9 370酷能2G独立显卡搭配的而成&#xff…

乘法游戏

【题目描述】 桌子上从左到右放着n张牌&#xff0c;每张牌上都有一个正整数。每次&#xff0c;我们可以从中拿出一张牌&#xff08;不能拿第一张和最后一张牌&#xff09;&#xff0c;得分就是这张牌的数乘以他左边和右边的数。如此不断的重复&#xff0c;最后就只剩下两张牌了…

HTML的游戏分数怎么设置,HTML5《拯救分号》游戏

JavaScript 语言&#xff1a; JaveScriptBabelCoffeeScript 确定 $.key { left: 0, right: 0, up: 0, space: 0 } $.offset { x: 0, y: 0 } $.dt 0; $.lt 0; $.elapsed 0; $.mute 0; $.glitch 0; $.canEdit false; $.ios /iPad|iPhone|iPod/.test(navigator.userAgent…

Java实现王者荣耀小游戏(简单版,带有图片资源)

这周是实践周&#xff0c;要写期末大作业。参考视频&#xff0c;我写了王者荣耀小游戏&#xff0c;功能比较简单&#xff0c;但是即使简单我也遇到了很多Bug&#xff0c;开心的是最后做出来了。 多说不易&#xff01;看下面代码。 本设计所开发实现的是基于Java的一个王者荣耀…

1150. 【克罗地亚】NIKOLA (Standard IO)

题目描述 Nikola现在已经成为一个游戏里的重要人物。这个游戏是由一行N个方格&#xff0c;N个方格用1到N的数字表示。Nikola开始是在1号位置&#xff0c;然后能够跳到其他的位置&#xff0c;Nikola的第一跳必须跳到2号位置。随后的每一跳必须满足两个条件&#xff1a; 1、如果…

BZOJ 1150 数据备份

https://cn.vjudge.net/problem/HYSBZ-1150 题目 你在一家 IT 公司为大型写字楼或办公楼&#xff08;offices&#xff09;的计算机数据做备份。然而数据备份的工作是枯燥乏味的&#xff0c;因此你想设计一个系统让不同的办公楼彼此之间互相备份&#xff0c;而你则坐在家中尽享计…

【游戏程序设计】三维游戏示例-战术竞技游戏Demo(二)

突然相遇&#xff1a; 然后死掉. 源代码以及实现方法&#xff1a; 首先定义一个Character类为角色的基类&#xff0c;然后英雄魔兽(战士)类Warcraft与托尼(法师)类Timy继承于它。分别实现对应的方法。 角色类有许多的方法&#xff0c;也有一些需要子类实现的虚函数方法。 Ch…