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

导语 各位戏精大家好!我是木木子,这个中秋已经结束了,你们都带着对象回家了码?
中秋那几天朋友圈简直是大型秀恩爱现场。
又是一年中秋夜,依旧凭实力单身!呼吁大家记得保护下单身狗啊喂!
python|Pygame实战(慎点|虐单身狗的最高境界是…【附源码】)
文章图片
?
python|Pygame实战(慎点|虐单身狗的最高境界是…【附源码】)
文章图片

作为一条人畜无害可可爱爱的单身狗
每年的假期几乎都被伤的体无完肤,今年我们不仅要好好生存,还要勇敢报复,让情侣们知道:
单身狗不是这么好欺负的~单身狗们报仇吧!今天带大家写一款贼有趣的单身狗小游戏~
?
python|Pygame实战(慎点|虐单身狗的最高境界是…【附源码】)
文章图片
?
正文 首先准备好图片素材等:
python|Pygame实战(慎点|虐单身狗的最高境界是…【附源码】)
文章图片

python|Pygame实战(慎点|虐单身狗的最高境界是…【附源码】)
文章图片

bgm音乐必备:

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

【python|Pygame实战(慎点|虐单身狗的最高境界是…【附源码】)】?先上效果图嘿嘿嘿 看好哈:
游戏界面——
python|Pygame实战(慎点|虐单身狗的最高境界是…【附源码】)
文章图片

程序运行——
python|Pygame实战(慎点|虐单身狗的最高境界是…【附源码】)
文章图片

(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 = 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# 返回雪花坐标位置

python|Pygame实战(慎点|虐单身狗的最高境界是…【附源码】)
文章图片
(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=0def 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 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 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=ticksfor 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()

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

?总结 好啦!单身狗大战即将开始,come on。
哈哈哈哈 这游戏蛮有趣的撒!你们的支持是我最大的动力,记得三连哦~木啊!
完整的源码+素材老规矩源码基地见: 点击蓝色字体即可免费领取啦!
python|Pygame实战(慎点|虐单身狗的最高境界是…【附源码】)
文章图片
?

    推荐阅读