Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.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 在pygame中慢慢画一条线,而其他线保持静止_Python_Pygame - Fatal编程技术网

Python 在pygame中慢慢画一条线,而其他线保持静止

Python 在pygame中慢慢画一条线,而其他线保持静止,python,pygame,Python,Pygame,在我的演讲中,我犯了一个严重的错误,没有提供所有的信息,只是编辑它会导致一个完全不同的主题,所以我提出了一个新问题 我没有说的是,我已经在屏幕上打印了一些线条(它们为游戏提供游乐场),只有在特定情况下,我才想在屏幕上添加缓慢绘制的线条pygame.update.flip()函数似乎把游戏搞砸了,因为我的游乐场开始闪烁。我没有提供这种解释的原因是,我认为解决方案与我的代码的其他部分的格式没有任何关系 我在这里看到两种解决方案。要么我需要一种方法来缓慢地画一条线而不干扰我的“操场线”,要么我需要找到

在我的演讲中,我犯了一个严重的错误,没有提供所有的信息,只是编辑它会导致一个完全不同的主题,所以我提出了一个新问题

我没有说的是,我已经在屏幕上打印了一些线条(它们为游戏提供游乐场),只有在特定情况下,我才想在屏幕上添加缓慢绘制的线条
pygame.update.flip()
函数似乎把游戏搞砸了,因为我的游乐场开始闪烁。我没有提供这种解释的原因是,我认为解决方案与我的代码的其他部分的格式没有任何关系

我在这里看到两种解决方案。要么我需要一种方法来缓慢地画一条线而不干扰我的“操场线”,要么我需要找到一种方法来画我的“操场线”,这样它们就不会被
pygame.update.flip()
所干扰

这将创建一个用于Tic-Tac-Toe游戏的fild

def draw_red_line(i):
    y = 0
    while y < 300:
        pygame.draw.line(screen, RED, (i*100+50, 0), (i*100+50, y))
        pygame.display.flip()
        pygame.event.get()
        y+=1
def绘制红色线(i):
y=0
y<300时:
pygame.draw.line(屏幕,红色,(i*100+50,0),(i*100+50,y))
pygame.display.flip()
pygame.event.get()
y+=1

以我解释过的方式给出,会把游戏搞得一团糟,其他解决方案都基于相同的方法。

创建一个函数,该函数可以根据[0.0,1.0]范围内的值,从点
s
到点
e
,画一条线。如果该值为0,则不绘制直线。如果该值为1,则绘制完整的直线。否则将绘制一部分直线:

def绘制红线(s、e、p):
x=s[0]*(1-p)+e[0]*p
y=s[1]*(1-p)+e[1]*p
pygame.draw.line(屏幕,红色,s,(第(x)轮,第(y)轮)
你有4行。使用一个计数器(
count
),该计数器通过小步(例如0.01)从0计数到4。计数器的整体部分说明必须完全绘制且必须持续(保留)的线数:

范围内i的
(int(count)):
绘制红色线(线开始[i],线结束[i],1)
如果计数器小于4,则计数器的分数部分用于部分绘制下一行:

如果计数小于4:
i=int(计数)
绘制红色线(线开始[i],线结束[i],计数-i)
计数+=0.01
请参见简短示例:

导入pygame
pygame.init()
screen=pygame.display.set_模式((300300))
clock=pygame.time.clock()
红色=(255,0,0)
行_start=[(100,0)、(200,0)、(0,100)、(0,200)]
行_end=[(100300),(200300),(300100),(300200)]
def绘制红线(s、e、p):
x=s[0]*(1-p)+e[0]*p
y=s[1]*(1-p)+e[1]*p
pygame.draw.line(屏幕,红色,s,(第(x)轮,第(y)轮)
计数=0
运行=真
运行时:
时钟滴答(60)
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
屏幕填充(0)
对于范围内的i(int(count)):
绘制红色线(线开始[i],线结束[i],1)
如果计数小于4:
i=int(计数)
绘制红色线(线开始[i],线结束[i],计数-i)
计数+=0.01
pygame.display.flip()
pygame.quit()
def draw_red_line(i):
    y = 0
    while y < 300:
        pygame.draw.line(screen, RED, (i*100+50, 0), (i*100+50, y))
        pygame.display.flip()
        pygame.event.get()
        y+=1