新闻动态

Pygame实战练习之保护单身狗游戏

发布日期:2022-01-01 15:21 | 文章来源:站长之家

导语

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

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

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

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

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

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

正文

首先准备好图片素材等:

bgm音乐必备:

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

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

游戏界面——

程序运行——

(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:
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 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):  # 建立50个雪花
 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:
  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。

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

到此这篇关于Pygame实战练习之保护单身狗游戏的文章就介绍到这了,更多相关Pygame 保护单身狗游戏内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

版权声明:本站文章来源标注为YINGSOO的内容版权均为本站所有,欢迎引用、转载,请保持原文完整并注明来源及原文链接。禁止复制或仿造本网站,禁止在非www.yingsoo.com所属的服务器上建立镜像,否则将依法追究法律责任。本站部分内容来源于网友推荐、互联网收集整理而来,仅供学习参考,不代表本站立场,如有内容涉嫌侵权,请联系alex-e#qq.com处理。

相关文章

实时开通

自选配置、实时开通

免备案

全球线路精选!

全天候客户服务

7x24全年不间断在线

专属顾问服务

1对1客户咨询顾问

在线
客服

在线客服:7*24小时在线

客服
热线

400-630-3752
7*24小时客服服务热线

关注
微信

关注官方微信
顶部