暑假也是很快就过去了,这个暑假的事情也是比较多,额。所以我都忘了有布置作业这一说,但好在想起来了,虽然说时间比较紧,但我还是把程序完善到了差不多的层次上,虽然当时看见作业的时候我想的是这几个作业都做一份,但是事与愿违,只做了一个,虽然只有一个,但是是我比较感兴趣的一方面,用Python写小游戏,下面我讲一下我的思路及灵感。(剩下的作业会在回到学校里以后补上的)
设计思路
一天刷短视频,看见一个博主教制作小游戏,一般我看见这种类型的视频都会果断喜欢加收藏,后来这不是想起来有作业了吗,就回头找了出来,我看着一个猫和老鼠的还是比较有意思的,所以就果断选择了这个程序。
设计灵感
虽然找到了方向,但是比对着写肯定是不大好的,所以我就在想如何创新,平日里刷短视频也好,思考发呆也好都在想,一般想到什么就会写下来,写在一个文本文档里。后来程序虽然没有全部实现我的预计,但总体上来说还会不错的。
代码运行展示及错误修正
首先咱们写这个游戏需要先导入海龟游戏库
import turtle
接着一步一步将这个程序拆分
1、首先是创建一个游戏的场所,新建一个屏幕
playground=turtle.Screen()
然后制作一个开头字幕
writer.color('blue') #画笔颜色
writer.hideturtle() #隐藏画笔
writer.penup()
writer.home() #文字出现在中心
writer.write("重生之宇将军搁后边一直追我",align='center',font=("Comic Sans MS",40,"bold"))
#文字内容,字体,字号,加粗,位置
writer.goto(0,-50)
writer.write("游戏里你要扮演一只Dog并尽可能的躲避宇将军的飞踢",align='center',font=("Comic Sans MS",20,"bold"))
writer.goto(0,-90)
writer.write("游戏马上开始",align='center',font=("Comic Sans MS",18,"bold"))
writer.goto(0,-120)
writer.write("3,2,1,Go!",align='center',font=("Comic Sans MS",18,"bold"))
导入time库,冻结界面时间
import time
time.sleep(5)
2、创建宇将军和狗的相关信息
playground.register_shape('tom.gif')
playground.register_shape('jerry.gif')
#读取图片
tom=turtle.Turtle()
tom.shape('tom.gif')
tom.penup()
tom.goto(random.randint(-200,200),random.randint(-200,200))
tom.pendown()
tom.pensize(3)
tom.color('blue')
#宇将军更改图标,随机位置(要导入random库)
jerry=turtle.Turtle()
jerry.shape('jerry.gif')
jerry.speed(0)
jerry.penup()
jerry.goto(random.randint(-200,200),random.randint(-200,200))
jerry.color('brown')
#dog的
3、用键盘来控制
playground.listen() #监听
def up():
jerry.setheading(90)
jerry.forward(20)
def down():
jerry.setheading(270)
jerry.forward(20)
def left():
jerry.setheading(180)
jerry.forward(20)
def right():
jerry.setheading(0)
jerry.forward(20)
#定义位移和方向
playground.onkey(up,'Up')
playground.onkey(down,'Down')
playground.onkey(left,'Left')
playground.onkey(right,'Right')
#监听键盘按键并作出相应指令
4、宇将军进行追逐
tom.setheading(tom.towards(jerry)) #宇将军始终朝向狗的方向
tom.forward(5) #宇将军速度
5、设置如何结束
tom.distance(jerry)<10 #如果两者之间距离小于10游戏结束
6、游戏结束界面
end=time.time()
playground.clear()
jerry.goto(0,0)
jerry.write("GAME OVER",align='center',font=("Comic sans MS",50,"bold"))
jerry.goto(0,-50)
jerry.write("YOU SURVIVED {:.1f} SECONDS".format(end-start),align='center',font=("Comic sans MS",20,"bold"))
tom.pu()
tom.goto(-50,-70)
tom.stamp()
jerry.pu()
jerry.goto(50,-70)
jerry.stamp()
#整体就是展示宇将军和狗,让二者定在屏幕上,并显示结局
7、创新
pygame.mixer.init()
pygame.mixer.music.load('fei.mp3')
pygame.mixer.music.set_volume(0.5)
pygame.mixer.music.play(1)
while pygame.mixer.music.get_busy():
pass
上面这段代码是为了加bgm的,游戏怎能没有bgm呢?是吧。
8、一些错误
首先是python只能读取gif格式的图片,所以需要转换格式,音乐方面我用的是MP3格式的,不知道其他的可不可以,另外图片像素最好不要超过64像素,要不然会太大。
其次是所有用到的东西都要放在一个文件夹里