pygame闯关小游戏命悬一线之勇闯太空隧道.py

Python海龟宝典含200多个原创的用turtle模块制作的创意程序,原名《Python趣味编程200例》。准备参加全国创意编程与智能设计大赛的同学们可以用来做参考。

"""命悬一线之通闯太空隧道.py 这是用pygame制作一个小游戏,操作一个小猫闯关,碰撞检测用的是mask"""

import pygame
from pygame.locals import *

gamename = "《命悬一线之勇闯太空隧道》"
pygame.init()
pygame.mixer.init()
screenWidth ,screenHeight=480,360

screen = pygame.display.set_mode((screenWidth,screenHeight))
pygame.display.set_caption(gamename + "_作者:李兴球_mask碰撞实例_风火轮少儿编程")

failSound = pygame.mixer.Sound("Fail.wav")
hurtSound = pygame.mixer.Sound("hurt.wav")
succSound = pygame.mixer.Sound("小号胜利.wav")

def playmusic():
    pygame.mixer.music.load("TheAvengers.wav")
    pygame.mixer.music.play(-1,0)
    
def start_shell():
    """显示开始界面"""
    封面图= pygame.image.load("封面设计《命悬一线》.png")
    running = True
    while running:
        for event in pygame.event.get():
            if event.type==QUIT:pygame.quit()
            if event.type==KEYDOWN or event.type==MOUSEBUTTONDOWN:running = False
        screen.blit(封面图,(0,0))
        pygame.display.update()
    

class Ball():
    def __init__(self,imageRight,imageLeft,x,y):
         
        self.color = color
        self.imageRight = imageRight           # 向右造型
        self.imageLeft = imageLeft             # 向左造型     
        self.image = imageRight                # 初始为向右的图        
        self.rect = self.image.get_rect()
        self.rect.x = x
        self.rect.y = y
        self.xspeed = 0
        self.yspeed = 0
        self.delete = 0
        self.mask = pygame.mask.from_surface(self.image) # 用于遮罩碰撞检测
        self.lifes = 1                                   # 生命个数
    def move(self,direction):
        if self.lifes>0:
            self.rect.move_ip(self.xspeed*direction,self.yspeed*direction)
 
    def draw(self):
        screen.blit(self.image,self.rect)

