tkinter飞机大战测试程序

如本文章标有价格,需议价或其它事情商议请加微信pythonxia

"""
   tkinter飞机大战测试程序
   本程序需要gameturtle模块0.2版支持。
   利用标签对敌机和子弹进行分组,也用了颜色对敌机进行了分组。
"""
from gameturtle import *
from random import randint

bimage = Image.new("RGBA",(10,10),color=(255,255,255)) # 用来做子弹的图像
eimage = Image.new("RGBA",(20,40),color=(255,123,0))   # 用来做敌机的图像

root = Tk()                                       # 建窗口
cv = Canvas(width=800,height=600,bg='blue')       # 织画布
cv.pack()                                         # 放画布

# 红色大方块代表玩家飞机
player = GameTurtle(cv,Image.new("RGBA",(100,50),color='red'))

bullets=[]
enemis=[]
counter = 0

while True:
    mx,my = cv.mouse_pos()                        # 鼠标指针
    
    if player.isalive():player.goto(mx,my)        # 没死则移到鼠标指针
    
    counter = counter + 1
    if counter % 10 == 0 and player.isalive() :   # 一定机率产生子弹
        GameTurtle(cv,bimage,pos=(mx,my),heading=-90,tag='zidan')
        x,y = randint(0,800),0
        GameTurtle(cv,eimage,pos=(x,y),heading=90,tag='diren') # 产生敌人
        
    bullets= group(cv,'zidan')                    # 所有的子弹
    [b.fd(10) for b in bullets]                   # 所有子弹移动
    [b.kill() for b in bullets if b.out_canvas()] # 超出画布自删

    enemis= group(cv,'diren')                     # 所有的敌人
    [e.fd(1) for e in enemis]                     # 所有敌人向下移动
    # 超出画布范围或者碰到子弹则删除
    [e.kill() for e in enemis if e.out_canvas() or e.collide_tag('zidan')]
    if  player.isalive():
        if player.collide_color((255,123,0)):player.kill()
    cv.update()
    time.sleep(0.01)

本站所有作品,教程等皆为原创,版权所有。只供个人及单位内部研究使用,对外展示或传播必需经本站同意,且注明来自本站。培训机构等用本站资源培训学生,需经本站授权。一旦付款,表示同意本站知识付费原则:数字商品,不支持退款。亦可直接向微信号scratch8付款购买。入住QQ群:225792826 和爱好者共同交流,并且能下载免费提供的Python资源(需提供真实姓名才可入群)
李兴球的博客_Python创意编程技术前沿_pygame » tkinter飞机大战测试程序
scratch

学本领,探索更大的世界!

李兴球博客 风火轮编程主页