小屁孩日记——The Meltdown雪球大战(2)

Pandas入门教程(二十二):股票数据分析实战——yfinance 获取数据、技术指标与收益率分析 把 Pandas 用在真实场景,才能体会它的价值。本文以茅台股票为例,用 yfinance 获取历史行情,完成缺失值处理与列筛选,绘制收盘价曲线,计算 SMA 移动平均线与 RSI 相对强弱指数,并通过日收益率、累计收益率和波动率完成完整的量化分析流程。 阅读详情

继续更新雪球大战系列,这次更新增加了出拳功能。不过出拳功能一直有问题,害的我改了两个晚上的BUG。最后怎么就跑起来了我也不是非常清楚,不过如果你想要进行任何‘优化’请谨慎。这次主要更新了greg.py并增加了计时器。注意1:这是一个未完成的游戏,基本没有可玩性,仅供参考。注意2:运行之前请确保你安装了pygame包。

# greg.py

import pygame
# 还有很多事情要做

class Greg:
    def __init__(self,main):
        self.main = main
        self.screen = main.screen

        # 基准图像,其他的都是用pygame.transform.rotate()
        # 所有可能用到的图像都储存在这里备用
        self.image_up = pygame.image.load('greg.bmp')
        self.image_left = pygame.transform.rotate(self.image_up,90)
        self.image_down = pygame.transform.rotate(self.image_up,180)
        self.image_right = pygame.transform.rotate(self.image_up,270)
        self.image_punch = pygame.image.load('greg_punch.bmp')

        # 当前的图像
        self.image = self.image_up
        self.rect = self.image.get_rect()

        # 当前时间(纯粹为了方便)
        self.time = 0

        # 移动速度
        self.speed = 1

        # 方向
        self.direction = 'up'

        # 是否触碰到边缘
        self.up_edge = False
        self.down_edge = False
        self.left_edge = False
        self.right_edge = False

        # 移动时必须加减self.x和self.y,否则会有Bug
        self.x = 0
        self.y = 0

        # 是否在上下左右移动
        self.move_left = False
        self.move_right = False
        self.move_up = False
        self.move_down = False

        # 暂定出拳时间一秒,冷却时间一秒
        # 是否可以出拳(已出拳时不能出拳,冷却时不能出拳)
        self.punchable = True

        # 出拳开始的时间
        self.punch_start_time = 0

        # 冷却开始时间
        self.cool_down_start_time = 0

        '''
        出拳的原理:
        按下出拳键(q键)时检查punchable是否为True,如果是则切换为出拳动画,punchable改为False,
        punch_start_time设为当前时间。然后在update_punch函数中检查punch_start_time是否不为0,如果是则切换为出拳
        动画,再检查punch_start_time是否距当前时间已有一秒,如果是则重置punch_start_time为0,
        cool_down_start_time设为当前时间,(无需退出出拳动画,其他监测语句会进行更改)。然后监测
        cool_down_start_time是距当前时间已有一秒,如果是则重置cool_down_start_time为0,并将punchable
        设为True。
        '''
        '''
        出拳部分的运行机制非常精妙,所以注释不多。看不懂没关系,因为我也不太懂。如果你想进行任何‘优化’请不要
        删除任何代码并将原版代码做好备份
        '''

    def update_edge(self):
        # 监测是否触碰到边缘
        self.left_edge = self.x <= 0
        # 要减去自身宽度,否则Greg会跑出屏幕边缘(虽然跑不远)
        self.right_edge = self.x >= self.main.screen_wide-self.image.get_width()
        self.up_edge = self.y <= 0
        self.down_edge = self.y >= self.main.screen_high-self.image.get_height()

    def update_direction(self):
         # 设置上下移动方向
        if self.move_up:
            self.direction = 'up'
        elif self.move_down:
            self.direction = 'down'
        elif self.move_left:
            self.direction = 'left'
        elif self.move_right:
            self.direction = 'right'

    def update_move(self):
        # 移动监测
        if self.move_up and not self.up_edge:
            self.y -= self.speed
            self.image = self.image_up

        elif self.move_down and not self.down_edge:
            self.y += self.speed
            self.image = self.image_down

        elif self.move_left and not self.left_edge:
            self.x -= self.speed
            self.image = self.image_left

        elif self.move_right and not self.right_edge:
            self.x += self.speed
            self.image = self.image_right

    def update_punch_image(self):
        # 调整出拳动画方向
        self.image_left = pygame.transform.rotate(self.image_up,90)
        self.image_down = pygame.transform.rotate(self.image_up,180)
        self.image_right = pygame.transform.rotate(self.image_up,270)
        if self.direction == 'down':
            self.image = self.image_down
        elif self.direction == 'left':
            self.image = self.image_left
        elif self.direction == 'right':
            self.image = self.image_right

    def udpate_punch(self):
        # 出拳部分(前面有说明)
        if self.punch_start_time != 0:
            self.update_punch_image()
            self.image_up = self.image_punch
        if self.time - self.punch_start_time >= 0.5 and self.punch_start_time != 0: 
            #                                   ^调整这个数字来设置出拳时间
            self.punch_start_time = 0
            self.cool_down_start_time = self.time
        if self.time - self.cool_down_start_time >= 0.5 and self.cool_down_start_time != 0:
            #                                       ^调整这个数字设置冷却时间
            
            self.cool_down_start_time = 0
            self.image_up = pygame.image.load('greg.bmp')
            self.punchable = True
            self.update_punch_image()
        

    def update(self):
        # 获取当前时间
        self.time = self.main.timer

        # 刷新xy
        self.rect.x = self.x
        self.rect.y = self.y

        self.update_edge()

        self.update_direction()
        self.udpate_punch()
        self.update_move()
        

        

    def blitme(self):        
        self.screen.blit(self.image, self.rect)

