gpt4 book ai didi

python - cmd控制台游戏;减少眨眼

转载 作者:太空狗 更新时间:2023-10-30 01:33:15 25 4
gpt4 key购买 nike

我正在 Windows 控制台上用 python 编写一个 arcanoid 游戏,令我困扰的是在“显示”循环的每次迭代后令人讨厌的闪烁。有谁知道如何减少它?这是代码的一部分:

#-*- coding: UTF-8 -*-
import time
import os

clear = lambda: os.system('cls')
def gra():
koniec='0'
while koniec!='1':
for i in range(4):
for j in range(10):
print '[___]',
print '\n',
for i in range(10):
print '\n'
for i in range(10):
print ' ',
print '~~~~~~~~~~'
time.sleep(0.1)
clear()
gra()

最佳答案

你能做的是有限的,但将所有内容收集到一个大字符串中,然后在屏幕清除之间打印一次,这比在一个循环中打印一些小的打印要好。运行下面的代码,看看程序的后半部分比前半部分运行得好多少:

import time, os, random

def display1(chars):
os.system('cls')
for row in chars:
print(''.join(row))

def display2(chars):
os.system('cls')
print('\n'.join(''.join(row) for row in chars))


chars = []
for i in range(40):
chars.append(["-"]*40)

for i in range(100):
r = random.randint(0,39)
c = random.randint(0,39)
chars[r][c] = "X"
time.sleep(0.1)
display1(chars)

os.system('cls')
time.sleep(1)

chars = []
for i in range(40):
chars.append(["-"]*40)

for i in range(100):
r = random.randint(0,39)
c = random.randint(0,39)
chars[r][c] = "X"
time.sleep(0.1)
display2(chars)

关于编辑:您可以将这些想法与@GingerPlusPlus 的优秀想法结合起来以避免cls。诀窍是打印大量退格键。

首先 -- 编写您自己的 cls 版本:

def cls(n = 0):
if n == 0:
os.system('cls')
else:
print('\b'*n)

第一次调用它时——将它传递给零,它就清除屏幕。

以下函数将一个字符数组推送到一个大打印的命令窗口,并返回打印的字符数(因为这是重新定位光标所需的退格数):

def display(chars):
s = '\n'.join(''.join(row) for row in chars)
print(s)
return len(s)

这样使用:

chars = []
for i in range(40):
chars.append(["-"]*40)

for i in range(100):
n = 0
r = random.randint(0,39)
c = random.randint(0,39)
chars[r][c] = "X"
time.sleep(0.1)
cls(n)
n = display(chars)

当上面的代码运行时,显示变化平滑,几乎没有闪烁。

关于python - cmd控制台游戏;减少眨眼,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34828142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com