如何用python制作小游戏
1.准备
开始之前,你要确保Python和pip已经成功安装在电脑上噢,如果没有,请访问这篇文章:超详细Python安装指南 进行安装。
Windows环境下打开Cmd(开始—运行—CMD),苹果系统环境下请打开Terminal(command+空格输入Terminal),准备开始输入命令安装依赖。
输入以下命令安装我们所需要的依赖模块:
pip install freegames
pip install turtle
看到 Successfully installed xxx 则说明安装成功。
2.编写代码
原理很简单,就是用到了张川普的漫画图和freegames模块,以及turtle画图模块。
2.1 模块加载与设定图像
首先,引入turtle模块,和freegames模块,我们这一次实验需要用到freegames模块里的向量vector(用于表示坐标)。
import turtle from random import randrange from freegames import vector # 设定screen screen = turtle.Screen() screen.setup(420, 420, 370, 0) # 加载trump图,并设为默认turtle trump = '3.gif' screen.addshape(trump) turtle.shape(trump)
2.2 准备画图
在开始画图之前,由于需要用川普头像作为移动点,我们需要隐藏原有的turtle对象,并设置不显示tracer,即特朗普移动的时候不画线。
最后设定当用户点击画布的时候,执行tap函数。
turtle.hideturtle() turtle.up() turtle.tracer(False) turtle.onscreenclick(tap)
tap函数如下,即设定球体的位置和初始速度。
def tap(x, y): """ 回应屏幕点击 :param x: x轴位置 :param y: y轴位置 """ if not inside(ball): ball.x = -199 ball.y = -199 speed.x = (x + 200) / 25 speed.y = (y + 200) / 25
2.3 开始画图
这一部分的核心是move函数,不过在说道move函数前,我们要重点讲一下如何将原有端点换成特朗普的头像,那就是draw函数的功能:
def draw(): """ 绘画出太阳和trump """ turtle.hideturtle() turtle.clear() for target in targets: turtle.goto(target.x, target.y) turtle.dot(20, 'red') if inside(ball): turtle.showturtle() turtle.goto(ball.x, ball.y) turtle.update()
还记得我们在一开始就将川普的头像设定为turtle的shape了吗?然后在move函数运行之前,又将turtle的点隐藏了起来,其实这个时候隐藏的就是川普的头像。而在开始移动的时候,我们仅需要将turtle重新show回来即可。因此核心语句便是:
turtle.showturtle() turtle.goto(ball.x, ball.y)
这两句控制了头像的移动。
接下来看看move函数主体:
def move(): """ 移动太阳和trump :return: """ # 生成“太阳”球体 if randrange(40) == 0: y = randrange(-150, 150) target = vector(200, y) targets.append(target) # 移动太阳 for target in targets: target.x -= 0.5 # 如果Trump在屏幕内,减速并移动 if inside(ball): speed.y -= 0.35 ball.move(speed) # 重新渲染“太阳”位置 dupe = targets.copy() targets.clear() # 和Trump距离太近,则消去球体 for target in dupe: if abs(target - ball) > 13: targets.append(target) # 渲染画布 draw() # 没有目标了则终止游戏 for target in targets: if not inside(target): return # 每隔50毫秒递归调用本函数 turtle.ontimer(move, 50)
其实注释写的挺清楚的,但是这里我们还是详细解释一下:
1.首先需要生成“太阳”球体,这里用到了vector,是一个用于生成坐标的函数,y是随机产生的,所以球体初始位置都在最右边(200, y)。2.平移所有的太阳,包括新增的。3.如果屏幕内存在Trump头像,令其移动。4.重新渲染太阳位置,用新坐标代替,若和Trump距离过近,则消去该球体。5.渲染所有的球体和Trump的新位置。6.如果没有球体了,则终止游戏,否则每50毫秒重新调用本函数。
基于这个逻辑大家也可以写一个属于自己的游戏哦。
最后的效果图:
如果想了解更多关于python的应用,可以私信我,不管你是零基础还是有基础都可以获取到自己相对应的学习礼包!包括Python软件工具和2019最新入门到实战教程,(http://t.cn/A6Zvjdun)复制到浏览器打开!python技术学习交流群:695185429