class Item: def __init__(self,l,t,w,h,index,font): self.rect = pygame.Rect(l,t,w,h) self.index = index self.font = font def display_names(self,surface,name,cost,selected): color = TEXT_COLOR_SELECTED if selected else TEXT_COLOR title_surf = self.font.render(name,False,color) title_rect = title_surf.get_rect(midtop = self.rect.midtop + pygame.math.Vector2(0,20)) cost_surf = self.font.render(f'{int(cost)}',False,color) cost_rect = cost_surf.get_rect(midbottom = self.rect.midbottom - pygame.math.Vector2(0,20)) surface.blit(title_surf,title_rect) surface.blit(cost_surf,cost_rect) def display_bar(self,surface,value,max_value,selected): # drawing setup top = self.rect.midtop + pygame.math.Vector2(0,60) bottom = self.rect.midbottom - pygame.math.Vector2(0,60) color = BAR_COLOR_SELECTED if selected else BAR_COLOR # bar setup full_height = bottom[1] - top[1] relative_number = (value / max_value) * full_height value_rect = pygame.Rect(top[0] - 15,bottom[1] - relative_number,30,10) # draw elements pygame.draw.line(surface,color,top,bottom,5) pygame.draw.rect(surface,color,value_rect) def trigger(self,player): upgrade_attribute = list(player.stats.keys())[self.index] if player.exp >= player.upgrade_cost[upgrade_attribute] and player.stats[upgrade_attribute] < player.max_stats[upgrade_attribute]: player.exp -= player.upgrade_cost[upgrade_attribute] player.stats[upgrade_attribute] *= 1.2 player.upgrade_cost[upgrade_attribute] *= 1.4 if player.stats[upgrade_attribute] > player.max_stats[upgrade_attribute]: player.stats[upgrade_attribute] = player.max_stats[upgrade_attribute] def display(self,surface,selection_num,name,value,max_value,cost): if self.index == selection_num: pygame.draw.rect(surface,UPGRADE_BG_COLOR_SELECTED,self.rect) pygame.draw.rect(surface,UI_BORDER_COLOR,self.rect,4) else: pygame.draw.rect(surface,UI_BG_COLOR,self.rect) pygame.draw.rect(surface,UI_BORDER_COLOR,self.rect,4) self.display_names(surface,name,cost,self.index == selection_num) self.display_bar(surface,value,max_value,self.index == selection_num)
时间: 2024-02-29 14:54:33 浏览: 116
pygame_labdeprogramacao:装备
这段代码定义了一个名为Item的类,它包含了显示名称、显示进度条和触发升级等功能。其中display_names方法用于在界面上显示名称和价格,display_bar方法用于显示进度条,trigger方法用于升级玩家属性,display方法用于在界面上显示选项卡的所有元素。这个类的实例可以用于创建一个选项卡界面。
阅读全文