# 废弃方法修复记录 ## 修复日期 2024年 ## 修复的废弃方法 ### 1. Go 标准库 - `math/rand` #### 修复内容: - **废弃方法**: `rand.Seed(time.Now().UnixNano())` - **修复方案**: 完全移除该调用 - **原因**: Go 1.20+ 中随机数生成器自动种子化,不再需要手动调用 `rand.Seed()` - **文件**: `main.go` #### 变更: ```go // 修复前 import ( "math/rand" "time" ) func main() { rand.Seed(time.Now().UnixNano()) // ... } // 修复后 func main() { // 不再需要 rand.Seed() 调用 // ... } ``` ### 2. Ebitengine v2.5+ - 图形绘制 API #### 修复内容: - **废弃方法**: `ebitenutil.DrawRect()` 和 `ebitenutil.DrawLine()` - **新方法**: `vector.DrawFilledRect()` 和 `vector.StrokeLine()` - **原因**: Ebitengine v2.5 后推荐使用性能更好的 vector 包 - **文件**: `internal/game/game.go` #### 主要变更: **矩形绘制:** ```go // 修复前 ebitenutil.DrawRect(screen, x, y, width, height, color) // 修复后 vector.DrawFilledRect(screen, float32(x), float32(y), float32(width), float32(height), color, false) ``` **线条绘制:** ```go // 修复前 ebitenutil.DrawLine(screen, x1, y1, x2, y2, color) // 修复后 vector.StrokeLine(screen, float32(x1), float32(y1), float32(x2), float32(y2), 1, color, false) ``` #### 修复位置: 1. 游戏背景绘制 2. 预览区域背景 3. 网格线绘制 4. 方块绘制 (`drawBlock` 方法) 5. 幽灵方块绘制 6. 下一个方块预览 ### 3. 导入包更新 添加了新的导入: ```go import ( // ... 其他导入 "github.com/hajimehoshi/ebiten/v2/vector" ) ``` ## 性能优势 ### Vector API 优势: 1. **更好的性能**: vector 包使用 GPU 加速绘制 2. **更准确的渲染**: 减少了像素对齐问题 3. **未来兼容性**: 与 Ebitengine 的发展方向一致 ### 随机数优化: 1. **自动优化**: Go 1.20+ 的随机数生成器自动优化 2. **更好的随机性**: 不需要手动种子化 3. **代码简化**: 减少了样板代码 ## 验证结果 - ✅ 编译成功 - ✅ Lint 检查通过 (无废弃警告) - ✅ 功能测试正常 - ✅ 多平台构建正常 ## 影响评估 - **兼容性**: 完全向前兼容 - **功能**: 无功能变化,纯技术升级 - **性能**: 理论上性能有所提升 - **维护性**: 符合最新最佳实践 ## 建议 1. 定期运行 `make check` 检查代码质量 2. 关注 Ebitengine 官方更新,及时采用新 API 3. 保持 Go 版本更新以享受最新优化