八大行星_星球大爆炸_turtle eight planet solar system

八大行星_星球大爆炸_turtle eight planet solar system


用海龟画图模块模拟的星球大爆炸景像。下面是部分代码预览:

"""
   星球大爆炸.py
   这是用海龟画图模块制作的一个八大行星动画。不过,有一天闯入
   了一个流浪星球,它不受太阳引力,莽撞地随机移动,碰到行星就把
   它吞噬掉。为了拯救太阳系,你需要尽快用鼠标指针单击它,然后它就会
   爆炸,否则如果太阳系只剩下三颗行星的活,整个恒星系将会发生大爆炸。
"""

import math
import pygame
from turtle import *
from random import randint,choice

class Demon(Turtle):
    def __init__(self,images,pos,bomb):
        Turtle.__init__(self, shape='d.gif',visible=False)
        self.bomb = bomb
        self.screen_width = self.screen.window_width()
        self.screen_height = self.screen.window_height()

    def move(self):
        if not self.dead:
            pass

    def explode(self,x,y):
        """单击后它会爆炸"""
        print("单击中了")
        self.bomb.play()
        self.dead = True
        self.pu()
        self.ht()
        self.sety(self.ycor()+60)
        self.animate()
        
    def animate(self):
        """切换爆炸帧图"""
        self.shape(self.images[self.count])
            
    def set_speed(self):
        self.xspeed = choice([-9,-8,-5,-2,2,4,7,8,9])/5
        self.yspeed = choice([-9,-8,-7,-4,-2,2,4,7,8,9])/5
        
 
class Planet(Turtle):
       pass
       

class Star(Turtle):
       pass
        
def main():

    pygame.init()
    pygame.mixer.init()
    bomb = pygame.mixer.Sound('sound/bomb.wav')
    pygame.mixer.music.load('sound/backsound.mp3')
    pygame.mixer.music.play()

    screen = Screen()
    screen.setup(1350,780)
    screen.bgpic('bg.png')
    screen.delay(0)
    screen.title("turtle星球大爆炸_作者:李兴球")

    images = []                        # 漫游者爆炸造型表
    for i in range(1,56):
        path = "explosion/" + str(i)+'.gif'
        screen.addshape(path)
        images.append(path)

    sunimages=[]                       # 太阳造型表
    for i in range(27):
        path = 'sun/' + str(i) + '.gif'
        screen.addshape(path)
        sunimages.append(path)         

    e_images=[]                        # 太阳爆炸造型表
    for i in range(39):
        path = 'end/' + str(i) + '.png'
        e_images.append(path)        
        
    screen.addshape('d.gif')           # 邪恶星球的造型

    d = Demon(images,(-500,0),bomb) 

    planets=['m.gif','v.gif','e.gif','mars.gif','j.gif','s.gif','u.gif','n.gif']
    pos=[(0,80),(0,100),(0,130),(0,160),(0,200),(0,270),(0,320),(0,380)]
    period=[87.7,-224.7,365,687,4332.6,29.5*365,-84*365,164.8*365]
    ps = []                           # 行星表
    for i in range(8):
        screen.addshape(planets[i])
        ps.append(Planet(planets[i],pos[i],period[i],d))

    Star(sunimages,e_images,(0,0),ps,d)

    screen.mainloop()


if __name__ == '__main__':

    main()

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

李兴球

李兴球的博客是Python创意编程原创博客

评论已关闭。