Python游戏开发之魔塔小游戏的实现

前言

这一期我们继续完善我们的魔塔小游戏。

废话不多说,让我们愉快地开始吧~

开发工具

Python版本: 3.7.4

相关模块:

cpgames模块;

以及一些python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

原理简介

本期我们实现一些之前还没实现的功能,以及做一些功能优化(部分内容为了测试方便,我会把人物设置成无敌状态)。首先,是拾取物品等游戏事件的提示效果,核心代码如下:

'''游戏事件提示'''
def showinfo(self, screen):
    if self.obtain_tips is None: return
    self.show_obtain_tips_count += 1
    if self.show_obtain_tips_count > self.max_obtain_tips_count:
        self.show_obtain_tips_count = 0
        self.obtain_tips = None
    # 画框
    left, top = self.cfg.BLOCKSIZE // 2, 100
    width, height = self.cfg.SCREENSIZE[0] // self.cfg.BLOCKSIZE - 1, 2
    pygame.draw.rect(screen, (199, 97, 20), (left - 4, top - 4, self.cfg.BLOCKSIZE * width + 8, self.cfg.BLOCKSIZE * height + 8), 7)
    for col in range(width):
        for row in range(height):
            image = self.resource_loader.images['mapelements']['0'][0]
            image = pygame.transform.scale(image, (self.cfg.BLOCKSIZE, self.cfg.BLOCKSIZE))
            screen.blit(image, (left + col * self.cfg.BLOCKSIZE, top + row * self.cfg.BLOCKSIZE))
    # 文字
    if isinstance(self.obtain_tips, list):
        assert len(self.obtain_tips) == 2
        font = pygame.font.Font(self.fontpath, 30)
        font_render1 = font.render(self.obtain_tips[0], True, (255, 255, 255))
        font_render2 = font.render(self.obtain_tips[1], True, (255, 255, 255))
        rect1 = font_render1.get_rect()
        rect2 = font_render2.get_rect()
        rect1.midtop = left + width * self.cfg.BLOCKSIZE // 2, top + 10
        rect2.midtop = left + width * self.cfg.BLOCKSIZE // 2, top + 10 + self.blocksize
        screen.blit(font_render1, rect1)
        screen.blit(font_render2, rect2)
    else:
        font = pygame.font.Font(self.fontpath, 40)
        font_render = font.render(self.obtain_tips, True, (255, 255, 255))
        rect = font_render.get_rect()
        rect.midtop = left + width * self.cfg.BLOCKSIZE // 2, top + height * self.cfg.BLOCKSIZE // 2 - 20
        screen.blit(font_render, rect)

效果:

