周末在家闲着也是半小版贪闲着,不如跟我一起用代码“养”条贪吃鱼!时学这游戏做起来比煮泡面还简单,电鱼只要你会复制粘贴就能搞定。吃鱼咱们先从最基础的教程版本开始,保准半小时内让你收获一条活蹦乱跳的半小版贪电子鱼~
一、开工前的时学准备
翻翻工具箱,这些家伙事儿得备齐:
- Python 3.6+(推荐用IDLE或者PyCharm)
- Pygame库(装好记得
import pygame
测试下) - 记事本+计算器(别笑,电鱼真有用)
- 奶茶一杯(编程必备燃料)
工具类型 | 推荐选项 | 备用方案 |
编程语言 | Python | JavaScript |
图形库 | Pygame | Phaser.js |
代码编辑器 | VS Code | Sublime Text |
1.1 安装避坑指南
装Pygame时要是吃鱼卡住,试试pip install --pre pygame
这个命令。教程遇到过有个学员死活装不上,半小版贪结果发现是时学把Python装在了中文路径里——这事儿就跟把冰箱放浴室一样不靠谱。
二、电鱼鱼儿的吃鱼诞生记
先给咱们的主角画个大概模样:
class Fish:def __init__(self):self.x = 300self.y = 300self.speed = 5self.image = pygame.image.load('fish.png')
2.1 运动逻辑设计
想让鱼游得自然,得处理四个方向键的教程响应。这里有个小窍门:用pygame.key.get_pressed
替代单次按键检测,这样按住方向键时鱼会持续游动。
按键 | 运动方向 | 坐标变化 |
← | 左移 | x -= speed |
→ | 右移 | x += speed |
↑ | 上浮 | y -= speed |
↓ | 下潜 | y += speed |
三、鱼食投放系统
光有鱼可不够,得给它整点吃的。咱们用精灵类来管理鱼食:
class Food(pygame.sprite.Sprite):def __init__(self):super.__init__self.rect = pygame.Rect(random.randint(0,780), random.randint(0,580), 10, 10)
记得在游戏主循环里加个spawn_food
函数,建议每吃掉3颗鱼食就生成新食物,这样既能保持挑战性又不会让画面太乱。
四、碰撞检测的玄学
判断鱼是否吃到食物,用pygame.sprite.collide_rect
就行。但要注意调整碰撞框大小,实测把鱼的rect缩小20%会更符合视觉感受,这事儿就跟停车入库要留余量一个道理。
4.1 得分机制
搞个score变量记录吃到的鱼食数量。想提升游戏性的话,可以设置:
- 普通鱼食+1分
- 金色鱼食+3分(每10秒随机出现)
- 炸弹道具-5分(进阶玩法)
五、让游戏活起来
加上这些细节,你的贪吃鱼立马脱胎换骨:
鱼转头动画if direction == 'left':self.image = pygame.transform.flip(original_img, True, False) 水波纹特效water_ripple = pygame.Surface((50,50), pygame.SRCALPHA)
基础版 | 进阶版 |
单条鱼 | 可切换多种鱼类 |
键盘控制 | 支持触屏操作 |
固定背景 | 动态海底景深 |
六、常见翻车现场
新手常遇到的三大坑:
- 鱼游出屏幕外——记得加
clamp_ip
限制移动范围 - 食物生成在障碍物里——用
collidelist
检测生成位置 - 帧率不稳定——在游戏循环里加
clock.tick(60)
窗外的天色不知不觉暗了下来,屏幕里的小鱼还在欢快地追逐鱼食。保存好你的fish_game.py
,下次聚会时掏出手机说“看我养了条电子鱼”,绝对比朋友圈晒猫更拉风~