【发布时间】:2018-01-10 06:30:23
【问题描述】:
我正在创建一个射击游戏,其中底部中间的玩家可以射击来自左下角和右下角的敌人。我看过在线教程,所有的射击游戏都是太空射击,敌人从上到下。这是我现在拥有的代码:
import pygame
import time
import random
# --- constants --- (UPPER_CASE_NAMES)
DISPLAY_WIDTH = 800
DISPLAY_HEIGHT = 600
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
FPS = 60
# - init -
pygame.init()
gameDisplay = pygame.display.set_mode((DISPLAY_WIDTH, DISPLAY_HEIGHT))
pygame.display.set_caption("The Adventure of the Excorist's Meter")
# - objects -
background_image = pygame.image.load("skyline_background.jpg").convert()
background_position = [0, 0]
player_image_left = pygame.image.load('character_left.png')
player_image_right = pygame.image.load('character_right.png')
player_image = player_image_left
# Load enemy image
zombie_image = pygame.image.load('zombie_image.png')
devil_image = pygame.image.load('devil_image.png')
ghost_image = pygame.image.load('ghost_image.png')
def enemy(enemy_x,enemy_y):
gameDisplay.blit(zombie_image, (enemy_x, enemy_y))
player_speed = 0
player_x = DISPLAY_WIDTH * 0.45
player_y = DISPLAY_HEIGHT * 0.65
player_x_change = 0
# - mainloop -
clock = pygame.time.Clock()
crashed = False
while not crashed:
# - events -
for event in pygame.event.get():
if event.type == pygame.QUIT:
crashed = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
player_x_change = -5
player_image = player_image_left
elif event.key == pygame.K_RIGHT:
player_x_change = 5
player_image = player_image_right
if event.type == pygame.KEYUP:
if event.key in (pygame.K_LEFT, pygame.K_RIGHT):
player_x_change = 0
# - updates -
player_x += player_x_change
# - draws -
gameDisplay.blit(background_image, background_position)
gameDisplay.blit(player_image, (player_x, player_y))
pygame.display.update()
clock.tick(FPS)
# - end -
pygame.quit()
【问题讨论】:
-
为每个敌人创建
pygame.Rect()以保持其大小和位置,并在# - updates -中更改敌人位置,并在# - draws -中绘制敌人。简而言之,您必须执行类似于player的操作。 -
如果教程显示如何从上到下移动,则必须更改
y。要从左向右移动,您必须更改x而不是y。