0

ファイルからデータを読み取っています。基本的に、これらは反復ごとにボールを表示したい座標です。終了ボタンを押すとすぐに出力ウィンドウ「試行 1」がクラッシュするという事実を除いて、コードは正常に動作しています。この問題は、追加する前はありませんでしたfor t in range (np.size(T)):。しかし、私はそれを必要とします。問題を解決するために、コードの可能な変更をいくつか提案してください。

import numpy as np
import pygame

pygame.init()

T = np.loadtxt('xy_shm1.txt', usecols=range(0,1))
Xcor = np.loadtxt('xy_shm1.txt', usecols=range(1,2))
Ycor = np.loadtxt('xy_shm1.txt', usecols=range(2,3))

clock = pygame.time.Clock()

background_colour = (255,255,255)
(width, height) = (800, 800)

class Particle():
    def __init__(self, xy, size):
        self.x, self.y = xy
        self.size = size
        self.colour = (0, 0, 255)
        self.thickness = 1


    def display(self):
        pygame.draw.circle(screen, self.colour, (int(self.x), int(self.y)), self.size, self.thickness)


    def move(self):

        self.x = Xcor[t] + 400
        self.y = Ycor[t] + 400

screen = pygame.display.set_mode((width, height))
pygame.display.set_caption('Trial 1')

number_of_particles = 1
my_particles = []

for n in range(number_of_particles):
    size = 5
    x = Xcor[0] + 400
    y = Ycor[0] + 400
    particle = Particle((x, y), size)

    my_particles.append(particle)

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False



    for t in range(np.size(T)):

        screen.fill(background_colour)

        for particle in my_particles:

            particle.move()
            particle.display()

        pygame.display.flip()
        clock.tick(60)



pygame.quit()
4

1 に答える 1

0

主な問題は、フレーム内に複数のフレームを描画しようとしていることです。フレーム ループは次のようになります。

while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # Draw one frame here

    clock.tick(60) # If the game runs faster than 60fps, wait here

while ループの各反復では、1 つのフレームのみが描画されることに注意してください。ただし、現在のコードでは、ループを開始し、イベントを一度チェックしてから、イベントを再度チェックせずに、リスト内の各項目のフレームを描画します。

これにより、QUIT イベントが見逃され、ゲームが応答していないように見えるため、オペレーティング システムが介入する可能性が高くなります。

一般的に、あなたのコードは非常に厄介です。pygame に関するいくつかのチュートリアルを読むことをお勧めします。そうしないと、あらゆる種類の同様の問題に遭遇することになります。例を参照してください: http://programarcadegames.com/python_examples/f.php?file=bounce_rectangle.py

于 2016-11-24T12:12:13.387 に答える