'''显示商店'''
def showbuyinterface(self, screen, scenes, shop_type):
    # 购买函数
    def buy(hero, coins_cost=0, experience_cost=0, add_life_value=0, add_attack_power=0, add_defense_power=0, add_level=0, add_yellow_keys=0, add_purple_keys=0, add_red_keys=0):
        if hero.num_coins < coins_cost: return
        if hero.experience < experience_cost: return
        if add_yellow_keys < 0 and hero.num_yellow_keys < 1: return
        if add_purple_keys < 0 and hero.num_purple_keys < 1: return
        if add_red_keys < 0 and hero.num_red_keys < 1: return
        hero.num_coins -= coins_cost
        hero.experience -= experience_cost
        hero.life_value += add_life_value + 1000 * add_level
        hero.attack_power += add_attack_power + 7 * add_level
        hero.defense_power += add_defense_power + 7 * add_level
        hero.level += add_level
        hero.num_yellow_keys += add_yellow_keys
        hero.num_purple_keys += add_purple_keys
        hero.num_red_keys += add_red_keys
    # 选项定义
    # --第三层商店
    if self.map_level_pointer == 3 and shop_type == 'buy_from_shop':
        choices_dict = {
            '增加 800 点生命(25 金币)': lambda: buy(self.hero, coins_cost=25, add_life_value=800),
            '增加 4 点攻击(25 金币)': lambda: buy(self.hero, coins_cost=25, add_attack_power=4),
            '增加 4 点防御(25 金币)': lambda: buy(self.hero, coins_cost=25, add_defense_power=4),
            '离开商店': lambda: buy(self.hero),
        }
        id_image = self.resource_loader.images['mapelements']['22'][0]
    # --第十一层商店
    elif self.map_level_pointer == 11 and shop_type == 'buy_from_shop':
        choices_dict = {
            '增加 4000 点生命(100 金币)': lambda: buy(self.hero, coins_cost=100, add_life_value=4000),
            '增加 20 点攻击(100 金币)': lambda: buy(self.hero, coins_cost=100, add_attack_power=20),
            '增加 20 点防御(100 金币)': lambda: buy(self.hero, coins_cost=100, add_defense_power=20),
            '离开商店': lambda: buy(self.hero),
        }
        id_image = self.resource_loader.images['mapelements']['22'][0]
    # --第五层神秘老人
    elif self.map_level_pointer == 5 and shop_type == 'buy_from_oldman':
        choices_dict = {
            '提升一级(100 经验)': lambda: buy(self.hero, experience_cost=100, add_level=1),
            '增加 5 点攻击(30 经验)': lambda: buy(self.hero, experience_cost=30, add_attack_power=5),
            '增加 5 点防御(30 经验)': lambda: buy(self.hero, experience_cost=30, add_defense_power=5),
            '离开商店': lambda: buy(self.hero),
        }
        id_image = self.resource_loader.images['mapelements']['26'][0]
    # --第十三层神秘老人
    elif self.map_level_pointer == 13 and shop_type == 'buy_from_oldman':
        choices_dict = {
            '提升三级(270 经验)': lambda: buy(self.hero, experience_cost=270, add_level=1),
            '增加 17 点攻击(95 经验)': lambda: buy(self.hero, experience_cost=95, add_attack_power=17),
            '增加 17 点防御(95 经验)': lambda: buy(self.hero, experience_cost=95, add_defense_power=17),
            '离开商店': lambda: buy(self.hero),
        }
        id_image = self.resource_loader.images['mapelements']['26'][0]
    # --第五层商人
    elif self.map_level_pointer == 5 and shop_type == 'buy_from_businessman':
        choices_dict = {
            '购买 1 把黄钥匙(10 金币)': lambda: buy(self.hero, coins_cost=10, add_yellow_keys=1),
            '购买 1 把蓝钥匙(50 金币)': lambda: buy(self.hero, coins_cost=50, add_purple_keys=1),
            '购买 1 把红钥匙(100 金币)': lambda: buy(self.hero, coins_cost=100, add_red_keys=1),
            '离开商店': lambda: buy(self.hero),
        }
        id_image = self.resource_loader.images['mapelements']['27'][0]
    # --第十二层商人
    elif self.map_level_pointer == 12 and shop_type == 'buy_from_businessman':
        choices_dict = {
            '卖出 1 把黄钥匙(7 金币)': lambda: buy(self.hero, coins_cost=-7, add_yellow_keys=-1),
            '卖出 1 把蓝钥匙(35 金币)': lambda: buy(self.hero, coins_cost=-35, add_purple_keys=-1),
            '卖出 1 把红钥匙(70 金币)': lambda: buy(self.hero, coins_cost=-70, add_red_keys=-1),
            '离开商店': lambda: buy(self.hero),
        }
        id_image = self.resource_loader.images['mapelements']['27'][0]
    id_image = pygame.transform.scale(id_image, (self.cfg.BLOCKSIZE, self.cfg.BLOCKSIZE))
    # 主循环
    clock, selected_idx = pygame.time.Clock(), 1
    font = pygame.font.Font(self.cfg.FONT_PATHS_NOPRELOAD_DICT['font_cn'], 20)
    while True:
        screen.fill((0, 0, 0))
        screen.blit(self.background_images['gamebg'], (0, 0))
        self.map_parser.draw(screen)
        for scene in scenes:
            screen.blit(scene[0], scene[1])
        self.hero.draw(screen)
        # --按键检测
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                QuitGame()
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_SPACE:
                    list(choices_dict.values())[selected_idx-1]()
                    if selected_idx == 4: return
                elif event.key == pygame.K_w or event.key == pygame.K_UP:
                    selected_idx = max(selected_idx - 1, 1)
                elif event.key == pygame.K_s or event.key == pygame.K_DOWN:
                    selected_idx = min(selected_idx + 1, 4)
        # --对话框
        # ----底色
        width, height = 8, 3
        left, bottom = self.hero.rect.left + self.hero.rect.width // 2 - width // 2 * self.cfg.BLOCKSIZE, self.hero.rect.bottom
        for col in range(width):
            for row in range(height):
                image = self.resource_loader.images['mapelements']['0'][0]
                image = pygame.transform.scale(image, (self.cfg.BLOCKSIZE, self.cfg.BLOCKSIZE))
                screen.blit(image, (left + col * self.cfg.BLOCKSIZE, bottom + row * self.cfg.BLOCKSIZE))
        # ----边框
        pygame.draw.rect(screen, (199, 97, 20), (left - 4, bottom - 4, self.cfg.BLOCKSIZE * width + 8, self.cfg.BLOCKSIZE * height + 8), 7)
        # ----展示选项
        for idx, choice in enumerate(['请选择:'] + list(choices_dict.keys())):
            if selected_idx == idx and idx > 0:
                choice = '➤' + choice
                font_render = font.render(choice, True, (255, 0, 0))
            elif idx > 0:
                choice = '    ' + choice
                font_render = font.render(choice, True, (255, 255, 255))
            else:
                font_render = font.render(choice, True, (255, 255, 255))
            rect = font_render.get_rect()
            rect.left, rect.top = left + self.cfg.BLOCKSIZE + 20, bottom + 10 + idx * 30
            screen.blit(font_render, rect)
        # ----展示头像
        screen.blit(id_image, (left + 10, bottom + 10))
        # --刷新
        pygame.display.flip()
        clock.tick(self.cfg.FPS)

