zoukankan      html  css  js  c++  java
  • 简单Elixir游戏服设计-创建玩家模型

    删除model.ex

    创建玩家模型 player.ex, 简单化,只有唯一标识,昵称,金币,够用了。

    选择 map 代表数据,是为了扩展数据结构,方便增加功能。struct也是可以的。

    add_num 和 cost_num 存粹是为了简化代码

    一系列的get/set 是为了操作玩家数据用的(也可以减少代码吧)

    defmodule Player do
        def init do
            %{
                id: 0,     # 唯一标识
                name: "",   # 昵称
                gold: 0,     # 金币
            }
        end
    
        def get_id(player), do: player.id
        def set_id(player, new_id), do: put_in(player.id, new_id)
    
        def set_name(player, new_name), do: put_in(player.name, new_name)
        def get_name(player), do: player.name
    
    
        def add(num) when num >=0 , do: &(&1 + num)
        def cost(num) when num >=0 , do: &(&1 - num)
    
        def get_gold(player), do: player.gold
        def add_gold(player, num) , do: update_in(player.gold, add(num))
        def cost_gold(player, num), do: update_in(player.gold, cost(num))
    end

    增加player 的测试  player_test.ex

    defmodule PlayerTest do
      use ExUnit.Case
      doctest Player
      
      setup do
    
        %{player: Player.init}
      end
    
      test "设置ID", %{player: player} do
          set_id = "test"
          new_id = player |> Player.set_id(set_id) |> Player.get_id
          assert new_id == set_id
      end
    
      test "设置昵称", %{player: player} do
          set_name = "新名字"
          new_name= player |> Player.set_name(set_name) |> Player.get_name
          assert new_name == set_name
      end
    
      test "增加金币", %{player: player} do
          num = 10
        new_gold =  player |> Player.add_gold(num) |> Player.get_gold
        old_gold = player |> Player.get_gold
        assert new_gold == old_gold + num
      end
    
      test "减少金币", %{player: player} do
          num = 10
          new_gold = player |> Player.cost_gold(num) |> Player.get_gold
          old_gold = player |> Player.get_gold
          assert new_gold == old_gold - num
      end
    end

    我用的sublime,安装elixr包,然后tools ==》 build system ==》 elixr mix test

    ctrl + B 就可以测试了。

  • 相关阅读:
    Javascript typeof 用法
    查询指定范围内数据记录(适用于sqlserver2005以上)
    提示信息并跳转的目标URL
    教你如何删除MSN群
    通过sqlserver2005 获取客户端信息
    分层遍历数据
    重写render,利用ClientScript,在客户端注册select,回发到服务器,触发服务器端的行选择事件。
    ASP.NET下的TreeView控件的使用(生成树与统计所有子节点数量)
    后台取浏览器中cookie的用法
    jdk开发环境的搭建
  • 原文地址:https://www.cnblogs.com/rubyist/p/7611066.html
Copyright © 2011-2022 走看看