【Python小游戏】《弓箭手生存小游戏》怎么玩?好玩有趣的Python休闲类战斗射箭射击卡通游戏攻略已上线,手把手教你做一个人见人爱的射手小骑士~(附源码)

149 篇文章 18 订阅
94 篇文章 148 订阅

导语

哈喽,大家好,我是你们的木子鸭~

很久没有更新内容啦~有没有想我!今天给大家更新一款小游戏,喜欢的记得三连哦~

今天推荐这款游戏叫《弓箭手生存小游戏》,只有你想不到,没有我写不了的好游戏!

所有文章完整的素材+源码都在👇👇

粉丝白嫖源码福利,请移步至CSDN社区或文末公众hao即可免费。

「良心好游戏荐代码版本

之前给大家写过很多好玩的小游戏,大家还记得吗?↓😁

模拟经营游戏、恐怖游戏、消除游戏、休闲游戏、益智游戏、吃鸡游戏、烧脑游戏、解谜游戏

大全、射击游戏、SLG游戏、像素游戏、、、一个都不少!还有超过游戏玩法哦~

重点:超——超多的游戏合集系列内容,点击链接即可跳转哦!

隔断时间都会更新好玩的Python代码版本的小游戏。

PS——所有的文章代码都是免费滴!免费!免费!重要的事情说三遍!

好了,话不多说,直接开始今天的正题吧——这款Python游戏叫《弓箭手生存小游戏》,

说到弓箭手小生存,你想到的是王者荣耀里的保护鲁班么?

今天这个游戏有点意思,主角是一个弓箭手,玩家通过射击敌人获取积分,快跟木木子一起来

看看吧!

正文

一、环境准备中 

 1)运行环境 

 环境安装:Python 3.8: 解释器、pycharm: 代码编辑器,游戏模块Pygame需要安装的模块如

下  2)的模块安装方式安装即可。自带的一些模块 直接安装Python就可以使用了。 

 相对应的安装包/安装教程/激活码/使用教程/学 习资料/工具插件 可以直接找我厚台获取 。 

 2)模块安装 

 第三方库的安装方式如下:

 一般安装:pip install +模块名 镜像源安装:pip install -i 

https://pypi.douban.com/simple/+模块名 

 (还有很多国内镜像源,这里是豆瓣的用习惯 了,其他镜像源可以去看下之前文章都有的) 

 模块安装问题可以详细的找我给大家讲一下的哈,之前其实也有的文章写了几个点的。 

3)素材准备(可修改)

二、代码展示

1)主程序运行

import sys
import pygame
import random
from pygame.locals import *
from maps import Map
from player import Player
from enemy import Enemy
from scoreboard import Scoreboard
pygame.init()

