您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“Python+Pygame如何實現簡單的射擊小游戲”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Python+Pygame如何實現簡單的射擊小游戲”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
1)環境安裝
Python3、 Pycharm 、Pygame模塊部分自帶模塊就不展示啦。
第三方庫的安裝:pip install pygame 或者
帶鏡像源 pip install -i https://pypi.douban.com/simple/ +模塊名
2)素材(圖片、音樂等)
主程序
import pygame,os,random from pygame.locals import * from pygame.sprite import * def load_image(name): fullname=os.path.join(os.path.join(os.path.split(os.path.abspath(__file__))[0],"filedata"),name) image=pygame.image.load(fullname) return image def load_sound(name): fullname=os.path.join(os.path.join(os.path.split(os.path.abspath(__file__))[0],"filedata"),name) sound=pygame.mixer.Sound(fullname) return sound WIDTH=700 HEIGHT=600 class Explosion(Sprite): def __init__(self,screen,posrect): super(Explosion,self).__init__() self.screen=screen self.posrect=posrect self.image=load_image("explosion.png") self.rect=self.image.get_rect() self.rect=self.posrect self.rates=0 def update(self): self.rates+=1 if self.rates>=40: self.kill() class Enemy(Sprite): def __init__(self,screen): super(Enemy,self).__init__() self.screen=screen self.screenrect=self.screen.get_rect() self.image=load_image("eatingfood.png") self.rect=self.image.get_rect() self.rect.center=(random.uniform(50,WIDTH-50), random.uniform(50,HEIGHT-50)) self.xspeed=random.uniform(1,2) self.yspeed=random.uniform(1,2) if random.choice([True,False]): self.xspeed=-self.xspeed if random.choice([True,False]): self.yspeed=-self.yspeed def update(self): self.rect.centerx+=self.xspeed self.rect.centery+=self.yspeed if self.rect.top>self.screenrect.height or self.rect.bottom<0: self.kill() elif self.rect.left>self.screenrect.width or self.rect.right<0: self.kill() def initmain(): pygame.init() screen=pygame.display.set_mode((WIDTH,HEIGHT)) pygame.display.set_caption("") gameFont=pygame.font.SysFont("宋體",26,True) rates=0 score=0 fpstime=pygame.time.Clock() cursor=load_image("aimcursor.png") cursorrect=cursor.get_rect() pygame.mouse.set_visible(False) enemys=Group() explosions=Group() sou=load_sound("sou.mp3") duang=load_sound("duang.mp3") while True: fpstime.tick(70) screen.fill((128,128,128)) screen.blit(gameFont.render("Score: "+str(score),True,(0,0,0)),(2,2)) rates+=1 enemys.draw(screen) enemys.update() explosions.draw(screen) explosions.update() if rates%25==0: enemys.add(Enemy(screen)) cursorrect.center=pygame.mouse.get_pos() screen.blit(cursor,cursorrect) for event in pygame.event.get(): if event.type==QUIT: pygame.quit() __import__("sys").exit() elif event.type==MOUSEBUTTONDOWN and event.button==1: cld=[] for sf in enemys: if sf.rect.collidepoint(event.pos): sf.kill() score+=int(abs(sf.xspeed)+abs(sf.yspeed)) explosions.add(Explosion(screen,sf.rect.center)) cld.append(True) else: cld.append(False) if not any(cld): sou.play() else: duang.play() pygame.display.flip() if __name__=="__main__": initmain()
都是靜態的截圖展示,科能效果不是很好!動態的展示我就沒錄制視頻了哈,大家拿代碼自己玩兒哦~
讀到這里,這篇“Python+Pygame如何實現簡單的射擊小游戲”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。