哈喽各位小小程序员们今天我们要用Python变一个超酷的魔术——制作一款《接金币》游戏你只需要动动鼠标就能控制游戏里的小人左右移动接住天上掉下来的金币啦一、我们的游戏目标是什么想象一下你控制着一个可爱的小玩仔天空中不断有闪闪发光的金币掉下来你要左右移动接住它们。每接住一个金币就得分听起来是不是很酷让我们一步步实现它二、编程前的“超级英雄”思想——面向对象在开始写代码前我们要学一个超级酷的编程思想叫做“面向对象”。 什么是“面向对象”简单来说就是把游戏里的每个东西都当成一个独立的小机器人比如玩仔是一个机器人 金币是一个机器人 ⭐游戏背景也是一个机器人 每个机器人都有长相属性—— 比如玩仔穿什么衣服、长什么样本领方法—— 比如玩仔会跑、会跳 举个例子学生机器人class Student(): # 创建一个“学生”类就像设计图纸 def __init__(self, name, address): # 初始化给机器人起名字 self.name name # 属性名字 self.address address # 属性来自哪里 def introduce(self): # 方法自我介绍的技能 print(大家好我叫 self.name) print(我来自 self.address) # 创建两个学生机器人 小明 Student(小明, 北京) 小红 Student(小红, 上海) # 让机器人做自我介绍 小明.introduce() # 输出大家好我叫小明 # 我来自北京 小红.introduce() # 输出大家好我叫小红 # 我来自上海看我们用同一张“设计图纸”Student类造出了两个不同的学生机器人三、搭建游戏框架——就像建房子️做游戏就像建房子不能乱建要有框架。我们的游戏框架主要有三部分 1. 系统设置房子的设计图# 系统常量就像房子的尺寸规定 image_path resources/images/ # 图片存放的文件夹 RUN 1 # 游戏运行状态 PAUSE 2 # 游戏暂停状态 2. 游戏主类房子的主体结构class Game: def __init__(self): # 初始化就像打好地基 pygame.init() # 启动游戏引擎 self.screen pygame.display.set_mode((800, 600)) # 创建800x600的游戏窗口 pygame.display.set_caption(接金币) # 给窗口起名字 # 加载背景图片 self.background pygame.image.load(image_path background.png) self.state RUN # 设置游戏状态为“运行” 3. 游戏循环让房子“活”起来def run(self): # 游戏运行时 while True: # 不停循环游戏才不会结束 self.listen() # 监听看看玩家按了什么键 self.control() # 控制根据按键做出反应四、让玩仔跟着鼠标跑️这是最有趣的部分我们要让玩仔变成你的“小跟班”鼠标去哪儿它就跟到哪儿。 第一步获取鼠标位置# 获取鼠标当前位置 pos pygame.mouse.get_pos() # 这会得到鼠标的(x, y)坐标 # 比如鼠标在窗口的(100, 200)位置pos就是(100, 200)小实验试试这个代码看看鼠标位置怎么变import pygame from pygame.locals import * from sys import exit pygame.init() screen pygame.display.set_mode((400, 200)) font pygame.font.SysFont(None, 30) # 创建字体用来显示文字 BLACK (0, 0, 0) # 黑色 WHITE (255, 255, 255) # 白色 while True: for event in pygame.event.get(): if event.type QUIT: exit() pos pygame.mouse.get_pos() # 获取鼠标位置 img font.render(str(pos), True, WHITE) # 把位置变成文字图片 screen.fill(BLACK) # 把屏幕涂成黑色 screen.blit(img, (10, 10)) # 在(10,10)位置显示文字 pygame.display.update() # 更新屏幕运行后在窗口里移动鼠标你会看到左上角的数字跟着变化这就是鼠标的位置。 第二步创建“玩仔”类class Wanzai: def __init__(self, pos): # 初始化玩仔 # 加载玩仔图片 self.image pygame.image.load(resources/images/wanzai.png) # 获取图片的矩形区域就像给图片画个框框 self.rect self.image.get_rect() # 设置玩仔的初始位置 self.rect.center pos def move(self, pos_x): # 让玩仔移动 self.rect.centerx pos_x # 只改变x坐标水平移动知识点rect是PyGame中表示矩形区域的对象有这些常用属性rect.center- 矩形的中心点rect.topleft- 矩形的左上角rect.width- 矩形的宽度rect.height- 矩形的高度 第三步完整的游戏代码import pygame from pygame.locals import * from sys import exit # 1. 系统设置 image_path resources/images/ RUN 1 PAUSE 2 # 2. 玩仔类 class Wanzai: def __init__(self, pos): self.image pygame.image.load(image_path wanzai.png) self.rect self.image.get_rect() self.rect.center pos def move(self, pos_x): self.rect.centerx pos_x # 3. 游戏主类 class Game: def __init__(self): pygame.init() self.screen pygame.display.set_mode((800, 600)) pygame.display.set_caption(接金币) # 加载背景 self.background pygame.image.load(image_path background.png) # 创建玩仔对象放在屏幕底部中央 self.wanzai Wanzai((400, 500)) self.state RUN def listen(self): # 监听事件 for event in pygame.event.get(): if event.type QUIT: # 如果点了关闭按钮 exit() # 退出游戏 def control(self): # 控制游戏 if self.state RUN: # 绘制背景 self.screen.blit(self.background, (0, 0)) # 获取鼠标x坐标水平位置 mouse_x pygame.mouse.get_pos()[0] # 移动玩仔 self.wanzai.move(mouse_x) # 绘制玩仔 self.screen.blit(self.wanzai.image, self.wanzai.rect) pygame.display.update() # 更新屏幕显示 def run(self): # 运行游戏 while True: self.listen() self.control() # 4. 启动游戏 if __name__ __main__: game Game() game.run()五、运行你的游戏准备图片在代码文件夹里创建resources/images/文件夹放入background.png800×600的背景图wanzai.png玩仔图片建议100×100左右运行代码双击你的Python文件游戏窗口就会出现玩起来移动鼠标看看玩仔是不是乖乖跟着你走六、挑战升级✨学会了基础操作试试这些挑战吧 挑战1让玩仔在窗口内移动现在的玩仔能跑到窗口外面你能修改代码让它只能在窗口内移动吗提示用screen.get_rect()获取窗口矩形用rect.contains()判断玩仔是否在窗口内。 挑战2改变移动速度觉得玩仔移动太快或太慢可以调整移动的步长 挑战3改变窗口大小尝试修改pygame.display.set_mode((800, 600))中的数字看看窗口有什么变化七、常见问题解答❓Q运行代码时显示“找不到图片”怎么办​A检查图片路径是否正确图片是否放在resources/images/文件夹里。Q游戏窗口点关闭按钮关不掉怎么办​A按键盘上的Alt F4强制关闭。Q想用键盘控制玩仔怎么办​A可以用pygame.key.get_pressed()获取按键状态下节课我们会学到八、知识点总结今天我们学到了面向对象思想把游戏里的每个东西都当成独立的对象游戏框架搭建像建房子一样有序地组织代码鼠标控制用pygame.mouse.get_pos()获取鼠标位置矩形对象(Rect)用get_rect()获取图片的矩形区域图片绘制用screen.blit()在屏幕上显示图片 恭喜你你已经成功创建了第一个Python游戏虽然现在只能控制玩仔移动但这是很棒的开始下一节课我们会让天上掉下金币和炸弹让游戏变得更有趣记得保存好你的代码下次我们继续完善这个游戏。你可以在评论区分享你的作品或者遇到什么问题都可以问我哦小任务试着改变玩仔的图片换成你喜欢的卡通形象吧作者的话编程就像搭积木一开始可能有点难但每学会一块你就能搭出更酷的东西坚持下去你会发现自己越来越厉害