即,商店主要包括三种类型:一种的明面上的商店,用金币进行交易,可以获得生命值、攻击力和防御力的提升;一种是商人,用金币进行交易,可以获得/出售不同颜色的钥匙;还有一种是神秘老人,用经验值进行交易,可以获得等级、攻击力和防御力的提示。效果如下

接着,我们来实现一下地图中可以捡到的一些宝物的特效,主要包括风之罗盘、圣光徽、星光神榔和幸运十字架。

其中,风之罗盘用于在已经走过的楼层间进行跳跃,代码实现如下:

'''显示关卡跳转'''
def showjumplevel(self, screen, scenes):
    # 主循环
    clock, selected_level = pygame.time.Clock(), 1
    font = pygame.font.Font(self.cfg.FONT_PATHS_NOPRELOAD_DICT['font_cn'], 20)
    while True:
        screen.fill((0, 0, 0))
        screen.blit(self.background_images['gamebg'], (0, 0))
        self.map_parser.draw(screen)
        for scene in scenes:
            screen.blit(scene[0], scene[1])
        self.hero.draw(screen)
        # --按键检测
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                QuitGame()
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_SPACE:
                    return selected_level
                elif event.key == pygame.K_w or event.key == pygame.K_UP:
                    selected_level = max(selected_level - 1, 0)
                elif event.key == pygame.K_s or event.key == pygame.K_DOWN:
                    selected_level = min(selected_level + 1, self.max_map_level_pointer)
        # --对话框
        # ----底色
        width, height = 11, 4
        left, top = self.cfg.SCREENSIZE[0] // 2 - width // 2 * self.cfg.BLOCKSIZE, self.cfg.SCREENSIZE[1] // 2 - height * self.cfg.BLOCKSIZE
        for col in range(width):
            for row in range(height):
                image = self.resource_loader.images['mapelements']['0'][0]
                image = pygame.transform.scale(image, (self.cfg.BLOCKSIZE, self.cfg.BLOCKSIZE))
                screen.blit(image, (left + col * self.cfg.BLOCKSIZE, top + row * self.cfg.BLOCKSIZE))
        # ----边框
        pygame.draw.rect(screen, (199, 97, 20), (left - 4, top - 4, self.cfg.BLOCKSIZE * width + 8, self.cfg.BLOCKSIZE * height + 8), 7)
        # ----展示选项
        for idx in list(range(self.max_map_level_pointer+1)):
            if selected_level == idx:
                text = f'➤第 {idx} 层'
                font_render = font.render(text, True, (255, 0, 0))
            else:
                text = f'    第 {idx} 层'
                font_render = font.render(text, True, (255, 255, 255))
            rect = font_render.get_rect()
            rect.left, rect.top = left + 20 + idx // 6 * self.cfg.BLOCKSIZE * 2, top + 20 + (idx % 6) * 30
            screen.blit(font_render, rect)
        # --刷新
        pygame.display.flip()
        clock.tick(self.cfg.FPS)

效果:

然后是圣光徽,用于查看怪物的基本情况,代码实现如下:

