第一个自己做的python小游戏
import pygame import random import math pygame.init() screen = pygame.display.set_mode((800,600)) pygame.display.set_caption("fight game2021") icon=pygame.image.load('D:/resource/icon.jpg') bgImg=pygame.image.load('D:/resource/bg.jpg') playerImg=pygame.image.load('D:/resource/player.png') enemyImg=pygame.image.load('D:/resource/enemy.png') playerX=400 playery=500 playerStep=0 pygame.mixer.music.load('D:/resource/bgm.mp3') pygame.mixer.music.play(-1) bomb_sound=pygame.mixer.Sound('D:/resource/exp.wav') # enemyStep=0.2 # enemyX=random.randint(200,600) # enemyY=random.randint(50,200) pygame.display.set_icon(icon) running=True number_of_enemy=15 score=0 font = pygame.font.Font('freesansbold.ttf',32) is_over=False def check_over(): if is_over: text='GAME OVER' render=font.render(text,True,(255,102,102)) screen.blit(render,(300,300)) def show_score(): text=f'score:{score}' score_render=font.render(text,True,(255,255,102)) screen.blit(score_render,(10,10 )) class Enemy(): def __init__(self): self.img=pygame.image.load('D:/resource/enemy.png') self.x=random.randint(200,600) self.y=random.randint(50,200) self.step=random.randint(1,3) def reset(self): self.x = random.randint(200, 600) self.y = random.randint(50, 200) enemys=[] class Bullet(): def __init__(self): self.img=pygame.image.load('D:/resource/bullet.png') self.x=playerX+16 self.y=playery-10 self.step=1 def hit(self): global score for e in enemys: if distance(self.x,self.y,e.x,e.y)<30: bomb_sound .play() score+=1 bullets.remove(self) e.reset() # for i in range(5): bullets=[] for i in range(number_of_enemy): enemys.append(Enemy()) def show_enemy(): global is_over # global enemyX,enemyStep,enemyY for e in enemys: screen.blit(e.img,(e.x,e.y)) e.x+=e.step*0.1 if e.x > 736 or e.x<0: e.step *=-1 e.y +=100 if e.y>450: is_over=True enemys.clear() def move_player(): global playerX playerX += playerStep if playerX > 736: playerX = 736 if playerX < 0: playerX = 0 def show_bullet(): for b in bullets: b.hit() screen.blit(b.img,(b.x,b.y)) b.y-=b.step if b.y<0: bullets.remove(b) def distance(bx,by,ex,ey): a=bx-ex b=by-ey return math.sqrt(a*a+b*b) while running: screen.blit(bgImg,(0,0)) show_score() for even in pygame.event.get(): if even.type==pygame.QUIT: running=False if even.type==pygame.KEYDOWN: if even.key==pygame.K_RIGHT: playerStep=0.9 elif even.key==pygame.K_LEFT: playerStep=-0.9 elif even.key==pygame.K_SPACE: bullets.append(Bullet()) if even.type==pygame.KEYUP: playerStep=0 screen.blit(playerImg,(playerX,playery)) move_player() # playerX+=playerStep # if playerX>736: # playerX=736 # if playerX<0: # playerX=0 show_bullet() show_enemy() check_over() pygame.display.update()