为什么自变量在播放器类中不更新

赛博

我当时正在使用python进行游戏,我想添加一个功能,每当按下某个键时,就会根据该键旋转玩家图像,但该self.rotation变量永远不会更新

播放器类代码:

import pygame
from physics import Movement

class Player():
    def __init__(self, x, y, width, height, skin):
        self.x = x
        self.y = y
        self.rotation = 0
        self.width = width
        self.height = height
        self.rect = (x, y, width, height)
        self.speed = 3
        self.skin = skin

    def draw(self, win, skin):
        self.rotation = Movement.rotate(self, self.rotation)
        print(self.rotation)
        player = pygame.transform.rotate(skin.convert_alpha(), self.rotation)
        win.blit(player, self.rect)

    def move(self):
        keys = pygame.key.get_pressed()

        if keys[pygame.K_LEFT] or keys[pygame.K_a]:
            self.x -= self.speed

        if keys[pygame.K_RIGHT] or keys[pygame.K_d]:
            self.x += self.speed

        if keys[pygame.K_UP] or keys[pygame.K_w]:
            self.y -= self.speed

        if keys[pygame.K_DOWN] or keys[pygame.K_s]:
            self.y += self.speed

        self.update()

    def update(self):
        self.rect = (self.x, self.y, self.width, self.height)

物理类代码:

import pygame

class Movement():

    def rotate(self, rotation):
        self.rotation = rotation
        keys = pygame.key.get_pressed()

        if keys[pygame.K_RIGHT] or keys[pygame.K_d]:
            if self.rotation < 90 and self.rotation > 0:
                self.rotation += 5

        if keys[pygame.K_DOWN] or keys[pygame.K_s]:
            if self.rotation < 180 and self.rotation > 90:
                self.rotation += 5

        if keys[pygame.K_LEFT] or keys[pygame.K_a]:
            if self.rotation < 270 and self.rotation > 180:
                self.rotation += 5

        if keys[pygame.K_UP] or keys[pygame.K_w]:
            if self.rotation < 360 and self.rotation > 270:
                self.rotation += 5

        return self.rotation

游戏代码:

import pygame
from Network import Network

pygame.font.init()
pygame.init()

width = 700
height = 600
fps = 60
current_id = 0
img = pygame.image.load('game_background.png')
win = pygame.display.set_mode((width, height))
pygame.display.set_caption("Astro party")
info_font = pygame.font.SysFont("Verdana", 26)

player_list = {}
player_count = 0
loaded_skins = {}

n = Network()
name = 'Player'
NAME_FONT = pygame.font.SysFont("comicsans", 24)

def redrawWindow(win, players, id):
    global player_count
    win.blit(img.convert(), (0, 0))

    for player in players:
        p = players[player]
        if player_count < len(players):
            skin = pygame.image.load(p['skin'])
            loaded_skins[player] = skin
        p['player'].draw(win, loaded_skins[player])
        text = NAME_FONT.render(p["name"], 1, (0,0,0))
        win.blit(text, (p['player'].x - text.get_width()/2, p['player'].y - text.get_height()/2))
    player_count = len(players)


def main(name):
    global win, width, height
    run = True
    n = Network()
    clock = pygame.time.Clock()
    current_id = n.connect(name)
    player_list = n.send("get")

    while run:
        clock.tick(fps)

        player_list = n.send("get")

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                run = False
                pygame.quit()

        player_list[current_id]['player'].move()
        data = player_list
        n.send(data, pick=True)

        redrawWindow(win, player_list, current_id)
        pygame.display.update()

    n.disconnect()
    pygame.quit()
    quit()

main(name)

因此,我试图在玩家单击特定键时批准玩家图像,并且尝试打印self.rotation,但它从未更新。

拉比德76

的初始值为self.roation0。更改中的条件Movement.rotate您需要检查self.rotation >= 0而不是self.rotation > 0

if self.rotation < 90 and self.rotation > 0:

if self.rotation < 90 and self.rotation >= 0:

如果要围绕播放器的中心旋转播放器,则需要设置旋转矩形的中心,并设置通过原始矩形中心的中心位置。请参阅如何使用PyGame围绕其中心旋转图像?

class Player():

    def draw(self, win, skin):
        self.rotation = Movement.rotate(self, self.rotation)
        print(self.rotation)
        player = pygame.transform.rotate(skin.convert_alpha(), self.rotation)
        
        rect = pygame.Rect(rect)            
        win.blit(player, player.get_rect(centere = rect.center))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我的类的自定义成员变量在其他类中不更新?

