导语

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

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

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

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

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

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

正文

首先准备好图片素材等:

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. 讯飞语音识别_讯飞输入法持续功能创新 语音输入最受用户认可
  2. 用神经网络分类随机数与无理数
  3. 树型列表结构宽度调整_Material Design 网格列表
  4. java 中时间计算_java中关于时间的计算
  5. 手游server之数据IO进化
  6. python求组合数_求组合数的算法_Cppowboy's Blog - SegmentFault 思否
  7. mysql -a_a|MySQL基础命令
  8. 《腾讯Android自动化测试实战》— Android 书籍
  9. vant ui 官方文档_转载:微信小程序UI组件库合集
  10. pandas dataframe遍历_Pandas循环提速7万多倍!Python数据分析攻略!
  11. 用Visual Studio调试asp程序
  12. 工业镜头和民用镜头的特点和区别
  13. python声音识别歌曲_听歌识曲--用python实现一个音乐检索器
  14. 关于使用KEIL建立STM32项目(附带建立好的工程以及注意事项)
  15. 我丈母娘家的小店竟然被Dos攻击了
  16. VS2010向工具箱中添加控件解决 Microsoft Communications Control,未能实例化 设计时授权
  17. Linux ls 命令学习和简单使用
  18. 俄罗斯一家庭与世隔绝40年 不知有二战(图)
  19. 唐骏:我的成功可以复制
  20. 主流商业智能(BI)工具的比较(三):Qlik与Domo

热门文章

  1. 在服务器上面安装小幺鸡
  2. 对offsetLet,offsetTop,scrollLeft,scrollTop几个方法的理解
  3. Linux标准I/O与文件I/O操作的区别
  4. 杀死语音电话的不是微信,是骚扰
  5. win10 在线、离线安装microsoft store 版 WSL
  6. canvas画布制作签名
  7. 请进来,走出去!武工院与武汉猴面鱼科技等展开校企合作
  8. HDU-6740-J. MUV LUV EXTRA
  9. 使用iframe页面父子传参数
  10. 《淘宝店铺设计装修一册通》一2.3 调整图片