猫史档案馆


【pygame】教你用pygame开发游戏 Part 3

用户:天上的流星_tianqiVirus天上的流星_tianqiVirus查看:0 回复:1 评论:0 创建时间:2019-05-26T07:56:55


教你用pygame开发游戏

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

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

那就去看看我之前的帖子

 

上次我们做到了飞机飞行

这次要加入敌

咱们先把敌机图片抓换成pygameSurface

请在加载飞机图像的列表后面加上这个

enemy = pygame.image.load("assets/image/plane/Enemy.png")

同时为了方便修改坐标,请在初始化飞机坐标的代码后面加上这个

enemy_y = 0
enemy_x = 0

这样初始化敌机坐标

我们知道坐车时外面的景物会往后倒退

所以敌机飞来时速度也要增加景物倒退的速度

我们设敌机速度为1,那么加上第一次的背景的速度

就是1+1=2

那么请在代码 going_time+=1 后面加上这个

	enemy_y+=2

再用blit将它在屏幕上显示出来

请在代码 screen.blit(plane[going_time%4],(plane_x,plane_y)) 后面加上这个

	screen.blit(enemy,(enemy_x,enemy_y))

注意缩进

为了做到持续出现,我们还得让飞机飞出下边界后回到上边界

请在循环内加入这行代码

	if enemy_y >= 492:
		enemy_y = -58

为了做到持续出现,我们还要把x坐标设置成随机数,请在以上if语句内加入这行代码

		enemy_x = random.randint(0,259)

注意,将随机数最高值改为259是为了防止飞机一半在屏幕内一半在屏幕外

同时,为了使第一次出现也有随机效果,我们可以直接把初始化的y坐标改为492

这样飞机一开始就能随机出现

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

接下来就是飞机炮弹

炮弹要求我们在玩家飞机的中心点生成,y坐标不断减少,然后飞出屏幕

飞出后又再在飞机位置生成,然后重复

大家可以试着加入炮弹和它的脚本

最终代码为

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")
		] #飞机造型
enemy = pygame.image.load("assets/image/plane/Enemy.png")

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

background_y = 0
plane_x=0
plane_y=492
enemy_y = 0
enemy_x = 0

while keepGoing:

	background_y+=1
	going_time+=1
	enemy_y+=2

	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
	if enemy_y >= 492:
		enemy_y = -58
		enemy_x = random.randint(0,259)

	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))
	screen.blit(enemy,(enemy_x,enemy_y))

	pygame.display.update()

pygame.quit() #退出pygame

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

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

id:天上的流星

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


回复

上一页1 页 / 共 1下一页
KyyWxhNKyyWxhN

沙发

点赞0


评论