出拳部分的原理在代码里有较详细的说明

出拳效果
出拳效果

 

百度网盘链接:https://pan.baidu.com/s/1GqRHraaciF0cvH5mai14mA?pwd=sygm,无提取码

【go-libp2p学习笔记】使用go-libp2p搭建中转服务器(circuit relay server) libp2p算是一个蛮新的库,提供了非常强大的p2p节点发现/连接/通信能力。IPFS的基石。 中文网上的**技术教程**比较少,所以抛砖引玉开一点坑来体验一下! 阅读详情

相关推荐

Q学习(Q-learning)入门小例子及python实现

一、从马尔科夫过程到Q学习 # 有一定基础的读者可以直接看第二部分 Q学习(Q-learning)算法是一种与模型无关的强化学习算法,以马尔科夫决策过程(Markov Decision Processes, MDPs)为理论基础。 标准的马尔科夫决策过程可以用一个五元组<S,A,P,R,γ>表示,其中: S是一个离散有界的状态空间; A是一个离散的动作空间; P为状态转...

wlm_py的博客 4万+

小屁孩日记——The Meltdown雪球大战(1)

只是一个未完成的游戏。。。欢迎试玩喔! PS:帖子中的所有图片除截图外皆来自于wimpykidclub.co.uk,游戏中的图片皆为个人绘制,灵感来自于杰夫 金尼(Jeff Kinny)的小说Diary of a Wimpy Kid,The Meltdown。...

Enjoy_Python的博客 900

从Delphi 7到Delphi 10.4.1的代码迁移:关键挑战与实用解决方案

本文详细探讨了从Delphi 7升级到Delphi 10.4.1进行代码迁移的关键挑战与实用解决方案。核心内容包括应对Unicode字符串处理、64位数据类型变化、VCL/FMX界面框架选择、第三方组件迁移以及数据库层现代化改造(如从BDE迁移至FireDAC)。文章为开发者提供了系统的迁移前准备、核心问题攻克策略及测试落地指南,旨在帮助团队高效、平稳地完成系统现代化升级。

weixin_29250403的博客 531

AI全栈实战 | 3.9-01 爬虫入门:requests 加 BeautifulSoup 三分钟跑通,但 90% 的人栽在这 4 个“礼貌“问题上

⚠️:本文内容仅用于。请遵守目标站点的服务条款与相关法律法规,不得对目标服务造成负担,不得采集、传播个人隐私数据。技术是中性的,边界在你手里。爬虫的入门技术(requests 发请求 + BeautifulSoup 解析)三分钟就能学会。真正区分"会用爬虫"和"会做爬虫的人"的,是这篇我们跑通"请求→解析→存储"的最小闭环,然后重点把"合规与礼貌"这根弦给你绷上。

源码获取 | 运行部署 | 定制二开修改,如果回复不及时请耐心等待,请见谅。 384

Windows MCP 安装教程:让 AI 代理与 Windows 系统无缝交互

通过以上步骤,你已经成功安装和配置了 Windows MCP 服务。现在你的 Cursor 编辑器可以通过 MCP 协议与 Windows 系统进行深度交互,AI 代理能够:启动和控制应用程序执行系统命令自动化 UI 操作获取系统状态信息这为 AI 辅助开发和工作流程自动化提供了强大的基础。如果你在使用过程中遇到任何问题,欢迎在评论区讨论或查看项目的官方文档。

chenchihwen的专栏 3349

遥感影像分割实战:LoveDA数据集从下载到训练全流程指南(附避坑技巧)

