如何解决垂直 Pygame 状态栏问题
以下代码有效,但在我看来有点笨拙。如果有比我的方法更好的编写方法,我会徘徊。它的分辨率也太高了。如果有人对更好的方法以及如何减慢解决速度有任何想法,我很乐意听到。谢谢!
import pygame as pg
from random import randint###RANDOM LIBRARY
pg.init()
screen = pg.display.set_mode((640,480))
FONT = pg.font.Font(None,36)
BACKGROUND_COLOR = (37,225,192)
BLUE = (0,199)
GRAY = (0,55)
#Rectangle variables.
measure_rect = pg.Rect(200,40,100,400)
done = False
while not done:
for event in pg.event.get():
if event.type == pg.QUIT:
done = True
random_bar=randint(33,34)#Manipulation of bar graph.
value_print=random_bar
length = random_bar*4
random_bar = 100 - random_bar
top = 40+(random_bar*4)
screen.fill(BACKGROUND_COLOR)
pg.draw.rect(screen,BLUE,(200,top,length))
pg.draw.rect(screen,GRAY,measure_rect,2)
txt = FONT.render(str(round(value_print,2)),True,GRAY)
screen.blit(txt,(120,20))
pg.display.flip()
pg.quit()
解决方法
我建议实现一个 Bar
类:
import pygame as pg
from random import randint###RANDOM LIBRARY
pg.init()
screen = pg.display.set_mode((640,480))
FONT = pg.font.Font(None,36)
BACKGROUND_COLOR = (37,225,192)
BLUE = (0,199)
GRAY = (0,55)
class Bar():
def __init__(self,rect,bar = BLUE,outline = GRAY):
self.rect = pg.Rect(rect)
self.bar = bar
self.outline = outline
self.value = 0
def draw(self,surf):
length = round(self.value * self.rect.height / 100)
top = self.rect.height - length
pg.draw.rect(surf,self.bar,(self.rect.x,self.rect.y + top,self.rect.width,length))
pg.draw.rect(surf,self.outline,self.rect,2)
txt = FONT.render(str(round(self.value,2)),True,GRAY)
txt_rect = txt.get_rect(topright = (self.rect.x - 10,self.rect.y))
screen.blit(txt,txt_rect)
bar = Bar((200,40,100,400))
done = False
while not done:
for event in pg.event.get():
if event.type == pg.QUIT:
done = True
bar.value = randint(33,34)
screen.fill(BACKGROUND_COLOR)
bar.draw(screen)
pg.display.flip()
pg.quit()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。