繁体   English   中英

为什么这张图不动?

[英]Why wont this image move?

据我所知,当我按下箭头键/WASD 时,该程序应该会移动图像,但我不确定为什么不是。 为了加快阅读速度,我可以解释一下它是什么。 我首先定义了一些东西,只是为了方便起见,然后在我的 while 循环中,我开始使用 getkey,并设置它以便当您按下箭头键时,它应该将屏幕涂成白色,然后 +/- 10 到 x/y,然后它应该在新位置重绘图片,但出于某种原因,它只是不执行这些 If 语句之后的任何代码。

import pygame
import sys
import os
import curses
def print_there(x, y, text):
     sys.stdout.write((x, y, text))
     sys.stdout.flush()
pygame.init()
bckgrnd_clr = 'gray95'
x,y=0,0
width = 1280
height = 704
screen = pygame.display.set_mode((width,height))
GameImage = pygame.image.load("Images/stage.png")
Player = pygame.image.load("Images/Knight.png")
Blank = pygame.image.load("Images/Blank.png")
pygame.display.set_caption("Zackarys Game")
screen.blit(GameImage, (0,0))
screen.blit(Player, (y,x))
pygame.display.update()
FPS = 30
clock = pygame.time.Clock()
white = [255 , 255, 255]
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
          if event.key == pygame.K_LEFT or event.key == ord('a'):
               screen.fill(white)
               x = x - 10
               screen.blit(GameImage, (0,0))
               screen.blit(Player, (y,x))
          if event.key == pygame.K_RIGHT or event.key == ord('d'):
               screen.fill(white)
               x = x + 10
               screen.blit(GameImage, (0,0))
               screen.blit(Player, (y,x))
          if event.key == pygame.K_UP or event.key == ord('w'):
               screen.fill(white)
               y = y - 10
               screen.blit(GameImage, (0,0))
               screen.blit(Player, (y,x))
          if event.key == pygame.K_DOWN or event.key == ord('s'):
               screen.fill(white)
               y = y + 10
               screen.blit(GameImage, (0,0))
               screen.blit(Player, (y,x))
          if event.key == pygame.K_ESCAPE:
               pygame.display.quit()
               pygame.quit()
               sys.exit()
               running = False

请尽快告诉我。

我已经修复了你的代码。 我不知道“诅咒”模块是干什么用的。 问题是您只更新了一次显示(禁用动画)。 另一个问题是,您仅在按下事件键时才尝试 blit 图像,如果您需要定期更新显示,这将是一个问题。 这是更新的代码(我还修复了您的 x 和 y)。

import pygame
import sys
import os
def print_there(x, y, text):
    sys.stdout.write((x, y, text))
    sys.stdout.flush()
pygame.init()
bckgrnd_clr = 'gray95'
x,y=0,0
width = 1280
height = 704
screen = pygame.display.set_mode((width,height))
GameImage = pygame.image.load("Images/stage.png")
Player = pygame.image.load("Images/Knight.png")
Blank = pygame.image.load("Images/Blank.png")
pygame.display.set_caption("Zackarys Game")
screen.blit(GameImage, (0,0))
screen.blit(Player, (y,x))
FPS = 30
clock = pygame.time.Clock()
white = [255 , 255, 255]
running = True
while running:
    screen.fill(white)
    screen.blit(GameImage, (0,0))
    screen.blit(Player, (x, y))
    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
           if event.key == pygame.K_LEFT or event.key == ord('a'):
              x = x - 10
           if event.key == pygame.K_RIGHT or event.key == ord('d'):
              x = x + 10
           if event.key == pygame.K_UP or event.key == ord('w'):
              y = y - 10
           if event.key == pygame.K_DOWN or event.key == ord('s'):
              y = y + 10
           if event.key == pygame.K_ESCAPE:
               pygame.display.quit()
               pygame.quit()
               sys.exit()
               running = False
    pygame.display.update()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM