数据结构请教

ayaoaaa 2020-07-08 03:51:45
写一个最强大脑里的六边形旋转的游戏,该怎么建立数据结构或者坐标体系,初学者请教
...全文
731 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 3 楼 ayaoaaa 的回复:
[quote=引用 1 楼 xuzuning的回复:]请你描述一下玩法

就是每点击一次中间的旋转点,周围的六个三角形,就会顺时针转一圈,经过多次点击后,各色块归位,形成图上部这样的结果[/quote]

从旋转点开始建立对象模型,旋转点周围(按顺时针)是6个三角形(编号)。每当旋转点点击一次,旋转点附近的三角形编号替换到对面,并且其它旋转点周围如果有同样编号的三角也被同样的目标编号替换
github_36000833 2020-07-08
  • 打赏
  • 举报
回复
引用 2 楼 github_36000833 的回复:
public void RotateCW(int x) { int[] indice = Indices[x]; int temp = C[indice.Last()]; for(int i = 1; i < indice.Length; i++) { C[indice[i]] = C[indice[i - 1]]; } C[indice.First()] = temp; }
RotateCW这里有个逻辑错误,导致数据覆盖,你可以自己更正:)
ayaoaaa 2020-07-08
  • 打赏
  • 举报
回复
引用 2 楼 github_36000833的回复:

      00 01 02 03 04 05 06
   07 08 09 10 11 12 13 14 15
16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31 32 33 34 35 36 37
   38 39 40 41 42 43 44 45 46
      47 48 49 50 51 52 53
整个内容无非就是一个int[54] C。 总共有19个旋转点,每个旋转假设为X,它有一个内容索引int[6] Indice。 比如第一个6边形的索引就是 Indice = {00, 01, 02, 10, 09, 08}; 旋转就是按内容索引,改变那个int[54] C。
class Hexgons
{
    int[] C = new int[54];

    public static readonly int[][] Indices = new int[19][]
    {
        new int[] { 0,  1,  2,  10, 9, 8},
        ...
        new int[] {43, 44, 45, 53, 52, 51},
    };

    public void RotateCW(int x)
    {
        int[] indice = Indices[x];
        int temp = C[indice.Last()];
        for(int i = 1; i < indice.Length; i++)
        {
            C[indice[i]] = C[indice[i - 1]];
        }
        C[indice.First()] = temp;
    }
}
好像有点思路了,先消化消化,感谢大佬!
ayaoaaa 2020-07-08
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning的回复:
请你描述一下玩法
就是每点击一次中间的旋转点,周围的六个三角形,就会顺时针转一圈,经过多次点击后,各色块归位,形成图上部这样的结果
github_36000833 2020-07-08
  • 打赏
  • 举报
回复

      00 01 02 03 04 05 06
   07 08 09 10 11 12 13 14 15
16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31 32 33 34 35 36 37
   38 39 40 41 42 43 44 45 46
      47 48 49 50 51 52 53
整个内容无非就是一个int[54] C。 总共有19个旋转点,每个旋转假设为X,它有一个内容索引int[6] Indice。 比如第一个6边形的索引就是 Indice = {00, 01, 02, 10, 09, 08}; 旋转就是按内容索引,改变那个int[54] C。
class Hexgons
{
    int[] C = new int[54];

    public static readonly int[][] Indices = new int[19][]
    {
        new int[] { 0,  1,  2,  10, 9, 8},
        ...
        new int[] {43, 44, 45, 53, 52, 51},
    };

    public void RotateCW(int x)
    {
        int[] indice = Indices[x];
        int temp = C[indice.Last()];
        for(int i = 1; i < indice.Length; i++)
        {
            C[indice[i]] = C[indice[i - 1]];
        }
        C[indice.First()] = temp;
    }
}
xuzuning 2020-07-08
  • 打赏
  • 举报
回复
请你描述一下玩法

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