python - 我试图在我的 pygame 中添加一个敌人,但一切都是错误的
问题描述
如前所述,我试图在我的 pygame 中添加一个敌人,但一切都死了。我真的不知道发生了什么,我认为“玩家”的东西与“敌人”混淆了,有点粘在一起了。
这是一个学校项目,我基本上是想在预算内制作一个“街头霸王”,用最少的动画和东西:)
(我对编程很陌生,我有点烂)
import pygame
# Intialize the pygame
pygame.init()
# screen and size
screen = pygame.display.set_mode((800, 600))
# title and logo
pygame.display.set_caption("Båtisens Herre")
icon = pygame.image.load('img.png')
pygame.display.set_icon(icon)
# background
background = pygame.image.load("bakgrunn.png")
# player
playerImg = pygame.image.load('King Arthur2.png')
playerX = 100
playerY = 200
def player(x, y):
screen.blit(playerImg, (x, y))
def enemy(x, y):
screen.blit(playerImg, x, y))
# enemy
enemyImg = pygame.image.load('Black knight1.png')
enemyX = 370
enemyY = 480
enemyX_change = 0
# game loop
clock = pygame.time.Clock()
running = True
while running:
clock.tick(100)
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys = pygame.key.get_pressed()
if keys[pygame.K_a]:
playerX -= 4
if keys[pygame.K_d]:
playerX += 4
screen.blit(background, (0, 0,))
player(playerX, playerY)
pygame.display.update()
# RGB (red, green blue)
screen.fill((248, 58, 226))
playerY -= 0
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# background(2)
screen.blit(background, (0, 0,))
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
player(playerX, playerY)
enemy(enemyX, enemyY)
pygame.display.update()
解决方案
在enemy
函数中(
缺少:
screen.blit(playerImg, x, y))
screen.blit(enemyImg, (x, y))
从您的代码中删除多个事件循环。
pygame.event.get()
获取所有消息并将它们从队列中删除。请参阅文档:。请参阅文档:
这将获取所有消息并将它们从队列中删除。[...]
如果pygame.event.get()
在多个事件循环中调用,则只有一个循环接收事件,但绝不会所有循环都接收所有事件。结果,似乎错过了一些事件。
完整代码
import pygame
# Intialize the pygame
pygame.init()
# screen and size
screen = pygame.display.set_mode((800, 600))
# title and logo
pygame.display.set_caption("Båtisens Herre")
icon = pygame.image.load('img.png')
pygame.display.set_icon(icon)
# background
background = pygame.image.load("bakgrunn.png")
# player
playerImg = pygame.image.load('King Arthur2.png')
playerX = 100
playerY = 200
def player(x, y):
screen.blit(playerImg, (x, y))
def enemy(x, y):
screen.blit(enemyImg, (x, y))
# enemy
enemyImg = pygame.image.load('Black knight1.png')
enemyX = 370
enemyY = 480
enemyX_change = 0
# game loop
clock = pygame.time.Clock()
running = True
while running:
clock.tick(100)
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys = pygame.key.get_pressed()
if keys[pygame.K_a]:
playerX -= 4
if keys[pygame.K_d]:
playerX += 4
screen.blit(background, (0, 0))
player(playerX, playerY)
enemy(enemyX, enemyY)
pygame.display.update()
推荐阅读
- python - 关于我们如何调用python3的任何指导?
- typescript - 使用 lodash 过滤
- javascript - 为数组中的数字创建直方图
- c# - 如何将 data-id 设置为 webgrid 列?
- django - 将临时图像保存到静态目录或不在 django 中
- angular - 单击单选按钮时,它应该显示正确的项目并隐藏所有其他项目
- javascript - 无法导航到 vue.js 中多页面表单中的下一页
- java - PreBuiltTransportClient 写入消息:错误 StatusLogger 找不到 log4j2 配置文件
- ios - 一次从所有集合视图单元格内的文本视图中获取文本
- c++ - time_t 的时钟周期和获取时间问题