Sui环形掌上战争 0基础开发入门到精通(2)

  • Summer.XJ
  • 更新于 2024-03-16 00:33
  • 阅读 994

Sui环形掌上战争0基础开发入门到精通(2)第二章基础夯实基础中的基础作为0基础开发,我们首先要了解一些基础。这些基础不是一蹴而就的,而是需要慢慢积累。以下是一些主要要点:数据类型:强类型:在强类型语言中,一旦变量的数据类型被定义,它就不会改变,除非进行强转换操作。动态类型

<!--StartFragment-->

Sui环形掌上战争 0基础开发入门到精通(2)

第二章 基础夯实

image.png

基础中的基础

作为0基础开发,我们首先要了解一些基础。这些基础不是一蹴而就的,而是需要慢慢积累。 以下是一些主要要点:

  • 数据类型:

强类型:在强类型语言中,一旦变量的数据类型被定义,它就不会改变,除非进行强转换操作。 动态类型与静态类型: 动态类型语言在运行时才进行数据类型检查,而静态类型语言需要事先给变量进行数据类型定义。

  • 编程范式:

面向过程:以过程为中心,关注于如何解决问题,把解决问题的步骤分解为一系列的函数或过程调用。 面向对象:以对象为中心,把数据和操作数据的方法封装在对象中,通过类和对象来组织程序结构。

  • 变量与常量:

变量:用于存储可变的值,其值可以在程序执行过程中改变。 常量:用于存储不可变的值,其值在程序执行过程中保持不变。

  • 控制结构:

条件语句:如if-else,用于根据条件执行不同的代码块。 循环语句:如 loop、while,用于重复执行一段代码直到满足某个条件。

  • 函数与过程:

函数:执行特定任务并可能返回结果的代码块。 过程:执行特定任务但不返回结果的代码块。

  • 内存管理:

堆与栈:理解如何在堆和栈上分配和释放内存是编写高效且安全的程序的关键。 垃圾回收:一些编程语言提供了自动垃圾回收机制,用于自动管理不再使用的内存。

  • 错误处理:

错误处理:用于处理运行时错误或异常情况,确保程序的健壮性和稳定性。 异常:在程序执行过程中出现的特殊条件,需要特殊处理以避免程序崩溃。

  • 模块化与封装:

模块化:将程序划分为多个独立的模块,每个模块负责完成特定的功能。 封装:隐藏对象的属性和实现细节,仅对外提供公共的访问方式。

  • 库与框架:

库:预编写的代码集合,提供了执行常见任务的函数和方法。 框架:提供了程序结构的基础和一套用于开发的工具和方法,以简化复杂应用程序的开发。

掌握这些基础要点并不是说我们就能写出完美的程序,但是这些知识是编写高效且安全的程序的基础。

对于基础知识,要做到不断的了解、了解、再了解。虽然一口吃不了胖子,但也可以慢慢吃。。。

时间充裕的话看一下rust方面的资料。

Sui环形掌上战争游戏结构

  • 玩家策略结构
struct Cast has store{
        user:address, //玩家地址
        at:String,    //进攻策略
        df:String,    //防御策略
        ........
    }

注意,中文注释在Sui编辑器中是不支持的。这里只是为了方便阅读。开发的时候,请使用英文注释。 每个玩家都有自己的策略,这个结构就是用来存储玩家的策略的。

  • 房间结构
struct Room has key,store {//share object
        id:UID,
        roomname:String,
        creator:address,
        ......
    }

房间结构是用来存储房间信息的。里面包含了房间的id,创建者,玩家列表,战斗计划,标志位等。使用了table和vector来存储玩家信息。

  • 攻防计划
struct FightQ has store{
        att:u64,//at idx
        def:u64,//df idx
    }

这个结构是用来存储攻防ID,具体是玩家在序列里的位置代号。 这样就组成一个环形的基础 列如最后生成了 [2,0],[0,1],[1,2] 这个队列,代表是2号玩家攻击0号玩家,0号玩家防御1号玩家,1号玩家攻击2号玩家。

  • 玩家列表
struct PlayerList has key,store{
        id:UID,
        usrno:   table::Table&lt;address,u64>, // address | Number
        usrlist: table::Table&lt;u64,Player>,  // Number | Player
    }

玩家列表是用来存储所有玩家的信息。 目前作为1.0 只存储了玩家地址和积分。

struct Player has store{
        player:address, 
        score:u64,
    }
  • 排行榜
struct RankList has key,store{
        id:UID,
        usrScore:table::Table&lt;u64,Player>, // user socre
    }
  • 事件
新建房间事件
    struct NewRoomCapEv has copy, drop {
        id: ID,
    }
    新建玩家列表事件
    struct NewPlayerListEv has copy, drop {
        id: ID,
    }
    新建排行榜事件
    struct NewPRankListEv has copy, drop {
        id: ID,
    }

在设计游戏结构的时候要注意:

  1. 尽量使用vector和table来存储数据,因为这些数据在Sui中是可变长度的。
  2. 根据需要来设计数据结构,不要过多的设计字段。
  3. 简明扼要,先设计,再编码。
  4. 再小的游戏也是游戏,各种环节要考虑清楚,不要一上来就编码。

(未完待续)

telegram: https\://t.me/move_cn

QQ群: 79489587

<!--EndFragment-->

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Summer.XJ
Summer.XJ
0x0d54...9e80
学好Sui MOVE