Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的角色赢了';不要在python中移动_Python_Pygame - Fatal编程技术网

我的角色赢了';不要在python中移动

我的角色赢了';不要在python中移动,python,pygame,Python,Pygame,这是我使用的代码 import pygame, sys from pygame.locals import * pygame.init() def game(): width, height = 1000, 600 screen = pygame.display.set_mode((width,height)) pygame.display.set_caption('My game far now :P') #This command allows you make a title. b

这是我使用的代码

import pygame, sys

from pygame.locals import *

pygame.init()

def game():

width, height = 1000, 600
screen = pygame.display.set_mode((width,height))
pygame.display.set_caption('My game far now :P') #This command allows you make a title.
background=pygame.image.load('AE.jpg')
background = pygame.transform.scale(background, (width,height))
screen.blit(background, (0,0))

#Load target image and player



player = pygame.image.load('little.png')
player = pygame.transform.scale(player, (40,40))
px,py = width/2,height/2
screen.blit(player, (px,py))

movex = movey = 0

#Running of the game loop

while True:
    screen.blit(background, (0,0))
    #screen.blit(target,targetpos)
    screen.blit(player, (px,py))
    pygame.display.update()


    #keyboard an/or mouse movements
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()


        elif event.type == pygame.KEYDOWN:
            if event.key == K_RIGHT:
                movex = 2
            if event.key == K_LEFT:
                movex = -2
            if event.key == K_UP:
                movey = -2
            if event.key == K_DOWN:
                movey = 2

        elif event.type == pygame.KEYUP:
            if event.key == K_RIGHT:
                movex = 0
            if event.key == K_LEFT:
                movex = 0
            if event.key == K_UP:
                movey = 0
            if event.key == K_DOWN:
                movey = 0

                px = px + movex
                py = py + movey




#Python 's way of running the main routine

if __name__=='__main__':
   game()

当我运行程序时,它全部启动,屏幕打开,背景和播放器产卵在屏幕中间,但是当我试图移动什么都没有发生时,没有错误什么也没有。 我能得到任何帮助吗:)


感谢您抽出时间来帮助我。

您在最后两行中似乎有代码缩进问题,这可能是导致错误的原因

当前代码相当于此if代码块:

    elif event.type == pygame.KEYUP:
        if event.key == K_RIGHT:
            movex = 0
        if event.key == K_LEFT:
            movex = 0
        if event.key == K_UP:
            movey = 0
        if event.key == K_DOWN # IF BLOCK STARTS
            movey = 0

            px = px + movex  # THIS FALLS IN THE PREVIOUS IF BLOCK
            py = py + movey
正确的代码是:

  elif event.type == pygame.KEYUP:
        if event.key == K_RIGHT:
            movex = 0
        if event.key == K_LEFT:
            movex = 0
        if event.key == K_UP:
            movey = 0
        if event.key == K_DOWN # IF BLOCK STARTS
            movey = 0          #IF BLOCK ENDS

  px = px + movex  # NOW THIS IS OUT OF THE IF BLOCK
  py = py + movey

在最后两行中,您似乎有代码缩进问题,这可能是导致错误的原因

当前代码相当于此if代码块:

    elif event.type == pygame.KEYUP:
        if event.key == K_RIGHT:
            movex = 0
        if event.key == K_LEFT:
            movex = 0
        if event.key == K_UP:
            movey = 0
        if event.key == K_DOWN # IF BLOCK STARTS
            movey = 0

            px = px + movex  # THIS FALLS IN THE PREVIOUS IF BLOCK
            py = py + movey
正确的代码是:

  elif event.type == pygame.KEYUP:
        if event.key == K_RIGHT:
            movex = 0
        if event.key == K_LEFT:
            movex = 0
        if event.key == K_UP:
            movey = 0
        if event.key == K_DOWN # IF BLOCK STARTS
            movey = 0          #IF BLOCK ENDS

  px = px + movex  # NOW THIS IS OUT OF THE IF BLOCK
  py = py + movey

在最后两行中,您似乎有代码缩进问题,这可能是导致错误的原因

当前代码相当于此if代码块:

    elif event.type == pygame.KEYUP:
        if event.key == K_RIGHT:
            movex = 0
        if event.key == K_LEFT:
            movex = 0
        if event.key == K_UP:
            movey = 0
        if event.key == K_DOWN # IF BLOCK STARTS
            movey = 0

            px = px + movex  # THIS FALLS IN THE PREVIOUS IF BLOCK
            py = py + movey
正确的代码是:

  elif event.type == pygame.KEYUP:
        if event.key == K_RIGHT:
            movex = 0
        if event.key == K_LEFT:
            movex = 0
        if event.key == K_UP:
            movey = 0
        if event.key == K_DOWN # IF BLOCK STARTS
            movey = 0          #IF BLOCK ENDS

  px = px + movex  # NOW THIS IS OUT OF THE IF BLOCK
  py = py + movey

在最后两行中,您似乎有代码缩进问题,这可能是导致错误的原因

当前代码相当于此if代码块:

    elif event.type == pygame.KEYUP:
        if event.key == K_RIGHT:
            movex = 0
        if event.key == K_LEFT:
            movex = 0
        if event.key == K_UP:
            movey = 0
        if event.key == K_DOWN # IF BLOCK STARTS
            movey = 0

            px = px + movex  # THIS FALLS IN THE PREVIOUS IF BLOCK
            py = py + movey
