植物大战僵尸

150多行,只有豌豆射手和普通僵尸,想抄就抄
import pygame,sys,datetime
from pygame.locals import *
from random import *
import time
pygame.init()
canvas = pygame.display.set_mode((1020, 500))
canvas.fill((255,255,255))
from easygui import *
#设置窗口标题
pygame.display.set_caption("PVZ")

#加载图片
enemy1=pygame.image.load("图片/普通僵尸.png")
enemy1=pygame.transform.scale(enemy1, (50, 50))
# enemy2=pygame.image.load("images/enemy2.png")
# enemy3=pygame.image.load("images/enemy3.png")
hero1=pygame.image.load("图片/射手.jpg")
hero1=pygame.transform.scale(hero1, (50, 50))
bg=pygame.image.load("图片/草坪.jfif")
bg=pygame.transform.scale(bg, (1020, 500))
bullet1=pygame.image.load("图片/子弹.jpeg")
bullet1=pygame.transform.scale(bg, (25, 10))

jieshu=pygame.image.load("图片/结束.jpeg")
jieshu=pygame.transform.scale(jieshu, (1020, 500))
def handleEvent():
   for event in pygame.event.get():
      if event.type == QUIT or event.type == KEYDOWN and event.key == K_ESCAPE:
         pygame.quit()
         sys.exit()
class Enemy():
   def __init__(self, x, y, width, height, life,  img):
      self.x = x
      self.y = y
      self.width=width
      self.height=height
      self.img=img
      self.life=life
      self.flag=True
   def paint(self):
      canvas.blit(self.img,(self.x,self.y))
      #创建step方法
   def step(self):
      self.x = self.x - 2
   def bang(self):
      for i in range(len(bullets)):
         if self.x<=bullets[i].x+50 and self.x>=bullets[i].x and self.y<=bullets[i].y+10 and self.y>=bullets[i].y:
            self.life-=2
            print(self.life)

class Bullet():
   def __init__(self, x, y, width, height, life,  img):
      self.x = x
      self.y = y
      self.width=width
      self.height=height
      self.img=img
      self.life=life
   def paint(self):
      canvas.blit(self.img,(self.x,self.y))
      #创建step方法
   def step(self):
      self.x = self.x + 2
class Hero():
   def __init__(self, x, y, width, height, life,  img):
      self.x = x
      self.y = y
      self.width=width
      self.height=height
      self.img=img
      self.life=life
   def paint(self):
      canvas.blit(self.img,(self.x,self.y))
   def shoot(self):
      bullets.append(Bullet(self.x,self.y,5,10,30,bullet1))
   def bang(self):
      for i in range(len(enemys)):
         if self.x<=enemys[i].x+10 and self.x>=enemys[i].x and self.y<=enemys[i].y+10 and self.y>=enemys[i].y:
            self.life-=2

enemys=[]
heros=[]
bullets=[]
# l=input("多少关?")
# if int(l)==1:
#  fo
heros.append(Hero(0,0,50,50,30,hero1))
heros[0].paint()
n=0
sunny=0
m=0
while True:
   canvas.blit(bg, (0, 0))
   for event in pygame.event.get():
      if event.type == pygame.MOUSEBUTTONDOWN:
         # for i in range(len(heros)):
         if sunny>100:
            pos = pygame.mouse.get_pos()
            heros.append(Hero(pos[0],pos[1],50,50,30,hero1))
            heros[0].paint()
            print("点击")
            print(len(heros))
            # heros[m].x=pos[0]
            # heros[m].y=pos[0]
            m += 1
   canvas.blit(bg, (0, 0))
   for i in range(len(heros)):
      heros[i].paint()
      heros[i].shoot()
      heros[i].bang()
   l=0
   if len(enemys)!=0:
      for i in range(len(enemys)):
         if i<len(enemys):

            enemys[l].paint()
            enemys[l].step()
            enemys[l].bang()
            l += 1
   for i in range(len(bullets)):
         # if n>1:
         #  print(n)
         bullets[i].paint()
         bullets[i].step()
   if n>=5:
      n=0
      sunny+=50
      print(sunny)
      enemys.append(Enemy(800, randrange(0, 500, 50), 50, 50, 100, enemy1))
   # for i in range(len(bullets)):
         # if n>1:
         #  print(n)
         # bullets[i].paint()
         # bullets[i].step()
   # else:
      # enemys.append(Enemy(800, randrange(0, 500, 50), 50, 50, 100, enemy1))
      # if event.type == QUIT or event.type == KEYDOWN and event.key == K_ESCAPE:
      #  pygame.quit()
      #  sys.exit()
   flag1=False
   for i in range(len(enemys)):

      if enemys[i].x<=0:
         msgbox("僵尸吃掉了你的脑子")
         flag1=True
         break
   if flag1==True:
      canvas.blit(jieshu,(0,0))
      time.sleep(3)
      break
   m=0
   if len(enemys)>1:
      for i in range(1,len(enemys)):
         if i<len(enemys):
            if enemys[len(enemys)-i].life<=0:
               enemys.pop(i-1)
   pygame.time.delay(15)
   n+=0.15
   pygame.display.update()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值