[特殊字符] 用Python魔法制作《接金币》游戏!小学生也能学编程!
哈喽,各位小小程序员们!今天我们要用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.png(800×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游戏!虽然现在只能控制玩仔移动,但这是很棒的开始!下一节课,我们会让天上掉下金币和炸弹,让游戏变得更有趣!
记得保存好你的代码,下次我们继续完善这个游戏。你可以在评论区分享你的作品,或者遇到什么问题都可以问我哦!
小任务:试着改变玩仔的图片,换成你喜欢的卡通形象吧!😄
作者的话:编程就像搭积木,一开始可能有点难,但每学会一块,你就能搭出更酷的东西!坚持下去,你会发现自己越来越厉害!💪
更多推荐



所有评论(0)