|
|
4 years ago | |
|---|---|---|
| README.md | 4 years ago | |
README.md
big_homework
from math import *
import random
import pygame
import sys
pygame.init() screen=pygame.display.set_mode((1195,800)) pygame.display.set_caption('豌豆射手!!') bgimg=pygame.image.load('C:/Users/HP/Pictures/Saved Pictures/QQ图片20220603094922.png') ship=pygame.image.load('D:/Download/edge downloads/R-C-removebg-preview.png')
x,y=240,600 #飞船坐标 k,t,score=0,0,0 pygame.mixer.music.load('D:/CloudMusic/Toby Fox - MEGALOVANIA.mp3') pygame.mixer.music.play(-1)
#添加敌人 number=4 class Enemy(): def init(self): self.img=pygame.image.load('D:/Download/edge downloads/屏幕截图_2022-06-03_103854-removebg-preview.png') self.step=1 self.x=random.randint(0,1000) self.y=random.randint(0,150)
def reset(self):
self.x=random.randint(0,1000)
self.y=random.randint(0,100)
class Enemie1(): def init(self): self.img=pygame.image.load('D:/Download/edge downloads/44853567-removebg-preview (1).png') self.step=1 self.x=0 self.y=0 self.locx=random.randint(100,1000) self.locy=random.randint(50,400) self.w=random.randint(2,6) self.phi=random.randint(0, 8) l=[self.locx,1000-self.locx,self.locy,600-self.locy] m0=min(l) m=max(m0,51) # keep sure that enemy will not go out of screen self.r=random.randint(50,m)
def reset(self):
self.x=0
self.y=0
self.locx=random.randint(100,1000)
self.locy=random.randint(200,400)
self.w=random.randint(2,6)
self.phi=random.randint(0, 8)
l=[self.locx,1000-self.locx,self.locy,600-self.locy]
m0=min(l)
m=max(m0,51)
self.r=random.randint(50,m)
class Enemy2: def init(self): self.img=pygame.image.load('C:/Users/HP/Pictures/Saved Pictures/20090514163810137-removebg-preview(1)(1).png') self.step=1 self.x=50 self.y=0 self.locy=random.randint(150,550) def reset(self): self.x=50 self.y=0 self.locy=random.randint(150,550)
enemies=[]#储存 enemies1=[] enemies2=[] for i in range(number): enemies.append(Enemy()) enemies1.append(Enemie1()) enemies2.append(Enemy2()) #距离判定 def d(ex,ey,bx,by): a=ex+75-bx b=ey-by return (a2+b2)0.5 def d1(ex,ey,bx,by): a=ex+25-bx b=ey-by return (a2+b**2)**0.5
font=pygame.font.Font('freesansbold.ttf',32) def show_score(): text= f"score:{score}" score_render=font.render(text,True,(0,255,0)) screen.blit(score_render,(10,10))
#敌方的显示和位置变换 def show_enemy(): for e in enemies: screen.blit(e.img,(e.x,e.y)) e.x+=e.step if e.x>1000 or e.x<-100: e.step*=-1 e.y+=0.2 if e.y>900:
e.reset()
def show_enemy1(): for e in enemies1: screen.blit(e.img,(e.x,e.y)) e.x=e.locx+e.rsin(0.27e.wt+e.phi) e.y=e.locy+e.rcos(0.27e.wt+e.phi)
def show_enemy2(): for e in enemies2: screen.blit(e.img,(e.x,e.y)) e.x+=1 e.y=e.locy+200*cos(t) if e.x>1300: e.reset()
#子弹显示 bullet=pygame.image.load('D:/Download/edge downloads/QQ图片20220603101805-removebg-preview.png') class Bullet(): def init(self): self.img=pygame.image.load('D:/Download/edge downloads/QQ图片20220603101805-removebg-preview.png') self.step=3 self.x=x+15 self.y=y-10 def hit(self): global score for e in enemies: if (d(e.x,e.y,self.x,self.y))<50: bullets.remove(self) e.reset() score+=1
for e in enemies1:
if (d1(e.x,e.y,self.x,self.y))<50:
bullets.remove(self)
e.reset()
score+=2
for e in enemies2:
if (d1(e.x,e.y,self.x,self.y))<50:
bullets.remove(self)
e.reset()
score+=3
bullets=[]#储存 #子弹发射 def show_bullet(): for b in bullets: screen.blit(b.img,(b.x,b.y)) b.hit()#判断击中
b.y-=b.step
if b.y<0:
bullets.remove(b)
v1,v2,v3,v4=0,0,0,0 running=True
main procedure
while running: screen.blit(bgimg,(0,0)) show_score() for event in pygame.event.get(): if event.type==pygame.QUIT: running=False elif event.type==pygame.KEYDOWN: v1,v2,v3,v4=0,0,0,0 if event.key==pygame.K_RIGHT : v1=1 if event.key==pygame.K_LEFT: v2=-1 if event.key==pygame.K_UP: v3=-1 if event.key==pygame.K_DOWN: v4=1 if event.key==pygame.K_SPACE: bullets.append(Bullet())
t+=0.01
screen.blit(ship,(x,y))
show_enemy()
show_enemy1()
show_enemy2()
show_bullet()
x+=v1+v2
y+=v3+v4
pygame.display.update()
pygame.quit()