def maingame():
    pygame.mixer.init()
    #soundbj=pygame.mixer.Sound('sound/bj.wav')
    #soundbj.set_Volume(0.3)
    #soundbj.Play(-1)
    #soundhit=pygame.mixer.Sound('sound/hit.wav')
    #soundover=pygame.mixer.Sound('sound/over.wav')
    
    screen=pygame.display.set_mode((800,600))
    pygame.display.set_caption('弓箭手小生存小游戏')
    myclook=pygame.time.Clock()
    map_image1=Map(screen,0,0)
    map_image2=Map(screen,800,0)
    leadpos=(45,350)
    lead=Player(screen,leadpos)  
    enemy_frequency=0
    enemy_images=[
       pygame.image.load('image/enemy1.png'),
       pygame.image.load('image/enemy2.png'),
       pygame.image.load('image/enemy3.png'),
       pygame.image.load('image/enemy4.png'),
        ]
    enemys=pygame.sprite.Group()
    lifes=10
    stats=Scoreboard(screen,0,lifes)
    restart=True
    running=True
    while running:
        for event in pygame.event.get():
            if event.type==pygame.QUIT:
                pygame.quit()
                exit()
            
            if event.type==pygame.MOUSEBUTTONDOWN:
                restartposx,restartposy=pygame.mouse.get_pos()
                if 720>=restartposx>=600 and 560>=restartposy>=500 and restart==False:
                    restart=True
                    maingame()
                
        screen.fill((135,180,255))
        if restart:
            map_image1.update_screen()
            map_image2.update_screen()
                
            if enemy_frequency % 200 == 0:
                enemy1=Enemy(enemy_images[random.randint(0,3)],screen)
                enemys.add(enemy1)
            enemy_frequency += 1
            if enemy_frequency >=200:
                enemy_frequency = 0
                
            for enemy2 in enemys:
                enemy2.update_enemy()
                enemy2.shoot_enemy()
                if enemy2.rect.right<0:
                  enemys.remove(enemy2)
            enemys.draw(screen)
            enemy_shot=pygame.sprite.groupcollide(lead.player_bullets,enemys,True,True)
            if len(enemy_shot)!=0:
                #soundhit.play()
                enemy1.enemy_hit=True
                stats.score+=1
                
            player_shot=pygame.sprite.spritecollideany(lead,enemy1.enemy_bullets)
            if player_shot!=None:
                if stats.life>0:
                    #soundhit.play()
                    stats.life-=1
                    enemy1.enemy_bullets.empty()
                if stats.life==0:
                    lead.player_hit=True
                    #soundover.play()
                    stats.gameover()
                    stats.restart()
                    #soundbj.stop()
                    restart=False
            screen.blit(lead.images[0],lead.rect)
            lead.move()
            lead.shoot()
            stats.scroe_life()
            lead.life_line(stats.life)
            pygame.display.update()
            myclook.tick(60)
            
maingame()

2)设置“子弹”类

import pygame
pygame.init()

class Bullet(pygame.sprite.Sprite):
    def __init__(self,x,y):
        pygame.sprite.Sprite.__init__(self)
        self.image=pygame.image.load('image/bullet.png')
        self.rect=self.image.get_rect()
        self.rect.left =x
        self.rect.bottom=y
        self.speed=(5+5-5*5/5+3-2+1-2)
        
    def update_player_bullet(self):
        self.rect.x+=self.speed
        
    def update_enemy_bullet(self):
        self.rect.x-=self.speed

3)设置背景图

import pygame
pygame.init()

class Map():
   def __init__(self,screen,x,y):
    self.screen=screen
    self.x=x
    self.y=y
    self.image=pygame.image.load('image/map.jpg')
   
   def update_screen(self):
    if self.x<-795:
          self.x=800
    else:
         self.x-=1
         
    self.screen.blit(self.image,(self.x,self.y))  

三、效果展示

游戏规则:这款小游戏初始生命值为10,每消灭一个敌人即可得1分。被敌人射击到即消除一

点生命值。空格键发送子弹、上下左右键移动即可,简单又好玩儿!

1)运行截图

​2)随机截图

总结

 这个游戏十分锻炼手速和反应能力,小编已经放心大胆的交给我侄子玩儿了呢!

今天的内容就到这里结束了哈,老规矩,源码基地滴滴我即可获取完整的免费资料哦~

✨完整的素材源码等:可以滴滴我吖!或者点击文末hao自取免费拿的哈~

 🔨推荐往期文章——

项目1.0 童年游戏合集

【Python童年游戏】满满的回忆杀—那些年玩过的童年游戏你还记得吗?那个才是你的菜?看到第一个我就泪奔了(致我们逝去的青春)

项目1.1  蔡徐坤打篮球

【Python搞笑游戏】因蔡徐坤打篮球动作超火,被某程序员写成了一款游戏,画面美到不敢看,成功学到了精髓~(附源码免费)

项目1.8  Wifi破解免费

Python编程零基础如何逆袭成为爬虫实战高手之《WIFI破解》(甩万能钥匙十条街)爆赞爆赞~

项目1.1   扫雷

 Pygame实战:据说这是史上最难扫雷游戏,没有之一,你们感受下......

项目1.2   魂斗罗

Pygame实战:多年后“魂斗罗”像素风归来 不止是经典与情怀@全体成员

🎄文章汇总——

汇总合集 Python—2022 |已有文章汇总 | 持续更新,直接看这篇就够了

(更多内容+源码都在✨文章汇总哦!!欢迎阅读喜欢的文章🎉~

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

顾木子吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值