python奥特曼打怪兽gameturtle版

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

python奥特曼打怪兽gameturtle版
"""
  奥特曼打怪兽_按键.py
  本程序设计了Background类,
  还设计了继承自Sprite类的Actor类及Monster类。
  为了让奥特曼能发射子弹,增加了按f键发红色小方块的功能。  
"""
import glob
import time
from tkinter import *
from PIL import Image
from random import randint
from gameturtle import Sprite,group

class Background:
     def __init__(self,cv,image):
         """image是磁盘上的一张图片"""
         self.w = int(cv.cget('width'))
         self.h = int(cv.cget('height'))
         self.cv = cv
         image = Image.open(image)
         im = image.convert("RGBA")
         self.pic1 = Sprite(cv,im)
         self.pic2 = Sprite(cv,im,pos=(1.5*self.w,self.h/2))            
    
class Actor(Sprite):
    def __init__(self,canvas,frames,pos=None,
                 visible=True,heading=0,tag='sprite'):
        Sprite.__init__(self,canvas=canvas,frames=frames,pos=pos,
                        visible=visible,heading=heading,tag=tag)
        self.dx = 0                  # 水平速度
        self.dy = 0                  # 垂直速度
        self._canvas.bind("",self.moveback)
        self._canvas.bind("",self.moveup)
        self._canvas.bind("",self.movedown)
        self._canvas.bind("",self.movefd)
        self._canvas.bind("",self.movexstop)
        self._canvas.bind("",self.movexstop)        
        self._canvas.bind("",self.moveystop)
        self._canvas.bind("",self.moveystop)
       
    def movexstop(self,event):         
         self.dx = 0
         
    def moveystop(self,event):
         self.dy = 0
         
    def moveback(self,event):
          self.dx = -4
          
    def movefd(self,event):
          self.dx = 4
          
    def moveup(self,event):
          self.dy = -4
          
    def movedown(self,event):
          self.dy = 4          

         
class Monster(Sprite):     
    def __init__(self,canvas,frames,pos=None,
                 visible=False,heading=0,tag='monster'):
        Sprite.__init__(self,canvas=canvas,frames=frames,pos=pos,
                        visible=visible,heading=heading,tag=tag)
        y = randint(0,360)
        self.goto(self._cv_width+100,y)
        self.randomshape()               # 随机造型
        self.setrotmode(1)               # 旋转模式为左右翻转  
        self.right(180)                  # 向右转180度   
        self.show()                      # 显示
        
if __name__ == '__main__':
    
    root = Tk()
    root.title('奥特曼的诞生')

    cv = Canvas(width=480,height=360)
    cv.pack()                            # 放置画布
    cv.focus_force()                     # 设置画布焦点

    bg = Background(cv,'1.png')

    manpic = Image.open('奥特曼.png')    # 奥特曼的造型图
    sp = ultraman = Actor(cv,manpic)     # 实例化奥特曼

    monster_pics = glob.glob('res/*.png')# 怪兽造型图列表
    monster_pics = [Image.open(im) for im in monster_pics]
    c = 0
    zd_pic = Image.new("RGBA",(10,10),color='red')   # 子弹图
    cv.bind("",lambda event:Sprite(cv,zd_pic,pos=sp.pos(),tag='bullet'))
    while True:
        bg.pic1.addx(-10)             # 背景图片1的x坐标减小 
        if bg.pic1.xcor() <= -bg.w/2:
           bg.pic1.setx(1.5*bg.w) 
        bg.pic2.addx(-10)             # 背景图片2的x坐标减小  
        if bg.pic2.xcor() <= -bg.w/2:
           bg.pic2.setx(1.5*bg.w)
        c = c + 1
        if c%100==0:Monster(cv,monster_pics)             
        ms = group(cv,'monster')
        [m.fd(2) for m in ms]
        [m.kill() for m in ms if m.xcor()<0 or m.collide_tag('bullet')]

        ultraman.addx(sp.dx)
        ultraman.addy(sp.dy)         
        if ultraman.collide_tag('monster'):sp.dy=10

        bullets = group(cv,'bullet')       
        [b.fd(10) for b in bullets]
        [b.kill() for b in bullets if b.xcor()>480]
        
        cv.update()                   # 刷新画布显示
        time.sleep(0.01)              # 等待0.01秒


需要全部源代码和素材请扫码付款后再下载 :

VIP免费查看

已有0人支付

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

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

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