码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 小学生python游戏编程arcade----敌人精灵上方显示方框及子弹显示问题


    小学生python游戏编程arcade----敌人精灵上方显示方框及子弹显示问题

      • 前言
        • 1、敌人精灵上方显示方框
          • 1.1 修改enemy_tank类
          • 1.2 引用
          • 1.3 效果图
        • 2、调整方法
          • 2.1 类方法
          • 2.2 类的引用
          • 2.3 效果图
          • 2.4 大小位置调整后
        • 3、子弹过线自动消失
          • 3.1 子弹的更新中
          • 3.2 原因查到,把以下代码调为如下
          • 3.3 效果图
          • 3.3 重要提示
      • 源码获取

    前言

    接上篇文章继续解绍arcade游戏编程的基本知识。敌人精灵上方显示方框及子弹显示问题

    1、敌人精灵上方显示方框

    1.1 修改enemy_tank类
    def draw_word(self, x, y, owner,fcolor=arcade.csscolor.GREEN, fsize=18, text=None):
        color1 = (128, 138, 135)
        # 参数:距形中心位置,宽,高,颜色,线宽
        rect = arcade.create_rectangle(x, y, 200, 60, color1)
        owner.append(rect)
        if text:
            arcade.draw_text(text, x, y, fcolor, fsize)
        else:
            arcade.draw_text(self.word, x, y, fcolor, fsize)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    1.2 引用
        self.shapes.draw()
        for aa in self.scene[LAYER_tanks]:
            aa.draw_word(aa.left, aa.top + 20, self.shapes)
    
    • 1
    • 2
    • 3
    1.3 效果图

    在这里插入图片描述

    2、调整方法

    2.1 类方法
        def draw_word(self, x, y, fcolor=arcade.csscolor.GREEN, fsize=18, text=None):
            xs=fsize
            if text:
                arcade.draw_rectangle_filled(x+len(self.word)*xs//2-10,y+5,len(text)*xs,30,(128,138,135))
                arcade.draw_text(text, x, y, fcolor, fsize)
    
            else:
                arcade.draw_rectangle_filled(x+len(self.word)*xs//2-10,y+5,len(self.word)*xs, 30,(128,138,135))
                arcade.draw_text(self.word, x, y, fcolor, fsize)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    2.2 类的引用
        for aa in self.scene[LAYER_tanks]:
            aa.draw_word(aa.left, aa.top + 20)
    
    • 1
    • 2
    2.3 效果图

    在这里插入图片描述

    2.4 大小位置调整后

    在这里插入图片描述

    3、子弹过线自动消失

    3.1 子弹的更新中
                # 如过子弹超过屏幕则删掉.
                if (bullet.right < 0) or (bullet.bottom > SCREEN_height) or (
                        bullet.left > (self.tile_map.width * self.tile_map.tile_width) * TILE_Scaling) :
                    bullet.remove_from_sprite_lists()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    3.2 原因查到,把以下代码调为如下
                # 如过子弹超过地图则删掉.
                if (bullet.right < 0) or (bullet.bottom > self.top_of_map) or (
                        bullet.left > self.end_of_map):
                    bullet.remove_from_sprite_lists()
    
    • 1
    • 2
    • 3
    • 4
    3.3 效果图

    在这里插入图片描述

    3.3 重要提示

    所有物品的坐标位置与相机移动无关
    定义个相机左及下边距,鼠标点击时的位置需与此两值相加

            # 定义一个相机边框的左边距离
            left_boundary = self.view_left + (self.camera.viewport_width / 2)
            if self.wanjia.center_x < left_boundary:
                self.view_left -= left_boundary - self.wanjia.center_x
            else:
                self.view_left += self.wanjia.center_x - left_boundary
    
            top_boundary = self.view_bottom + (self.camera.viewport_height / 2)
            if self.wanjia.center_y < top_boundary:
                self.view_bottom -= top_boundary - self.wanjia.center_y
            else:
                self.view_bottom += self.wanjia.center_y - top_boundary
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    源码获取

    可关注博主后,私聊博主免费获取
    需要技术指导,育娃新思考,企业软件合作等更多服务请联系博主

    今天是以此模板持续更新此育儿专栏的第 30/50次。
    可以关注我,点赞我、评论我、收藏我啦。

  • 相关阅读:
    全球133种语言自动翻译mishop大米外贸商城系统
    PMP真的有用吗?
    GO语言篇之WebAssembly
    电脑重装系统后鼠标动不了该怎么解决
    关于C51单片机程序太大如何处理
    16个值得推荐的.NET ORM框架
    书店图书销售管理系统
    快速安装JDK以及配置环境变量
    【C++程序员必修第一课】C++基础课程-05:运算符(上)
    设备接入高版本JDK与SSL协议问题解决方案
  • 原文地址:https://blog.csdn.net/fqfq123456/article/details/127985967
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号