'''显示关卡怪物信息'''
def showforecastlevel(self, screen, scenes):
    # 主循环
    clock = pygame.time.Clock()
    font = pygame.font.Font(self.cfg.FONT_PATHS_NOPRELOAD_DICT['font_cn'], 20)
    monsters = self.map_parser.getallmonsters()
    if len(monsters) < 1: return
    monsters_show_pointer, max_monsters_show_pointer = 1, round(len(monsters) / 4)
    show_tip_text, show_tip_text_count, max_show_tip_text_count = True, 1, 15
    return_flag = False
    while True:
        screen.fill((0, 0, 0))
        screen.blit(self.background_images['gamebg'], (0, 0))
        self.map_parser.draw(screen)
        for scene in scenes:
            screen.blit(scene[0], scene[1])
        self.hero.draw(screen)
        # --按键检测
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                QuitGame()
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_l:
                    return_flag = True
                elif event.key == pygame.K_SPACE:
                    monsters_show_pointer = monsters_show_pointer + 1
                    if monsters_show_pointer > max_monsters_show_pointer: monsters_show_pointer = 1
            elif event.type == pygame.KEYUP:
                if event.key == pygame.K_l and return_flag:
                    return
        # --对话框
        # ----底色
        width, height = 14, 5
        left, top = self.cfg.SCREENSIZE[0] // 2 - width // 2 * self.cfg.BLOCKSIZE, self.cfg.SCREENSIZE[1] // 2 - height * self.cfg.BLOCKSIZE
        for col in range(width):
            for row in range(height):
                image = self.resource_loader.images['mapelements']['0'][0]
                image = pygame.transform.scale(image, (self.cfg.BLOCKSIZE, self.cfg.BLOCKSIZE))
                screen.blit(image, (left + col * self.cfg.BLOCKSIZE, top + row * self.cfg.BLOCKSIZE))
        # ----边框
        pygame.draw.rect(screen, (199, 97, 20), (left - 4, top - 4, self.cfg.BLOCKSIZE * width + 8, self.cfg.BLOCKSIZE * height + 8), 7)
        # ----展示选项
        for idx, monster in enumerate(monsters[(monsters_show_pointer-1)*4: monsters_show_pointer*4]):
            id_image = self.resource_loader.images['mapelements'][monster[6]][0]
            id_image = pygame.transform.scale(id_image, (self.cfg.BLOCKSIZE - 10, self.cfg.BLOCKSIZE - 10))
            screen.blit(id_image, (left + 10, top + 20 + idx * self.cfg.BLOCKSIZE))
            text = f'名称: {monster[0]}  生命: {monster[1]}  攻击: {monster[2]}  防御: {monster[3]}  金币: {monster[4]}  经验: {monster[5]}  损失: {self.hero.winmonster(monster)[1]}'
            font_render = font.render(text, True, (255, 255, 255))
            rect = font_render.get_rect()
            rect.left, rect.top = left + 15 + self.cfg.BLOCKSIZE, top + 30 + idx * self.cfg.BLOCKSIZE
            screen.blit(font_render, rect)
        # ----操作提示
        show_tip_text_count += 1
        if show_tip_text_count == max_show_tip_text_count:
            show_tip_text_count = 1
            show_tip_text = not show_tip_text
        if show_tip_text:
            tip_text = '空格键'
            font_render = font.render(tip_text, True, (255, 255, 255))
            rect.left, rect.bottom = self.cfg.BLOCKSIZE * width + 30, self.cfg.BLOCKSIZE * (height + 1) + 10
            screen.blit(font_render, rect)
        # --刷新
        pygame.display.flip()
        clock.tick(self.cfg.FPS)

效果:

然后我们来实现一下幸运十字架,把它交给序章中的仙子,可以将自身的所有能力提升一些(攻击防御和生命值)。

# 定义所有对话
if self.hero.has_cross:
    conversations = [
        ['仙子, 我已经将那个十字架找到了.'],
        ['你做得很好. 那么现在我就开始', '授予你更强的力量! 咪啦哆咪哔...', '好了, 我已经将你现在的能力提升了!', '记住: 如果你没有足够的实力的话,', '不要去第二十一层. 在那一层里,', '你所有宝物的法力都会失去作用.']
    ]
    self.hero.has_cross = False
    self.hero.life_value = int(self.hero.life_value * 4 / 3)
    self.hero.attack_power = int(self.hero.attack_power * 4 / 3)
    self.hero.defense_power = int(self.hero.defense_power * 4 / 3)

以上就是Python游戏开发之魔塔小游戏的实现的详细内容,更多关于Python魔塔游戏的资料请关注我们其它相关文章!

