我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Pygame实战练习之保护单身狗游戏

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

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Pygame实战练习之保护单身狗游戏

导语

各位戏精大家好!我是木木子,这个中秋已经结束了,你们都带着对象回家了码?

中秋那几天朋友圈简直是大型秀恩爱现场。

又是一年中秋夜,依旧凭实力单身!呼吁大家记得保护下单身狗啊喂!

图片

作为一条人畜无害可可爱爱的单身狗

每年的假期几乎都被伤的体无完肤,今年我们不仅要好好生存,还要勇敢报复,让情侣们知道:

单身狗不是这么好欺负的~单身狗们报仇吧!今天带大家写一款贼有趣的单身狗小游戏~

图片

正文

首先准备好图片素材等:

bgm音乐必备:


import pygame
 
class Sound():
    def __init__(self):
        pygame.mixer.music.load('../sound/baab.mp3')
        pygame.mixer.music.play()

​先上效果图嘿嘿嘿 看好哈:

游戏界面——

程序运行——

(1)设置滚动的背景:


#地图滚动
import pygame
import random
 
class GameBackground(object):
    # 初始化地图
    def __init__(self, scene):
        # 加载相同张图片资源,做交替实现地图滚动
        self.image1 = pygame.image.load("../image/background.png")
        self.image2 = pygame.image.load("../image/background.png")
        # 保存场景对象
        self.main_scene = scene
        # 辅助移动地图
        self.x1 = 0
        self.x2 = 1280
        self.snowflag=False
 
    # 计算地图图片绘制坐标
    def action(self):
        self.x1 = self.x1 - 1
        self.x2 = self.x2 - 1
        if self.x1 <= -1279:
            self.x1 = 1279
        if self.x2 <= -1279:
            self.x2 = 1279
 
    # 绘制地图的两张图片
    def draw(self):
        self.main_scene.blit(self.image1, (self.x1,0))
        self.main_scene.blit(self.image2, (self.x2,0))
 
 
class Snow():
                # 雪花的竖直速度
    def __init__(self):
        self.x = 0  # 雪花的横坐标
        self.y = 0  # 雪花的纵坐标
        self.vx = 0  # 雪花的水平速度
        self.vy = 0
        self.x = random.randint(0,1280)   # 初始化雪花横坐标
        self.y = random.randint(0,390)   #初始化雪花纵坐标
    def getsnowpos(self):
        return self.x,self.y         # 返回雪花坐标位置

(2)单身狗不能碰到情侣检测碰撞:


import pygame
 
 
class Collide():
    def __init__(self):
        self.gamestatus=True
        self.snowflag=False
        self.dogflag=0
        self.score=0
        self.scoreup=200
        self.gameover=False
        self.count=0
 
    def dogs_cpdogs(self,dogs,cpdogs):
        boooooooooooooooool=pygame.sprite.groupcollide(dogs,cpdogs,False,True)
        if boooooooooooooooool:
            self.score += self.scoreup
            print(self.score)
 
    def dog_cpdog(self,dog,cpdog2s):
        booooooool=pygame.sprite.spritecollide(dog,cpdog2s,True)
        if booooooool:
            self.snowflag = True
            self.count += 1
            if self.count>=3:
                self.gameover=True

​(3)主函数:


import pygame
import sys,os
import random
from background import GameBackground,Snow
from dog import MySprite
from cpdog import Monster,MySprite2
from pygame.sprite import Group
from collidedetection import Collide
from sound import Sound
from score import Fontf
from crydog import MySpritec
 
 
pygame.init()
screen=pygame.display.set_mode((1280,390))
fpsset=pygame.time.Clock()
bgcolor=(255,240,30)
background=GameBackground(screen)
dog=MySprite() 
dog.load("../image/dog.png", 82, 62, 3)
dog.X = 0
dog.Y = 285
dogs = pygame.sprite.Group()
dogs.add(dog)
cpdogs=Group()
lasttimecreat=0
collidetest=Collide()
sound=Sound()
cpdog2s = pygame.sprite.Group()
snowlist = []
for i in range(0, 50):  # 建立50个雪花
    snow=Snow()
    snowlist.append(snow)
