歌者文明清理员 发表于 2023-7-25 12:35:12

cjjJasonchen 发表于 2023-7-25 12:25
不看了先炫饭了

突然有了那么一点点思路

cjjJasonchen 发表于 2023-7-25 12:37:06



self.rect.topright =

pos 就是 self.rect.topright, 因为x / SCALE , screen_scale = 125, SCALE=1.25 ,1.25> 1
所以 pos会越来越小,导致向左移动,所以我才问是不是这玩意应该在动滚轮的时候才调用

cjjJasonchen 发表于 2023-7-25 12:40:24

所以当screen_scale < 100 时,调用settext会使它向右移动

歌者文明清理员 发表于 2023-7-25 12:41:55

cjjJasonchen 发表于 2023-7-25 12:37
pos 就是 self.rect.topright, 因为x / SCALE , screen_scale = 125, SCALE=1.25 ,1.25> 1
所 ...

似乎确实是这样
那么怎么自适应 125%的电脑呢

学习编程中的Ben 发表于 2023-7-25 12:53:47

**问题解答:**

根据您提供的代码和图片,我看到您使用pygame进行天体运动模拟,并且每次设置Message的值时,它会自动向左移动。通过代码分析,我认为问题出现在以下两处:

1.    x_pos -= 1   :在代码中,每次更新Message的位置时,有一个   x_pos -= 1   的操作,将Message的x坐标减去1。这导致了Message向左移动。

2. 缺少事件处理:您的代码没有包含事件处理的部分,在游戏循环中没有处理键盘事件或退出事件。这可能导致Message的位置无法被正确控制,从而导致出现自动移动的问题。

解决这个问题,您可以尝试以下方法:

1. 确保Message的位置只在需要时更新,不要在每次循环中都减去1。如果您希望Message只水平移动一次,可以将   x_pos -= 1   这行代码放在合适的位置,例如在用户按下特定键时触发。

2. 添加事件处理的代码,包括处理键盘事件和退出事件。您可以使用pygame.event模块来处理这些事件,并根据需要更新Message的位置。

以下是一个简单的示例代码,展示了如何处理键盘事件和退出事件,以及根据事件更新Message的位置:
import pygame
import sys

# 初始化pygame
pygame.init()

# 设置窗口大小和标题
width, height = 800, 600
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("天体运动模拟")

# 创建Message对象并设置初始位置
message_font = pygame.font.Font(None, 36)
message_text = "Hello, World!"
message_color = (255, 255, 255)
message_surface = message_font.render(message_text, True, message_color)
message_rect = message_surface.get_rect()
message_rect.center = (width // 2, height // 2)

while True:
    for event in pygame.event.get():
      if event.type == pygame.QUIT:# 处理退出事件
            pygame.quit()
            sys.exit()

      if event.type == pygame.KEYDOWN:# 处理键盘按下事件
            if event.key == pygame.K_LEFT:# 当按下左箭头键时,更新Message的位置
                message_rect.x -= 10

    screen.fill((0, 0, 0))# 清屏

    # 绘制Message
    screen.blit(message_surface, message_rect)

    pygame.display.flip()# 更新显示

请注意,这只是一个示例代码,您可以根据自己的需求进行修改和扩展。通过添加事件处理的代码和适当控制Message的位置更新,您应该能够解决Message自动向左移动的问题。

希望这能帮助到您。如有任何进一步的问题,请随时提问。求给个最佳答案,非常感谢{:10_254:}
只要点击我的回复贴写着发表时间的那一栏的绿色按钮即可!-->https://i.imgtg.com/2023/07/24/Oh0mQB.png

此回答源于ChatGPT,若有不正确之处,请多包容

cjjJasonchen 发表于 2023-7-25 13:12:26

试试这样:

    def flush(self, pos):
      #print("原先:",self.rect.x)
      self.image = font.render(self._text, False, (255, 255, 255))
      self.image = pygame.transform.scale(self.image, )
      self.rect = self.image.get_rect()
      #self.rect.topright =
      self.rect.x = 1000/SCALE - self.rect.right
      self.rect.y = pos / SCALE
      print(self.rect.x,self.rect.y)
      
应该符合你的要求了

歌者文明清理员 发表于 2023-7-25 13:13:45

cjjJasonchen 发表于 2023-7-25 13:12
试试这样:




所以 debug 下来bug在哪里{:10_277:}

cjjJasonchen 发表于 2023-7-25 13:14:01

还有好像有个bug:

在两个行星相撞之后,再过几秒,就会一直连续的调用settext,不知道为啥

歌者文明清理员 发表于 2023-7-25 13:15:43

cjjJasonchen 发表于 2023-7-25 13:14
还有好像有个bug:

在两个行星相撞之后,再过几秒,就会一直连续的调用settext,不知道为啥

线程,我设置了相撞之后显示消息,然后文字一个一个减少,会调用

cjjJasonchen 发表于 2023-7-25 13:15:59

歌者文明清理员 发表于 2023-7-25 13:13
所以 debug 下来bug在哪里


这次你的bug应该是Mess对象的x轴由于SCALE的影响一直在变小

歌者文明清理员 发表于 2023-7-25 13:17:23

cjjJasonchen 发表于 2023-7-25 13:15
这次你的bug应该是Mess对象的x轴由于SCALE的影响一直在变小

o

cjjJasonchen 发表于 2023-7-25 13:18:06


这是为啥

歌者文明清理员 发表于 2023-7-25 13:19:59

cjjJasonchen 发表于 2023-7-25 13:18
这是为啥

{:10_277:}第一次见

歌者文明清理员 发表于 2023-7-25 13:23:42

cjjJasonchen 发表于 2023-7-25 13:18
这是为啥

刚才那个问题我找到原因了,因为重复使用topright导致x一直减小
但是如果我不让x减小又看不见
所以我让 Width 减小了

另外你给的和我自己改的都有一个问题

https://img1.imgtp.com/2023/07/25/vVFFPr4b.png

歌者文明清理员 发表于 2023-7-25 13:27:48

学习编程中的Ben 发表于 2023-7-25 12:53
**问题解答:**

根据您提供的代码和图片,我看到您使用pygame进行天体运动模拟,并且每次设置Message的值 ...

ok,点了

cjjJasonchen 发表于 2023-7-25 13:29:08

歌者文明清理员 发表于 2023-7-25 13:23
刚才那个问题我找到原因了,因为重复使用topright导致x一直减小
但是如果我不让x减小又看不见
所以我让 ...

你是说轨迹和球不在一块?还是右上角的字不清楚?

子不清楚是因为分辨率太小了,有的像素没画出来,放大了就这样

学习编程中的Ben 发表于 2023-7-25 13:29:11

歌者文明清理员 发表于 2023-7-25 13:27
ok,点了

QAQ

歌者文明清理员 发表于 2023-7-25 13:32:09

cjjJasonchen 发表于 2023-7-25 13:29
你是说轨迹和球不在一块?还是右上角的字不清楚?

子不清楚是因为分辨率太小了,有的像素没画出来,放 ...

不在一块

歌者文明清理员 发表于 2023-7-25 13:34:13

学习编程中的Ben 发表于 2023-7-25 13:29
QAQ

有什么额外要求吗

学习编程中的Ben 发表于 2023-7-25 13:45:43

歌者文明清理员 发表于 2023-7-25 13:34
有什么额外要求吗

有,我要贡献
页: 1 [2] 3
查看完整版本: pygame 天体运动模拟