正确的代码是:

  elif event.type == pygame.KEYUP:
        if event.key == K_RIGHT:
            movex = 0
        if event.key == K_LEFT:
            movex = 0
        if event.key == K_UP:
            movey = 0
        if event.key == K_DOWN # IF BLOCK STARTS
            movey = 0          #IF BLOCK ENDS

  px = px + movex  # NOW THIS IS OUT OF THE IF BLOCK
  py = py + movey
两个问题

  • 不在循环中渲染
  • 您仅在if语句中更新位置
  • 固定的:

    while True:
        # input    
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
    
            elif event.type == pygame.KEYDOWN:
                # ...snip...
    
        # physics
        px += movex
        py += movey
    
        # drawing
    
        screen.blit(background, (0,0))
        screen.blit(player, (px,py))
        pygame.display.update()
    
    两个问题

  • 不在循环中渲染
  • 您仅在if语句中更新位置
  • 固定的:

    while True:
        # input    
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
    
            elif event.type == pygame.KEYDOWN:
                # ...snip...
    
        # physics
        px += movex
        py += movey
    
        # drawing
    
        screen.blit(background, (0,0))
        screen.blit(player, (px,py))
        pygame.display.update()
    
    两个问题

  • 不在循环中渲染
  • 您仅在if语句中更新位置
  • 固定的:

    while True:
        # input    
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
    
            elif event.type == pygame.KEYDOWN:
                # ...snip...
    
        # physics
        px += movex
        py += movey
    
        # drawing
    
        screen.blit(background, (0,0))
        screen.blit(player, (px,py))
        pygame.display.update()
    
    两个问题

  • 不在循环中渲染
  • 您仅在if语句中更新位置
  • 固定的:

    while True:
        # input    
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
    
            elif event.type == pygame.KEYDOWN:
                # ...snip...
    
        # physics
        px += movex
        py += movey
    
        # drawing
    
        screen.blit(background, (0,0))
        screen.blit(player, (px,py))
        pygame.display.update()
    

    以这个代码为例,移动是优化的。删除Useles代码。 我希望你能理解;)


    以这个代码为例,移动是优化的。删除Useles代码。 我希望你能理解;)


    以这个代码为例,移动是优化的。删除Useles代码。 我希望你能理解;)


    以这个代码为例,移动是优化的。删除Useles代码。 我希望你能理解;)



    你为什么不能把它贴在这里?“我的角色不会在屏幕上移动”的描述和上面的代码不允许任何人帮助您。(据猜测,你可能从未在按键事件中调整过
    px
    py
    ,尽管缩进很重要,而且它们位于
    if
    keyup块内-尝试让它们与
    if
    对齐)px和py只会让玩家在屏幕的中间繁殖,PlayerX和PlayerY@JoelMadsen当您删除
    px
    py
    两个级别时会发生什么?为什么不能将其粘贴到此处?“我的角色不会在屏幕上移动”的描述和上面的代码不允许任何人帮助您。(据猜测,你可能从未在按键事件中调整过
    px
    py
    ,尽管缩进很重要,而且它们位于
    if
    keyup块内-尝试让它们与
    if
    对齐)px和py只会让玩家在屏幕的中间繁殖,PlayerX和PlayerY@JoelMadsen当您删除
    px
    py
    两个级别时会发生什么?为什么不能将其粘贴到此处?“我的角色不会在屏幕上移动”的描述和上面的代码不允许任何人帮助您。(据猜测,你可能从未在按键事件中调整过
    px
    py
    ,尽管缩进很重要,而且它们位于
    if
    keyup块内-尝试让它们与
    if
    对齐)px和py只会让玩家在屏幕的中间繁殖,PlayerX和PlayerY@JoelMadsen当您删除
    px
    py
    两个级别时会发生什么?为什么不能将其粘贴到此处?“我的角色不会在屏幕上移动”的描述和上面的代码不允许任何人帮助您。(据猜测,你可能从未在按键事件中调整过
    px
    py
    ,尽管缩进很重要,而且它们位于
    if
    keyup块内-尝试让它们与
    if
    对齐)px和py只会让玩家在屏幕的中间繁殖,PlayerX和PlayerY@JoelMadsen当您删除
    px
    py
    两个级别时会发生什么情况?乌尔克,请不要在Python的括号中这样做。我想你可能是对的,但是用其他的方式(比如评论)说出来。@thegrinner我认为这将是一种更直观的方式来说明这个错误。是的,但它不是有效的Python。最糟糕的情况是,它可能会使人困惑。当我添加它时,它只是因为一个bug而崩溃。@DhruvPathak您能在结束它的地方发布一个代码吗?如果它将Px和Py移到左边,这是我能找到的唯一区别,那么它似乎不起作用。我想你可能是对的,但是用其他的方式(比如评论)说出来。@thegrinner我认为这将是一种更直观的方式来说明这个错误。是的,但它不是有效的Python。最糟糕的情况是,它可能会使人困惑。当我添加它时,它只是因为一个bug而崩溃。@DhruvPathak您能在结束它的地方发布一个代码吗?如果它将Px和Py移到左边,这是我能找到的唯一区别,那么它似乎不起作用。我想你可能是对的,但是用其他的方式(比如评论)说出来。@thegrinner我认为这将是一种更直观的方式来说明这个错误。是的,但它不是有效的Python。最糟糕的情况是,它可能会使人困惑。当我添加它时,它只是因为一个bug而崩溃。@DhruvPathak您能在结束它的地方发布一个代码吗?如果它将Px和Py移到左边,这是我能找到的唯一区别,那么它似乎不起作用。我想你可能是对的,但是用其他的方式(比如评论)说出来。@thegrinner我认为这将是一种更直观的方式来说明这个错误。是的,但它不是有效的Python。最坏的情况可能是