Pygame實(shí)戰(zhàn)練習(xí)之保護(hù)單身狗游戲
導(dǎo)語
各位戲精大家好!我是木木子,這個(gè)中秋已經(jīng)結(jié)束了,你們都帶著對象回家了碼?
中秋那幾天朋友圈簡直是大型秀恩愛現(xiàn)場。
又是一年中秋夜,依舊憑實(shí)力單身!呼吁大家記得保護(hù)下單身狗啊喂!
作為一條人畜無害可可愛愛的單身狗
每年的假期幾乎都被傷的體無完膚,今年我們不僅要好好生存,還要勇敢報(bào)復(fù),讓情侶們知道:
單身狗不是這么好欺負(fù)的~單身狗們報(bào)仇吧!今天帶大家寫一款賊有趣的單身狗小游戲~
正文
首先準(zhǔn)備好圖片素材等:

bgm音樂必備:
import pygame
class Sound():
def __init__(self):
pygame.mixer.music.load('../sound/baab.mp3')
pygame.mixer.music.play()
先上效果圖嘿嘿嘿 看好哈:
游戲界面——

程序運(yùn)行——

(1)設(shè)置滾動(dòng)的背景:
#地圖滾動(dòng)
import pygame
import random
class GameBackground(object):
# 初始化地圖
def __init__(self, scene):
# 加載相同張圖片資源,做交替實(shí)現(xiàn)地圖滾動(dòng)
self.image1 = pygame.image.load("../image/background.png")
self.image2 = pygame.image.load("../image/background.png")
# 保存場景對象
self.main_scene = scene
# 輔助移動(dòng)地圖
self.x1 = 0
self.x2 = 1280
self.snowflag=False
# 計(jì)算地圖圖片繪制坐標(biāo)
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 # 雪花的橫坐標(biāo)
self.y = 0 # 雪花的縱坐標(biāo)
self.vx = 0 # 雪花的水平速度
self.vy = 0
self.x = random.randint(0,1280) # 初始化雪花橫坐標(biāo)
self.y = random.randint(0,390) #初始化雪花縱坐標(biāo)
def getsnowpos(self):
return self.x,self.y # 返回雪花坐標(biāo)位置
(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)主函數(shù):
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個(gè)雪花
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()
#分?jǐn)?shù)
# scor.beginpage()
collidetest.score+=1
scor.displayScore(collidetest.score)
#時(shí)間控制
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:
# 每個(gè)雪花位置的變換
# if random.randint(0,1):
snow.vx = random.randint(-3,3) # 雪花的橫向速度
snow.vy = 1 # 雪花的豎直速度
snow.x += snow.vx # 雪花的橫軸移動(dòng)位置
snow.y += snow.vy # 雪花的縱軸移動(dòng)位置
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()
效果圖:游戲規(guī)則躲避情侶狗,一直奔跑加分!

總結(jié)
好啦!單身狗大戰(zhàn)即將開始,come on。
哈哈哈哈 這游戲蠻有趣的撒!你們的支持是我最大的動(dòng)力,記得三連哦~木?。?/p>
到此這篇關(guān)于Pygame實(shí)戰(zhàn)練習(xí)之保護(hù)單身狗游戲的文章就介紹到這了,更多相關(guān)Pygame 保護(hù)單身狗游戲內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python 根據(jù)相鄰關(guān)系還原數(shù)組的兩種方式(單向構(gòu)造和雙向構(gòu)造)
本文主要介紹了Python 根據(jù)相鄰關(guān)系還原數(shù)組的兩種方式,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07
python庫TextDistance量化文本之間的相似度算法探究
這篇文章主要為大家介紹了python庫TextDistance量化文本之間的相似度算法探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
詳解Python數(shù)據(jù)分析--Pandas知識點(diǎn)
這篇文章主要介紹了Python數(shù)據(jù)分析--Pandas知識點(diǎn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
python實(shí)現(xiàn)定時(shí)壓縮指定文件夾發(fā)送郵件
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)定時(shí)壓縮指定文件夾發(fā)送郵件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04
ansible作為python模塊庫使用的方法實(shí)例
ansible是一個(gè)python package,是個(gè)完全的unpack and play軟件,對客戶端唯一的要求是有ssh有python,并且裝了python-simplejson包,部署上簡單到發(fā)指。下面這篇文章就給大家主要介紹了ansible作為python模塊庫使用的方法實(shí)例,需要的朋友可以參考借鑒。2017-01-01
用Python將IP地址在整型和字符串之間輕松轉(zhuǎn)換
這篇文章主要給大家介紹了利用Python將IP在整型和字符串之間輕松轉(zhuǎn)換的相關(guān)資料,文中還跟大家分享了Python下利用正則表達(dá)式來匹配校驗(yàn)一個(gè)字符串是否為ip地址的方法,需要的朋友可以參考借鑒,下面來一起看看吧。2017-03-03

