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

导语

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

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

又是一年节日每年都是一个人的朋友, 依旧凭实力单身!呼吁大家记得保护下单身狗啊喂!

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

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

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

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

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

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

正文

首先准备好图片素材等:

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

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

bgm音乐必备:

import pygame

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

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

游戏界面——

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

程序运行——

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

(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:" # 绘制地图的两张图片 def draw(self): self.main_scene.blit(self.image1, (self.x1,0)) self.main_scene.blit(self.image2, (self.x2,0)) class snow(): 雪花的竖直速度 __init__(self): self.x="0" 雪花的横坐标 self.y="0" 雪花的纵坐标 self.vx="0" 雪花的水平速度 self.vy="0" 初始化雪花横坐标 #初始化雪花纵坐标 getsnowpos(self): return self.x,self.y 返回雪花坐标位置< code></=>

Pygame实战:慎点|虐单身狗的最高境界是…【附源码】(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):  # &#x5EFA;&#x7ACB;50&#x4E2A;&#x96EA;&#x82B1;
    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: dog.vup < 0: elif>= 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)

        #&#x78B0;&#x649E;&#x68C0;&#x6D4B;
            collidetest.dogs_cpdogs(dogs,cpdogs)
            collidetest.dog_cpdog(dog,cpdog2s)
            #&#x80CC;&#x666F;
            background.action()
            background.draw()
            #&#x5206;&#x6570;
            # scor.beginpage()
            collidetest.score+=1
            scor.displayScore(collidetest.score)
            #&#x65F6;&#x95F4;&#x63A7;&#x5236;
            ticks = pygame.time.get_ticks()
            #player&#x7ED8;&#x5236;
            dogs.update(ticks)
            dogs.draw(screen)

            cpdog2s.update(ticks)
            cpdog2s.draw(screen)
            if ticks >lasttimecreat  + random.randint(1000,20000):
                 #&#x751F;&#x6210;&#x969C;&#x788D;&#x7269;
                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: # 每个雪花位置的变换 random.randint(0,1): snow.vx="random.randint(-3,3)" 雪花的横向速度 snow.vy="1" 雪花的竖直速度 snow.x +="snow.vx" 雪花的横轴移动位置 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&#x7ED8;&#x5236;
            crydogs.update(ticks)
            crydogs.draw(screen)
            scor.gameoverrrrrrrrr()
            if crydog.X>1280:
                sys.exit()
    fpsset.tick(60)
    pygame.display.update()</=640:></=180></=540>

Pygame实战:慎点|虐单身狗的最高境界是…【附源码】效果图:游戏规则躲避情侣狗,一直奔跑加分!

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

​总结

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

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

🎯完整的免费源码领取处:找我吖!源码见文末哈自取~

🎉往期推荐阅读——

项目6.0 中国象棋游戏👍

Pygame实战:中国象棋人机对抗赛今开战、谁占上风?要不要来一盘试试?

项目5.3 《鱿鱼游戏》之《一二三木头人》小游戏

当《鱿鱼游戏》强势来袭:”一、二、三,木头人,思密达。”你还在恐惧嘛?

项目4.9 天天酷跑小游戏

《天天酷跑》是不是真的不火了?Python发布”酷跑+”计划。

项目1.1 扫雷

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

🎄文章汇总——

项目1.0 Python—2021 |已有文章汇总 | 持续更新,直接看这篇就够了

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

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

Original: https://blog.csdn.net/weixin_55822277/article/details/123400540
Author: 顾木子吖
Title: Pygame实战:慎点|虐单身狗的最高境界是…【附源码】

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/780315/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球