def main():
    # 以下字典用来描述每个关卡的出口,四元组分别表示上,下,左,右,值为0时,表时没有出口,值为1时,表示有出口.
    # 由于关卡号刚好从0,开始,所以用列表也可以.
    ed = {0:(0,0,0,1),1:(1,0,1,0),2:(0,1,0,1),3:(0,1,1,0),4:(1,0,0,0)}      # 表示每关出口标志,上下左右
    关卡号  = 0
    
    背景1 = pygame.image.load("背景1.png").convert_alpha()
    背景2 = pygame.image.load("背景2.png").convert_alpha()
    背景3 = pygame.image.load("背景3.png").convert_alpha()
    背景4 = pygame.image.load("背景4.png").convert_alpha()
    背景5 = pygame.image.load("背景5.png").convert_alpha()
    背景列表= [背景1,背景2,背景3,背景4,背景5]    
    背景mask = [pygame.mask.from_surface(背景) for 背景 in 背景列表]

    小飞猫 = pygame.image.load("飞猫.png").convert_alpha()
    小飞猫右 =pygame.transform.scale(小飞猫,(30,20))
    小飞猫左 =pygame.transform.flip(小飞猫右,True,False)
    
    ball = Ball(小飞猫右,小飞猫左,30,280)
    
    clock = pygame.time.Clock()
    running = True
    while running:
        for event in pygame.event.get():
            if event.type == QUIT:pygame.quit()
        keys = pygame.key.get_pressed()
        if keys[K_RIGHT]:ball.xspeed = ball.xspeed + 0.1;ball.image = ball.imageRight
        if keys[K_LEFT]:ball.xspeed = ball.xspeed - 0.1;ball.image  = ball.imageLeft
        if keys[K_DOWN]:ball.yspeed = ball.yspeed + 0.1
        if keys[K_UP]:ball.yspeed = ball.yspeed - 0.1
        
        pass       
        
        ball.draw()
        pygame.display.update()
        clock.tick(60)

     # 停止背景音乐
    pygame.mixer.music.stop()
    笑脸图=pygame.image.load("笑脸.png")
    哭脸图=pygame.image.load("哭脸.png")
    f = pygame.font.Font("C:/windows/fonts/msyh.ttf",20)
    if ball.lifes==0 :       
        fontimage = f.render("游戏结束,你失败了!",True,(255,0,0))
        failSound.play()                                         # 播放失败音效
    else:
        fontimage = f.render("游戏结束,你成功了!",True,(255,255,125))
        succSound.play()                                         # 播放胜利音效
    running = True
    while running:
        for event in pygame.event.get():
            if event.type == QUIT:running=False
            if event.type ==MOUSEBUTTONDOWN:running=False
        screen.fill((0,0,0))
        if ball.lifes==0:
            screen.blit(哭脸图,(screenWidth//2-100,50))
        else:
            screen.blit(笑脸图,(screenWidth//2-80,50))
        screen.blit(fontimage,(screenWidth//2-100,80+screenHeight/2))
        pygame.display.update()
        
    pygame.quit()
    

if __name__ == "__main__":
    
    playmusic()
    start_shell()
    main()
    

 

如需要下载完整源代码及素材,请扫码付款:

VIP免费查看

已有0人支付

本站所有作品,教程等皆为原创,版权所有。只供个人及单位内部研究使用,对外展示或传播必需经本站同意,且注明来自本站。培训机构等用本站资源培训学生,需经本站授权。一旦付款,表示同意本站知识付费原则:数字商品,不支持退款。亦可直接向微信号scratch8付款购买。入住QQ群:225792826 和爱好者共同交流,并且能下载免费提供的Python资源(需提供真实姓名才可入群)
李兴球的博客_Python创意编程技术前沿_pygame » pygame闯关小游戏命悬一线之勇闯太空隧道.py

李兴球Python微信公众号文章列表

Python游戏海龟模块教程说明书与案例若干免费发放

爱的纪念_Python创意情景动画源代码解析

少儿Python编程到底学些什么?这些代码或许回答了问题.

Python编程家长会花絮_萍乡中小学Python家长会现场

火星路上等着你_少儿从小学什么最好呢?

国家大力整顿教育培训机构,Scratch或Python少儿编程还有得教吗?

鸿蒙系统支持Python开发_可视化编程特别兴趣小组

Scratch作品转Python作品_小猴接桃

python海龟数据可视化。第七次全国人口普查历年数据图表

你的孩子Python编程学到哪个阶段了?给孩子报编程的家长,务必仔细一读。

五一神女来对话,看看她们聊什么?赠Python教案等。

五一快乐有大礼,告诉大家我是如何上Python课的。

Python名堂多,趣味到处有,劈开机械手,帧帧是图片。速算达人之猫狮大战正在进行。 逐字动画不独享,自动生成皆有它。2行代码自动生成字幕gif动画。 Python之潮来临,我在安源区教师科技创新能力的Python讲座

小心你的Python程序,它会是你的一面镜子。小方块闯迷宫.py源代码简析。送Scratch算法集。?

铃儿响钉铛_音效怎能忘_Python配音之Pygame混音器

人面桃花相映红_winsound模块简介

《Python昨晚我想你了》_开源的游戏海龟模块实例案例浅析

《八猫联动初体验》_来自游戏海龟模块的问候

喜爱春天的人儿啊 心地纯洁的人_Python逐行像素显示

旋转之三叶炫彩扇_蟒蛇与海龟的表演

彩虹欢迎字幕_三模合体滚图形

《Python海龟宝典》简介

100%错误的算法还在用,明明没有错别字,说我有11个错别字

奇怪的Python代码,谁能帮我解释一下??

人造地球系统让人类文明充满整个宇宙之Python32768版

深夜,是什么把你的大脑搞成一团浆糊!再谈少儿编程!

5线城市萍乡的少儿Python寒假班学的是什么内容?

关于纯少儿编程课程进化的自然选择

Python海龟画图经典作品_国庆中秋双重喜庆源代码免费下载

海龟为什么要自杀!turtle制作游戏秘籍之一

朋友,你是否知道我在仰望着你_Python神笔马良案例集

酷酷的爆炸效果_Python海龟画图不仅仅是画图

虫子满屏爬_三bug多线程示例程序浅析 少儿Python视频课程A级简介

给的gif图片加文字水印_拆帧与合帧(免费下载180个Python创意源码

用Python制作酷炫图形之如意金箍棒_颜色增加模块应用

简单的用Python做酷炫图形与动画

sb3转exe,sb3素材提取器,编程小子apk, 未公开的pygame游戏集/scratch/python少儿编程免费下载集合

夜幕下的霓虹

学本领,探索更大的世界!

李兴球博客 风火轮编程主页
error: Content is protected !!