You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
hnu202110040423 7eab7f66a9
Delete '理科方向实验报告.doc'
4 years ago
README.md Update 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()