资讯专栏INFORMATION COLUMN

Pygame实战:慎点|虐单身狗的最高境界是…【附源码】

DDreach / 2633人阅读

摘要:导语各位戏精大家好我是木木子,这个中秋已经结束了,你们都带着对象回家了码中秋那几天朋友圈简直是大型秀恩爱现场。

导语

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

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

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

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

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

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

正文

首先准备好图片素材等:

bgm音乐必备:

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

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

游戏界面——

程序运行——

(1)设置滚动的背景:

#地图滚动import pygameimport randomclass 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 pygameclass 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 MySpritecpygame.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=Nonewhile 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。

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

完整的源码+素材老规矩源码基地见: 点击蓝色字体即可免费领取啦!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/120981.html

相关文章

  • Pygame实战:记忆差怎么办?别急,增强记忆力的小游戏送给你~【越玩越上瘾】

    摘要:导语哈喽大家好,我是木木子。首先准备好相应的图片这里准备的。 导语 哈喽!大家好,我是木木子。 今日游戏更新系列来啦,是不是很想知道今天的游戏是什么类型的?立马安排上—— 随着年纪的不断上升,我们开始丢三落四,忘东忘西,记忆力越来越差了! 这不止大人随着年纪增大记忆力退却,其实很多小孩子也...

    nanfeiyan 评论0 收藏0
  • Pygame实战:方块连接世界,云游大好河山—《我的世界》已上线!确定不进来康康嘛?

    摘要:导语我的世界是一款自由度极高的游戏,每个新存档的开启,就像是作为造物主的玩家在虚拟空间开辟了一个全新的宇宙。主题我的世界版本图片效果图如下。 导语 《我的世界》是一款自由度极高的游戏,每个新存档的开启,就像是作为造物主的玩家在虚拟空间开辟了一个全新的宇宙。 ​ 方块连接世界,云游大好河山。 ...

    icattlecoder 评论0 收藏0
  • 听说你想 520 表白

    摘要:源码很简单键盘按,然后输入表白网页生成器打开网站,填入要表白的内容生成好的网页百度传情其实百度很早就有个传情功能,直接百度输入表白即可。 又到520,一个狂虐单身狗的日子,看看知乎的热门话题:showImg(https://segmentfault.com/img/remote/1460000019264481); 这里给大家提供几个虐狗的新姿势。 69 表白从 69 开始,给对方发个...

    Mr_zhang 评论0 收藏0
  • Pygame实战:风靡全球的经典泡泡龙小游戏来袭,你会喜欢嘛?(源码

    摘要:来来来,跟着木木子一起开始玩泡泡龙游戏吧正文一准备中游戏规则游戏玩法是玩家从下方中央的弹珠发射台射出彩珠,等于个同色珠相连则会消失。直到完全消除界面上的同款泡泡即可胜利,还可以跟小小伙伴儿比拼,看谁用的彩球越少。 导语 Python版的消除类的游戏还是很多的,木木子之前也是推过不少~ ?源码...

    Turbo 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<