猫史档案馆


【pygame:飞机大战】教你用pygame开发游戏 part2

用户:天上的流星_tianqiVirus天上的流星_tianqiVirus查看:2 回复:2 评论:2 创建时间:2019-05-19T08:40:25


教你用pygame开发游戏

今日游戏:飞机大战(自创)

 

如果对几行代码没有看懂,那么你可能是没看过上一次的结果

那就去看看我之前的帖子

 

上次我们说到哪里来着的?

哦对,流动的背景

现在,让我们继续

上次,我们做到了使背景动起来

那我们加上飞机吧

飞机的素材是大黄鸡的那个,同样在图形化里有,优秀的训练师总有办法弄下来(233)

包括上次的背景,如果图形化没有图片也不要担心,我会做一个网页或者其他东西让你们下载下来的

总之下来后有五张图片

四张大黄鸡的,一张敌

然后在image文件夹下建立plane文件夹,把照片放进去center_image

按照图片内的方式命名

然后再把它转换成pygameSurface

请在代码 background_2=pygame.image.load("assets/image/background.png") 后面加上这个

plane = [
		pygame.image.load("assets/image/plane/plane_1.png"),
		pygame.image.load("assets/image/plane/plane_2.png"),
		pygame.image.load("assets/image/plane/plane_3.png"),
		pygame.image.load("assets/image/plane/plane_4.png")
		]

这样,把图片做成列表以在后面展示动画效果

在代码 background_y = 0 后面加上这个

plane_x = 0
plane_y = 0

确定好坐标

接下来就要介绍pygame事件中的鼠标移动了

鉴于飞机要实时根据鼠标移动,我们可以学习这行代码

x,y = pygame.mouse.get_pos()

get_pos函数能监测鼠标移动,并返回两个数值,即x,y坐标

把上面代码放在代码 keepGoing = False 后面

此时,再在上面代码后面加上这个

	plane_x=x-53
	plane_y=y-34

众所周知,pygame坐标以左上角为零点

那么图片也是一样的

因为是左上角对于中心点的相对位置,所以各向左向上增加一定的坐标,这样看来就能舒服多了

那么,再用blit把它显示出来吧

请新建变量going_Time,并在每次循环中增加1

然后在显示背景的代码后面加上这个

	screen.blit(plane[going_time%4],(plane_x,plane_y))

这个列表和索引类似于海龟画图中的彩色螺旋

运行试试center_image

现在达到了飞机飞行的样式

接下来就是敌机

敌机要求我们在x坐标0到259,y坐标-58(这样就完全在屏幕之外)生成

并不断向下飞去,掉出屏幕后再回到指定生成地点再次生成,然后重复

大家可以试着加入敌机和它的脚本

最终代码为

import pygame
import random #随机数

pygame.init() #初始化pygame
screen = pygame.display.set_mode((338,492))#设置屏幕大小
pygame.display.set_caption("飞机大战")#设置屏幕标题

background_1=pygame.image.load("assets/image/background.png")
background_2=pygame.image.load("assets/image/background.png") #流动式背景
plane = [
		pygame.image.load("assets/image/plane/plane_1.png"),
		pygame.image.load("assets/image/plane/plane_2.png"),
		pygame.image.load("assets/image/plane/plane_3.png"),
		pygame.image.load("assets/image/plane/plane_4.png")
		] #飞机造型

keepGoing=True #控制程序持续运行
going_time=0

background_y = 0
plane_x=0
plane_y=0

while keepGoing:

	background_y+=1
	going_time+=1

	for event in pygame.event.get():#检测鼠标和键盘按下,移动之类的事件
		if event.type == pygame.QUIT: #检测是否按下关闭键
			keepGoing = False #如果是就退出循环

	x,y = pygame.mouse.get_pos()
	plane_x=x-53
	plane_y=y-34 #飞机跟随鼠标移动

	if background_y == 492:
		background_y = 0

	screen.blit(background_1,(0,background_y))
	screen.blit(background_2,(0,background_y-492))
	screen.blit(plane[going_time%4],(plane_x,plane_y))

	pygame.display.update()

pygame.quit() #退出pygame

这样,我们这一次的任务就完成了

想要继续学习pygame和游戏制作的请关注

id:天上的流星

本帖内的所有代码,思想仅供参考,请勿用于商业盈利用途


回复

上一页1 页 / 共 1下一页
热情的大黄鸡984热情的大黄鸡984

很棒棒哦,正打算用Py开发审判战

点赞0


评论


LeoNyfLeoNyf

软件网址???

点赞0


评论