这是一个交互动画,本人用python的海龟模块,Pygame模块做过类似的动画,现在又用arcade模块做一下。不过编了个小故事。
以下是部分代码预览:
"""
巫婆和仙女漫游太阳系小故事动画。
仙女教她的外婆仙术,可是她的外婆由于年纪大了,只学了一半,总也飞不起来。所以仙女送了外婆一把天方夜谭里的神扫帚。
就这样,她们一起离开了地球,在太阳系漫游的不亦乐乎。可是,她们也要呼吸啊,带的氧气不多了。还好,西天取经回来的斗战圣佛孙悟空在暗中已经明察秋毫。
他是不是地变一瓶氧气给她们使用。聪明的仙女一子就发现了太阳系会冒出氧气瓶,她们一起收集了一些氧气,造访了水星、金星、火星、木星、土星、天王星之后,还是玩厌了。
空荡荡的太阳系好无聊,其它星球都不适合人也不适合地神仙玩,所以她们想回地球。可是那时候地球已经被邪恶的宇宙超级大BOSS灭霸给锁住了,她们接近地球时只会被撞死。
还好,有惊奇队长和神奇女侠来帮忙了。惊奇队长安装了一个按扭,只要碰到按扭,那么太阳系行星和太阳的时空就会变慢。
神奇女侠送了神秘香蕉,只要吃了香蕉就能进入地球了。快来玩下这个游戏吧,操作方法:
按上下左右方向箭头或awsd箭头一个角色碰触按钮,让另一个角色顺利的吃到香蕉,然后一起飞回地球。
"""
import time
import math
import arcade
import random
SCREEN_WIDTH = 1350
SCREEN_HEIGHT = 780
SCREEN_TITLE = "Python街机动画:巫婆和仙女漫游太阳系动画,作者:李兴球"
MOVEMENT_SPEED = 5
class Planet(arcade.Sprite):
def __init__(self,image,position,period):
"""image:造型图片,position:初始坐标,初始角度"""
super().__init__(image)
x,y = position
self.center_x = SCREEN_WIDTH / 2
self.center_y = SCREEN_HEIGHT / 2
self.a = y * 1.5 # 长半轴
self.b = y # 短半轴
self.period = period
self.direction = 90
class Oxygen(arcade.Sprite):
"""氧气瓶类"""
def __init__(self,image):
super().__init__(image,0.5)
self.center_x = random.randrange(SCREEN_WIDTH)
self.center_y = random.randrange(SCREEN_HEIGHT)
self.alpha = 80
class MyGame(arcade.Window):
"""
继承自窗口的MyGame类.
"""
timespace = 1 # 游戏的时空变量
can_home = False # 能回家的逻辑变量
def __init__(self, width, height, title):
super().__init__(width, height, title)
self.frame_counter = 0 # 帧计数器
self.planet_list = arcade.SpriteList() # 新建角色列表,以便统一渲染
self.all_stars_list = arcade.SpriteList() # 所有星星列表,包括恒星和行星
self.oxygen_list = arcade.SpriteList() # 氧气瓶列表
self.astronaut_list = arcade.SpriteList() # 宇航员列表
def setup(self):
""" 这里是对游戏中的各个对象进行设置 """
# 背景角色生成
self.background = arcade.Sprite("bg.png")
self.background.center_x = SCREEN_WIDTH / 2
self.background.center_y = SCREEN_HEIGHT / 2
# 太阳角色生成
self.sun = arcade.AnimatedTimeSprite() # 新建动画时序角色
self.sun.center_x = SCREEN_WIDTH//2
self.sun.center_y = SCREEN_HEIGHT//2
# 宇航员角色生成
self.astronaut1 = arcade.Sprite("princess.png",0.25) # 宇航员1角色,第二个参数是比例
self.astronaut1.status = "live" # 自定义属生,
self.astronaut1.oxygens = 1000 # 自定义属性,氧气数量
self.astronaut1.center_x = 100
self.astronaut1.center_y = 100
self.astronaut2 = arcade.Sprite("witch.png",0.25) # 宇航员2角色,第二个参数是比例
self.astronaut2.status = "live" # 自定义属生,
self.astronaut2.oxygens = 1000 # 自定义属性,氧气数量
self.astronaut2.center_x = SCREEN_WIDTH-100
self.astronaut2.center_y = SCREEN_HEIGHT-100
self.astronaut_list.append(self.astronaut1)
self.astronaut_list.append(self.astronaut2)
def on_key_release(self, key, modifiers):
"""松开按键. """
def update(self, x):
"""每帧更新游戏内在逻辑"""
def on_draw(self):
"""
渲染屏幕 """
def main():
""" Main method """
window = MyGame(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_TITLE)
window.setup()
arcade.run()
if __name__ == "__main__":
main()
如需要查看完整代码,请
需要浏览更多吗?
成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