本文以LoveDA数据集为例,提供了一份详尽的遥感影像语义分割实战指南。内容涵盖从数据下载、理解与预处理,到环境配置、模型选择与训练,再到性能调优与部署的全流程,并重点分享了多个关键环节的避坑技巧,旨在帮助开发者和研究者高效上手并解决实际问题。

cherry的博客 929

从一段视频到可漫游的 4D 有声场景:思路拆解与最小复现手记

只需一段手机视频,你就能生成可"走进去"的 4D 有声场景:转头时狗叫声方向随之变化,走近时声音更清晰。本文拆解 Video-to-4DAVScene 的核心思路,手把手带你用几十行 Python 搭出最小管线,把视频中的运动物体变成带空间位置的声源,并附上三个真实踩坑的排障经验,代码可直接跑。🎧

helloagent的博客 218

新手必看:5分钟搞定Unitree Go1机器狗Gazebo仿真运动控制(附按键图解)

本文为新手提供了Unitree Go1机器狗在Gazebo仿真环境中实现运动控制的快速指南。通过5分钟极简配置和按键图解,帮助开发者快速掌握宇树科技明星产品的基础操作,包括环境搭建、仿真启动和运动控制技巧,适合零基础用户快速上手。

weixin_42550597的博客 300

Python+Agent入门笔记(二):列表推导式、模块和异常,这些写 Agent 前得会

接上一篇《Python+Agent入门笔记(一)》。基础语法跑通之后,这篇聊几块日常写脚本绕不开的东西。还是按 JS/Go 开发者的视角写,尽量记录我实际卡过的地方。

qq_41241612的博客 430

使用ChIPSeeker进行ChIP-seq, ATAC-seq,cut&tag等富集峰的基因组注释

常规的下一代高通量测序(next generation sequencing, NGS)实验通常产生大量短片段(reads),通常我们需要将这些reads比对到参考基因组/转录组上,即将它们置于生物学上有意义的基因背景下,才能获得有意义的结果。一般我们认为会产生两种类型的数据(当然两者并无严格意义上的区分)

微生信 3318

安卓新奇玩机工具全攻略___联发科MTK v6 限时免费 刷写固件工具操作

摘要:该文介绍一款限时免费的联发科V6刷机工具,支持小米、Vivo、Moto等多品牌设备,包括红米Note14Pro等机型(Klimt/Goya等代码)。工具需注册使用,提供EFS分区备份功能。作者提示工具可能触发杀毒警报,强调禁止非法用途,并说明部分联网工具可能失效。

小马哥的专栏 1313

详解Python条件语句

在 Python 中,if...else 是一种条件语句,可以根据给定的条件执行不同的操作。这个语句通常用于控制程序的流程。

2601_96798737的博客 205

解密Whisper模型与Speaker Diarization的结合

本文介绍了如何将Whisper语音识别模型与Speaker Diarization(说话人分割)技术相结合,实现多人对话场景下的语音转录和说话人识别。文章详细讲解了技术背景、环境配置和代码实现方法,通过Pyannote进行说话人分割,结合Whisper进行语音转文本,最终输出包含说话人信息的完整转录结果。该解决方案适用于会议记录、访谈分析等场景,显著提升了语音处理的应用价值。

2501_90323865的博客 152

微调数据集构建:清洗、标注、格式转换完整流程

摘要解决微调数据直接抓取导致的噪声污染、模式崩溃与Token错位问题。适用于需为大模型SFT阶段构建高质量训练集的数据与算法工程师。读完可获得包含启发式清洗、MinHash去重及ChatML格式对齐的完整可运行数据流水线。关键词数据清洗、MinHash去重、数据标注、ChatML、SFT数据集、数据配比背景与问题大模型微调效果的上限由数据质量决定,直接使用未经处理的原始语料极易引发模型复读、幻觉与指令遵循能力退化。

2402_85729970的博客 485

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Python3 协程:异步编程的核心机制与实战

协程是解决I/O密集型任务等待瓶颈的高效机制,相比线程更轻量、无锁开销。从yield到async/await的演进,使异步编程语义清晰、易于理解。通过async/await可实现并发执行多个任务(如gather、create_task),显著提升网络请求、爬虫等场景性能。关键在于使用异步库(如aiohttp)替代同步库,避免阻塞事件循环。合理控制超时与并发数,才能发挥协程最大优势。

Lxn2zh的博客 159

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

python如何控制浏览器

Python 可以通过 Selenium、Playwright 等工具实现浏览器自动化,从打开网页到执行复杂交互操作均可脚本化完成。Selenium生态成熟

2601_96797912的博客 75

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

torch.compile 差异仅 1e-6,边界样本预测为何翻转

torch.compile 加速后输出与 eager 不一致,部分预测翻转。逐层对比与 graph break 分析定位到动态分支翻转根因。容差回归仅适用于无分支翻转场景,零容忍场景应禁用编译。

