文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-04-02 19:55

关注

前言

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

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

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

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

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

本期来为大家推荐一款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分

到此这篇关于Python+Pygame实现简单的射击小游戏的文章就介绍到这了,更多相关Python Pygame射击游戏内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