解放军VS木马炮弹类

狡猾的外星人把自己装在玻璃盒子里,妄想入侵地球。但是被解放军发现了,勇猛无比的一个解放军叔叔把外星人打得可是鬼哭狼嚎。请按a,d键移动坦克,单击鼠标发射炮弹,击败外星人的入侵。如果有一个外星人安全着陆,游戏就失败了!解放军VS木马是一个坦克射击类小游戏。作品共有8个py文件和相关素材。这里展示的是炮弹Shell类的源代码。

from turtle import * 

class Shell(Turtle):
    """炮弹类,继承自海龟类,实例化后它就会移动,直到碰到边缘或外星人"""
    def __init__(self,x,y,h):
        """x:横坐标,y:纵坐标,h:方向"""
        Turtle.__init__(self,visible = False,shape="circle")
        self.penup()                  # 抬笔
        self.goto(x,y)                # 定位
        self.setheading(h)            # 定方向
        self.shapesize(0.8,0.8)       # 缩小一点
        sw = self.screen.window_width()
        sh = self.screen.window_height()
        self.left_edge = -sw/2        # 左边缘x坐标
        self.right_edge = sw/2        # 右边缘x坐标
        self.top_edge = sh/2          # 上边缘y坐标
        self.bottom_edge = -sh/2      # 下边缘y坐标
        self.dead = False             # 没死
        self.showturtle()             # 显示
        self.move()                   # 移动
        
    def move(self):
        if self.dead == False:        # 没死就移动
            self.fd(10)
            if not self.is_to_edge():  # 没到边缘继续移动
                self.screen.ontimer(self.move,10)
            else:                      # 否则就死了,隐藏
                self.dead = True 
                self.hideturtle()                

    def is_to_edge(self):
        """中心点是否到了边缘判断"""
        x = self.xcor()
        y = self.ycor()
        c1 = x < self.left_edge
        c2 = x > self.right_edge
        c3 = y < self.bottom_edge
        c4 = y >self.top_edge
        return  c1 or c2 or c3 or c4

if __name__ =="__main__":

    screen = Screen()
    screen.bgcolor("cyan")
    screen.title("解放军VS木马炮弹类")
    screen.delay(0)
    [Shell(0,0,h) for h in range(0,360,36)]