Python Pygame:我的一些精灵卡在屏幕的右侧
我的游戏差不多完成了!不幸的是,我需要解决一些小细节。最主要的一点是,在你播放一段时间后,一些精灵会卡在屏幕的前面。谁能帮帮我吗Python Pygame:我的一些精灵卡在屏幕的右侧,python,pygame,Python,Pygame,我的游戏差不多完成了!不幸的是,我需要解决一些小细节。最主要的一点是,在你播放一段时间后,一些精灵会卡在屏幕的前面。谁能帮帮我吗 import pygame, random from pygame.locals import ( K_UP, K_DOWN, K_LEFT, K_RIGHT, KEYDOWN, QUIT, ) print('Use the window above to play') pygame.init() pygame.font
import pygame, random
from pygame.locals import (
K_UP,
K_DOWN,
K_LEFT,
K_RIGHT,
KEYDOWN,
QUIT,
)
print('Use the window above to play')
pygame.init()
pygame.font.init()
clock = pygame.time.Clock()
score = 0
display_width = 800
display_height = 600
X = 400
Y = 400
SCREEN_WIDTH = display_width
SCREEN_HEIGHT = display_height
screen = pygame.display.set_mode((display_width,display_height))
def death():
global alive
print('You died')
myfont = pygame.font.SysFont('Comic Sans MS', 100)
textsurface = myfont.render('You Died.', False, (0, 0, 0))
screen.blit(textsurface,(0,0))
class Player(pygame.sprite.Sprite):
def __init__(self, x, y):
super(Player, self).__init__()
self.surf = pygame.image.load("Plane.png").convert()
self.rect = self.surf.get_rect(topleft = (x, y))
def update(self, pressed_keys):
if pressed_keys[K_UP]:
self.rect.move_ip(0, -5)
if pressed_keys[K_DOWN]:
self.rect.move_ip(0, 5)
if pressed_keys[K_LEFT]:
self.rect.move_ip(-5, 0)
if pressed_keys[K_RIGHT]:
self.rect.move_ip(5, 0)
if self.rect.left < 0:
self.rect.left = 0
if self.rect.right > SCREEN_WIDTH:
self.rect.right = SCREEN_WIDTH
if self.rect.top <= 0:
self.rect.top = 0
if self.rect.bottom >= SCREEN_HEIGHT:
self.rect.bottom = SCREEN_HEIGHT
class Enemy(pygame.sprite.Sprite):
def __init__(self):
super(Enemy, self).__init__()
self.surf = pygame.Surface((20, 10))
self.surf = pygame.image.load("Missile.png").convert()
self.rect = self.surf.get_rect(
center=(
random.randint(SCREEN_WIDTH + 20, SCREEN_WIDTH + 100),
random.randint(0, SCREEN_HEIGHT),
)
)
self.speed = random.randint(5, 10)
def update(self):
self.rect.move_ip(-self.speed, 0)
if self.rect.right < 0:
global score
score += 1
self.kill()
class Bomb(pygame.sprite.Sprite):
def __init__(self):
super(Bomb, self).__init__()
self.surf = pygame.Surface((50, 25))
self.surf = pygame.image.load("Bomber.png").convert()
self.rect = self.surf.get_rect(
center=(
random.randint(SCREEN_WIDTH + 20, SCREEN_WIDTH + 100),
random.randint(0, SCREEN_HEIGHT),
)
)
self.speed = random.randint(2, 5)
def update(self):
self.rect.move_ip(-self.speed, 0)
if self.rect.right < 0:
global score
score += 2
self.kill()
class Blimp(pygame.sprite.Sprite):
def __init__(self):
super(Blimp, self).__init__()
self.surf = pygame.Surface((75, 35))
self.surf = pygame.image.load("Blimp.png").convert()
self.rect = self.surf.get_rect(
center=(
random.randint(SCREEN_WIDTH + 20, SCREEN_WIDTH + 100),
random.randint(0, SCREEN_HEIGHT),
)
)
self.speed = random.randint(1, 3)
def update(self):
self.rect.move_ip(-self.speed, 0)
if self.rect.right < 0:
global score
score += 3
self.kill()
ADDENEMY = pygame.USEREVENT + 1
pygame.time.set_timer(ADDENEMY, 950)
player = Player(display_width // 2, display_height // 2)
enemies = pygame.sprite.Group()
bomb = pygame.sprite.Group()
blimp = pygame.sprite.Group()
all_sprites = pygame.sprite.Group()
all_sprites.add(player)
alive = True
while alive:
for event in pygame.event.get():
print(event)
if event.type == pygame.QUIT:
alive = False
elif event.type == ADDENEMY:
new_enemy = Enemy()
new_bomb = Bomb()
new_blimp = Blimp()
spawn = random.randint(1,3)
if spawn == 1:
enemies.add(new_enemy)
if spawn == 2:
enemies.add(new_blimp)
if spawn == 3:
enemies.add(new_bomb)
all_sprites.add(new_enemy)
all_sprites.add(new_bomb)
all_sprites.add(new_blimp)
pressed_keys = pygame.key.get_pressed()
player.update(pressed_keys)
enemies.update()
screen.fill((50,50,160))
for entity in all_sprites:
screen.blit(entity.surf, entity.rect)
if pygame.sprite.spritecollideany(player, enemies):
player.kill()
alive = False
death()
screen.blit(player.surf, player.rect)
pygame.display.flip()
pygame.display.update()
clock.tick(60)
导入pygame,随机
从pygame.locals导入(
K_UP,
K_下来,
库左,
好的,
KEYDOWN,
退出
)
打印('使用上面的窗口播放')
pygame.init()
pygame.font.init()
clock=pygame.time.clock()
分数=0
显示宽度=800
显示高度=600
X=400
Y=400
屏幕宽度=显示宽度
屏幕高度=显示高度
screen=pygame.display.set_模式((显示宽度、显示高度))
def death():
全球生存
打印(“你死了”)
myfont=pygame.font.SysFont('Comic Sans MS',100)
textsurface=myfont.render('你死了',False,(0,0,0))
屏幕光点(文本表面,(0,0))
职业玩家(pygame.sprite.sprite):
定义初始化(self,x,y):
超级(玩家,自我)。\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu()
self.surf=pygame.image.load(“Plane.png”).convert()
self.rect=self.surf.get_rect(左上=(x,y))
def更新(自我,按下_键):
如果按下[K\U UP]键:
自校正移动ip(0,-5)
如果按下按键[K向下]:
自校正移动ip(0,5)
如果按[左]键[左]:
自校正移动ip(-5,0)
如果按下按键[K_RIGHT]:
自校正移动ip(5,0)
如果self.rect.left<0:
self.rect.left=0
如果self.rect.right>屏幕宽度:
self.rect.right=屏幕宽度
如果self.rect.top=屏幕高度:
self.rect.bottom=屏幕高度
职业敌人(pygame.sprite.sprite):
定义初始化(自):
超级(敌人,自己)。\uuuuu init\uuuuuuu()
self.surf=pygame.Surface((20,10))
self.surf=pygame.image.load(“导弹.png”).convert()
self.rect=self.surf.get_rect(
居中=(
random.randint(屏幕宽度+20,屏幕宽度+100),
random.randint(0,屏幕高度),
)
)
self.speed=random.randint(5,10)
def更新(自我):
自校正移动ip(-自校正速度,0)
如果self.rect.right<0:
全球得分
分数+=1
self.kill()
职业炸弹(pygame.sprite.sprite):
定义初始化(自):
超级(炸弹,自我)。\uuuu初始化
self.surf=pygame.Surface((50,25))
self.surf=pygame.image.load(“Bomber.png”).convert()
self.rect=self.surf.get_rect(
居中=(
random.randint(屏幕宽度+20,屏幕宽度+100),
random.randint(0,屏幕高度),
)
)
self.speed=random.randint(2,5)
def更新(自我):
自校正移动ip(-自校正速度,0)
如果self.rect.right<0:
全球得分
分数+=2
self.kill()
职业飞艇(pygame.sprite.sprite):
定义初始化(自):
超级(飞艇,自我)。\uuu初始
self.surf=pygame.Surface((75,35))
self.surf=pygame.image.load(“Blimp.png”).convert()
self.rect=self.surf.get_rect(
居中=(
random.randint(屏幕宽度+20,屏幕宽度+100),
random.randint(0,屏幕高度),
)
)
self.speed=random.randint(1,3)
def更新(自我):
自校正移动ip(-自校正速度,0)
如果self.rect.right<0:
全球得分
分数+=3
self.kill()
ADDENEMY=pygame.USEREVENT+1
pygame.time.set_定时器(ADDENEMY,950)
player=player(显示宽度//2,显示高度//2)
敌人=pygame.sprite.Group()
bomb=pygame.sprite.Group()
blimp=pygame.sprite.Group()
all_sprites=pygame.sprite.Group()
所有精灵。添加(玩家)
活着=真
在世时:
对于pygame.event.get()中的事件:
打印(事件)
如果event.type==pygame.QUIT:
活动=错误
elif event.type==ADDENEMY:
新敌人
新炸弹
new_blimp=blimp()
spawn=random.randint(1,3)
如果spawn==1:
敌人。添加(新敌人)
如果spawn==2:
敌人。添加(新战机)
如果spawn==3:
敌人。添加(新炸弹)
所有精灵。添加(新敌人)
所有精灵。添加(新精灵)
所有精灵。添加(新精灵)
按下按键=pygame.key.get_pressed()
播放机更新(按_键)
更新(
筛选填充((50,50160))
对于所有_精灵中的实体:
screen.blit(entity.surf、entity.rect)
如果pygame.sprite.spriteany(玩家、敌人):
player.kill()
活动=错误
死亡()
screen.blit(player.surf,player.rect)
pygame.display.flip()
pygame.display.update()
时钟滴答(60)
按箭头键移动。文本框(不在新窗口中)将告诉您您的分数
您更新组中的所有敌人
敌人
敌人更新()
然后绘制组中的所有精灵所有精灵
所有精灵中的实体的:
screen.blit(entity.surf、entity.rect)
但并非所有在组中的敌人所有精灵也在组中敌人:
新敌人=敌人()
新炸弹
new_blimp=blimp()
spawn=random.randint(1,3)
如果spawn==1:
敌人。添加(新敌人)
如果spawn==2:
敌人。添加(新战机)
如果spawn==3:
敌人。添加(新炸弹)
所有精灵。添加(新敌人)
所有精灵。添加(新精灵)
所有精灵。添加(新精灵)
所有在组中但不在组中的敌人都被吸引但不移动
创建一个随机敌人类型并将其添加到两个Gourp:
alive=True
在世时:
对于pygame.event.get()中的事件:
公共关系