2024-06-11 02:08:05 发布
网友
我有这样一个想法,我想制作一双机器人眼睛的动画,类似于Anki的Cozmo,但是我不想在LED屏幕上显示,我想在python应用程序中运行它,同时仍然有类似的感觉/效果(轻微闪烁,看起来像素化)。问题是我不知道从哪里开始。我必须有所有的动画精灵的所有表情(悲伤,快乐,愤怒…)和过渡,然后使用tkinter或pygame。或者我可以直接从一组配置(例如数组)中提取?如果你能提出一些方法,那就太好了。你知道吗
一种简单的方法是将数据存储在一个简单的字符串中,然后从这些字符串创建曲面。它不需要太多的内存,同时易于阅读和修改,并且可以在您的代码中使用。你知道吗
当然,有很多不同的方法来做你想做的事情,但我想像这样简单的事情会是一个很好的开始(你会明白的):
import pygame from itertools import cycle TILE_SIZE = 32 SCREEN_SIZE = pygame.Rect((0, 0, 21*TILE_SIZE, 8*TILE_SIZE)) class Expression(pygame.sprite.Sprite): def __init__(self, data): super().__init__() self.image = pygame.Surface((len(data[0]), len(data))) x = y = 0 for row in data: for col in row: if col == "O": self.image.set_at((x, y), pygame.Color('dodgerblue')) x += 1 y += 1 x = 0 self.image = pygame.transform.scale(self.image, (TILE_SIZE*len(data[0]), TILE_SIZE*len(data))) self.rect = self.image.get_rect() REGULAR = Expression([ " ", " ", " OOOO OOOO ", " OOOOOO OOOOOO ", " OOOOOO OOOOOO ", " OOOO OOOO ", " ", " ", ]) QUESTION = Expression([ " ", " ", " OOOO ", " OOOOOO OOOO ", " OOOOOO OOOOOO ", " OOOO OOOO ", " ", " ", ]) SAD = Expression([ " ", " ", " ", " ", " ", " OOOOOO OOOOOO ", " ", " ", ]) def main(): pygame.init() screen = pygame.display.set_mode(SCREEN_SIZE.size) timer = pygame.time.Clock() expressions = cycle([REGULAR, QUESTION, REGULAR, QUESTION, SAD]) current = next(expressions) pygame.time.set_timer(pygame.USEREVENT, 1000) while True: for e in pygame.event.get(): if e.type == pygame.QUIT: return if e.type == pygame.KEYDOWN and e.key == pygame.K_ESCAPE: return if e.type == pygame.USEREVENT: current = next(expressions) screen.fill((30, 30, 30)) screen.blit(current.image, current.rect) timer.tick(60) pygame.display.update() if __name__ == "__main__": main()
从这里到哪里:
使用较小的平铺大小和较大的字符串来获得更好的分辨率。
或者在程序外(在绘图工具中)为动画创建图像,并使用所需的图像。
创建定义不同动画的不同表达式列表,并为每个“情绪”更改当前动画。
一种简单的方法是将数据存储在一个简单的字符串中,然后从这些字符串创建曲面。它不需要太多的内存,同时易于阅读和修改,并且可以在您的代码中使用。你知道吗
当然,有很多不同的方法来做你想做的事情,但我想像这样简单的事情会是一个很好的开始(你会明白的):
从这里到哪里:
使用较小的平铺大小和较大的字符串来获得更好的分辨率。
或者在程序外(在绘图工具中)为动画创建图像,并使用所需的图像。
创建定义不同动画的不同表达式列表,并为每个“情绪”更改当前动画。
相关问题 更多 >
编程相关推荐