(0)

相关推荐

  • 利用Python模拟谷歌的小恐龙游戏

    目录 前言 开发工具 环境搭建 先睹为快 代码介绍 前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 谷歌流量器中有个很有名的彩蛋:当你网络出现问题时,就会出现一个"小恐龙游戏". (如果想要直接进行游戏,可以在地址栏输入:chrome://dino) 今天我们就来给大家演示下,用Python来自己做一个仿制的"小恐龙游戏"! 废话不多说,

  • Python实现滑雪小游戏

    本文实例为大家分享了Python实现滑雪小游戏的具体代码,供大家参考,具体内容如下 源码分享: import sys import cfg import pygame import random '''滑雪者类''' class SkierClass(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) # 滑雪者的朝向(-2到2) self.direction = 0 self.imagep

  • Python实现人机中国象棋游戏

    目录 导语 1.游戏规则&基本玩法 1.1 基本玩法 1.2 行棋规则 2.素材文件 3.主要代码 3.1 Chinachess.py 为主文件 3.2 Constants.py 数据常量 3.3 Pieces.py 棋子类,走法 3.4 Computer.py 电脑走法计算 3.5 Button.py按钮定义 4.游戏效果 总结 导语 哈喽!哈喽!我是木木子!今日游戏更新——中国象棋上线啦! 中国象棋是一种古老的棋类游戏,大约有两千年的历史. 是中华文明非物质文化经典产物,艺术价值泛属于整个人

  • Python Pygame实战之打地鼠小游戏

    目录 前言 开发工具 环境搭建 原理简介 前言 今天给大家写一个个打地鼠小游戏,废话不多说直接开始- 开发工具 Python版本: 3.6.4 相关模块: pygame模块: 以及一些Python自带的模块. 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 原理简介 打地鼠的游戏规则相信大家都知道,这里就不多介绍了,反正就是不停地拿锤子打洞里钻出来的地鼠~ 首先,让我们确定一下游戏中有哪些元素.打地鼠打地鼠,地鼠当然得有啦,那我们就写个地鼠的游戏精灵类: '''地鼠'

  • Python实现四个经典小游戏合集

    目录  一.效果展示 1.俄罗斯方块 2.扫雷 3.五子棋 4.贪吃蛇 二.代码展示 1.俄罗斯方块 2.扫雷 3.五子棋 4.贪吃蛇  一.效果展示 1.俄罗斯方块 这个应该是玩起来最最简单的了- 2.扫雷 运气好,点了四下都没踩雷哈哈- 3.五子棋 我是菜鸡,玩不赢电脑人- 4.贪吃蛇 害,这个是最惊心动魄的,为了我的小心脏,不玩了不玩了- 女朋友:你就是借机在玩游戏,逮到了 啊这- 那我不吹牛逼了,我们来敲代码吧~ 二.代码展示 1.俄罗斯方块 方块部分 这部分代码单独保存py文件,这里我

  • Python+Pygame制作简易版2048小游戏

    目录 导语 正文 主要代码 效果图 导语 哈喽!大家好,我是栗子,感谢大家的支持! 新的一天,新气象,程序猿们的日常开始敲敲敲,改改改——今天给大家来一款简单的小游戏! 2048小游戏——准确的来说确实是一个简单版本的! 呐呐呐 ,主要是担心很多小伙伴儿直接上界面版本的看不懂,所以做了这款简单的2048,先看这篇简单版本的吧! 正文 为了搞懂这个游戏的规则,小编去直接下载了一款2048的小游戏,上手玩了一波! 然后.........完全停不下来!23333~ 玩法: 用手指或键盘上下左右滑动,将

  • C语言魔塔游戏的实现代码

    很早就很想写这个,今天终于写完了. 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到.觉得麻烦的直接下载C-mota_jb51.rar 解压后点击sln文件直接可以运行 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char name[20] = "黑蛋"; //

  • Python游戏开发之魔塔小游戏的实现

    前言 这一期我们继续完善我们的魔塔小游戏. 废话不多说,让我们愉快地开始吧~ 开发工具 Python版本: 3.7.4 相关模块: cpgames模块: 以及一些python自带的模块. 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 原理简介 本期我们实现一些之前还没实现的功能,以及做一些功能优化(部分内容为了测试方便,我会把人物设置成无敌状态).首先,是拾取物品等游戏事件的提示效果,核心代码如下: '''游戏事件提示''' def showinfo(self, s

  • Unity游戏开发之射击小游戏的实现

    目录 前言 游戏画面展示 游戏代码解析 游戏打包 总结 前言 人们一直都说学习和玩游戏不能兼顾,那我们就来边学习怎样制作游戏,边玩游戏 不就兼得了嘛~ 我可真是一个小天才呢~ 所以本篇文章为大家带来一个 横版2D射击小游戏,游戏制作超级简单,玩法一学就会, 一起来看看吧! 游戏画面展示 这款小游戏只用了两个UI界面,一个是菜单界面,另一个是战斗界面 菜单界面有三种模式,分别是一般.困难和地狱 战斗界面就是很简单的从两边刷野怪,然后主角开枪打死他们 UI搭建很简单,只有一张背景图使用Image,加

  • python实现井字棋小游戏

    本文为大家分享了python实现井字棋小游戏,供大家参考,具体内容如下 周五晚上上了python的选修课,本来以为老师是从python的基础语法开始的,没想到是从turtle画图开始,正好补上了我以前一些不懂的地方,有人讲一下还是比啃书好一点. 之前从图书馆借了一本python游戏编程,看了前面几章后就没怎么看了,晚上突然想看看,然后跟着教程写个游戏的.最后就有了这个井字棋的诞生,其实代码并不是很长,主要是思路,需要考虑的周全一点.代码写完后就和电脑下了好久的井字棋,一局都没赢,真的是很无奈了,

  • 童年回忆录之python版4399吃豆豆小游戏

    目录 前文 正文 结尾 前文 昨天家里来人,老姐的小孩儿抢着跟我玩电脑,result........很久很久之后!! 那你想错了,我可不是欺负小孩子的那种人.老实人本人.三秒之后就给她了. 看见她在4399玩了一款小游戏,感觉很适合小孩子.emmmmmm...... ​ 灵感来了挡都挡不住,嗯哼~今天正入正题,开发一款4399类似的吃豆豆小游戏,等着!!!! 正文 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块. 模块自行安装.环境安装包等新手小白不

  • javascript+css3开发打气球小游戏完整代码

    效果知识点: css3画气球, 自定义属性运用,随机阵列, DOM元素操作,高级回调函数与参数复传,动态布局,鼠标事件,定时器运用,CSS3新增样式等. css代码如下: <style> {margin:0;padding:0;} body{background:#434343;overflow:hidden} .balloon{ position:absolute; left:0; top:0; margin:auto; width:160px; height:160px; 圆角: 左上 右

  • python+pygame实现坦克大战小游戏的示例代码(可以自定义子弹速度)

    python+pygame实现坦克大战小游戏-可以自定义子弹速度: 运行环境–python3.7.pycharm: 源码需要请:点赞留言邮箱: 正常版子弹速度: 普通速度版 加速版子弹速度: 子弹加速版 另外还有多种道具,支持两人一起玩.main()方法如下: def main(): pygame.init() pygame.mixer.init() resolution = 630, 630 screen = pygame.display.set_mode(resolution) pygame

  • Python实现简单的2048小游戏

    本文实例为大家分享了Python实现简单的2048小游戏的具体代码,供大家参考,具体内容如下 运行效果: 1.项目结构 2.代码 configs.py import argparse def parse_args(): parser = argparse.ArgumentParser(description='Game 2048') # Form """ screen_width: Width of the form screen_height: Height of the

  • Python实现我的世界小游戏源代码

    我的世界小游戏使用方法: 移动 前进:W,后退:S,向左:A,向右:D,环顾四周:鼠标,跳起:空格键,切换飞行模式:Tab; 选择建筑材料 砖:1,草:2,沙子:3,删除建筑:鼠标左键单击,创建建筑块:鼠标右键单击 ESC退出程序. 完整程序包请通过文末地址下载,程序运行截图如下: from __future__ import division import sys import math import random import time from collections import deq

  • 教你用Python写一个植物大战僵尸小游戏

    一.前言 上次写了一个俄罗斯方块,感觉好像大家都看懂了,这次就更新一个植物大战僵尸吧 二.引入模块 import pygame import random 三.完整代码 配置图片地址 IMAGE_PATH = 'imgs/' 设置页面宽高 scrrr_width = 800 scrrr_height = 560 创建控制游戏结束的状态 GAMEOVER = False 图片加载报错处理 LOG = '文件:{}中的方法:{}出错'.format(__file__, __name__) 创建地图类

随机推荐