用Python写一个游戏脚本,你会吗?

学习python有一段时间了,由于python语言的强大和简洁,是一个不错的脚本语言,就准备做个游戏脚本练练手。如果你也想多练项目实战。
听说pywin32写脚本还不错
pywin32主要代码
我以楚留香的电脑版为例,记录脚本的编写之路吧。
窗口句柄
因为主要游戏都在windows跑,没什么好说的,第一步应该是获取窗口句柄。
在按键精灵帮助下,我们知道了游戏窗口句柄的类名和名字分别为"Messiah_Game",“楚留香”。
利用win32gui的函数,获取到窗口句柄,并稍微调整一下我们理想的大小。

import win32con
import win32gui
import win32api


hwnd=win32gui.FindWindowEx(0,0,"Messiah_Game","楚留香")
win32gui.SetForegroundWindow (hwnd)

if(win32gui.IsIconic(hwnd)):
    win32gui.ShowWindow(hwnd, win32con.SW_RESTORE)
win32gui.SetWindowPos(hwnd, win32con.HWND_TOPMOST, 300,200,1200,800,win32con.SWP_SHOWWINDOW)

这样就完成对窗口的激活和尺寸,位置设定了。
接下来我们先做一个模块的功能,比如自动摆摊购买,因为端游模式和手游模式摆摊位置不同,我们首先确定为端游模式的坐标。
自动购买第一步,首先是鼠标能移动到‘’藏宝阁‘’图标上
然后我们关注我们需要抢购的东西,再拿他与我们需求的价格做对比,如果小于我们理想的价格,则让脚本自动购买。

所以模拟键盘鼠标的操作和价格识别就显得尤为重要。以下为关注界面,每点击一次关注就会刷新,似乎有点击事件间隔限制。关注界面

 '''我们希望脚本是在端游模式跑起来的,方便测试,先默认一个Mode为端游模式,后期可以设置一个检查模式功能'''
    Mode='端游模式'
    if(Mode=='端游模式'):
        win32api.SetCursorPos([557, 584])
        win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)

启动脚本后,发现鼠标虽然移动成功,但是单击命令似乎只能在游戏之外的窗口才会执行?
为什么呢?
这是由于游戏屏蔽了系统API提供的模拟输入,包括键盘鼠标的模拟操作都不会生效。
看起来事情并不简单。
那怎么办?如果你学习也迷茫。可以去小编的Python交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新Python教程项目

别急,我们可以模拟键盘鼠标驱动的硬件操作。
以下理一下我们思路
目的:我们希望模拟键盘和鼠标的操作。
可以使用方式或库:

  • pyinput
  • autopy
  • win32api
  • winio
  • vb类似于按键精灵的模式
    前面三种已经证明不可行,因为都是api层面的操作,一定都会被游戏系统屏蔽。
    关于第四种可以实现IO驱动的模拟
    介绍winio
    但是进入github查看说明文档发现:
    不支持
    也就是说,winio的python接口还不支持win10,其他语言倒是可以支持,但是我们的代码不就前功尽弃了吗?
    因此联想到可以使用vb的按键精灵模式来实现模拟输入。
    在这里我们并不是要推翻整个代码重写,更不是把语言换成vbscript,我们可以通过调用按键精灵某些插件实现模拟的键盘鼠标输入。

关于Python的技术储备

在这里给大家分享一些免费的课程供大家学习,下面是课程里面的截图,扫描最下方的二维码就能全部领取,如果图片失效点击蓝色字体便可跳转哦~点这里哦

1.Python所有方向的学习路线

在这里插入图片描述

2.学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
在这里插入图片描述

3.学习资料

在这里插入图片描述

4.实战资料

实践是检验真理的唯一标准。这里的压缩包可以让你再闲暇之余帮你提升你的个人能力。
在这里插入图片描述

5.视频课程

在这里插入图片描述

好啦今天的分享就到这里结束了,快乐的时光总是短暂呢,想学习更多课程的小伙伴不要着急,有更多惊喜哦~在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于Python编写贪吃蛇的脚本,我可以给您提供一些基础的代码模板,包括游戏的主要逻辑和图形化界面的实现,您可以根据需要进行修改和完善。以下是示例代码: ``` import pygame import random # 初始化pygame模块 pygame.init() # 设置游戏窗口大小 width = 640 height = 480 # 创建游戏窗口 screen = pygame.display.set_mode((width, height)) pygame.display.set_caption("贪吃蛇游戏") # 设置游戏时钟 clock = pygame.time.Clock() # 设置贪吃蛇的初始位置、身体长度和移动速度 snake_position = [100, 50] snake_body = [[100, 50], [90, 50], [80, 50]] snake_speed = 10 # 设置食物的初始位置和大小 food_position = [random.randrange(1, (width // 10)) * 10, random.randrange(1, (height // 10)) * 10] food_size = 10 # 设置方向 direction = "RIGHT" change_to = direction # 定义游戏结束函数 def game_over(): font = pygame.font.SysFont(None, 50) text = font.render("游戏结束!", True, (255, 0, 0)) screen.blit(text, [width // 4, height // 4]) pygame.display.update() pygame.time.delay(2000) pygame.quit() quit() # 游戏循环 while True: # 事件处理 for event in pygame.event.get(): if event.type == pygame.QUIT: game_over() elif event.type == pygame.KEYDOWN: if event.key == pygame.K_RIGHT: change_to = "RIGHT" elif event.key == pygame.K_LEFT: change_to = "LEFT" elif event.key == pygame.K_UP: change_to = "UP" elif event.key == pygame.K_DOWN: change_to = "DOWN" # 判断方向是否合法 if change_to == "RIGHT" and direction != "LEFT": direction = "RIGHT" elif change_to == "LEFT" and direction != "RIGHT": direction = "LEFT" elif change_to == "UP" and direction != "DOWN": direction = "UP" elif change_to == "DOWN" and direction != "UP": direction = "DOWN" # 根据方向移动贪吃蛇 if direction == "RIGHT": snake_position[0] += snake_speed elif direction == "LEFT": snake_position[0] -= snake_speed elif direction == "UP": snake_position[1] -= snake_speed elif direction == "DOWN": snake_position[1] += snake_speed # 更新贪吃蛇的身体 snake_body.insert(0, list(snake_position)) if snake_position[0] == food_position[0] and snake_position[1] == food_position[1]: food_position = [random.randrange(1, (width // 10)) * 10, random.randrange(1, (height // 10)) * 10] else: snake_body.pop() # 游戏胜利条件 if snake_position[0] >= width or snake_position[0] < 0: game_over() elif snake_position[1] >= height or snake_position[1] < 0: game_over() for block in snake_body[1:]: if snake_position[0] == block[0] and snake_position[1] == block[1]: game_over() # 绘制游戏场景 screen.fill((255, 255, 255)) for position in snake_body: pygame.draw.rect(screen, (0, 255, 0), pygame.Rect(position[0], position[1], 10, 10)) pygame.draw.rect(screen, (255, 0, 0), pygame.Rect(food_position[0], food_position[1], food_size, food_size)) pygame.display.update() # 设置游戏时钟 clock.tick(20) # 退出pygame模块 pygame.quit() ``` 以上代码是一个基础的贪吃蛇模板,您可以根据需要进行进一步的完善和改进,例如添加渐变颜色、声音效果、排行榜等功能。希望对您有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值