千家信息网

如何利用python来制作保护单身狗游戏

发表于:2025-11-16 作者:千家信息网编辑
千家信息网最后更新 2025年11月16日,本篇文章为大家展示了如何利用python来制作保护单身狗游戏,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。正文首先准备好图片素材等:bgm音乐必备:impor
千家信息网最后更新 2025年11月16日如何利用python来制作保护单身狗游戏

本篇文章为大家展示了如何利用python来制作保护单身狗游戏,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

正文

首先准备好图片素材等:

bgm音乐必备:

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

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

游戏界面--

程序运行--

(1)设置滚动的背景:

#地图滚动import pygameimport 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 pygameimport sys,osimport randomfrom background import GameBackground,Snowfrom dog import MySpritefrom cpdog import Monster,MySprite2from pygame.sprite import Groupfrom collidedetection import Collidefrom sound import Soundfrom score import Fontffrom 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 = 0dog.Y = 285dogs = pygame.sprite.Group()dogs.add(dog)cpdogs=Group()lasttimecreat=0collidetest=Collide()sound=Sound()cpdog2s = pygame.sprite.Group()snowlist = []for i in range(0, 50):  # 建立50个雪花    snow=Snow()    snowlist.append(snow)scor=Fontf(screen)onoff = Truecrydog=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。

上述内容就是如何利用python来制作保护单身狗游戏,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

0