• C# --- 设计游戏类与游戏地图和坦克移动


    1.创建一个所有游戏类的直接/间接父类 GameObject ,然后在这个GameObject里设计所有游戏类都有的一些成员

    2.创建一个如图属性就相当于实现了两行代码 ​​​​​​

     如果只创建一个属性且这个属性没有对应的字段的话(对应的字段指字段名为属性的首字母小写版本),编译器会自动创建一个 private访问权限的字段,这个字段的类型和属性一致,且字段名为属性名首字母小写版本(属性名首字母必须大写)

    在属性中只get和set访问器,其它啥也不写的话,则调用get / set访问器时会执行它们的默认功能

    get : return 字段(属性名首字母小写版本) ; set : 将set中自创建的 value 赋值给 字段(属性名首字母小写版本) 

    3.C#中抽象函数只能够放在抽象类中,然后抽象函数在子类中被重写时也要用override修饰

    4.抽象类由于无法实例化对象,所以在抽象类中也无法使用this,,this是一个空引用。

    在c#中this是一个对象,在成员函数中被自动创建和使用,然后它这个对象引用指向的是调用当前成员函数的对象。

    5.创建好枚举类enum,并且创建了枚举对象后,如果我们想给枚举对象赋值的话,赋值语法是:

    枚举对象 = 枚举类名.要赋值给枚举对象的成员名

    做值判断的时候也同理

    6.对象创建好之后,把对象放到列表中进行统一管理

    7.如何解决界面闪烁问题

    目的:让图像在画面中稳定显示

    问题:图像在画面中闪烁出现

    在解决问题之前先定义一个概念:图像加载

    我们将创建画布,在画布上创建游戏对象这一过程称为画面加载

    目前我们的游戏图像显示逻辑:在画面加载的同时显示画面 --- 此时二者同时进行,这样的逻辑是有问题的,因为这就会导致我们能够看到的画面首先是黑画布,然后是黑画布+游戏物体,然后又是黑画布,又是黑画布+游戏物体...当画面转换足够快的时候(事实上也确实足够快,计算机的操作速度非常快),消失又出现的游戏物体就像灯泡一样,亮暗亮暗频繁切换进而出现闪烁现象,而黑画布由于处于常亮状态所以能够一直保持稳定显现,而不是和游戏物体一样闪烁

    那么该如何解决这个问题呢?

    答案是将逻辑调整为:在缓存区进行画面加载 ---》将加载好的画面传给显示区 ---》显示区直接显示完整画面 ---(由于计算机操作极快,上面这一套操作的时间可以忽略,所以依然可以保证一帧一图片,不过比起边加载边显示会慢点,但是能让画面稳定显现)

    为了实现缓存图片,我们需要创建两个画布,一个是缓存画布(缓存区),一个是显示画布(显示区),我们现在缓存区中加载好图片,然后再将加载好的图片交给显示区显示

    这一套流程会比直接显示慢,但是画面稳定,而且由于计算机操速度作极快,慢也只能慢个几毫秒,在人眼看来可以直接忽视,依然是保持一帧一画面。

    整体步骤:1.创建临时画布,并用子线程中创建的画布接收这个画布(创建临时画布前我们需要先创建一张图片,然后以这个图片为基础创建画布,来对图片作画)

    2.创建界面画布

    3.在子线程中操作临时画布在图片上作画(加载图片)

    4.将加载好的图片交给界面画布显示

    5.静态成员不可以用this访问 --- 在类外访问静态成员时的访问方式:静态成员所属的类的类名.静态成员名 ; 在类内访问静态成员 --- 直接用静态成员名就可以访问。--- 除此之外就没有了

    6.调用函数接收键盘信息,然后判定朝向

    7.如果我们在属性的get,set的访问器中写了代码的话,我们就必须创建一个和属性相对应的。具有私有访问权限的变量,这个变量的类型和属性相同,变量名为属性名的首字母小写版本

     上面这个是默认写法

     下面这个是get,set写代码的写法

    8.当两个线程同时执行的时候,可能会出现线程冲突。线程冲突的原因的是两个线程同时调用同一个资源,出现资源争抢现象,为了解决这个问题,我们需要去给对应的资源的调用操作加锁。

    比如线程a中的操作c调用资源T的同时,线程b中的操作d也会调用资源T,由于同时调用,可能出现资源争抢现象,导致程序崩溃,为了解决这个问题我们可以给两个操作加锁。

    加了锁之后的操作如果想要执行的话就必须先获取锁,而锁只有一个,谁先获取到锁谁就先执行,获取到被加锁操作执行,执行完后释放锁,没获取到锁的被加锁操作等待,锁被释放后获取锁然后执行操作

  • 相关阅读:
    【641. 设计循环双端队列】
    大数据软件系统的交付流程
    ResNet50性能调优分享
    电机控制——PID参数理解
    【Linux】粗谈权限
    爱尔眼科眼底病论坛糖网病变智能(AI)监测防治培训举办!
    v0.9.6 开源跨平台个人知识管理工具 TidGi-Desktop
    动手学深度学习(1)—— 基础知识
    水浒传数据集汇总
    使用seq2seq架构实现英译法
  • 原文地址:https://blog.csdn.net/qq_51947882/article/details/126421586