导语

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

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

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

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

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

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

正文

首先准备好图片素材等:

bgm音乐必备:

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

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

游戏界面——

程序运行——

(1)设置滚动的背景:

#地图滚动
import pygame
import 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 = 0self.x2 = 1280self.snowflag=False# 计算地图图片绘制坐标def action(self):self.x1 = self.x1 - 1self.x2 = self.x2 - 1if self.x1 <= -1279:self.x1 = 1279if 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 = 0self.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=Trueself.snowflag=Falseself.dogflag=0self.score=0self.scoreup=200self.gameover=Falseself.count=0def dogs_cpdogs(self,dogs,cpdogs):boooooooooooooooool=pygame.sprite.groupcollide(dogs,cpdogs,False,True)if boooooooooooooooool:self.score += self.scoreupprint(self.score)def dog_cpdog(self,dog,cpdog2s):booooooool=pygame.sprite.spritecollide(dog,cpdog2s,True)if booooooool:self.snowflag = Trueself.count += 1if 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 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 = 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=Nonewhile 1:for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()# player ctrlif event.type==pygame.KEYDOWN:if event.key==pygame.K_RIGHT:dog.movieRight=Trueif event.key == pygame.K_LEFT:dog.movieLeft=Trueif event.key==pygame.K_SPACE:if not dog.jumping:dog.jumping=Truedog.vUP = -14if event.type == pygame.KEYUP:if event.key == pygame.K_RIGHT:dog.movieRight=Falseif event.key==pygame.K_LEFT:dog.movieLeft=Falseif 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 = Falseif dog.jumping:if dog.vUP < 0:dog.vUP += 0.6elif dog.vUP >= 0:dog.vUP += 0.8dog.Y += dog.vUPif dog.Y >= 290:dog.jumping = Falsedog.Y = 290dog.vUP = 0.0if 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+=1scor.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 = 1280cpdog2.Y = 285cpdog2s.add(cpdog2)lasttimecreat=ticksfor m in cpdogs:m.draw_monster()if m.rect.x <=640:del mcpdogs.update()#snowif 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 = 0pygame.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 = 1snow.x += snow.vxsnow.y += snow.vyif snow.y > 500:snow.y = 0pygame.draw.circle(screen, [255, 255, 255], snow.getsnowpos(), 1)if not crydog:crydog=MySpritec()crydog.load("../image/crydog.png", 82, 62,3)crydog.X = 100crydog.Y = 285crydogs=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实战:慎点|虐单身狗的最高境界是…【附源码】相关推荐

  1. 04【Verilog实战】SPI协议底层硬件接口设计(附源码RTL/TB)

    脚  本:makefile 工  具:vcs 和 verdi 写在前面 这个专栏的内容记录的是个人学习过程,博文中贴出来的代码是调试前的代码,方便bug重现. 调试后的程序提供下载,[下载地址] 发现 ...

  2. 【Vue 实战项目】后台管理系统登录页详解附源码

    提示:前端查漏补缺,仅代表个人观点. 文章目录 一.先看效果图 二.实战步骤 1. 创建项目 2. 引入库 3. 登录页关键代码 三.页面源代码 总结 提示:项目源代码除了登录页面还有动态路由 一.先 ...

  3. 实战|仿应用宝下载并安装App(附源码)

    学更好的别人, 做更好的自己. --<微卡智享> 本文长度为2499字,预计阅读7分钟 仿应用宝下载安装App 前面几章我们学习了检测App是否安装,能过AsyncTask下载App并调用 ...

  4. 精讲前端实战项目之移动端网易云首页(附源码)

    本篇文章分享给学习前端的朋友,可能你们长时间的学习了理论知识,对html,css,JavaScript等基础知识已经是相当熟悉了.但是没有一个自己的作品,那是因为缺乏练习一些实战项目.今天这个就是一个 ...

  5. 【Python游戏】Python基于第三方库pygame实现一个魂斗罗小游戏,毕业设计必备 | 附源码

    前言 halo,包子们下午好 今天给打击整一个魂斗罗小游戏 很多小伙伴接触魂斗罗应该是在小时候的一个手柄游戏上面吧 我记得作为90后的我,玩这一款游戏是在小学的时候 废话不多说,直接上才艺 今天给大家 ...

  6. springboot流浪狗领养管理系统 毕业设计-附源码260839

    Springboot流浪狗领养管理 摘 要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认 ...

  7. MATLAB应用实战系列(五十三)-模拟退火算法(附源码)

    模拟退火算法 模拟退火算法在处理全局优化.离散变量优化等困难问题中,具有传统优化算法无可比拟的优势.这里描述模拟退火算法的原理及其基本框架结构,给出用模拟退火算法求解TSP问题的具体实现方法 以下是我 ...

  8. Netty实战:Springboot+Netty+protobuf开发高性能服务器 (附源码下载)

    Springboot-cli 开发脚手架系列 Netty系列:Springboot使用Netty集成protobuf开发高性能服务器 文章目录 Springboot-cli 开发脚手架系列 简介 1. ...

  9. Visual C++实现黑白棋游戏项目实战二:界面的设计与实现(附源码和资源 超详细)

    需要源码和资源请点赞关注收藏后评论区留言私信~~~ 黑白棋游戏的Visual C++工程采用MFC对话框模式进行开发,下面对它进行详细介绍 一.游戏菜单的实现 首先要在工程资源中添加一个菜单资源类,菜 ...

最新文章

  1. 微信小程序如何让获取view的高度
  2. JavaScript: 代码简洁之道
  3. 【赠书】图神经网络优质书籍,送你3本进行学习
  4. 遗传算法系统辨识matlab程序,8.8 基于遗传算法的机械手参数辨识 系统辨识理论及Matlab仿真课件.ppt...
  5. hdu 2874(LCA + 节点间距离)
  6. 996页阿里Android面试真题解析火爆全网,分享面经!
  7. 知识技能归档-SSL协议20210325
  8. CNN经典模型:VGGNet
  9. 人人都可以开发高可用高伸缩应用——论Azure Service Fabric的意义
  10. 报表开发工具FastReport开源代码2020首发更新!邀您免费下载
  11. 网站 小图标 大全 url
  12. 加密与启示录:Crypto是流着奶与蜜的“应许之地”
  13. SCC flex布局
  14. ppm与LSB含义,换算
  15. 圆形计算机配置清单,MarForm MMQ 200
  16. PCL implicit shape model 做目标识别分类
  17. zbox mysql_我服务器原来有apache和mysql,然后我把zbox的apache端口改成8000,mysql改成3307,无法打开网页...
  18. Pixel2Mesh-Tensorflow2
  19. java 上位机 socket_通讯编程上位机软件实现(SOCKET)——第二回
  20. 如何新建一个看不见的文件夹(我们的游戏都在里头)

热门文章

  1. 周迅 女明星卸妆后判若两人 (图)
  2. npm和cnpm(windows)安装步骤
  3. Spring+SpringMVC+Mybatis+Bootstrap的《网上书店系统》
  4. 机器学习入门--带着贝叶斯公式一步步实现单词拼写纠正器,这一篇就够了
  5. 第五届趣味编程大赛——A 苗童大作战之绝地求生
  6. 关于socket通信bind()返回值错误:10049
  7. IDEA Execute maven Goal
  8. QT外部程序,获取输入焦点
  9. 热门投影仪怎么选,小白必看投影仪测评
  10. CUDA、cuDNN安装