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()
植物大战僵尸
最新推荐文章于 2024-05-11 01:39:16 发布