如何解决我如何让飞机/敌机上下飞
所以我一直在做这个游戏,我一直想做到这一点,所以当我的敌人/飞机类到达屏幕的顶部时,它开始下降,而在屏幕的底部也一样,但是上升了。我遇到了这个问题,因为我的飞机会掉下来但不会升起
https://gyazo.com/8ae464daf8f2d0d4ab51486fba42ebbe
从视频中可以看到,当敌机击中我的底部屏幕时,它会下降但不会开始上升。
这是我尝试过的,但是没有用。
if enemy1.y > 470:
enemy1.y -= playerman.speed
elif enemy1.y < 500:
enemy1.y += playerman.speed
我的完整代码
import pygame
pygame.init()
# Build The Screen
window = pygame.display.set_mode((700,500))
# Name Screen
pygame.display.set_caption("Noobs first Game")
# Class Player
class player:
def __init__(self,x,y,width,height,color):
self.x = x
self.y = y
self.width = width
self.height = height
self.color = color
self.speed = 5
self.rect = pygame.Rect(x,height)
self.ss1 = pygame.image.load("heroplane1.png")
self.ss1 = pygame.transform.scale(self.ss1,(self.ss1.get_width()//9,self.ss1.get_height()//9))
def draw(self):
self.rect.topleft=(self.x,self.y)
pygame.draw.rect(window,self.color,self.rect)
player_rect = self.ss1.get_rect(center = self.rect.center)
player_rect.centerx += -7
player_rect.centery += -6
window.blit(self.ss1,player_rect)
# Class Enemy
class enemy:
def __init__(self,color):
self.x = x
self.y = y
self.width = width
self.height = height
self.color = color
self.rect = pygame.Rect(x,height)
self.ss1 = pygame.image.load("enemyplane1.png")
self.ss1 = pygame.transform.scale(self.ss1,self.ss1.get_height()//9))
def draw(self):
self.rect.topleft = (self.x,self.rect)
enemy_rect = self.ss1.get_rect(center = self.rect.center)
enemy_rect.centerx += -2
enemy_rect.centery += -6
window.blit(self.ss1,enemy_rect)
# Class Enemy2
class enemy2:
def __init__(self,height)
self.ss1 = pygame.image.load("enemyplane2.png")
self.ss1 = pygame.transform.scale(self.ss1,self.rect)
enemy2_rect = self.ss1.get_rect(center = self.rect.center)
enemy2_rect.centerx += -4
enemy2_rect.centery += -6
window.blit(self.ss1,enemy2_rect)
# Class Enemy3
class enemy3:
def __init__(self,height)
self.ss1 = pygame.image.load("enemyplane3.png")
self.ss1 = pygame.transform.scale(self.ss1,self.rect)
enemy3_rect = self.ss1.get_rect(center = self.rect.center)
enemy3_rect.centerx += -4
enemy3_rect.centery += -6
window.blit(self.ss1,enemy3_rect)
class bg:
def __init__(self,height)
self.ss1 = pygame.image.load("Skybg1.png")
self.ss1 = pygame.transform.scale(self.ss1,(self.ss1.get_width()//1,self.ss1.get_height()//1))
def draw(self):
self.rect.topleft = (self.x,self.rect)
bg_rect = self.ss1.get_rect(center = self.rect.center)
bg_rect.centerx += -2
bg_rect.centery += -1
window.blit(self.ss1,bg_rect)
# Color
white = (255,255,255)
# Draw Player
playerman = player(5,250,90,40,white)
# For Enemy
enemy1 = enemy(400,100,white)
# For Enemy2
enemyp1 = enemy2(400,300,white)
# For Enemy3
ememyq1 = enemy3(400,400,white)
# For bg
bg1 = bg(100,500,white)
# Redrawwinodw
def redrawwindow():
window.fill((0,0))
# Draw bg
bg1.draw()
# Draw playerman
playerman.draw()
# Draw enemy
enemy1.draw()
# Draw enemy2
enemyp1.draw()
# Draw enemy3
ememyq1.draw()
# FPS Cnd Clock
fps = (30)
clock = pygame.time.Clock()
# Main Loop
run = True
while run:
clock.tick(fps)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
bg1.x -= playerman.speed
# enemy1 plane go brr
if enemy1.y > 470:
enemy1.y -= playerman.speed
elif enemy1.y < 500:
enemy1.y += playerman.speed
# Keys For Playerman
keys = pygame.key.get_pressed()
if keys[pygame.K_a] and playerman.x > playerman.speed:
playerman.x -= playerman.speed
if keys[pygame.K_d] and playerman.x < 260 - playerman.width - playerman.speed:
playerman.x += playerman.speed
if keys[pygame.K_w] and playerman.y > playerman.speed:
playerman.y -= playerman.speed
if keys[pygame.K_s] and playerman.y < 500 - playerman.height - playerman.speed:
playerman.y += playerman.speed
# Update And Other Sutff
redrawwindow()
pygame.display.update()
pygame.quit()
解决方法
使用变量enemy.direction = "top" / "bottom"
来控制方向。
然后检查
if enemy.direction == "bottom" and enemy.y > 470:
enemy.direction = "top"
enemy.speed = -enemy.speed
if enemy.direction == "top" and enemy.y < 0:
enemy.direction = "bottom"
enemy.speed = -enemy.speed
enemy.y += enemy.speed
最终,您可以为此使用speed
if enemy.speed > 0 and enemy.y > 470:
enemy.speed = -enemy.speed
if enemy.speed < 0 and enemy.y < 0:
enemy.speed = -enemy.speed
enemy.y += enemy.speed
您应该在类的函数中执行此操作
def update(self):
if self.speed > 0 and self.y > 470:
self.speed = -self.speed
if self.speed < 0 and self.y < 0:
self.speed = -self.speed
self.y += self.speed
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。