精华内容
下载资源
问答
  • 可以实现简单运动的交互。左右键移动,上键跳跃,下键下落,空格箭发射光波(可以抵消射来的箭)...点击start开始游戏,当主角血量减光后游戏结束。自己闲着没事写着玩的,可以挑战更高的积分,免费下载!欢迎大家交流~
  • pygame小游戏源码

    2017-06-19 22:31:27
    网上找到的基于Python和pygame开发的打飞机小游戏源代码以及音视频文件集。
  • 原代码链接 ...我复制源代码,然后运行,实际py文件运行没问题,游戏能按照需求运行,但是出现了报错。 我开始不以为然,但是在py转成exe的后,exe文件无法运行。于是我开始着手于对这个报错的处...

    原代码链接

    版本:Python 3.8.0 (tags/v3.8.0:fa919fd, Oct 14 2019, 19:37:50) [MSC v.1916 64 bit (AMD64)] on win32

    1.问题出现

    我复制源代码,然后运行,实际py文件运行没问题,游戏能按照需求运行,但是出现了报错。
    我开始不以为然,但是在py转成exe的后,exe文件无法运行。于是我开始着手于对这个报错的处理。
    代码行

    rotatedRect1.center = (Window_Width / 2, Window_Height / 2
    

    DeprecationWarning: an integer is required (got type float). Implicit conversion to integers using int is deprecated, and may be removed in a future version of Python.

    弃用警告:需要一个整数(got类型为float)。不建议使用__int__隐式转换为整数,并且在将来的Python版本中可能会删除隐式转换。
    但实际“rotatedRect1.center”是tuple元组,具体我也不太清楚

    2. 原因分析

    后查询得知,这是由于代码类型的问题。
    这行代码的类型不对,应该要整型的,但是捕获的是浮点型。???原文翻译是这样,但实际可能不对,总之是类型错误

    3.解决

    (因为确实不知道怎么把这个坐标转成)
    于是我就用了简单粗暴的方法,直接把这行代码拆成两行。
    原代码:

    rotatedRect1.center = (Window_Width / 2, Window_Height / 2	# 定义中心点
    

    拆分后:

    rotatedRect1.centerx = int(Window_Width / 2)	# 定义中心的x,强制转成整型
    rotatedRect1.centery = int(Window_Height / 2)	# 定义中心点y,强制转成整型
    

    这样之后,后续还是有两处一样的报错。但是不影响exe文件的运行了。

    gameRect.midtop = (Window_Width / 2, 10)
    overRect.midtop = (Window_Width / 2, gameRect.height + 10 + 25)
    

    总结
    这个代码在定义关键的左边的时候,需要的是整型(int),但是捕获的却是其他,目前我还没找到好的办法完全解决。
    但是解决了中心点的问题(rotatedRect1.center),起码exe文件能运行了。

    展开全文
  • python编程基于pygame小游戏之移动小火箭 目的:编写一个小游戏,开始时屏幕中央有一个小火箭,而玩家可以使用四个方向键上下左右移动火箭,并且要确保火箭不会移动到屏幕外面 一下是基于pygame编程的源代码 ![游戏...

    python编程基于pygame小游戏之移动小火箭
    目的:编写一个小游戏,开始时屏幕中央有一个小火箭,而玩家可以使用四个方向键上下左右移动火箭,并且要确保火箭不会移动到屏幕外面
    一下是基于pygame编程的源代码
    ![游戏的相关设置在这个函数中](https://img-blog.csdnimg.cn/20181125201120356.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzc5NzkwOA==,size_16,color_FFFFFF,t_70)[在这里插入图片描述(https://img-blog.csdnimg.cn/20181125201038516.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzc5NzkwOA==,size_16,color_FFFFFF,t_70)
    这是主函数,通过主函数调用其它功能得函数这是主函数,通过主函数调用其它功能得函数关于火箭得初始化和位置更新以及绘制关于火箭得初始化和位置更新以及绘制动态监听函数和屏幕的更新在这里插入图片描述动态监听函数和屏幕的更新结果图结果图

    展开全文
  • Python雷电小游戏、战机小游戏源代码源程序

    千次阅读 多人点赞 2020-10-09 11:27:37
    Python雷电小游戏、战机小游戏源代码,单机版,相关图片及声音素材包请在网盘下载:https://pan.baidu.com/s/1zGxfSVWCBueDCscxL5bNCg,提供码请在公众号回复:雷电提取码。 ''' 公众号:Python代码大全 ''' import...

    Python雷电小游戏、战机小游戏源代码,单机版,相关图片及声音素材包请在网盘下载:https://pan.baidu.com/s/1zGxfSVWCBueDCscxL5bNCg,提供码请在公众号回复:雷电提取码。在这里插入图片描述
    在这里插入图片描述

    '''
    公众号:Python代码大全
    '''
    import pygame, os
    import time
    import random
    from pygame.sprite import Sprite
    from pygame.sprite import Group
    
    
    def fire_music():
        pass
        # 设置开火音乐
        # effect = pygame.mixer.Sound('sounds/fire.wav')
        # pygame.mixer.Sound.play(effect)
    
    class Boss(Sprite):
        def __init__(self,boss_img_name):
            super().__init__()
            # 加载BOSS图片
            self.image = pygame.image.load('图片/'+boss_img_name+'.png').convert_alpha()
            # 转换BOSS大小
            # self.image = pygame.transform.scale(self.image, (1, 12))
            # 生成BOSS矩形框架
            self.rect = self.image.get_rect()
            self.blood = 1000
            # boss左右移动的速度
            self.speed = 3.5
    
        def move(self):
            if self.rect.centerx>=512:
                self.speed =-self.speed
            if self.rect.centerx<=0:
                self.speed = -self.speed
            self.rect.centerx +=self.speed
    
    
    
    class Enemy(Sprite):
        def __init__(self,screen):
            # 必须设置继承精灵 不然在使用精灵函数时会报错
            super().__init__()
            # 获取屏幕对象
            self.screen = screen
            # 随机 生成5个编号
            alien_num = random.randint(1,5)
            # 随机 加载五个飞机中的某个
            self.image = pygame.image.load('图片/alien_' + str(alien_num) + '.png')
            # picture = pygame.transform.scale(picture, (1280, 720))
            self.image = pygame.transform.scale(self.image,(62,62))
            # 获取飞机的 rect
            self.rect = self.image.get_rect()
            # 击落本机获得的分数
            self.score = 10
            # 加载子弹的图片
            self.bullet_img = pygame.image.load("图片/alien_bullet.png").convert_alpha()
            self.bullet_img = pygame.transform.scale(self.bullet_img, (12, 12))
            # 以下为可以调节子弹尺寸的代码
            # picture = pygame.transform.scale(picture, (1280, 720))
            #飞机的移动速度
            self.speed = random.randint(3,5)
    
            #生成子弹精灵组合
            self.bullets = Group()
            # 敌机射击频率
            self.shoot_frequency = 0
    
        # 飞机出现
        def move(self):
            self.rect.top += 5
            #暂时不用射击
            # self.shoot()
            # self.moveBullet()
        # 发射子弹
        def shoot(self):
            if self.shoot_frequency % 200 == 0:
                bullet = Enemy_Bullet(self.bullet_img, self.rect.midbottom)
                self.bullets.add(bullet)
            self.shoot_frequency += 1
            if self.shoot_frequency > 200:
                self.shoot_frequency = 1
        # 删除子弹
        def moveBullet(self):
            for bullet in self.bullets:
                bullet.move()
                if bullet.rect.bottom < 0:
                    self.bullets.remove(bullet)
        # 绘制子弹
        def drawBullets(self, scr):
            self.bullets.draw(scr)
    
    
    class Enemy_Bullet(pygame.sprite.Sprite):
        def __init__(self, init_pos):
            pygame.sprite.Sprite.__init__(self)
    
            self.image = pygame.image.load("图片/alien_bullet.png").convert_alpha()
            self.image = pygame.transform.scale(self.image, (12, 12))
            self.rect = self.image.get_rect()
            # 敌机子弹初始位置设置
            self.rect.midbottom = init_pos
            self.rect.centery +=36
            self.speed = 8
    
        def move(self):
            self.rect.top += self.speed
    class MyHero(Sprite):
        _rate = 100 # 每帧停留的毫秒数
        def __init__(self,screen,size = 1):
            super().__init__()
            # 获取屏幕对象
            self.screen = screen
            # 获取整张图片
            self.image_big = pygame.image.load('图片/hero.png').convert_alpha()
            # subsurface 形成大图的子表面框架
            # 获取飞机正面图片
            self.image = self.image_big.subsurface(pygame.Rect(120, 0, 318 - 240, 87))
            # 获取飞机正面矩形框架尺寸
            self.rect = self.image.get_rect()
            # 获取屏幕对象矩形
            self.screen_rect = screen.get_rect()
            # 获取屏幕正中x坐标
            self.rect.centerx = self.screen_rect.centerx
            # 获取屏幕底部y坐标
            self.rect.centery = self.screen_rect.bottom - self.rect.height
            # 设置飞机初始位置
            self.centerX = float(self.rect.centerx)
            self.centerY = float(self.rect.centery)
            # 飞机尾焰
            self.air = None
            # 设置飞机尾焰位置
            self.air_rect = pygame.Rect(self.centerX - 20,self.centerY+int((self.rect.height+72)/2)-10-36,40,72)
    
            #玩家所有发射子弹的集合
            self.bullets = Group()
            self.bullet_image = pygame.image.load('图片/bullet_1.png').convert_alpha()
    
        # 子弹射击
        def shoot(self):
            # 产生一颗子弹实例
            bullet = Bullet(self.bullet_image,self.rect.midtop)
            # 在group子弹精灵集合中加入子弹
            self.bullets.add(bullet)
        # 子弹删除
        def moveBullet(self):
            # 逐个检查子弹精灵集合 到达屏幕顶端的子弹删除
            for bullet in self.bullets:
                bullet.move()
                if bullet.rect.bottom < 0:
                    self.bullets.remove(bullet)
        # 子弹显示
        def drawBullets(self, scr):
            # 将精灵集合中的子弹绘制到屏幕上
            self.bullets.draw(scr)
    
    
    
        # 向上飞时,增加喷射火焰
        def set_air(self, case):
            if case == 'up':
                air = pygame.image.load('图片/air.png').convert_alpha()
                img = air.subsurface(pygame.Rect(80, 0, 50, 87))
                self.air = img
            elif case == 'remove':
                self.air = None
    
        # 根据移动方向获取飞机移动状态的图片
        def set_image(self, case):
            if case=='left':
                rect = pygame.Rect(195,0,318-248,87)
                image = self.image_big.subsurface(rect)
            elif case =='right':
                rect = pygame.Rect(195,0,318-248,87)
                image = pygame.transform.flip(self.image_big.subsurface(rect), True, False)
            elif case == 'up' or case == 'down':
                rect = pygame.Rect(120, 0, 318 - 240, 87)
                image = self.image_big.subsurface(rect)
            self.image = image
    
    class Bullet(pygame.sprite.Sprite):
        def __init__(self, bullet_img, init_pos):
            pygame.sprite.Sprite.__init__(self)
            self.image = bullet_img
            self.rect = bullet_img.get_rect()
            self.rect.midbottom = init_pos
            self.speed = 25
    
        def move(self):
            self.rect.top -= self.speed
    
    
    # 初始化pygame
    pygame.init()
    # pygame.mixer.init()
    # pygame.mixer_music.load('sounds/enviro.mp3') # 加载播放音乐
    # pygame.mixer.music.play(-1) #-1 为循环播放
    # 设置游戏主题
    pygame.display.set_caption('AirCraft')
    # 初始化屏幕大小
    screen = pygame.display.set_mode((512,768))
    
    # 设置游戏背景图片
    # 游戏刚开始时的背景图
    bg_img0 = pygame.image.load('图片/start_bg.jpg').convert()
    # 加载游戏开始图标
    start_img = pygame.image.load('图片/start.png').convert_alpha()
    start_rect = start_img.get_rect()
    start_rect.centerx = 262
    start_rect.centery = 455
    #  游戏进行中的背景图
    bg_img1 = pygame.image.load('图片/map1.jpg').convert()
    bg_img2 = bg_img1.copy()
    # 游戏结束时的背景图
    bg_img3 = pygame.image.load('图片/map3.jpg').convert()
    # 加载游戏结束图标
    gameover_img = pygame.image.load('图片/gameover.png').convert_alpha()
    # 加载游戏成功图标
    gamesuccess = pygame.image.load('图片/success.png').convert_alpha()
    
    # 加载重玩图标
    restart_img = pygame.image.load('图片/restart.png').convert_alpha()
    restart_rect = restart_img.get_rect()
    restart_rect.centerx = 249
    restart_rect.centery = 420
    # 背景图片初始位置
    pos_y1 = -768
    pos_y2 = 0
    
    # 实例化BOSS
    boss = Boss('boss_1')
    bosses = Group()
    bosses.add(boss)
    # 测试主角图片
    # air = pygame.image.load('图片/air.png').convert_alpha()
    # img = air.subsurface(pygame.Rect(80, 0, 50, 87))
    # image_big = pygame.image.load('图片/hero.png').convert_alpha()
    # image = image_big.subsurface(pygame.Rect(195,0,318-248,87))
    
    # 生成我方飞机
    student_plane = MyHero(screen)
    
    # 生成敌方飞机
    # 生成敌机group
    enemies = Group()
    # 生成敌机子弹
    enemy_bullets = Group()
    max_enemies = 9  # 设置敌机数量总数为9
    # 敌机随机出现的节奏 下方randint参数 为43,55
    ran1,ran2 = 30,40
    
    
    # 生成计时频率变量
    sec = 0
    # 生成分数
    score = 0
    # 设置系统字体
    my_font = pygame.font.Font('fonts/msyh.ttf', 18)
    
    # 游戏主循环
    # 设置游戏状态  开始 结束
    game = 'wait'
    
    while True:
        # 游戏在等待状态
        if game =='wait':
            # 最小游戏框架一个都不能省略
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    pygame.quit()
    
            # 检测鼠标是否按下 重新开始按钮
                if event.type == pygame.MOUSEBUTTONDOWN:
                    # 检测鼠标点击位置是否与重启rect重叠
                    if start_rect.collidepoint(event.pos):
                        student_plane.__init__(screen)
                        game = 'ing'
            # 游戏结束游戏画面暂停
            screen.blit(bg_img0, (0, 0))
            screen.blit(start_img, start_rect)
            # 测试尾焰位置
            pygame.display.flip()
            time.sleep(0.05)
    
        # 游戏进行状态
        elif game == 'ing':
            # 设置这3行 监听事件 并且内部设定了延迟防止游戏卡死
            # 屏幕滚动-----------------------------------------------------
            screen.blit(bg_img1, (0, pos_y1))
            screen.blit(bg_img2, (0, pos_y2))
            # 测试尾焰位置
            # screen.blit(img, (100, 100))
            pos_y1 += 1
            pos_y2 += 1
            # 屏幕背景滚动完毕后重置位置
            if pos_y1 >= 0:
                pos_y1 = -768
            if pos_y2 >= 768:
                pos_y2 = 0
    
    
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    pygame.quit()
                # 监听键盘事件
                # 按键弹起取消飞机向上尾焰 矫正飞机姿势
                if event.type == pygame.KEYUP:
                    student_plane.set_image('down')
                    student_plane.air = None
                # 发射子弹
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_SPACE and len(student_plane.bullets) <6: # 检查子弹集合的数量限制子弹最大数量
                        fire_music()
                        # 产生一颗子弹实例
                        # 在group子弹精灵集合中加入子弹
                        student_plane.shoot()
            # 将精灵集合中的子弹绘制到屏幕上
            student_plane.drawBullets(screen)
            # 逐个检查子弹精灵集合 到达屏幕顶端的子弹删除
            student_plane.moveBullet()
    
            keys = pygame.key.get_pressed()
            if keys[pygame.K_a]:
                # 设置飞机状态图片
                student_plane.set_image('left')
                if student_plane.rect.centerx>=40:
                    student_plane.rect.centerx -=8.5
    
            elif keys[pygame.K_d]:
                # 设置飞机状态图片
                student_plane.set_image('right')
                if student_plane.rect.centerx <= 478:
                    student_plane.rect.centerx +=8.5
    
            elif keys[pygame.K_w]:
                #设置飞机状态图片
                student_plane.set_image('up')
                student_plane.set_air('up')
    
                if student_plane.rect.centery >= 45:
                    student_plane.rect.centery -=8.5
    
            elif keys[pygame.K_s]:
                # 设置飞机状态图片
                student_plane.set_image('down')
                if student_plane.rect.centery <= 727:
                    student_plane.rect.centery +=8.5
    
            # 显示飞机
            screen.blit(student_plane.image,student_plane.rect)
            if student_plane.air != None:
                screen.blit(student_plane.air, (student_plane.rect.centerx-30, student_plane.rect.centery+33))
    
            # 敌机 ---------------------------------------------------------------------------------------
    
            # 敌机移动
            # 控制时间节奏 sec变量
            sec +=1
            #随机控制生成敌机的节奏
            rhy = random.randint(ran1,ran2)
            # 敌机最多数量
    
            if sec%rhy ==0 and len(enemies) < max_enemies or sec ==1: # 设置敌机数量总数为9
                # 生成一只敌机
                enemy = Enemy(screen)
                enemy.rect.centerx=random.randint(0,512)
                # 生成上述敌机的子弹
                enemy_bullet = Enemy_Bullet((enemy.rect.centerx,enemy.rect.centery))
                # 敌机group 和 敌机子弹group加载敌机和子弹
                enemies.add(enemy)
                enemy_bullets.add(enemy_bullet)
            # 敌机出现 和 敌机子弹出现
            enemies.draw(screen)
            enemy_bullets.draw(screen)
            # 迭代敌机集合
            for enemy in enemies:
                # 让每个对象移动起来
                enemy.move()
                # 敌机超出屏幕边界后 自动删除敌机
                collision_over1 = pygame.sprite.collide_rect(student_plane, enemy)
    
                if collision_over1:
                    # 为了重启游戏时 防止有旧子弹和飞机存在
                    enemies.remove(enemy)
                    game = 'over'
                if enemy.rect.bottom >768:
                    enemies.remove(enemy)
            for enemy_bullet in enemy_bullets:
                # 让每个对象移动起来
                enemy_bullet.move()
    
                collision_over2 = pygame.sprite.collide_rect(student_plane, enemy_bullet)
                if collision_over2:
                    # 为了重启游戏时 防止有旧子弹和飞机存在
                    enemy_bullets.remove(enemy_bullet)
                    game = 'over'
                # 敌机子弹超出屏幕边界后 自动删除敌机
                if enemy_bullet.rect.bottom >768:
                    enemy_bullets.remove(enemy_bullet)
    
    
            #  -----------------------Boss --------------------------
            if score >=140:
                # 小敌机出现的节奏
                ran1,ran2 = 15,25
                max_enemies = 17
                screen.blit(boss.image,boss.rect)
                boss.move()
                for my_bullet in student_plane.bullets:
                    hit_boss = pygame.sprite.collide_rect(boss,my_bullet)
                    if hit_boss:
                        boss.blood -=1.2
                        score+=1
                    if boss.blood <=0:
                        game = 'success'
    
    
            # 处理碰撞    ---------------------------碰撞检测--------------------------------------------------
            #   参数:
            #   group1:精灵组1。
            #   group2:精灵组2。
            #   dokill1:发生碰撞时,是否销毁精灵组1中的发生碰撞的精灵。
            #   dokill2:发生碰撞时,是否销毁精灵组2中的发生碰撞的精灵。
            collisions = pygame.sprite.groupcollide(student_plane.bullets, enemies, True, True)
            if collisions:
                score+=10
    
            # -----------游戏结束------------
    
            # 分数和奖励的显示-------------------------------------------------------------------------
            surface1 = my_font.render(u"当前得分:%s"%(score),True,[255,0,0])
            screen.blit(surface1,[20,20])
    
            # 更新画面
            pygame.display.flip()
            # 设置帧数和延迟
            time.sleep(0.05)
    
        #游戏结束状态
        elif game == 'over':
            score = 0
            # 最小游戏框架一个都不能省略
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    pygame.quit()
    
            # 检测鼠标是否按下 重新开始按钮
                if event.type == pygame.MOUSEBUTTONDOWN:
                    # 检测鼠标点击位置是否与重启rect重叠
                    if restart_rect.collidepoint(event.pos):
                        student_plane.__init__(screen)
                        game = 'ing'
    
            # 游戏结束游戏画面暂停
            screen.blit(bg_img1, (0, pos_y1))
            screen.blit(bg_img2, (0, pos_y2))
    
            screen.blit(gameover_img, (163, 310))
            screen.blit(restart_img, restart_rect)
            # 测试尾焰位置
            # screen.blit(img, (100, 100))
            pos_y1 += 0
            pos_y2 += 0
            pygame.display.flip()
            time.sleep(0.05)
            # surface2 = my_font.render("Game Over" , True, [255, 0, 0])
            # screen.blit(surface1, [250, 350])
        elif game == 'success':
            score = 0
            boss.blood = 1000
            # 最小游戏框架一个都不能省略
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    pygame.quit()
    
            # 检测鼠标是否按下 重新开始按钮
                if event.type == pygame.MOUSEBUTTONDOWN:
                    # 检测鼠标点击位置是否与重启rect重叠
                    if restart_rect.collidepoint(event.pos):
                        student_plane.__init__(screen)
                        game = 'ing'
    
            # 游戏结束游戏画面暂停
            screen.blit(bg_img1, (0, pos_y1))
            screen.blit(bg_img2, (0, pos_y2))
    
            screen.blit(gamesuccess, (170, 220))
            screen.blit(restart_img, restart_rect)
            # 测试尾焰位置
            # screen.blit(img, (100, 100))
            pos_y1 += 0
            pos_y2 += 0
            pygame.display.flip()
            time.sleep(0.05)
    

    更多Python源程序、源代码,请关注公众号:Python代码大全
    在这里插入图片描述

    展开全文
  • Python魂斗罗小游戏源代码

    千次阅读 2021-01-19 10:50:10
    Python魂斗罗小游戏源代码源程序,主程序Contra.py,游戏简易使用说明:A:向左,D:向右,W:跳起,S:趴下,J:射击,P:退出程序。 程序运行截图: Contra.py ''' 公众号:Python代码大全 ''' import pygame import ...

    Python魂斗罗小游戏源代码源程序,主程序Contra.py,游戏简易使用说明:A:向左,D:向右,W:跳起,S:趴下,J:射击,P:退出程序。

    程序运行截图:在这里插入图片描述
    Contra.py

    '''
    公众号:Python代码大全
    '''
    import pygame
    import sys
    from pygame.locals import *
    from settings import Settings
    from game_player import Game_Player 
    import game_functions as gf
    from pygame.sprite import Group
    from game_stats import GameStats
    from game_boss import Game_Boss
    from button import Button
    
    def run_game():
    	bg = pygame.image.load("图片/map01.jpeg")
    	game_settings = Settings()
    	pos_x = 0#地图移动
    	
    	pygame.init()
    	screen = pygame.display.set_mode(
    		(game_settings.screen_width,game_settings.screen_height))
    	pygame.display.set_caption("魂斗罗BY Python代码大全")
    	stats = GameStats(game_settings)
    	player = Game_Player(game_settings,screen)
    	bullets = Group()
    	boss = Group()
    	enemys = Group()
    	win_button = Button(game_settings,screen,"YOU WIN")
    	gf.create_legion(game_settings,screen,enemys)
    	gf.create_boss(game_settings,screen,player,boss)
    
    	while True:
    		pygame.mouse.set_visible(False)
    		gf.check_events(game_settings,screen,player,bullets)
    		gf.update_player(game_settings,stats,player,enemys)
    		gf.update_bullet(game_settings,bullets,screen,enemys,boss)	
    		gf.update_enemys(game_settings,enemys)	
    		gf.update_boss(game_settings,boss)
    		gf.update_screen(game_settings,bg,pos_x,screen,player,bullets,enemys,boss,win_button)
    		
    		if player.moving_right and player.center > player.screen_rect.centerx and game_settings.boss_appear == False:
    			game_settings.screen_rolling = True
    			pos_x -= 5#屏幕滚动速度
    		else:
    			game_settings.screen_rolling = False
    run_game()
    
    

    game_funtcions.py

    import sys
    import pygame
    from bullet import Bullet
    from enemy import Enemy 
    from game_boss import Game_Boss
    
    def check_keydown_events(event,game_settings,screen,player,bullets):
    	if event.key == pygame.K_k:#跳跃
    		player.player_jump = True
    
    	if event.key == pygame.K_d:#向右
    		game_settings.bullet_direction = 'right' 
    		if player.player_down or player.player_up:
    			player.moving_right = False
    		else:
    			player.moving_right = True
    		player.player_direction = 1	
    
    	if event.key == pygame.K_a:#向左
    		game_settings.bullet_direction = 'left'
    		if player.player_down or player.player_up:
    			player.moving_left = False
    		else:
    			player.moving_left = True
    		player.player_direction = -1
    
    	elif event.key == pygame.K_s:#向下
    		player.player_down = True
    		player.player_moving = False
    		player.moving_left = False
    		player.moving_right = False
    
    	elif event.key == pygame.K_w:#向上
    		player.player_up = True
    		player.player_moving = False
    		player.moving_left = False
    		player.moving_right = False
    
    	elif event.key == pygame.K_j:#射击
    		new_bullet = Bullet(game_settings,screen,player)
    		bullets.add(new_bullet)
    		player.player_shooting = True
    
    	elif event.key == pygame.K_p:
    		sys.exit()
    
    def check_keyup_events(event,player):
    	if event.key == pygame.K_d:#右
    		player.image = pygame.image.load('图片/PR/player.png')
    		player.moving_right = False
    		player.player_moving = False
    	elif event.key == pygame.K_a:#左
    		player.image = pygame.image.load('图片/PL/player.png')
    		player.player_moving = False
    		player.moving_left = False
    	elif event.key == pygame.K_s:#下
    		player.player_down = False
    		if player.player_direction == 1:
    			player.image = pygame.image.load('图片/PR/player.png')
    		if player.player_direction == -1:
    			player.image = pygame.image.load('图片/PL/player.png')
    	elif event.key == pygame.K_w:#上
    		player.player_up = False
    		if player.player_direction == 1:
    			player.image = pygame.image.load('图片/PR/player.png')
    		if player.player_direction == -1:
    			player.image = pygame.image.load('图片/PL/player.png')
    	
    def check_events(game_settings,screen,player,bullets):
    	for event in pygame.event.get():
    		if event.type == pygame.QUIT:
    			sys.exit()
    		elif event.type == pygame.KEYDOWN:
    			player.player_moving = True
    			check_keydown_events(event,game_settings,screen,player,bullets)		
    		elif event.type == pygame.KEYUP:
    			check_keyup_events(event,player)
    
    def update_screen(game_settings,bg,pos_x,screen,player,bullets,enemys,boss,win_button):
    	screen.blit(bg,(pos_x,0))
    	for bullet in bullets.sprites():
    		bullet.blit_bullet()
    	"""if game_settings.boom_end:#击中敌人爆炸
    		enemys.empty()
    		game_settings.boom_end = False"""
    	player.blitme()
    	if game_settings.boss_appear:
    		boss.draw(screen)
    	enemys.draw(screen)
    
    	if game_settings.game_win:
    		win_button.draw_button()
    	pygame.display.flip()
    
    def update_bullet(game_settings,bullets,screen,enemys,boss):
    	bullets.update()
    	for bullet in bullets.copy():
    		if bullet.rect.centerx<0 or bullet.rect.centery<0 or bullet.rect.centerx > game_settings.screen_width:
    			bullets.remove(bullet)
    	check_bullet_enemy_collisions(game_settings,bullets,screen,enemys)
    	check_bullet_boss_collisions(game_settings,bullets,boss)
    	
    
    def check_bullet_enemy_collisions(game_settings,bullets,screen,enemys):
    	if game_settings.enemy_is_alive:
    		collisions = pygame.sprite.groupcollide(bullets,enemys,True,False)
    	else:
    		collisions = pygame.sprite.groupcollide(bullets,enemys,True,True)
    	if collisions != {}:
    		game_settings.enemy_is_alive = False
    	if len(enemys) == 0:
    		create_legion(game_settings,screen,enemys)
    
    def check_bullet_boss_collisions(game_settings,bullets,boss):
    	if game_settings.boss_alive:
    		collisions = pygame.sprite.groupcollide(boss,bullets,False,True)
    	else:
    		collisions = pygame.sprite.groupcollide(boss,bullets,True,True)
    
    	if collisions != {}:
    		game_settings.boss_lift -= 1
    	if game_settings.boss_lift == 0:
    		game_settings.boss_alive = False
    
    def create_legion(game_settings,screen,enemys):
    	for enemy_number in range(1):
    		game_settings.enemy_is_alive = True
    		enemy = Enemy(game_settings,screen)
    		enemys.add(enemy)
    
    def update_enemys(game_settings,enemys):
    	if game_settings.boss_appear == False:#判断boss是否出现,出现则不出现小兵
    		enemys.update()
    
    		for enemy in enemys.copy():
    			if enemy.rect.centerx<0:
    				enemys.remove(enemy)
    			if game_settings.boom_end:#击中敌人爆炸
    				enemys.remove(enemy)
    				game_settings.boom_end = False
    				game_settings.boss_appear = True
    
    def update_player(game_settings,stats,player,enemys):
    	player.update()
    	if pygame.sprite.spritecollideany(player,enemys):
    		player_hit(game_settings,stats,player)
    	if game_settings.player_die_end == True:
    		player.revive_player()
    		game_settings.player_die_end = False
    
    def player_hit(game_settings,stats,player):
    	stats.players_left -= 1
    	game_settings.player_is_alive = False
    	
    def update_boss(game_settings,boss):
    	if game_settings.boss_appear:
    		boss.update()
    	if game_settings.boss_boom_end:
    		boss.empty()
    
    def create_boss(game_settings,screen,player,boss):
    	bo = Game_Boss(game_settings,screen,player)
    	boss.add(bo)
    

    完整程序包下载地址:

    https://pan.baidu.com/s/1_B4fZJkgNb0XCDwRlR1WOQ,提取码请在“Python代码大全”公众号回复:魂斗罗提取码。获取更多Python源代码请微信关注:Python代码大全,在这里插入图片描述

    展开全文
  • Python滑雪小游戏源代码

    千次阅读 2021-02-04 09:26:16
    Python滑雪小游戏源代码、源程序,完整程序包请前往文末链接下载,按任意键开始游戏,通过键盘左右方向键来控制滑雪者,完整程序包请在文末地址下载,程序运行截图: 主程序:Game4.py ''' Function: 滑雪小游戏 ...
  • 先上gif图 ...这个基本是一个完整的小游戏了,飞机可以仍雷,发子弹,还有加分的奖励和增强子弹威力的奖励等 源代码下载: csdn: github: https://github.com/276255322/taikongdazhan ...
  • 这个游戏是我仿照飞机大战小游戏的代码改写的,方向键操控鸣人,逃避佐助发出的千鸟流,空格键发射...游戏源代码 import pygame import random from os import path img_dir = path.join(path.dirname(__file_...
  • 基本上是一个完整的小游戏了,飞机可以发子弹,并且时不时有奖励,奖励有增加飞机炸弹的,还有增加飞机子弹威力的,还配的有相关的游戏音效和背景音乐
  • 是男人就下一百层小游戏Python小游戏源程序,共包含两个程序文件:game.py和是男人就下一百层.py。程序运行截图如下: 更多Python源代码,请微信关注:Python代码大全, game.py #!python3 # -*- coding: utf-8 -*-...
  • 游戏是仿谷歌浏览器恐龙游戏,程序运行入口Game7.py,配置文件:cfg.py,完整程序包及资源包请在本文文末下载,先上程序运行截图: Game7.py ''' Function: 仿谷歌浏览器恐龙游戏 微信公众号: Python代码...
  • Python接弹珠小游戏源代码

    千次阅读 2020-05-25 14:44:03
    接弹珠游戏,弹珠碰到上方及...import pygame as pg import sys from random import randint import time pg.init() game_window = pg.display.set_mode((600, 500)) pg.display.set_caption("接弹珠游戏
  • 使用Python语言开发,用到了Pygame的库(已集成),关于外星人入侵的一个小游戏的全部源码,结构清晰,有注释,适合Python初学者研究学习
  • 用python的pygame模块制作弹球小游戏

    千次阅读 2019-12-01 14:18:32
    首先那,需要安装pygame模块,大约300行代码就可以做一个小游戏 在命令提示窗口中输入:pip install pygame 如果不安装模块,呵呵, github下载: https://github.com/zouzhuo939/python_- 源代码解析: # 导入模块 ...
  • Python五子棋游戏源代码源程序

    千次阅读 2020-06-02 12:11:04
    五子棋游戏,我们将游戏分为两个方面:一个是棋盘,另一个是棋子,利用横线和纵线将棋盘分成一个个方格,当黑子或者白子形成5个棋子连线时,显示胜利者,游戏结束。本程序难点在于确定胜利条件。 import pygame ...
  • 本压缩文件为完整源代码及程序文档。 压缩包目录结构: Python小游戏 │ 12岁的少年教你用Python做小游戏.docx │ └─pygame │ g1.py │ g10401.py │ g10402.py │ game.py 原作者程序代码 │ ├─pics ...
  • 1.Pygame从0实战8之泡泡小游戏 用面向对象的思想做一个泡泡拯救世界的小游戏下面是所要用到的图片和源代码链接:点击打开链接 密码:l68hsprite模块、Sprite类 在pygame.sprite模块中包含了一个名为Sprite类,它是...
  • 在python的练手小游戏项目中,项目中主要用到 pygame 模块包进行创作,项目的具体细节不在赘述。文章后面会贴出项目的有关介绍。现在就我在练习该项目时遇到的问题。项目开发环境:windows10 + python3.6问题1:...
  • 源代码 import pygame from pygame.locals import * import random import sys pygame.init() WIDE = 1920//2 HEIGHT = 600 Window = pygame.display.set_mode((WIDE,HEIGHT)) #创建一个窗口 pygame.display.set_...
  • Python源代码 ---飞机大战游戏

    千次阅读 2019-10-18 17:01:41
    import pygame # 定义屏幕大小的常量 SCREEN_RECT = pygame.Rect(0,0,346,567) # 定义刷新帧率的常量 FRAME_PRE_SEC = 60 # 定义创建敌机的定时器常量 CREATE_ENEMY_EVENT = pygame.USEREVENT # 定义英雄发射子...
  • Python坦克大战源代码

    千次阅读 多人点赞 2020-11-24 16:55:18
    Python坦克大战小游戏源程序,可实现单人及双人模式,程序入口:Game5.py,源代码程序较大,完整程序,请在网盘下载:https://pan.baidu.com/s/1yMB-4aLp9_Ke-40-iZpteQ,提取码请关注公众号(Python代码大全)回复...
  • pygame飞机大战

    2021-01-20 02:51:12
    这是我python的pygame库编的一个小游戏,只要一发子弹不打中两架敌机就没有bug。打开时请使用cmd或dos等终端打开。 以下是源代码: import pygame import random import math #初始化界面 pygame.init() pygame....
  • 目标练习 使用pygame python库创建的... 我计划很快将其纳入游戏本身,但现在,您需要触摸源代码 每场比赛的目标 每个游戏最多可以有5个目标 TARGETS_PER_GAME = 5 每个目标的最长时间 每个目标最多停留2秒,然后将其标
  • python-pygame-消消乐

    2018-07-28 15:29:13
    本程序为pygame制作的消消乐小游戏,里面含源代码,和音频图片素材
  • 兔子和獾大战python小游戏英文:https://www.raywenderlich.com/24252/beginning-game-programming-for-teens-with-python中文:http://blog.jobbole.com/46308/贴上源码(亲试,已运行成功)#coding:utf-8#导入...
  • 折磨了我好久,其实上周末都已经做好了,整体的一些大功能已经实现,缺少的就是一些功能,比如说选关啊,变身啊,超级炸弹啊,本来想加上去,但是又比较花费时间,主要以后我也没有想要去从事游戏这么方面的工作,...
  • python开发小游戏

    2018-05-26 08:05:51
    用python 中pygame模块开发的小游戏,包含:贪吃蛇,俄罗斯方块,坦克大战,推箱子等小游戏源代码源代码
  • 开发工具 Python版本:3.6.4 相关模块: ...玩家通过空格键控制一只恐龙的前进方式,当恐龙触碰到植物或者飞龙时,游戏结束。恐龙躲避的植物和飞龙越多,得分越高。 逐步实现: Step1:定义精灵类

空空如也

空空如也

1 2 3 4
收藏数 62
精华内容 24
关键字:

pygame小游戏源代码