C++下面也不行吧~你没有提供构造函数,也没有提供Next的值阿
struct shape
{
public int [] xy;//表示组成每个方块的四个小方块的格数.反正就是8个整数吧
public int next;//表示下一方块
public shape(int[] xy,int next)
{
this.xy=new int[xy.Length];
Array.Copy(xy,this.xy,xy.Length);
this.next=next;
}
}private shape[] shapes=
{
{{0,0,0,0,0,0,0,0,0},1},
{1,1,1,1,1,1,1,1,1},2}
...
};
struct shape
{
public int [] xy;//表示组成每个方块的四个小方块的格数.反正就是8个整数吧
public int next;//表示下一方块
public shape(int[] xy,int next)
{
this.xy=new int[xy.Length];
Array.Copy(xy,this.xy,xy.Length);
this.next=next;
}
}private shape[] shapes=
{
{{0,0,0,0,0,0,0,0,0},1},
{1,1,1,1,1,1,1,1,1},2}
...
};
为什么不用类呢?
-----------------------------------
据某位大师说,Struct作为值类型性能好于Class~
{
{{0,0,0,0,0,0,0,0,0},1},
{1,1,1,1,1,1,1,1,1},2}
...
};
---------------
不好意思,这个也不对应该是
private shape[] shapes=new shape[]
{
{{0,0,0,0,0,0,0,0,0},1},
{1,1,1,1,1,1,1,1,1},2}
...
};
---那你总不能仅仅因为struct是位于堆栈上,而Class位于堆上而放弃类。
struct shape
{
public int [] xy;//表示组成每个方块的四个小方块的格数.反正就是8个整数吧
public int next;//表示下一方块
}来描述方块?
仅仅用int[]来描述?
/// 接口,提供方块类的一系列方法
/// </summary>
public interface BlockInterface
{
/// <summary>
/// 方块类型
/// </summary>
int BlockType
{
get;
}
/// <summary>
/// 坐标1
/// </summary>
Point P1
{
get;
}
/// <summary>
/// 坐标2
/// </summary>
Point P2
{
get;
} /// <summary>
/// 坐标3
/// </summary>
Point P3
{
get;
}
/// <summary>
/// 坐标4
/// </summary>
Point P4
{
get;
} /// <summary>
/// 绘制方块
/// </summary>
void DrawSelf(); /// <summary>
/// 擦除方块
/// </summary>
void Refresh();
/// <summary>
/// 判断是否可以移动
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
bool CanMove(int varType);
/// <summary>
/// 移动方块(左移、右移、下移)
/// </summary>
void Move(int varType);
/// <summary>
/// 判断是否可以旋转
/// </summary>
/// <param name="varType"></param>
/// <returns></returns>
bool CanCircle(); /// <summary>
/// 旋转方块(四种不同状态)
/// </summary>
void Circle(); /// <summary>
/// 方块下降到最低点,填充屏幕矩阵
/// </summary>
void FillMatrix();
/// <summary>
/// 是否游戏结束
/// </summary>
/// <returns></returns>
bool isOver();
}
{
public int [] xy=new int[8];//表示组成每个方块的四个小方块的格数.反正就是8个整数吧
public int next;//表示下一方块
}或者
struct shape
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
public int [] xy;
public int next;
}
正在试你的方法.写得不错.我马上去调试.通过就来结帐!
TO: brightheroes(闭关|那一剑的风情)
小弟几年前用C和C++各写过一个.那时直接用的结构,感觉很方便还没想过用接口.不过我想如果像你这样用接口的话那不是要写19个类每个都实现这个接口吗?(注:一般俄罗斯方块有19种形状).而如果我用结构的话只要一句话就OK了.后面调用都很方便.小弟因没用过接口写过才有此愚见.不对处望指点.你还有用接口写的源码吗?能发一份给我吗[email protected]
TO:ffb(我编)
你的第二个我还不大明白什么意思,
不过第一个是错的.我最初就是这么写的.结构是值类型,不能在里面用new吧.反正这样写编译器是不会通过的.错在哪我不肯定.我写这个的目的主要是熟悉C#的语法.所以这次是非得用结构调试过去,不然达不到目的.呵呵.谢谢各位先.过会来结帐!
D:\项目\RussianCSharp3\Form1.cs(83): 应输入 class、delegate、enum、interface 或 struct
你的第二个错误一看就知道一定是多写个}造成的.
比如:
class abc
{
}
abc()
{}
}
这样的情况就会报错.
我有一个用结构写的.不过和你这个有些不同,要的话短消息告诉我.也许能有点帮助!