汇智学堂-phthon小游戏(太空阻击之六-上下左右移动战机)

5.6上下左右移动战机
我们制作的战机,只能在固定的位置,这一节我们来让它上下左右移动。下面是我们要做的事情。
1、理解键盘按键。
2、我们用WASD四个按键来控制战机的上左下右四个方向。
3、根据按键,我们改变战机的位置坐标。

控制战机方向的实现代码如下:

keys = [False, False, False, False]

while running:
screen.blit(background,(0,0))
#screen.blit(player,positionPlayer)

for event in pygame.event.get():
    if event.type == pygame.KEYDOWN:
        if event.key==K_w:
            keys[0]=True
        elif event.key==K_a:
            keys[1]=True
        elif event.key==K_s:
            keys[2]=True
        elif event.key==K_d:
            keys[3]=True
    if event.type == pygame.KEYUP:
        if event.key==pygame.K_w:
            keys[0]=False
        elif event.key==pygame.K_a:
            keys[1]=False
        elif event.key==pygame.K_s:
            keys[2]=False
        elif event.key==pygame.K_d:
            keys[3]=False
    if event.type == pygame.QUIT:
        pygame.quit()
        exit()
        
if keys[0]:
    positionPlayer[1]-=5
    if positionPlayer[1]<=10:
        positionPlayer[1]=10
elif keys[2]:
    positionPlayer[1]+=5
    if positionPlayer[1]>=600:
        positionPlayer[1]=600
if keys[1]:
    positionPlayer[0]-=5
    if positionPlayer[0]<=10:
        positionPlayer[0]=10
elif keys[3]:
    positionPlayer[0]+=5
    if positionPlayer[0]>=380:
        positionPlayer[0]=380

screen.blit(player,positionPlayer)

pygame.KEYDOWN:键按下
pygame.KEYUP:键抬起

将代码整合起来,整合后完整代码如下:

import pygame
from pygame.locals import *
from sys import exit
import random

#移动战机

screen_width, screen_height = 480, 700
screen=pygame.display.set_mode((screen_width, screen_height))
background=pygame.image.load(“resources/images/background2.png”)
pygame.display.set_caption(‘雷雷的太空大战’)
pygame.init()

running=1
flyingsaucers=[]
enemy = pygame.image.load(“resources/images/flyingsaucer.png”)

b=0

bullet = pygame.image.load(“resources/images/bullet1.png”)
player = pygame.image.load(“resources/images/hero1.png”)

positionPlayer=[100,400]
positionBullet=[positionPlayer[0]+50,positionPlayer[1]+40]
bullets=[]

keys = [False, False, False, False]

while running:
screen.blit(background,(0,0))
#screen.blit(player,positionPlayer)

for event in pygame.event.get():
    if event.type == pygame.KEYDOWN:
        if event.key==K_w:
            keys[0]=True
        elif event.key==K_a:
            keys[1]=True
        elif event.key==K_s:
            keys[2]=True
        elif event.key==K_d:
            keys[3]=True
    if event.type == pygame.KEYUP:
        if event.key==pygame.K_w:
            keys[0]=False
        elif event.key==pygame.K_a:
            keys[1]=False
        elif event.key==pygame.K_s:
            keys[2]=False
        elif event.key==pygame.K_d:
            keys[3]=False
    if event.type == pygame.QUIT:
        pygame.quit()
        exit()
        
if keys[0]:
    positionPlayer[1]-=5
    if positionPlayer[1]<=10:
        positionPlayer[1]=10
elif keys[2]:
    positionPlayer[1]+=5
    if positionPlayer[1]>=600:
        positionPlayer[1]=600
if keys[1]:
    positionPlayer[0]-=5
    if positionPlayer[0]<=10:
        positionPlayer[0]=10
elif keys[3]:
    positionPlayer[0]+=5
    if positionPlayer[0]>=380:
        positionPlayer[0]=380

screen.blit(player,positionPlayer)

'''
for bulletx in bullets:
    bulletx[0]+=5
    screen.blit(bullet,(bulletx[0],bulletx[1]))

for event in pygame.event.get():
    if event.type==pygame.MOUSEBUTTONDOWN:
        bullets.append([150,440])''' 

if b<5:
    flyingsaucers.append([random.randint(0,400),random.randint(20,100)])
b+=1

for flyingsaucer in flyingsaucers:
    if flyingsaucer[1]<610:
        flyingsaucer[1]+=0.5
    screen.blit(enemy,flyingsaucer)
    pygame.display.update()
    #pygame.display.flip()

 #测试时关闭窗口用

‘’’
for event in pygame.event.get():
if event.type == KEYDOWN and event.key == K_ESCAPE:
running = False
pygame.display.quit()
if event.type == pygame.QUIT:
pygame.quit()
exit()’’’

运行这段代码,在画布上,我们的无敌战机,在我们按下WASD不同键时,它会向不同的方向运动。见下图5-5、5-6、5-7、5-8。
在这里插入图片描述
图5-5
在这里插入图片描述
图5-6
在这里插入图片描述
图5-7
在这里插入图片描述
图5-8

猜你喜欢

转载自blog.csdn.net/weixin_39593940/article/details/88414355
今日推荐