来自分类Dev

为什么我的播放器对象更新分数,但是不跟踪它是否还活着?

来自分类Dev

为什么不能在汽车播放器中播放mp3 CD,而在计算机上播放?

来自分类Dev

在某些播放器中,MP4视频不是从第0帧开始的。为什么?

来自分类Dev

为什么我不能在我的播放器功能中调用我的敌人边界?

来自分类Dev

为什么我不能在Ubuntu 13.10中安装噪音(音乐播放器)?

来自分类Dev

为什么 django 无法在 AMP 故事播放器中显示图像和视频

来自分类Dev

为什么我不能重用2.0.0.0播放器框架中的1.8.2.2播放器框架中的自定义XAML样式PlayPauseButton

来自分类Dev

为什么VLC不是默认的视频播放器?

来自分类Dev

为什么JavaFX媒体播放器会崩溃?

来自分类Dev

播放器未更新

来自分类Dev

为什么不更新变量?

来自分类Dev

为什么变量不更新?

来自分类Javascript

为什么函数的自变量不是JavaScript中的数组对象?

来自分类Dev

为什么Rigidbody播放器控制器不起作用?我无法移动播放器

来自分类Dev

角度指令-为什么不更新指令中的变量?

来自分类Dev

为什么在 for 循环 JavaScript 中变量不更新?

来自分类Dev

为什么我的嵌入式YouTube播放器无法自动播放?

来自分类Dev

unity为什么音频不能在我的视频播放器上播放?

来自分类Dev

为什么播放器在使用Animator播放动画剪辑时会摔倒?

来自分类Java

为什么我的播放器为什么不掉入(重力)和Eclipse和LibGDX?

来自分类Dev

pygame播放器没有更新

来自分类Dev

更新播放器按钮光子

来自分类Java

为什么Eclipse不更新类?

来自分类Dev

为什么变量不更新值

来自分类Dev

为什么此函数不更新变量?

来自分类Dev

为什么主机播放器无权发送服务器[命令]?Unity-镜像

来自分类Dev

为什么当按L键重新加载播放器旋转时,它什么也没做?

来自分类Dev

为什么我的播放器卡在墙上 Unity 2D

Related 相关文章

  1. 1

    为什么我的类的自定义成员变量在其他类中不更新?

  2. 2

    为什么我的播放器对象更新分数,但是不跟踪它是否还活着?

  3. 3

    为什么不能在汽车播放器中播放mp3 CD,而在计算机上播放?

  4. 4

    在某些播放器中,MP4视频不是从第0帧开始的。为什么?

  5. 5

    为什么我不能在我的播放器功能中调用我的敌人边界?

  6. 6

    为什么我不能在Ubuntu 13.10中安装噪音(音乐播放器)?

  7. 7

    为什么 django 无法在 AMP 故事播放器中显示图像和视频

  8. 8

    为什么我不能重用2.0.0.0播放器框架中的1.8.2.2播放器框架中的自定义XAML样式PlayPauseButton

  9. 9

    为什么VLC不是默认的视频播放器?

  10. 10

    为什么JavaFX媒体播放器会崩溃?

  11. 11

    播放器未更新

  12. 12

    为什么不更新变量?

  13. 13

    为什么变量不更新?

  14. 14

    为什么函数的自变量不是JavaScript中的数组对象?

  15. 15

    为什么Rigidbody播放器控制器不起作用?我无法移动播放器

  16. 16

    角度指令-为什么不更新指令中的变量?

  17. 17

    为什么在 for 循环 JavaScript 中变量不更新?

  18. 18

    为什么我的嵌入式YouTube播放器无法自动播放?

  19. 19

    unity为什么音频不能在我的视频播放器上播放?

  20. 20

    为什么播放器在使用Animator播放动画剪辑时会摔倒?

  21. 21

    为什么我的播放器为什么不掉入(重力)和Eclipse和LibGDX?

  22. 22

    pygame播放器没有更新

  23. 23

    更新播放器按钮光子

  24. 24

    为什么Eclipse不更新类?

  25. 25

    为什么变量不更新值

  26. 26

    为什么此函数不更新变量?

  27. 27

    为什么主机播放器无权发送服务器[命令]?Unity-镜像

  28. 28

    为什么当按L键重新加载播放器旋转时,它什么也没做?

  29. 29

    为什么我的播放器卡在墙上 Unity 2D

热门标签

归档