我怎样才能让玩家循环到另一边(类似于吃豆人如何从地图的一侧移动到另一侧)?另外,我想为射击子弹时添加一些音效,但我发现很难找到有关 Pygame 3.6 的任何深入内容。(这可能需要重新格式化,我手动分隔代码以便发布)
import pygame, time, os, random
from pygame.locals import
pygame.init()
bcolor = pygame.Color("red")
surfacex = 400 # Surface X size
surfacey = 400 # Surface Y size
surface = pygame.display.set_mode([surfacex, surfacey])
surface.fill(bcolor)
move_direction = 0
enemy_direction = 0
class obj_player(object):
def __init__(self):
self.rect = pygame.Rect(200, 350, 16, 16)
def move(self, dir):
if dir == 0 and self.rect.x <= surfacex - 16:
self.rect.x += 5
if dir == 1 and self.rect.x >= 0:
self.rect.x -= 5
class shoot_bullet(object):
def __init__(self):
list_bullets.append(self)
self.rect = pygame.Rect(player.rect.x + 8, 350, 4, 8)
def update(self):
self.rect.y -= 5
for enemy in list_enemies:
if self.rect.colliderect(enemy.rect):
list_bullets.remove(self)
list_enemies.remove(enemy)
class obj_enemy(object):
def __init__(self, pos):
list_enemies.append(self)
self.rect = pygame.Rect(pos[0], pos[1], 16, 16)
def update(self, dir):
if dir == 0:
self.rect.x += 2
if dir == 1:
self.rect.x -= 2
player = obj_player()
clock = pygame.time.Clock()
can_shoot = True
list_bullets = []
list_enemies = []
pygame.time.set_timer(USEREVENT + 1, 2000)
for yy in range(5):
for xx in range(5):
obj_enemy((0 + 35 * xx, 50 + 35 * yy))
while True:
clock.tick(60)
surface.fill([0, 0, 0])
if pygame.event.peek(pygame.QUIT):
pygame.display.quit()
quit()
key = pygame.key.get_pressed()
if key[pygame.K_LEFT]:
move_direction = 1
if key[pygame.K_RIGHT]:
move_direction = 0
if key[pygame.K_SPACE] and can_shoot == True:
can_shoot = False
shoot_bullet()
if key[pygame.K_SPACE] == False and can_shoot == False:
can_shoot = True
player.move((move_direction))
for bullet in list_bullets:
bullet.update()
pygame.draw.rect(surface, (46, 222, 16), bullet.rect)
for enemy in list_enemies:
enemy.update(enemy_direction)
pygame.draw.rect(surface, (46, 222, 16), enemy.rect)
pygame.draw.rect(surface, (0, 255, 255), player.rect)
pygame.display.flip()
for event in pygame.event.get():
if event.type == USEREVENT + 1:
if enemy_direction == 0:
enemy_direction = 1
else:
enemy_direction = 0
if len(list_enemies) == 0:
print("YOU WIN")
break
pygame.display.quit()