网络编程
位置:首页>> 网络编程>> Python编程>> Python+Pygame实现简单的射击小游戏

Python+Pygame实现简单的射击小游戏

作者:嗨!栗子同学  发布时间:2023-06-01 11:50:30 

标签:Python,Pygame,射击,游戏

前言

哈喽!哈喽。栗子上线啦~

要说什么游戏能够获得大家的喜爱?

唯射击游戏莫属。此前大火手游的《刺激战场》当然现在是叫做《和平精英》啦,想当初我也是第一批下载的老玩家了!射击游戏加上丰富的地图不同的体验那是相当的有趣好玩儿。

玩家在射击游戏中,通过瞄准,击杀敌人,能够获得及时的爽感反馈。射击游戏很早就在游戏圈占据一席之地啦~

今天的游戏代码灵感就是来源于此哦,简约简约,大制作小编一个程序员头秃也搞不了啦。

本期来为大家推荐一款Python游戏代码版本的“射击游戏”——小编取名叫《无敌狙击手》,也就是简约的射击游戏,看一下这款代码你喜欢嘛?

一个适合零基础开发游戏的小白案例啦!超级简单呢

游戏玩法:点击鼠标左键对准移动的靶子,射中一次看距离加分。射中最中间位置一次+3分哦

一、运行环境

1)环境安装

Python3、 Pycharm 、Pygame模块部分自带模块就不展示啦。

第三方库的安装:pip install pygame 或者

带镜像源 pip install -i https://pypi.douban.com/simple/ +模块名  

2)素材(图片、音乐等)

Python+Pygame实现简单的射击小游戏

二、代码展示

主程序

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()

三、效果展示

都是静态的截图展示,科能效果不是很好!动态的展示我就没录制视频了哈,大家拿代码自己玩儿哦~

1)游戏界面

Python+Pygame实现简单的射击小游戏

2)击中效果

Python+Pygame实现简单的射击小游戏

3)+3分

Python+Pygame实现简单的射击小游戏

来源:https://blog.csdn.net/xy258009/article/details/124438175

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com