scor=Fontf(screen)
onoff = True
crydog=None
 
 
while 1:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        # player ctrl
        if event.type==pygame.KEYDOWN:
            if event.key==pygame.K_RIGHT:
                dog.movieRight=True
            if event.key == pygame.K_LEFT:
                dog.movieLeft=True
            if event.key==pygame.K_SPACE:
                if not dog.jumping:
                    dog.jumping=True
                    dog.vUP = -14
        if event.type == pygame.KEYUP:
            if event.key == pygame.K_RIGHT:
                dog.movieRight=False
            if event.key==pygame.K_LEFT:
                dog.movieLeft=False
        if event.type==pygame.MOUSEBUTTONDOWN:
            mousex,mousey=pygame.mouse.get_pos()
            if mousex>=540 and mousex<=540 + scor.text_width:
                if mousey>=180 and mousey<=180 + scor.text_height:
                    onoff = False
    if dog.jumping:
        if dog.vUP < 0:
            dog.vUP += 0.6
        elif dog.vUP >= 0:
            dog.vUP += 0.8
        dog.Y += dog.vUP
        if dog.Y >= 290:
            dog.jumping = False
            dog.Y = 290
            dog.vUP = 0.0
    if not collidetest.gameover:
 
        if onoff:
            scor.beginpage()
            print(onoff)
 
        else:
            print(onoff)
        #碰撞检测
            collidetest.dogs_cpdogs(dogs,cpdogs)
            collidetest.dog_cpdog(dog,cpdog2s)
            #背景
            background.action()
            background.draw()
            #分数
            # scor.beginpage()
            collidetest.score+=1
            scor.displayScore(collidetest.score)
            #时间控制
            ticks = pygame.time.get_ticks()
            #player绘制
            dogs.update(ticks)
            dogs.draw(screen)
 
            cpdog2s.update(ticks)
            cpdog2s.draw(screen)
            if ticks >lasttimecreat  + random.randint(1000,20000):
                 #生成障碍物
                cp = Monster(screen)
                cpdogs.add(cp)
                cpdog2 = MySprite2()
                cpdog2.load("../image/cpdogs.png", 113, 62, 3)
                cpdog2.X = 1280
                cpdog2.Y = 285
                cpdog2s.add(cpdog2)
                lasttimecreat=ticks
 
            for m in cpdogs:
                m.draw_monster()
                if m.rect.x <=640:
                    del m
            cpdogs.update()
        #snow
            if collidetest.snowflag:
                for snow in snowlist:
                    # 每个雪花位置的变换
                    # if random.randint(0,1):
                    snow.vx = random.randint(-3,3)  # 雪花的横向速度
                    snow.vy = 1                     # 雪花的竖直速度
                    snow.x += snow.vx               # 雪花的横轴移动位置
                    snow.y += snow.vy               # 雪花的纵轴移动位置
                    if snow.y > 500:
                        snow.y = 0
                    pygame.draw.circle(screen,[255,255,255],snow.getsnowpos(),1)
    else:
        if collidetest.snowflag:
            background.action()
            background.draw()
            for snow in snowlist:
                snow.vx = random.randint(-3, 3)
                snow.vy = 1
                snow.x += snow.vx
                snow.y += snow.vy
                if snow.y > 500:
                    snow.y = 0
                pygame.draw.circle(screen, [255, 255, 255], snow.getsnowpos(), 1)
            if not crydog:
                crydog=MySpritec()
                crydog.load("../image/crydog.png", 82, 62,3)
                crydog.X = 100
                crydog.Y = 285
                crydogs=Group()
                crydogs.add(crydog)
            ticks = pygame.time.get_ticks()
            # player绘制
            crydogs.update(ticks)
            crydogs.draw(screen)
            scor.gameoverrrrrrrrr()
            if crydog.X>1280:
                sys.exit()
    fpsset.tick(60)
    pygame.display.update()

效果图:游戏规则躲避情侣狗,一直奔跑加分!

​总结

好啦!单身狗大战即将开始,come on。

哈哈哈哈 这游戏蛮有趣的撒!你们的支持是我最大的动力,记得三连哦~木啊!

图片

到此这篇关于Pygame实战练习之保护单身狗游戏的文章就介绍到这了,更多相关Pygame 保护单身狗游戏内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

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

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

Pygame实战练习之保护单身狗游戏

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录