昨日种种,皆成今我。今日种种,皆成新我。 158

二进制木马免杀-Python 分离免杀与 Web 挂马

二进制木马免杀-Python 分离免杀与 Web 挂马

2503_94637398的博客 267

Python 100讲课程导航:第08篇《Python input 与类型转换:构建可靠的交互程序》

本文详解Python中input()的返回类型为字符串,强调必须通过int()、float()等函数进行类型转换。重点讲解了输入验证的重要性,结合try-except处理ValueError等异常,实现可靠的交互程序。通过购物预算计算器实战,演示如何防范非法输入、处理边界值,并推荐使用Decimal避免浮点精度问题,提升程序健壮性。

铭渊老黄 132

【Python】国家中小学智慧教育平台电子教材批量下载与 PDF 合成实战

成果:两本语文电子课本(一年级上册 118 页 / 23MB、三年级上册 130 页 / 30.3MB),合计 248 页、约 54MB,单本下载加合成 40~60 秒,PDF 页数校验全部通过。经验教训SPA 站点的数据接口优先从 bundle 里挖,比抓页面稳得多;资源链接要按 private/public 分组看待,只取平台公开部分;页数、目录名这类“可推断”的信息,永远用实际响应验证一次;受限环境里“能不能跑浏览器”要在方案定稿前确认。后续计划:这版 PDF 是图片版,没有文字层;

木头大左的博客 122

魔塔社区微调训练Qwen2-1.5B-Instruct模型并烧录到‌RK3568开发板教程

本文基于Ubuntu 22.04 + CUDA 13.0.3环境,使用LLaMA-Factory框架对Qwen2-1.5B-Instruct模型进行LoRA微调,训练儿童故事生成专用模型。通过配置qwen模板、制作alpaca格式数据集、执行sft训练并合并LoRA权重,最终将模型转换为GGUF格式,并量化为Q4_K_M以适配RK3568嵌入式平台。全程支持国产镜像加速下载与显存优化,实现高效轻量化部署。

浅清秋慕夏的博客 184

【回眸】DeepSeek V4.1 Flash 快速上手与实战

本文介绍如何高效本地部署开源大模型,通过现代化工具链实现分钟级环境搭建。聚焦显存优化、一键安装、代码调用与多轮对话实现,解决“显存不足”“连接超时”等痛点,提供参数调优与结构化输出技巧,助力开发者在离线场景下快速构建稳定、高效的本地推理系统。

啤酒鸭的物联网开发记录博客 220

智叟云集-手机证据抓取系统的工程结构与应用入口

本文系统阐述手机证据抓取系统的工程结构与应用入口,涵盖四大层面:工程目录划分(Android、Python服务、Web页面、测试与构建工具);Android组件通过Manifest声明可启动页面,主界面由MainActivity管理;Python服务通过run.py解析参数并启动FastAPI应用,支持远程访问;浏览器页面采用HTML/CSS/JS分离架构,静态资源通过路径关联,实现动态交互。各模块分工明确,协同构建可运行的采集系统。

2301_77178996的博客 229

Java Arrays.asList 常见坑详解|UnsupportedOperationException、数组联动、基本类型 bug

解析 Arrays.asList 常见开发陷阱,演示 UnsupportedOperationException、底层数组引用共享、基本类型数组问题,区分 Arrays 内部 ArrayList 与 java.util.ArrayList,给出数组转 List 的各种场景正确代码。

weixin_42617033的博客 427

利用python中matplotlib.pyplot库绘制图

plt.plot(x,y) # x,y是每个点的坐标,plot()把每个点按顺序画折线。plt.subplots(2,2)表示绘制2*2的子图布局,axs[0,0]表示在第0行第0列绘制子图...coordinates_i[:,0]表示获取每一行(每一个spot)的第0列(x坐标)coordinates_i[:,1]表示获取每一行(每一个spot)的第0列(y坐标)plot.subplot(2,2,1) 表示子图布局是2*2的,开始绘制第一个。也可以导入数据绘制。可以设置color属性,设置颜色。

qq_46147236的博客 100

Spring Boot 自动配置原理

Spring Boot 自动配置由 @EnableAutoConfiguration 导入选择器,读取 jar 中 .imports 候选清单,经去重、排序、排除后逐类做条件判断,通过才注册 Bean。延迟导入让用户 Bean 优先,@ConditionalOnMissingBean 使默认配置让位。失效时查清单和 Negative matches。

2401_89855466的博客 368
上一篇: 小屁孩日记——The Meltdown雪球大战(1)
下一篇: 天哪,Python居然支持中文变量
Edward 1014
博客等级 码龄5年 153粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值