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)素材(图片、音乐等)
二、代码展示
主程序
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)游戏界面
2)击中效果
3)+3分
来源:https://blog.csdn.net/xy258009/article/details/124438175


猜你喜欢
- 纵观各大编程语言在 2017 年的发展情况,我们会发现涌现出诸如 Go、Swift 这类后起之秀,而其中最为耀眼的当属 Python。之所以
- 介绍Matplotlib 可能是 Python 2D-绘图领域使用最广泛的套件。它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。
- 这篇文章主要介绍了python 利用jinja2模板生成html代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考
- 最近看到一个内部项目的插件加载机制,非常赞。当然这里说的插件并不是指的golang原生的可以在buildmode中加载指定so文件的那种加载
- 后来查了一些相关资料,发现在IE 中通过 window.location.href 或者是 是无法获取HTTP_REFERER, 真是搞不懂
- 视觉设计是什么,人们怎么认为它的,自己又是怎么对待和理解它,它的核心价值是什么。视觉设计,冒似很艺术,跟艺术相关的职业,给大多数人的印象是做
- 一个问题纠结很久,反复确认语法问题。但是后来网上搜了一下,茅塞顿开。特此总结一下。mysql> grant select,insert
- 我就废话不多说了,直接上代码吧!import cv2img = cv2.imread("1.jpg")b, g, r =
- 排序查询(order by)电商中:我们想查看今天所有成交的订单,按照交易额从高到低排序,此时我们可以使用数据库中的排序功能来完成。排序语法
- php cookie中不能使用点号(句号),实际上不是很严格,应该说可以使用点号的cookie名,但会被转换,你命名一个cookie:$_C
- 先附上官方文档:https://pandas.pydata.org/pandas-docs/stable/reference/api/pan
- 本文实例讲述了JS实现点击li标签弹出对应的索引功能。分享给大家供大家参考,具体如下:需求:点击li标签,弹出对应的索引先看效果:html结
- 引用是什么在 PHP 中引用意味着用不同的名字访问同一个变量内容。这并不像 C 的指针,替代的是,引用是符号表别名。注意在 PHP 中,变量
- 安装pip(3) install pyecharts此文版本为v1.6此文版本为v1.6此文版本为v1.6效果图使用Pycharts绘制一个
- 本文为大家分享了SQLServer存储过程中事务的使用方法,具体代码如下create proc usp_Stock@GoodsId int,
- 前言H2数据库是一个开源的关系型数据库。H2采用java语言编写,不受平台的限制,同时支持网络版和嵌入式版本,有比较好的兼容性,支持相当标准
- 举几个例子来介绍一下,Python 的 CSV模块的使用方法,包括,reader, writer, DictReader, DictWrit
- 我们使用pycharm的时候,有时遇到了不认识的方法习惯于将鼠标悬停在方法上查看方法介绍。那么如何设置呢?下面小编给大家分享一下。首先假如我
- 如果可以减少过多的外部隔离的API和简化部署的细节 这会是非常好的。在以前的文章中,我解释了"一些使用反向代理的好处&
- 本文实例讲述了Python切片操作。分享给大家供大家参考,具体如下:我们基本上都知道Python的序列对象都是可以用索引号来引用的元素的,索